📄 gen_twiddle.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 + -