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

📄 gen_twiddle.c

📁 TI DSP标准测试程序集benchmark
💻 C
字号:
       #include <math.h>       
#include <stdio.h>                                            
   #define N 16                                                                        
       #ifndef PI                                                          
       # define PI (3.14159265358979323846)                                
      #endif                                                              
                                                                           
       short d2s(double d)                                                 
       {                                                                   
           d = floor(0.5 + d);  // Explicit rounding to integer //         
           if (d >=  32767.0) return  32767;                               
           if (d <= -32768.0) return -32768;                               
           return (short)d;                                                
       }                                                                   
                                                                           
       void gen_twiddle(short *w, int n)                                   
      {                                                                   
           double M = 32767.5;                                             
           int i, j, k;                                                    
                                                                           
           for (j = 1, k = 0; j < n >> 2; j = j << 2)                      
           {                                                               
               for (i = 0; i < n >> 2; i += j << 1)                        
               {                                                           
                   w[k + 11] = d2s(M * cos(6.0 * PI * (i + j) / n));       
                   w[k + 10] = d2s(M * sin(6.0 * PI * (i + j) / n));       
                  w[k +  9] = d2s(M * cos(6.0 * PI * (i    ) / n));       
                   w[k +  8] = d2s(M * sin(6.0 * PI * (i    ) / n));       
                                                                           
                   w[k +  7] = d2s(M * cos(4.0 * PI * (i + j) / n));       
                   w[k +  6] = d2s(M * sin(4.0 * PI * (i + j) / n));       
                   w[k +  5] = d2s(M * cos(4.0 * PI * (i    ) / n));       
                   w[k +  4] = d2s(M * sin(4.0 * PI * (i    ) / n));       
                                                                           
                   w[k +  3] = d2s(M * cos(2.0 * PI * (i + j) / n));       
                  w[k +  2] = d2s(M * sin(2.0 * PI * (i + j) / n));       
                   w[k +  1] = d2s(M * cos(2.0 * PI * (i    ) / n));       
                   w[k +  0] = d2s(M * sin(2.0 * PI * (i    ) / n));       
                                                                           
                   k += 12;                                                
               }                                                           
           }                                                               
           w[2*n - 1] = w[2*n - 3] = w[2*n - 5] = 32767;                   
           w[2*n - 2] = w[2*n - 4] = w[2*n - 6] = 0;                       
       }
	int main(){
	short w[2*N];
	int i;
	gen_twiddle(w,N);
	for(i=0;i<N*2;i++)printf("w[%d]=%d;\n",i,w[i]);
	return 0;
	}                                                           
                                                                          

⌨️ 快捷键说明

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