예제 #1
0
파일: test.py 프로젝트: theodox/Numscrypt
        __pragma__('opov')
        sp = a - a
        __pragma__('noopov')

        timeStartEig = __new__(Date())
        if useComplex:
            evals, evecs = linalg.eig(a[:10, :10])

        timeEnd = __new__(Date())

        result += ('''
<pre>
a @ ai [0:5, 0:5] =

{}
''').format(str(num.round(id[0:5, 0:5], 2)).replace(' ', '\t'), )

        if transpose:
            result += ('''
Transpose took: {} ms''').format(timeStartInv - timeStartTranspose)

        result += ('''
Inverse took: {} ms
Matrix product (@) took: {} ms
Elementwise product (*) took: {} ms
Division took: {} ms
Addition took: {} ms
Subtraction took: {} ms
Eigenvals/vecs took: {} ms
</pre>
''').format(timeStartMul - timeStartInv, timeStartScalp - timeStartMul,
예제 #2
0
def run(autoTester):
    autoTester.check('====== inverse ======')

    # Real

    r = num.array([[2.12, -2.11, -1.23], [2.31, 1.14, 3.15],
                   [1.13, 1.98, 2.81]])

    autoTester.check('Matrix r', num.round(r, 2).tolist(), '<br>')

    ri = linalg.inv(r)

    autoTester.check('Matrix ri', num.round(ri, 2).tolist(), '<br>')

    __pragma__('opov')
    rid = r @ ri
    __pragma__('noopov')

    autoTester.check('r @ ri', [[int(round(elem)) for elem in row]
                                for row in rid.tolist()], '<br>')

    __pragma__('opov')
    delta = 0.001
    autoTester.check('r * r', num.round(r * r + delta, 3).tolist(), '<br>')
    autoTester.check('r / r', num.round(r / r + delta, 3).tolist(), '<br>')
    autoTester.check('r + r', num.round(r + r + delta, 3).tolist(), '<br>')
    autoTester.check('r - r', num.round(r - r + delta, 3).tolist(), '<br>')
    __pragma__('noopov')

    # Complex

    __pragma__('opov')
    c = num.array([[2.12 - 3.15j, -2.11, -1.23], [2.31, 1.14, 3.15 + 2.75j],
                   [1.13, 1.98 - 4.33j, 2.81]], 'complex128')
    __pragma__('noopov')

    autoTester.check('Matrix c', num.round(c, 2).tolist(), '<br>')

    ci = linalg.inv(c)

    autoTester.check('Matrix ci', num.round(ci, 2).tolist(), '<br>')

    __pragma__('opov')
    cid = c @ ci
    __pragma__('noopov')

    # autoTester.check ('c @ ci', [['{} + j{}'.format (int (round (elem.real)), int (round (elem.imag))) for elem in row] for row in cid.tolist ()], '<br>')

    __pragma__('opov')
    delta = 0.001 + 0.001j
    autoTester.check('c * c', num.round(c * c + delta, 3).tolist(), '<br>')
    autoTester.check('c / c', num.round(c / c + delta, 3).tolist(), '<br>')
    autoTester.check('c + c', num.round(c + c + delta, 3).tolist(), '<br>')
    autoTester.check('c - c', num.round(c - c + delta, 3).tolist(), '<br>')
    __pragma__('noopov')

    autoTester.check('====== eigen ======')

    __pragma__('opov')

    for a in (
            num.array([[0, 1j], [-1j, 1]], 'complex128'),
            num.array(
                [[1, -2, 3, 1], [5, 8, -1, -5], [2, 1, 1, 100], [2, 1, -1, 0]],
                'complex128'),
    ):
        eVals, eVecs = linalg.eig(a)

        enumSorted = sorted(
            enumerate(eVals.tolist()),
            key=lambda elem: -(
                elem[1].real + elem[1].imag / 1000
            )  # Order on primarily on real, secundarily on imag, note conjugate vals
        )

        indicesSorted = [elem[0] for elem in enumSorted]
        eValsSorted = [elem[1] for elem in enumSorted]

        eValsMat = num.empty(a.shape, a.dtype)
        for iRow in range(a.shape[0]):
            for iCol in range(a.shape[1]):
                eValsMat[iRow, iCol] = eVals[iCol]

        eVecsNorms = num.empty((eVecs.shape[1], ), a.dtype)
        for iNorm in range(eVecsNorms.shape[0]):
            eVecsNorms[iNorm] = complex(linalg.norm(eVecs[:, iNorm]))

        eVecsCanon = num.empty(a.shape, a.dtype)
        for iRow in range(a.shape[0]):
            for iCol in range(a.shape[1]):
                eVecsCanon[iRow, iCol] = eVecs[iRow, iCol] / eVecs[0, iCol]

        eVecsSorted = num.empty(a.shape, a.dtype)
        for iRow in range(a.shape[0]):
            for iCol in range(a.shape[1]):
                eVecsSorted[iRow, iCol] = eVecsCanon[iRow, indicesSorted[iCol]]
        '''
        autoTester.check ('\n---------------- a ----------------------')
        autoTester.check (a)
        autoTester.check ('\n---------------- eigVals ----------------')
        autoTester.check (eVals)
        autoTester.check ('\n---------------- eigValsMat--------------')
        autoTester.check (eValsMat)
        autoTester.check ('\n---------------- eigVecs ----------------')
        autoTester.check (eVecs)
        autoTester.check ('\n---------------- eigValsMat @ eigVecs ---')
        autoTester.check (eValsMat * eVecs)
        autoTester.check ('\n---------------- a @ eigVecs-------------')
        autoTester.check (a @ eVecs)
        autoTester.check ('\n---------------- eigVecsNorms -----------')
        autoTester.check (eVecsNorms)
        autoTester.check ('\n---------------- eigVecsCanon -----------')
        autoTester.check (eVecsCanon)
        '''
        autoTester.check('\n---------------- eigVecsSorted ----------')
        autoTester.check([[(round(value.real + 1e-3,
                                  3), round(value.imag + 1e-3, 3))
                           for value in row] for row in eVecsSorted.tolist()])
        autoTester.check('\n---------------- eigValsSorted ----------')
        autoTester.check(
            [(round(value.real + 1e-3, 3), round(value.imag + 1e-3, 3))
             for value in eValsSorted], '\n')
예제 #3
0
def run (autoTester):
	z = num.zeros ((4, 3), 'int32')
	autoTester.check ('Zeros', z.tolist (), '<br>')
	
	o = num.ones ((4, 5))
	autoTester.check ('Ones', o.astype ('int32') .tolist ())
	
	i = num.identity (3, 'int32')
	autoTester.check ('Identity', i.tolist (), '<br>')
	
	a = num.array ([
		[1, 1, 2, 3],
		[4, 5, 6, 7],
		[8, 9, 10, 12]
	])
	
	autoTester.check ('Matrix a', a.tolist (), '<br>')
	
	autoTester.check ('Transpose of a', a.transpose () .tolist (), '<br>')
	
	b = num.array ([
		[2, 2, 4, 6],
		[8, 10, 12, 14],
		[16, 18, 20, 24]
	])
	
	bp =  b.transpose ()
	
	autoTester.check ('Matrix b', b.tolist (), '<br>')
	autoTester.check ('Permutation of b', bp.tolist (), '<br>')
		
	c = num.array ([
		[1, 2, 3, 4],
		[5, 6, 7, 8],
		[9, 10, 11, 12],
	], 'int32')
	
	autoTester.check ('Shape c', tuple (c.shape), '<br>')
	autoTester.check ('Matrix c', c.tolist (), '<br>')
	
	ct = c.transpose ()
	autoTester.check ('Shape ct', tuple (ct.shape), '<br>')
	autoTester.check ('Transpose of c', ct .tolist (), '<br>')

	cs0, cs1 = num.hsplit (c, 2)
	autoTester.check ('Matrix cs0', cs0.tolist (), '<br>')
	autoTester.check ('Matrix cs1', cs1.tolist (), '<br>')

	ci = num.hstack ((cs1, cs0))
	autoTester.check ('Matrix ci', ci.tolist (), '<br>')
	
	cts0, cts1, cts2 = num.hsplit (ct, 3)
	autoTester.check ('Matrix cts0', cts0.tolist (), '<br>')
	autoTester.check ('Matrix cts1', cts1.tolist (), '<br>')
	autoTester.check ('Matrix cts2', cts2.tolist (), '<br>')

	cti = num.hstack ((cts2, cts1, cts0))
	autoTester.check ('Matrix ci', cti.tolist (), '<br>')
	
	d = num.array ([
		[13, 14],
		[15, 16],
		[17, 18],
		[19, 20]
	], 'int32')
	
	autoTester.check ('Matrix d', d.tolist (), '<br>')
	dt = d.transpose ()
	autoTester.check ('Permutation of d', dt.tolist (), '<br>')
	
	ds0, ds1, ds2, ds3 = num.vsplit (d, 4)
	autoTester.check ('Matrix ds0', ds0.tolist (), '<br>')
	autoTester.check ('Matrix ds1', ds1.tolist (), '<br>')
	autoTester.check ('Matrix ds2', ds2.tolist (), '<br>')
	autoTester.check ('Matrix ds3', ds3.tolist (), '<br>')

	di = num.vstack ((ds3, ds2, ds1, ds0))
	autoTester.check ('Matrix di', di.tolist (), '<br>')
	
	dts0, dts1 = num.vsplit (dt, 2)
	autoTester.check ('Matrix dts0', dts0.tolist (), '<br>')
	autoTester.check ('Matrix dts1', dts1.tolist (), '<br>')

	dti = num.vstack ((dts1, dts0))
	autoTester.check ('Matrix dti', dti.tolist (), '<br>')
	
	v0 = num.array (range (10))	
	v1 = num.array ((1, 2, 3, 1, 2, 3, 1, 2, 3, 1))

	__pragma__ ('opov')
	
	a [1, 0] = 177
	el = b [1, 2]
	
	bsl0 = b [1, 1 : 3]
	bsl1 = b [1 : 2, 1 : 3]
	bsl2 = b [1 : 2, 1]
	bsl3 = b [1, 1 : 3]
	bsl4 = b [ : , 1]
	bsl5 = b [1, 1 : 3]
	bsl6 = b [1, 1 : 3]
	bsl7 = b [1, 2 : 3]

	bpsl0 = bp [1, 1 : 3]
	bpsl1 = bp [1 : 2, 1 : 3]
	bpsl2 = bp [1, 0 : ]
	bpsl3 = bp [1, 1 : 3]
	bpsl4 = bp [ : , 1]
	bpsl5 = bp [3, 1 : 3]
	bpsl6 = bp [2 : 4, 1 : 3]
	bpsl7 = bp [2 : 4, 2 : 3]
	
	sum = a + b
	dif = a - b
	prod = a * b
	quot = a / b
	dot = c @ d
	vsum = v0 + v1
	vel = vsum [6]
	vsum [6] = 70
	
	mul_a3 = a * 3
	mul_3a = 3 * a
	div_a3 = a / 3.1234567
	div_3a = 3.1234567 / a
	add_a3 = a + 3
	add_3a = 3 + a
	sub_a3 = a - 3
	sub_3a = 3 - a
	neg_a = -a
	
	__pragma__ ('noopov')
		
	autoTester.check ('El a [1, 2, 3] alt', a.tolist (), '<br>')
	autoTester.check ('El b [1, 2, 3]', el, '<br>')
	
	autoTester.check ('Sl b0', bsl0.tolist (), '<br>')
	autoTester.check ('Sl b1', bsl1.tolist (), '<br>')
	autoTester.check ('Sl b2', bsl2.tolist (), '<br>')
	autoTester.check ('Sl b3', bsl3.tolist (), '<br>')
	autoTester.check ('Sl b4', bsl4.tolist (), '<br>')
	autoTester.check ('Sl b5', bsl5.tolist (), '<br>')
	autoTester.check ('Sl b6', bsl6.tolist (), '<br>')
	autoTester.check ('Sl b7', bsl7.tolist (), '<br>')
	
	autoTester.check ('Sl bp0', bpsl0.tolist (), '<br>')
	autoTester.check ('Sl bp1', bpsl1.tolist (), '<br>')
	autoTester.check ('Sl bp2', bpsl2.tolist (), '<br>')
	autoTester.check ('Sl bp3', bpsl3.tolist (), '<br>')
	autoTester.check ('Sl bp4', bpsl4.tolist (), '<br>')
	autoTester.check ('Sl bp5', bpsl5.tolist (), '<br>')
	autoTester.check ('Sl bp6', bpsl6.tolist (), '<br>')
	autoTester.check ('Sl bp7', bpsl7.tolist (), '<br>')
	
	autoTester.check ('Matrix sum', sum.tolist (), '<br>')
	autoTester.check ('Matrix difference', dif.tolist (), '<br>')
	autoTester.check ('Matrix product', prod.tolist (), '<br>')
	autoTester.check ('Matrix quotient', quot.tolist (), '<br>')
	autoTester.check ('Matrix dotproduct', dot.tolist (), '<br>')
	
	autoTester.check ('Vector', v0.tolist (), '<br>')
	autoTester.check ('Vector', v1.tolist (), '<br>')
	autoTester.check ('El sum old', vel, '<br>')
	autoTester.check ('Vector sum new', vsum.tolist (), '<br>')
	
	autoTester.check ('mul_a3', mul_a3.tolist (), '<br>')
	autoTester.check ('mul_3a', mul_3a.tolist (), '<br>')
	autoTester.check ('div_a3', num.round (div_a3, 2).tolist (), '<br>')
	autoTester.check ('div_3a', num.round (div_3a, 2).tolist (), '<br>')
	autoTester.check ('add_a3', add_a3.tolist (), '<br>')
	autoTester.check ('add_3a', add_3a.tolist (), '<br>')
	autoTester.check ('sub_a3', sub_a3.tolist (), '<br>')
	autoTester.check ('sub_3a', sub_3a.tolist (), '<br>')
	autoTester.check ('neg_a', neg_a.tolist (), '<br>')
	
	__pragma__ ('opov')
	comp_a = num.array ([
		[1 + 2j, 2 - 1j, 3],
		[4, 5 + 3j, 7]
	], 'complex128')	
	comp_b = num.array ([
		[6, 8 - 1j],
		[9 + 3j, 10],
		[11, 12 - 6j]
	], 'complex128')
	comp_c = comp_a @ comp_b
	__pragma__ ('noopov')
	
	autoTester.check ('comp_a', comp_a.tolist (), '<br>')
	autoTester.check ('comp_b', comp_b.tolist (), '<br>')
	autoTester.check ('comp_c', comp_c.tolist (), '<br>')
	
	__pragma__ ('opov')
	
	comp_a_square = comp_a [ : , : 2]
	comp_b_square = comp_b [1 : , : ]
	
	comp_c_square = comp_a_square * comp_b_square
	comp_d_square = comp_a_square / comp_b_square
	comp_e_square = comp_a_square + comp_b_square
	comp_f_square = comp_a_square - comp_b_square
	
	__pragma__ ('noopov')
	
	autoTester.check ('comp_a_square', comp_a_square.tolist (), '<br>')
	autoTester.check ('comp_b_square', comp_b_square.tolist (), '<br>')
	autoTester.check ('comp_c_square', comp_c_square.tolist (), '<br>')
	autoTester.check ('comp_d_square', num.round (comp_d_square, 2).tolist (), '<br>')
	autoTester.check ('comp_e_square', comp_e_square.tolist (), '<br>')
	autoTester.check ('comp_f_square', comp_f_square.tolist (), '<br>')
	
	__pragma__ ('opov')
	sliceable_a = num.array ([
		[1, 2, 3, 4],
		[5, 6, 7, 8],
		[9, 10, 11, 12],
		[13, 14, 15, 16]
	])
	autoTester.check ('sliceable_a', sliceable_a.tolist ())

	slice_a = sliceable_a [1 : , 1 : ]
	autoTester.check ('slice_a')
	
	sliceable_at = sliceable_a.transpose ()
	slice_at = sliceable_at [1 : ]
	
	__pragma__ ('noopov')
	
예제 #4
0
파일: __init__.py 프로젝트: JdeH/Numscrypt
def run (autoTester):
    autoTester.check ('====== inverse ======')

    # Real

    r = num.array ([
        [2.12, -2.11, -1.23], 
        [2.31, 1.14, 3.15], 
        [1.13, 1.98, 2.81]
    ])
    
    autoTester.check ('Matrix r', num.round (r, 2) .tolist (), '<br>')
    
    ri = linalg.inv (r)
    
    autoTester.check ('Matrix ri', num.round (ri, 2) .tolist (), '<br>')
    
    __pragma__ ('opov')
    rid = r @ ri
    __pragma__ ('noopov')
    
    autoTester.check ('r @ ri', [[int (round (elem)) for elem in row] for row in rid.tolist ()], '<br>')
    
    __pragma__ ('opov')
    delta = 0.001
    autoTester.check ('r * r', num.round (r * r + delta, 3) .tolist (), '<br>')
    autoTester.check ('r / r', num.round (r / r + delta, 3) .tolist (), '<br>')
    autoTester.check ('r + r', num.round (r + r + delta, 3) .tolist (), '<br>')
    autoTester.check ('r - r', num.round (r - r + delta, 3) .tolist (), '<br>')
    __pragma__ ('noopov')

    # Complex
    
    __pragma__ ('opov')
    c = num.array ([
        [2.12 - 3.15j, -2.11, -1.23], 
        [2.31, 1.14, 3.15 + 2.75j], 
        [1.13, 1.98 - 4.33j, 2.81]
    ], 'complex128')
    __pragma__ ('noopov')
    
    autoTester.check ('Matrix c',  num.round (c, 2) .tolist (), '<br>')
    
    ci = linalg.inv (c)
    
    autoTester.check ('Matrix ci', num.round (ci, 2) .tolist (), '<br>')
    
    __pragma__ ('opov')
    cid = c @ ci
    __pragma__ ('noopov')
    
    # autoTester.check ('c @ ci', [['{} + j{}'.format (int (round (elem.real)), int (round (elem.imag))) for elem in row] for row in cid.tolist ()], '<br>')
    
    __pragma__ ('opov')
    delta = 0.001 + 0.001j
    autoTester.check ('c * c', num.round (c * c + delta , 3) .tolist (), '<br>')
    autoTester.check ('c / c', num.round (c / c + delta, 3) .tolist (), '<br>')
    autoTester.check ('c + c', num.round (c + c + delta, 3) .tolist (), '<br>')
    autoTester.check ('c - c', num.round (c - c + delta, 3) .tolist (), '<br>')
    __pragma__ ('noopov')
    
    autoTester.check ('====== eigen ======')
    
    __pragma__ ('opov')

    for a in (   
        num.array ([
            [0, 1j],
            [-1j, 1]
        ], 'complex128'),
        num.array ([
            [1, -2, 3, 1],
            [5, 8, -1, -5],
            [2, 1, 1, 100],
            [2, 1, -1, 0]
        ], 'complex128'),
    ):
        eVals, eVecs = linalg.eig (a)
        
        enumSorted = sorted (
            enumerate (eVals.tolist ()),
            key = lambda elem: -(elem [1].real + elem [1].imag / 1000)  # Order on primarily on real, secundarily on imag, note conjugate vals
        )
        
        indicesSorted = [elem [0] for elem in enumSorted]
        eValsSorted = [elem [1] for elem in enumSorted]
        
        eValsMat = num.empty (a.shape, a.dtype)
        for iRow in range (a.shape [0]):
            for iCol in range (a.shape [1]):
                eValsMat [iRow, iCol] = eVals [iCol]
         
        eVecsNorms = num.empty ((eVecs.shape [1], ), a.dtype)
        for iNorm in range (eVecsNorms.shape [0]):
            eVecsNorms [iNorm] = complex (linalg.norm (eVecs [:, iNorm]))
            
        eVecsCanon = num.empty (a.shape, a.dtype)
        for iRow in range (a.shape [0]):
            for iCol in range (a.shape [1]):
                eVecsCanon [iRow, iCol] = eVecs [iRow, iCol] / eVecs [0, iCol] 
            
        eVecsSorted = num.empty (a.shape, a.dtype)
        for iRow in range (a.shape [0]):
            for iCol in range (a.shape [1]):
                eVecsSorted [iRow, iCol] = eVecsCanon [iRow, indicesSorted [iCol]]
            
        '''
        autoTester.check ('\n---------------- a ----------------------')
        autoTester.check (a)
        autoTester.check ('\n---------------- eigVals ----------------')
        autoTester.check (eVals)
        autoTester.check ('\n---------------- eigValsMat--------------')
        autoTester.check (eValsMat)
        autoTester.check ('\n---------------- eigVecs ----------------')
        autoTester.check (eVecs)
        autoTester.check ('\n---------------- eigValsMat @ eigVecs ---')
        autoTester.check (eValsMat * eVecs)
        autoTester.check ('\n---------------- a @ eigVecs-------------')
        autoTester.check (a @ eVecs)
        autoTester.check ('\n---------------- eigVecsNorms -----------')
        autoTester.check (eVecsNorms)
        autoTester.check ('\n---------------- eigVecsCanon -----------')
        autoTester.check (eVecsCanon)
        '''
        autoTester.check ('\n---------------- eigVecsSorted ----------')
        autoTester.check ([[(round (value.real + 1e-3, 3), round (value.imag + 1e-3, 3)) for value in row] for row in eVecsSorted.tolist ()])
        autoTester.check ('\n---------------- eigValsSorted ----------')
        autoTester.check ([(round (value.real + 1e-3, 3), round (value.imag + 1e-3, 3)) for value in eValsSorted], '\n')
        
예제 #5
0
파일: test.py 프로젝트: faerot/Numscrypt
		timeStartSub = __new__ (Date ()) 
		__pragma__ ('opov')
		sp = a - a
		__pragma__ ('noopov')
		
		timeEnd = __new__ (Date ())
		
		result += (
'''
<pre>
a @ ai [0:5, 0:5] =

{}
'''	
	) .format (
			str (num.round (id [0:5, 0:5], 2)) .replace (' ', '\t'),
		)

		if transpose:
			result += (
'''
Transpose took: {} ms'''
			).format (
				timeStartInv - timeStartTranspose
			)
			
		result += (
'''
Inverse took: {} ms
Matrix product (@) took: {} ms
Elementwise product (*) took: {} ms
예제 #6
0
파일: __init__.py 프로젝트: JdeH/Numscrypt
def run (autoTester):
	__pragma__ ('opov')
	delta = 0.001 + 0.001j
	__pragma__ ('noopov')
	
	autoTester.check ('<br>------ 1D ------<br>')
	
	cut = 102

	autoTester.check ('Samples computed: {}<br>'.format (tTotal  * fSample))
	autoTester.check ('Samples shown: {}<br>'.format (cut))

	orig = num.array ([
		complex (0.3 + sin (2 * pi * fSin * t) + 0.5 * cos (2 * pi * fCos * t), 0)
		for t in [
			iSample / fSample
			for iSample in range (tTotal * fSample)
		]
	], 'complex128')
	
	__pragma__ ('opov')

	autoTester.check ('Original samples', num.round (orig + delta, 3) .tolist ()[ : cut], '<br>')

	if transpiled:
		timeStartFft = getNow ()
	freqs = fft.fft (orig)
	if transpiled:
		timeStopFft = getNow ()	
		
	autoTester.check ('Frequencies', num.round (freqs + delta, 3) .tolist ()[ : cut], '<br>')
	
	if transpiled:
		timeStartIfft = getNow ()	
	reconstr = fft.ifft (freqs)
	if transpiled:
		timeStopIfft = getNow ()	
	
	autoTester.check ('Reconstructed samples', num.round (reconstr + delta, 3) .tolist ()[ : cut], '<br>')
	
	__pragma__ ('noopov')
		
	if transpiled:
		print ('FFT for {} samples took {} ms'.format (tTotal * fSample, timeStopFft - timeStartFft))
		print ('IFFT for {} samples took {} ms'.format (tTotal * fSample, timeStopIfft - timeStartIfft))
		
	autoTester.check ('<br>------ 2D ------<br>')
	
	__pragma__ ('opov')

	orig2 = num.zeros ((128, 128), 'complex128')
	orig2 [32 : 96, 32 : 96] = num.ones ((64, 64), 'complex128')
	
	autoTester.check ('Original samples', num.round (orig2 + delta, 3) [64 : 68, 16 : 112] .tolist (), '<br>')
	
	if transpiled:
		timeStartFft = getNow ()
		
	freqs2 = fft.fft2 (orig2)
	if transpiled:
		timeStopFft = getNow () 
		
	autoTester.check ('Frequencies', num.round (freqs2 + delta, 3)  [64 : 68, 16 : 112] .tolist (), '<br>')
	
	if transpiled:
		timeStartIfft = getNow ()
	reconstr2 = fft.ifft2 (freqs2)
	if transpiled:
		timeStopIfft = getNow ()	
	
	if transpiled:
		print ('FFT2 for {} samples took {} ms'.format (orig2.size, timeStopFft - timeStartFft))
		print ('IFFT2 for {} samples took {} ms'.format (orig2.size, timeStopIfft - timeStartIfft))
		
	autoTester.check ('Reconstructed samples', num.round (reconstr2 + delta, 3)  [64 : 68, 16 : 112] .tolist (), '<br>')
	
	__pragma__ ('noopov')
예제 #7
0
def run (autoTester):
	z = num.zeros ((4, 3, 2), 'int32')
	autoTester.check ('Zeros', z.tolist (), '<br>')
	
	o = num.ones ((1, 2, 3))
	autoTester.check ('Ones', o.astype ('int32') .tolist ())
	
	i = num.identity (3, 'int32')
	autoTester.check ('Identity', i.tolist (), '<br>')
	
	# shape: 2 blocks x 3 rows x 4 columns
	a = num.array ([
		[
			[1, 1, 2, 3],
			[4, 5, 6, 7],
			[8, 9, 10, 12]
		], [
			[100, 101, 102, 103],
			[104, 105, 106, 107],
			[108, 109, 110, 112]
		]
	])
	
	# print (a)
	
	autoTester.check ('Matrix a', a.tolist (), '<br>')
	autoTester.check ('Transpose of a', a.transpose () .tolist (), '<br>')
	
	b = num.array ([
		[
			[2, 2, 4, 6],
			[8, 10, 12, 14],
			[16, 18, 20, 24]
		], [
			[200, 202, 204, 206],
			[208, 210, 212, 214],
			[216, 218, 220, 224]
		]
	])
	
	bp =  b.transpose ((2, 1, 0))
	
	autoTester.check ('Matrix b', b.tolist (), '<br>')
	autoTester.check ('Permutation of b', bp.tolist (), '<br>')
		
	c = num.array ([
		[1, 2, 3, 4],
		[5, 6, 7, 8],
		[9, 10, 11, 12],
	], 'int32')
	
	autoTester.check ('Shape strides c', tuple (c.shape), tuple (c.strides), '<br>')
	autoTester.check ('Matrix c', c.tolist (), '<br>')
	
	ct = c.transpose ()
	autoTester.check ('Shape strids ct', tuple (ct.shape), tuple (ct.strides), '<br>')
	autoTester.check ('Transpose of c', ct .tolist (), '<br>')

	cs0, cs1 = num.hsplit (c, 2)
	autoTester.check ('Matrix cs0', cs0.tolist (), '<br>')
	autoTester.check ('Matrix cs1', cs1.tolist (), '<br>')

	ci = num.hstack ((cs1, cs0))
	autoTester.check ('Matrix ci', ci.tolist (), '<br>')
	
	cts0, cts1, cts2 = num.hsplit (ct, 3)
	autoTester.check ('Matrix cts0', cts0.tolist (), '<br>')
	autoTester.check ('Matrix cts1', cts1.tolist (), '<br>')
	autoTester.check ('Matrix cts2', cts2.tolist (), '<br>')

	cti = num.hstack ((cts2, cts1, cts0))
	autoTester.check ('Matrix ci', cti.tolist (), '<br>')
	
	d = num.array ([
		[13, 14],
		[15, 16],
		[17, 18],
		[19, 20]
	], 'int32')
	
	autoTester.check ('Matrix d', d.tolist (), '<br>')
	dt = d.transpose ()
	autoTester.check ('Permutation of d', dt.tolist (), '<br>')
	
	ds0, ds1, ds2, ds3 = num.vsplit (d, 4)
	autoTester.check ('Matrix ds0', ds0.tolist (), '<br>')
	autoTester.check ('Matrix ds1', ds1.tolist (), '<br>')
	autoTester.check ('Matrix ds2', ds2.tolist (), '<br>')
	autoTester.check ('Matrix ds3', ds3.tolist (), '<br>')

	di = num.vstack ((ds3, ds2, ds1, ds0))
	autoTester.check ('Matrix di', di.tolist (), '<br>')
	
	dts0, dts1 = num.vsplit (dt, 2)
	autoTester.check ('Matrix dts0', dts0.tolist (), '<br>')
	autoTester.check ('Matrix dts1', dts1.tolist (), '<br>')

	dti = num.vstack ((dts1, dts0))
	autoTester.check ('Matrix dti', dti.tolist (), '<br>')
	
	v0 = num.array (range (10))	
	v1 = num.array ((1, 2, 3, 1, 2, 3, 1, 2, 3, 1))
	
	__pragma__ ('opov')
	a [1, 0, 2] = 177
	el = b [1, 2, 3]

	bsl0 = b [1, 1 : 3, : ]
	bsl1 = b [1 : 2, 1 : 3, :]
	bsl2 = b [1, 1, :]
	bsl3 = b [1, 1 : 3, 1]
	bsl4 = b [ : , 1, 1]
	bsl5 = b [1, 1 : 3, :]
	bsl6 = b [1, 1 : 3, 1 : 4]
	bsl7 = b [1, 2 : 3, 2 : 4]
	
	bpsl0 = bp [1, 1 : 3, : ]
	bpsl1 = bp [1 : 2, 1 : 3, :]
	bpsl2 = bp [1, 1, :]
	bpsl3 = bp [1, 1 : 3, 1]
	bpsl4 = bp [ : , 1, 1]
	bpsl5 = bp [3, 1 : 3, :]
	bpsl6 = bp [2 : 4, 1 : 3, 0 : 1]
	bpsl7 = bp [2 : 4, 2 : 3, 1 : 2]
	
	sum = a + b
	dif = a - b
	prod = a * b
	quot = a / b
	dot = c @ d
	vsum = v0 + v1
	vel = vsum [6]
	vsum [6] = 70
	
	mul_a3 = a * 3
	mul_3a = 3 * a
	div_a3 = a / 3.1234567
	div_3a = 3.1234567 / a
	add_a3 = a + 3
	add_3a = 3 + a
	sub_a3 = a - 3
	sub_3a = 3 - a
	neg_a = -a
	
	__pragma__ ('noopov')
	
	autoTester.check ('El a [1, 2, 3] alt', a.tolist (), '<br>')
	autoTester.check ('El b [1, 2, 3]', el, '<br>')
	
	autoTester.check ('Sl b0', bsl0.tolist (), '<br>')
	autoTester.check ('Sl b1', bsl1.tolist (), '<br>')
	autoTester.check ('Sl b2', bsl2.tolist (), '<br>')
	autoTester.check ('Sl b3', bsl3.tolist (), '<br>')
	autoTester.check ('Sl b4', bsl4.tolist (), '<br>')
	autoTester.check ('Sl b5', bsl5.tolist (), '<br>')
	autoTester.check ('Sl b6', bsl6.tolist (), '<br>')
	autoTester.check ('Sl b7', bsl7.tolist (), '<br>')
	
	autoTester.check ('Sl bp0', bpsl0.tolist (), '<br>')
	autoTester.check ('Sl bp1', bpsl1.tolist (), '<br>')
	autoTester.check ('Sl bp2', bpsl2.tolist (), '<br>')
	autoTester.check ('Sl bp3', bpsl3.tolist (), '<br>')
	autoTester.check ('Sl bp4', bpsl4.tolist (), '<br>')
	autoTester.check ('Sl bp5', bpsl5.tolist (), '<br>')
	autoTester.check ('Sl bp6', bpsl6.tolist (), '<br>')
	autoTester.check ('Sl bp7', bpsl7.tolist (), '<br>')
	
	autoTester.check ('Matrix sum', sum.tolist (), '<br>')
	autoTester.check ('Matrix difference', dif.tolist (), '<br>')
	autoTester.check ('Matrix product', prod.tolist (), '<br>')
	autoTester.check ('Matrix quotient', quot.tolist (), '<br>')
	autoTester.check ('Matrix dotproduct', dot.tolist (), '<br>')
	
	autoTester.check ('Vector', v0.tolist (), '<br>')
	autoTester.check ('Vector', v1.tolist (), '<br>')
	autoTester.check ('El sum old', vel, '<br>')
	autoTester.check ('Vector sum new', vsum.tolist (), '<br>')
	
	autoTester.check ('mul_a3', mul_a3.tolist (), '<br>')
	autoTester.check ('mul_3a', mul_3a.tolist (), '<br>')
	autoTester.check ('div_a3', num.round (div_a3, 2).tolist (), '<br>')
	autoTester.check ('div_3a', num.round (div_3a, 2).tolist (), '<br>')
	autoTester.check ('add_a3', add_a3.tolist (), '<br>')
	autoTester.check ('add_3a', add_3a.tolist (), '<br>')
	autoTester.check ('sub_a3', sub_a3.tolist (), '<br>')
	autoTester.check ('sub_3a', sub_3a.tolist (), '<br>')
	autoTester.check ('neg_a', neg_a.tolist (), '<br>')
	
예제 #8
0
def run(autoTester):
    __pragma__('opov')
    delta = 0.001 + 0.001j
    __pragma__('noopov')

    autoTester.check('<br>------ 1D ------<br>')

    cut = 102

    autoTester.check('Samples computed: {}<br>'.format(tTotal * fSample))
    autoTester.check('Samples shown: {}<br>'.format(cut))

    orig = num.array([
        complex(0.3 + sin(2 * pi * fSin * t) + 0.5 * cos(2 * pi * fCos * t), 0)
        for t in [iSample / fSample for iSample in range(tTotal * fSample)]
    ], 'complex128')

    __pragma__('opov')

    autoTester.check('Original samples',
                     num.round(orig + delta, 3).tolist()[:cut], '<br>')

    if transpiled:
        timeStartFft = getNow()
    freqs = fft.fft(orig)
    if transpiled:
        timeStopFft = getNow()

    autoTester.check('Frequencies',
                     num.round(freqs + delta, 3).tolist()[:cut], '<br>')

    if transpiled:
        timeStartIfft = getNow()
    reconstr = fft.ifft(freqs)
    if transpiled:
        timeStopIfft = getNow()

    autoTester.check('Reconstructed samples',
                     num.round(reconstr + delta, 3).tolist()[:cut], '<br>')

    __pragma__('noopov')

    if transpiled:
        print('FFT for {} samples took {} ms'.format(
            tTotal * fSample, timeStopFft - timeStartFft))
        print('IFFT for {} samples took {} ms'.format(
            tTotal * fSample, timeStopIfft - timeStartIfft))

    autoTester.check('<br>------ 2D ------<br>')

    __pragma__('opov')

    orig2 = num.zeros((128, 128), 'complex128')
    orig2[32:96, 32:96] = num.ones((64, 64), 'complex128')

    autoTester.check('Original samples',
                     num.round(orig2 + delta, 3)[64:68, 16:112].tolist(),
                     '<br>')

    if transpiled:
        timeStartFft = getNow()

    freqs2 = fft.fft2(orig2)
    if transpiled:
        timeStopFft = getNow()

    autoTester.check('Frequencies',
                     num.round(freqs2 + delta, 3)[64:68, 16:112].tolist(),
                     '<br>')

    if transpiled:
        timeStartIfft = getNow()
    reconstr2 = fft.ifft2(freqs2)
    if transpiled:
        timeStopIfft = getNow()

    if transpiled:
        print('FFT2 for {} samples took {} ms'.format(
            orig2.size, timeStopFft - timeStartFft))
        print('IFFT2 for {} samples took {} ms'.format(
            orig2.size, timeStopIfft - timeStartIfft))

    autoTester.check('Reconstructed samples',
                     num.round(reconstr2 + delta, 3)[64:68, 16:112].tolist(),
                     '<br>')

    __pragma__('noopov')
예제 #9
0
파일: test.py 프로젝트: fangbei/Numscrypt
		timeStartInv = __new__ (Date ())
		ai = linalg.inv (a)
		
		timeStartMul = __new__ (Date ()) 
		__pragma__ ('opov')
		id = a @ ai
		__pragma__ ('noopov')
		
		timeEnd = __new__ (Date ())
		
		result +=  '''<pre>
Optimized for space instead of time: {}
	
{}: a @ ai [0:5, 0:5] =

{}

Transpose took: {} ms
Inverse took: {} ms
Product took: {} ms
			</pre>'''.format (
			optim_space,
			'natural' if a.ns_natural else 'unnatural',
			str (ns.round (id [0:5, 0:5], 2)) .replace (' ', '\t'),
			timeStartInv - timeStartTranspose,
			timeStartMul - timeStartInv,
			timeEnd - timeStartMul
		)

document.getElementById ('result') .innerHTML = result
예제 #10
0
def run(autoTester):

    # Real

    r = num.array([[2.12, -2.11, -1.23], [2.31, 1.14, 3.15],
                   [1.13, 1.98, 2.81]])

    autoTester.check('Matrix r', num.round(r, 2).tolist(), '<br>')

    ri = linalg.inv(r)

    autoTester.check('Matrix ri', num.round(ri, 2).tolist(), '<br>')

    __pragma__('opov')
    rid = r @ ri
    __pragma__('noopov')

    autoTester.check('r @ ri', [[int(round(elem)) for elem in row]
                                for row in rid.tolist()], '<br>')

    __pragma__('opov')
    delta = 0.001
    autoTester.check('r * r', num.round(r * r + delta, 3).tolist(), '<br>')
    autoTester.check('r / r', num.round(r / r + delta, 3).tolist(), '<br>')
    autoTester.check('r + r', num.round(r + r + delta, 3).tolist(), '<br>')
    autoTester.check('r - r', num.round(r - r + delta, 3).tolist(), '<br>')
    __pragma__('noopov')

    # Complex

    __pragma__('opov')
    c = num.array([[2.12 - 3.15j, -2.11, -1.23], [2.31, 1.14, 3.15 + 2.75j],
                   [1.13, 1.98 - 4.33j, 2.81]], 'complex128')
    __pragma__('noopov')

    autoTester.check('Matrix c', num.round(c, 2).tolist(), '<br>')

    ci = linalg.inv(c)

    autoTester.check('Matrix ci', num.round(ci, 2).tolist(), '<br>')

    __pragma__('opov')
    cid = c @ ci
    __pragma__('noopov')

    # autoTester.check ('c @ ci', [['{} + j{}'.format (int (round (elem.real)), int (round (elem.imag))) for elem in row] for row in cid.tolist ()], '<br>')

    __pragma__('opov')
    delta = 0.001 + 0.001j
    autoTester.check('c * c', num.round(c * c + delta, 3).tolist(), '<br>')
    autoTester.check('c / c', num.round(c / c + delta, 3).tolist(), '<br>')
    autoTester.check('c + c', num.round(c + c + delta, 3).tolist(), '<br>')
    autoTester.check('c - c', num.round(c - c + delta, 3).tolist(), '<br>')
    __pragma__('noopov')