As you can see in the documentation, FFTW computes an unnormalized transform. That is, an additional division by the length of the signal is necessary to recover the input signal after a forward and an inverse transform:
IFFT(FFT(signal))/N = signal.
The Python NumPy FFT is normalized, it includes the division by
N in the inverse transform.
Do note that this additional division will not change your relative precision, as all values in the signal are divided by exactly the same number.
Some libraries (such as FFTW) compute the unnormalized FFT, skipping the division by
N in the inverse transform, for speed, since sometimes it might not be necessary. Other libraries define a different normalization altogether, for example they might do the division by
N in the forward transform instead of the inverse, or they might divide by the square root of
N in both forward and backward transforms.
Read more here: Source link