public void test1() { int nmax = 1000; for (int n=2; n<nmax; ++n) { int nfft = FftComplex.nfftSmall(n); FftComplex fft = new FftComplex(nfft); float[] c1 = czerofloat(nfft); c1[2] = 1.0f; float[] cx = ccopy(c1); fft.complexToComplex(1,cx,cx); float ra = 0.0f; float rb = 2.0f*FLT_PI/(float)nfft; float[] amp = fillfloat(1.0f,nfft); float[] phs = rampfloat(ra,rb,nfft); float[] cc = polar(amp,phs); assertEqual(cc,cx); fft.complexToComplex(-1,cx,cx); fft.scale(nfft,cx); assertEqual(c1,cx); } }
public void test1() { int nmax = 1000; for (int n=2; n<nmax; ++n) { int nfft = FftReal.nfftSmall(n); FftReal fft = new FftReal(nfft); int nw = nfft/2+1; float[] c1 = czerofloat(nw); float[] r1 = c1; r1[1] = 1.0f; float[] rx = ccopy(r1); float[] cx = rx; fft.realToComplex(1,rx,cx); float ra = 0.0f; float rb = 2.0f*FLT_PI/(float)nfft; float[] amp = fillfloat(1.0f,nw); float[] phs = rampfloat(ra,rb,nw); float[] cc = polar(amp,phs); assertComplexEqual(nw,cc,cx); fft.complexToReal(-1,cx,rx); fft.scale(nfft,rx); assertRealEqual(nfft,r1,rx); } }
public void test2() { int n1max = 26; int n2max = 26; for (int n2=2; n2<n2max; ++n2) { int n2fft = FftComplex.nfftSmall(n2); FftComplex fft2 = new FftComplex(n2fft); for (int n1=2; n1<n1max; ++n1) { int n1fft = FftComplex.nfftSmall(n1); FftComplex fft1 = new FftComplex(n1fft); float[][] c1 = czerofloat(n1fft,n2fft); c1[1][2] = 1.0f; float[][] cx = ccopy(c1); fft1.complexToComplex1(1,n2fft,cx,cx); fft2.complexToComplex2(1,n1fft,cx,cx); float ra = 0.0f; float rb1 = 2.0f*FLT_PI/(float)n1fft; float rb2 = 2.0f*FLT_PI/(float)n2fft; float[][] amp = fillfloat(1.0f,n1fft,n2fft); float[][] phs = rampfloat(ra,rb1,rb2,n1fft,n2fft); float[][] cc = polar(amp,phs); assertEqual(cc,cx); fft1.complexToComplex1(-1,n2fft,cx,cx); fft2.complexToComplex2(-1,n1fft,cx,cx); fft1.scale(n1fft,n2fft,cx); fft2.scale(n1fft,n2fft,cx); assertEqual(c1,cx); } } }
float[][] amp = fillfloat(1.0f,n1fft,nw); float[][] phs = rampfloat(ra,rb1,rb2,n1fft,nw); float[][] cc = polar(amp,phs); assertComplexEqual(n1fft,nw,cc,cx); fft1.complexToComplex1(-1,nw,cx,cx);
float[][] amp = fillfloat(1.0f,nw,n2fft); float[][] phs = rampfloat(ra,rb1,rb2,nw,n2fft); float[][] cc = polar(amp,phs); assertComplexEqual(nw,n2fft,cc,cx); fft2.complexToComplex2(-1,nw,cx,cx);
cx = polar(rr,ra); float[][][] rx = cos(ra); float[][][] ry = sin(ra);