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