C言語なら俺に聞け! Part 101
■ このスレッドは過去ログ倉庫に格納されています
0412407
05/02/05 04:41:00試してみた。ごめん、そのfftは配列サイズが2のn乗でないとうまくいかない。n=6はダメ
桁あふれしなければ4のままで大丈夫だった。これで、1024が表示された。
int n=4, i;
double theta=3.14159265358979323846*2/n;
double ar1[]={6,5,2,0};
double ar2[]={4,0,0,0};
double ar3[]={0,0,0,0};
double ai1[]={0,0,0,0};
double ai2[]={0,0,0,0};
double ai3[]={0,0,0,0};
fft(n,theta,ar1,ai1);
fft(n,theta,ar2,ai2);
for(i=0;i<n;++i)
{
ar3[i]=ar1[i]*ar2[i]-ai1[i]*ai2[i];
ai3[i]=ar1[i]*ai2[i]+ai1[i]*ar2[i];
ar3[i]/=n;
ai3[i]/=n;
}
fft(n,-theta,ar3,ai3);
for(i=0;i<n-1;i++){
ar3[i+1]+=(int)ar3[i]/10;
ar3[i] = (int)ar3[i] % 10;
}
for(i=n-1; i>=0; i--) printf( "%d",(int)ar3[i]);
printf("\n");
■ このスレッドは過去ログ倉庫に格納されています