4 #define SWAP( a, b ) tempr=( a ); ( a ) = ( b ); ( b ) = tempr;
6 void four1( float *data, int nn, int isign )
8 unsigned long n, mmax, m, j, istep, i;
9 double wtemp, wr, wpr, wpi, wi, theta;
18 SWAP( data[j], data[i] );
19 SWAP( data[j+1], data[i+1] );
22 while( m >= 2 && j > m )
33 theta = isign * ( 2 * PI / mmax );
34 wtemp = sin( 0.5 * theta );
35 wpr = -2.0 * wtemp * wtemp;
39 for( m=1; m<mmax; m+=2 )
41 for( i=m; i<=n; i+=istep )
44 tempr = wr * data[j] - wi * data[j+1];
45 tempi = wr * data[j+1] + wi * data[j];
46 data[j] = data[i] - tempr;
47 data[j+1] = data[i+1] - tempi;
51 wr = ( wtemp = wr ) * wpr - wi * wpi + wr;
52 wi = wi * wpr + wtemp * wpi + wi;
58 int fft( int n, Fukusosuu *in, int disp )
64 x = calloc( m*2+1, sizeof( float ) );
75 fp = fopen( "inputOfFft", "w" );
77 fprintf( fp, "%f %f\n", x[i*2+1], x[i*2+2] );
79 system( "vi inputOfFft < /dev/tty > /dev/tty " );
87 fp = fopen( "outputOfFft", "w" );
89 fprintf( fp, "%f %f\n", x[i*2+1], x[i*2+2] );
91 system( "vi outputOfFft < /dev/tty > /dev/tty " );
105 int fft( int n, Fukusosuu *in, int disp )
112 x = calloc( 100000, sizeof( float ) );
113 y = calloc( 100000, sizeof( float ) );
117 x[i] = (float)in[i].R;
118 y[i] = (float)in[i].I;
121 fft_hontai( n, x, y );
124 (in+i)->R = (double)x[i];
125 (in+i)->I = (double)y[i];