/************************************************************************* ** FILE NAME="fft001.c" ** ** <<< Fast Fourier Transformation ( radix 2 ) >>> ** ** programed by Motoi Fujita 1993/05/24 (translated from FORTRAN)** ** revision 1993/11/09 (IFFT) ** ** calling seqence: ** ** #include ** ** struct complex x[LENGTH_OF_DATA]; ** ** int m; LENGTH_OF_DATA=2**m ** ** ** ** fft001( x, m, 0 ) make bit tables ** ** ... ** ** fft001( x, m, 1 ) perform FFT ** ** ... ** ** fft001( x, m,-1 ) perform IFFT ** *************************************************************************/ #include #define NMAX 1024 static int inv[NMAX],*q1,*q2; static struct complex w[NMAX],*r1,*r2; fft001( x, m, sw ) struct complex x[]; int m, sw; { int n,k,l,p,q,flag; int nob,lob,lhb,mm,ks,kf,i,j,jj; double pi=3.14159265358979323; double pn,t; struct complex tocomplex(), add_complex(), sub_complex(), mul_complex(), t1,t2,wf; n=1<>1,l=l<<1 ) for( q=0,q2=inv+q,q1=q2+l; q>1; for( mm=0; mm>=1,lhb>>=1 ) { for( i=0; i