C言語でのFFTについて
http://tsuyu.cocolog-nifty.com/blog/2007/03/publi.html
に掲載されているVBAのFFTプログラムをC言語に書き換えて
実行しているのですがうまくいきません。
どこが、間違っているか教えてください。
======以下FFTのサブルーチンソースコード=====
void FFT(float Xr[], float Xi[])
{
i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0;
n=DN;
m = log10(n)/log10(2);
Table(c,s);
l=n,h=1;
for(g=1;g<=m;g++){
l/=2,k=0;
for(q=1;q<=h;q++){
p=0;
for(i=k;i<=l+k-1;i++){
j=i+l;
a=Xr[i]-Xr[j], b=Xi[i]-Xi[j];
Xr[i] = Xr[i] + Xr[j], Xi[i] = Xi[i] + Xi[j];
if(p==0){
Xr[j]=a,Xi[j]=b;
}else{
Xr[j] = a * c[p] + b * s[p], Xi[j] = b * c[p] - a * s[p];
}
p+=h;
}
k+=l+l;
}
h+=h;
}
j=n/2;
for(i=1;i<=n-1;i++){
k=n;
if(j<i){
//ビットリバース
swap(&Xr[i],&Xr[j]);
swap(&Xi[i],&Xi[j]);
}
k=k/2;
while(j>=k){
j=j-k;
k /=2;
}
j = j + k;
}
}