diff --git a/test/testkiss.py b/test/testkiss.py index 2773557..595d4cb 100755 --- a/test/testkiss.py +++ b/test/testkiss.py @@ -3,10 +3,11 @@ import math import sys import os import random -import Numeric -import FFT import struct import popen2 +import getopt +import Numeric +import FFT pi=math.pi e=math.e @@ -27,6 +28,7 @@ elif datatype=='short': fmt='h' minsnr=10 + def dopack(x,cpx=1): x = Numeric.reshape( x, ( Numeric.size(x),) ) if cpx: @@ -48,8 +50,11 @@ def make_random(dims=[1]): for i in range(dims[0]): if len(dims)==1: r=random.uniform(-1,1) - i=random.uniform(-1,1) - res.append( complex(r,i) ) + if doreal: + res.append( r ) + else: + i=random.uniform(-1,1) + res.append( complex(r,i) ) else: res.append( make_random( dims[1:] ) ) return Numeric.array(res) @@ -67,11 +72,20 @@ def randmat( ndims ): def test_fft(ndims): if ndims == 1: - x=Numeric.array(make_random( [ int(random.uniform(500,1025)) ] )) + nfft = int(random.uniform(50,520)) + if doreal: + nfft = int(nfft/2)*2 + + x = Numeric.array(make_random( [ nfft ] ) ) else: x=randmat( ndims ) - xver = FFT.fftnd(x) + print 'dimensions=%s' % str( Numeric.shape(x) ), + if doreal: + xver = FFT.real_fft(x) + else: + xver = FFT.fftnd(x) + x2=dofft(x) err = xver - x2 errf = flatten(err) @@ -79,7 +93,6 @@ def test_fft(ndims): errpow = Numeric.vdot(errf,errf)+1e-10 sigpow = Numeric.vdot(xverf,xverf)+1e-10 snr = 10*math.log10(abs(sigpow/errpow) ) - print 'dimensions=%s' % str( Numeric.shape(x) ), print 'SNR (compared to NumPy) : %.1fdB' % float(snr) if snr