⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft16x32.c

📁 TI DSP标准测试程序集benchmark
💻 C
字号:
#define N 16 
      void radix4(int n, short x[], short wn[])                           
       {                                                                   
           int    n1,  n2,  ie,   ia1,  ia2, ia3;                          
           int    i0,  i1,  i2,    i3,    i, j,     k;                     
          short  co1, co2, co3,  si1,  si2, si3;                          
           short  xt0, yt0, xt1,  yt1,  xt2, yt2;                          
           short  xh0, xh1, xh20, xh21, xl0, xl1,xl20,xl21;                
                                                                           
           n2 = n;                                                         
           ie = 1;                                                         
           for (k = n; k > 1; k >>= 2)                                     
           {                                                               
              n1 = n2;                                                    
               n2 >>= 2;                                                   
               ia1 = 0;                                                    
                                                                           
               for (j = 0; j < n2; j++)                                    
               {                                                           
                    ia2 = ia1 + ia1;                                       
                    ia3 = ia2 + ia1;                                       
                                                                          
                    co1 = wn[2 * ia1    ];                                 
                    si1 = wn[2 * ia1 + 1];                                 
                    co2 = wn[2 * ia2    ];                                 
                    si2 = wn[2 * ia2 + 1];                                 
                   co3 = wn[2 * ia3    ];                                 
                    si3 = wn[2 * ia3 + 1];                                 
                    ia1 = ia1 + ie;                                        
                                                                           
                    for (i0 = j; i0< n; i0 += n1)                          
                   {                                                      
                        i1 = i0 + n2;                                      
                        i2 = i1 + n2;                                      
                        i3 = i2 + n2;                                                                                                                                                                                            
                        xh0  = x[2 * i0    ] + x[2 * i2    ];              
                       xh1  = x[2 * i0 + 1] + x[2 * i2 + 1];              
                        xl0  = x[2 * i0    ] - x[2 * i2    ];              
                        xl1  = x[2 * i0 + 1] - x[2 * i2 + 1];              
                                                                           
                        xh20 = x[2 * i1    ] + x[2 * i3    ];              
                       xh21 = x[2 * i1 + 1] + x[2 * i3 + 1];              
                        xl20 = x[2 * i1    ] - x[2 * i3    ];              
                        xl21 = x[2 * i1 + 1] - x[2 * i3 + 1];              
                                                                           
                        x[2 * i0    ] = xh0 + xh20;                        
                        x[2 * i0 + 1] = xh1 + xh21;                        
                                                                           
                       xt0  = xh0 - xh20;                                 
                        yt0  = xh1 - xh21;                                
                        xt1  = xl0 + xl21;                                 
                        yt2  = xl1 + xl20;                                 
                        xt2  = xl0 - xl21;                                 
                        yt1  = xl1 - xl20;                                 
                                                                           
                        x[2 * i1    ] = (xt1 * co1 + yt1 * si1) >> 15;     
                        x[2 * i1 + 1] = (yt1 * co1 - xt1 * si1) >> 15;     
                        x[2 * i2    ] = (xt0 * co2 + yt0 * si2) >> 15;     
                       x[2 * i2 + 1] = (yt0 * co2 - xt0 * si2) >> 15;     
                        x[2 * i3    ] = (xt2 * co3 + yt2 * si3) >> 15;     
                        x[2 * i3 + 1] = (yt2 * co3 - xt2 * si3) >> 15;     
                    }                                                      
             }                                                            
                                                                           
              ie <<= 2;                                                    
          }                                                                
     }           
	   int main(){
		int i;
		short x[2*N];
		short w[2*N];
w[0]=0;
w[1]=32767;
w[2]=12540;
w[3]=30273;
w[4]=0;
w[5]=32767;
w[6]=23170;
w[7]=23170;
w[8]=0;
w[9]=32767;
w[10]=30273;
w[11]=12540;
w[12]=23170;
w[13]=23170;
w[14]=30273;
w[15]=12540;
w[16]=32767;
w[17]=0;
w[18]=23170;
w[19]=-23170;
w[20]=23170;
w[21]=-23170;
w[22]=-12540;
w[23]=-30273;
w[24]=-13108;
w[25]=-13108;
w[26]=0;
w[27]=32767;
w[28]=0;
w[29]=32767;
w[30]=0;
w[31]=32767;
for(i=0;i<2*N;i++)x[i]=i<<5;
radix4(N, x, w);
	   return 0;
	   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -