Digital Signal Processing/Fast Fourier Transform (FFT) Algorithm

The Fourier Transform (FFT) is an algorithm used to calculate a Discrete Fourier Transform (DFT) using a smaller number of multiplications.

= Cooley–Tukey algorithm =

The Cooley–Tukey algorithm is the most common fast Fourier transform (FFT) algorithm. It breaks down a larger DFT into smaller DFTs. The best known use of the Cooley–Tukey algorithm is to divide a N point transform into two N/2 point transforms, and is therefore limited to power-of-two sizes.

The algorithm can be implemented in two different ways, using the so-called:
 * Decimation In Time (DIT)
 * Decimation In Frequency (DIF)

Circuit diagram
The following picture represents a 16-point DIF FFT circuit diagram:

In the picture, the coefficients are given by:


 * $$W^k = e^{-j \cdot k/N \cdot 2\pi}$$

where N is the number of points of the FFT. They are evenly spaced on the lower half of the unit circle and $$W^0 = 1$$.

Test script
The following python script allows to test the algorithm illustrated above:

It has a special parameter,, which allows to determine the calculation results for a circuit using only integer numbers.