FFTW FAQ - Section 3
Using FFTW


Question 3.1. FFTW gives results different from my old FFT.

People follow many different conventions for the DFT, and you should be sure to know the ones that we use (described in the FFTW manual). In particular, you should be aware that the FFTW_FORWARD/FFTW_BACKWARD directions correspond to signs of -1/+1 in the exponent of the DFT definition. (Numerical Recipes} uses the opposite convention.) You should also know that we compute an unnormalized transform; see Q3.3 `Why does your inverse transform return a scaled result?'

Question 3.2. Can I save FFTW's plans?

Yes. Starting with version 1.2, FFTW provides the wisdom mechanism for saving plans. See Q4.3 `What is this wisdom thing?' and the FFTW manual.

Question 3.3. Why does your inverse transform return a scaled result?

Computing the forward transform followed by the backward transform (or vice versa) yields the original array scaled by the size of the array. (For multi-dimensional transforms, the size of the array is the product of the dimensions.) We could, instead, have chosen a normalization that would have returned the unscaled array. Or, to accomodate the many conventions in this matter, the transform routines could have accepted a "scale factor" parameter. We did not do this, however, for two reasons. First, we didn't want to sacrifice performance in the common case where the scale factor is 1. Second, in real applications the FFT is followed or preceded by some computation on the data, into which the scale factor can typically be absorbed at little or no cost.

Question 3.4. How can I make FFTW put the origin (zero frequency) at the center of its output?

For human viewing of a spectrum, it is often convenient to put the origin in frequency space at the center of the output array, rather than in the zero-th element (the default in FFTW). If all of the dimensions of your array are even, you can accomplish this by simply multiplying each element of the input array by (-1)^(i + j + ...), where i, j, etcetera are the indices of the element. (This trick is a general property of the DFT, and is not specific to FFTW.)
Next: Internals of FFTW.
Back: Installing FFTW.
Return to contents.

Matteo Frigo and Steven G. Johnson / fftw@theory.lcs.mit.edu - 10 April 1998

Extracted from FFTW Frequently Asked Questions with Answers, Copyright © 1998 Massachusetts Institute of Technology.