📄 test12.c
字号:
#include <math.h>
#include <stdio.h>
#define pi 3.1415926
#define r 4
#define N 16
int k,i,j,bfsize,p,t;
float u_real,u_imag,v_real,v_imag;
float x1_real[16],x1_imag[16],x2_real[16],x2_imag[16];
float wk_real[16],wk_imag[16];
float y_real[16],y_imag[16],z_imag[16],z_real[16],x_real[16],x_imag[16];
float x[16];
main()
{
for(i=0;i<N/2;i++)
{
wk_real[i]=cos(-2*pi*i/N);
wk_imag[i]=sin(-2*pi*i/N);
}
for(i=0;i<N;i++)
{
x1_real[i]=exp(-i);
x1_imag[i]=0;
}
for(i=0;i<N;i++)
{
y_real[i]=x1_real[i];
y_imag[i]=x1_imag[i];
z_real[i]=x2_real[i];
z_imag[i]=x2_imag[i];
}
for(k=0;k<r;k++)
{
for(j=0;j<1<<k;j++)
{
bfsize=1<<(r-k);
for(i=0;i<bfsize/2;i++)
{
p=j*bfsize;
t=i*(1<<k);
u_real=y_real[i+p]-y_real[i+p+bfsize/2];
u_imag=y_imag[i+p]-y_imag[i+p+bfsize/2];
v_real=u_real*wk_real[t]-u_imag*wk_imag[t];
v_imag=u_real*wk_imag[t]+u_imag*wk_real[t];
z_real[i+p]=y_real[i+p]+y_real[i+p+bfsize/2];
z_imag[i+p]=y_imag[i+p]+y_imag[i+p+bfsize/2];
z_real[i+p+bfsize/2]=v_real;
z_imag[i+p+bfsize/2]=v_imag;
}
}
for(i=0;i<N;i++)
{
x_real[i]=y_real[i];
x_imag[i]=y_imag[i];
y_real[i]=z_real[i];
y_imag[i]=z_imag[i];
z_real[i]=x_real[i];
z_imag[i]=x_imag[i];
}
}
for(j=0;j<N;j++)
{
p=0;
for(i=0;i<r;i++)
{
if(j&(1<<i))
p+=1<<(r-i-1);
}
x2_real[j]=y_real[p];
x2_imag[j]=y_imag[p];
}
for(i=0;i<N;i++)
x[i]=sqrt(pow(x2_real[i],2)+pow(x2_imag[i],2));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -