多倍長の乗算を高速フーリエ(FFTとかいうやつ)で12*2=24ってやりたいんだけど

int n=4;
double theta=3.14159265358979323846*2/n;
double ar1[]={0,0,1,2};//実数
double ar2[]={0,0,0,2};
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);//ar1,ai1をFFT変換
fft(n,theta,ar2,ai2);//ar2,ai2をFFT変換
for(int i=0;i<n;++i)
{
ar3[i]=ar1[i]*ar2[i]/n;
ai3[i]=ai1[i]*ai2[i]/n;
}
fft(n,-theta,ar3,ai3);//FFT逆変換

ってやるとar3が{2,1,2,1}ってなってしまう。
期待してるのは{0,0,2,4}です。
単純に繰り上がりの処理とかもなしでかまいません。
どこが間違ってるのか解説してくれる方いませんか?
お願いします。

ちなみにfftって関数は
ttp://momonga.t.u-tokyo.ac.jp/%7Eooura/fftman/ftmn1_2.html#sec1_2
からコピーしたのを使っています。