diff --git a/src/frontend/com_fft.c b/src/frontend/com_fft.c index d3b68056a..8b74414fc 100644 --- a/src/frontend/com_fft.c +++ b/src/frontend/com_fft.c @@ -63,6 +63,7 @@ com_fft(wordlist *wl) #ifdef HAVE_LIBFFTW3 fpts = length/2 + 1; + scale = ((double)length)/2.0; #else /* size of fft input vector is power of two and larger or equal than spice vector */ N = 1; @@ -72,6 +73,7 @@ com_fft(wordlist *wl) M++; } fpts = N/2 + 1; + scale = ((double)N)/2; #endif win = TMALLOC(double, length); @@ -178,7 +180,6 @@ com_fft(wordlist *wl) fftw_execute(plan_forward); - scale = (double) fpts - 1.0; fdvec[i][0].cx_real = out[0][0]/scale/2.0; fdvec[i][0].cx_imag = 0.0; for (j = 1; j < fpts; j++) { @@ -215,7 +216,6 @@ com_fft(wordlist *wl) rffts(in, M, 1); fftFree(); - scale = (double) fpts - 1.0; /* Re(x[0]), Re(x[N/2]), Re(x[1]), Im(x[1]), Re(x[2]), Im(x[2]), ... Re(x[N/2-1]), Im(x[N/2-1]). */ fdvec[i][0].cx_real = in[0]/scale/2.0; fdvec[i][0].cx_imag = 0.0; diff --git a/src/maths/cmaths/cmath4.c b/src/maths/cmaths/cmath4.c index af661e968..04b0b5142 100644 --- a/src/maths/cmaths/cmath4.c +++ b/src/maths/cmaths/cmath4.c @@ -774,7 +774,7 @@ cx_fft(void *data, short int type, int length, int *newlength, short int *newtyp fftw_execute(plan_forward); - scale = (double) fpts - 1.0; + scale = ((double)length)/2.0; outdata[0].cx_real = out[0][0]/scale/2.0; outdata[0].cx_imag = 0.0; for (i = 1; i < fpts; i++) { @@ -803,7 +803,7 @@ cx_fft(void *data, short int type, int length, int *newlength, short int *newtyp rffts(datax, M, 1); fftFree(); - scale = (double) fpts - 1.0; + scale = ((double)N)/2; /* Re(x[0]), Re(x[N/2]), Re(x[1]), Im(x[1]), Re(x[2]), Im(x[2]), ... Re(x[N/2-1]), Im(x[N/2-1]). */ outdata[0].cx_real = datax[0]/scale/2.0; outdata[0].cx_imag = 0.0;