www.pudn.com > MRELFFT.rar > MRELFFT.C
#include#include #include #include "msp.h" void mrelfft(float xr[],float xi[],int n,int isign) { /*---------------------------------------------------------------------- routinue mrelfft:To perform split-radix DIF fft algorithm. input parameters: xr,xi:real and image part of complex data for DFT/IDFT,n=0,...,N-1 N :Data point number of DFT compute . isign:Transform direction disignator , isign=-1: For Forward Transform. isign=+1: For Inverse Transform. output parameters: xr,xi:real and image part of complex result of DFT/IDFT,n=0,...,N-1 Note: N must be a power of 2 . in chapter 5 ---------------------------------------------------------------------*/ float e,es,cc1,ss1,cc3,ss3,r1,s1,r2,s2,s3,xtr,xti,a,a3; int m,n2,n4,j,k,is,id,i0,i1,i2,i3,n1,i,nn; for(m=1;m<=16;m++) { nn=pow(2,m); if(n==nn)break; } if(m>16) { printf(" N is not a power of 2 ! \n"); return; } n2=n*2; es=-isign*atan(1.0)*8.0; for(k=1;k =j)break; j=j-k; k=k/2; } j=j+k; } if(isign==-1)return; for(i=0;i