S5-3.1 The DFT & Fast Fourier Transform
Standard digital-signal-processing theory and the published TMS320C67xx architecture — written September 2026
What this is and why it exists
A computer cannot evaluate a continuous Fourier transform. It holds a finite list of numbers, not a function.
The discrete Fourier transform is the version it can evaluate. The fast Fourier transform is what made evaluating it affordable. Between them they turned frequency analysis from a piece of theory into a routine operation.
The vocabulary
- DFT — the discrete Fourier transform. It turns a finite list of samples into a finite list of frequency values.
- Twiddle factor — the complex number the transform multiplies by at each step.
- FFT — a family of algorithms that compute the DFT with far less work.
- Radix-2 — an FFT that repeatedly splits the sequence in half.
- Decimation in time — splitting the input sequence into even and odd samples.
- Decimation in frequency — splitting the output sequence instead.
- Butterfly — the two-input, two-output operation the algorithm repeats.
- In-place computation — writing each result over an input that is no longer needed.
- Bit reversal — the reordering that in-place computation forces on one end.
- Circular convolution — the wrap-around convolution the DFT actually performs.
- Overlap-add and overlap-save — the two ways of getting ordinary convolution from circular convolution.
The mental model
Start with the cost, because the saving means nothing without it. Computing the DFT directly means, for each of the outputs, a sum over all the inputs. With a sequence of length N that is about N times N complex multiplications. Double the length and the work goes up four times. For a long recording that is unaffordable.
The redundancy is what the FFT exploits. The same twiddle factors appear again and again across those sums. Split the sequence in half and much of the work is shared between the halves. Split each half again and more is shared. Keep splitting and the cost falls to about N times the logarithm of N. For a sequence of a thousand points that is roughly a hundredfold saving.
There are two ways to do the splitting. Decimation in time separates the input into even-numbered and odd-numbered samples. Decimation in frequency separates the outputs into the first half and the second half. Both reach the same saving. Their flow graphs are near mirrors of each other. Learn one butterfly properly and read the other beside it, rather than memorising both.
In-place computation is what keeps the memory small. Each butterfly takes two values and produces two, so the results can be written over the inputs. The cost of that is ordering. One end of the algorithm needs its samples in bit-reversed order, meaning the index with its binary digits written backwards. It looks like a curiosity until you implement it, and then it is a real piece of work.
The payoff is linear filtering. Convolution in time is multiplication in frequency, so a long convolution can be done by transforming, multiplying and transforming back. That is far cheaper than the direct sum.
There is a trap, and it is the reason the DFT properties are worth knowing well. The DFT treats a sequence as if it repeats forever, so multiplying two transforms gives circular convolution, not ordinary convolution. The end of the result wraps round and corrupts the start. Padding with zeros gives enough room to avoid it. Overlap-add and overlap-save are the two standard ways of applying that idea to a stream too long to transform at once.
What you should now be able to explain or do
Compute a short DFT and use its properties. Say why the direct computation costs about N squared operations and where the redundancy is. Draw a radix-2 butterfly and explain how the two decimation schemes differ. Explain in-place computation and why bit reversal follows from it. Filter a long signal with the FFT, and say why overlap-add or overlap-save is needed.
Check yourself
Why is there a discrete Fourier transform at all?
A computer holds a finite list of samples, not a continuous function. The DFT is the only version it can actually evaluate.
Where does the FFT saving come from?
The same twiddle factors recur across the direct sums. Splitting the sequence repeatedly lets that shared work be done once instead of many times.
How do decimation in time and decimation in frequency differ?
One splits the input into even and odd samples. The other splits the output into its first and second halves. The saving is the same.
Why does in-place computation force bit reversal?
Results overwrite inputs, so the natural ordering is destroyed as the algorithm runs. One end must therefore be presented with indices in reversed-bit order.
You multiply two DFTs and the start of the result is wrong. Why?
The DFT assumes the sequence repeats, so the product gives circular convolution. The tail wraps round onto the start unless you pad with zeros.
Go deeper
We haven't checked most of these for screen reader use yet.
Back to The DFT & Fast Fourier Transform: work through the checklist