#include #include #include #define PI 3.141592653589 #define SWAP(a,b) tempr=(a); (a)=(b); (b)=tempr void pause() { int k; printf("\npaused, enter 1 to continue...\n"); scanf("%d",&k); } int howo(i,m) /* converts a sequency index i to Haramard index j */ int i,m; { int j,k; /* j=i>>1; i=i^j; /* converting binary to Gray code */ i=i^(i>>1); j=0; for (k=0; k> k)); /* bit-reversal */ return j; } void bitreversal(x,N) /* bit reverses a given vector x[] */ float x[]; int N; { int i,j,k, m; float tempr; m=(int)log2f((float)N); for (i=0; i> k)); if (j < i) { SWAP(x[i],x[j]); } } } fft(xr,xi,N,inverse) float xr[],xi[]; int N,inverse; { int mmax,step,i,j,k,j1,n,nu,m; float arg,s,c,tempr,tempi,v; // N=pow(2.0,(float)m); m=(int)log2f((float)N); /* if (inverse) printf("IFFT of size %d (%d)\n",N,m); else printf("FFT of size %d (%d)\n",N,m); printf("\n before reversal...\n"); for (i=0; i= 0; i--) { // for m=log N stages n=n/2; s=s/sqrt(2.0); printf("n=%d %d, s=%.3f %.3f\n",n,n1,s,s1); for (j=0; j1) { n=n/2; for (i=0; i