Purpose: Decompose a DFT of length with into transforms of length and transforms of length — with no twiddle factors at all. Also called the prime-factor algorithm (PFA).
The Idea
Cooley-Tukey also splits , but the two sub-transforms are joined by twiddle factors — extra complex multiplications. Good-Thomas eliminates them entirely by choosing a smarter index map, available only when the factors are coprime.
Use the Chinese Remainder Theorem to re-index:
With the CRT map applied to the input index and the Ruritanian (CRT-weighted) map to the output index, the kernel factorises cleanly:
with no cross terms. So the 1-D DFT of length literally becomes a 2-D DFT on an grid: transform every row, then every column. Done.
Algorithm
- Reshape the input into an array using the CRT index map.
- Apply length- DFTs down the columns.
- Apply length- DFTs across the rows.
- Read the output back out with the inverse index map.
Complexity
- Multiplications: strictly fewer than Cooley-Tukey — the twiddle stage is gone
- Time: overall when applied recursively
- The index permutations are the price, and they are cache-unfriendly
Where it is used
Good-Thomas is a real component of production FFT libraries. FFTW’s planner combines:
- Good-Thomas for coprime factors (no twiddles),
- Cooley-Tukey for non-coprime factors (twiddles required),
- Rader for prime factors,
- Bluestein as the general fallback,
- hard-coded straight-line “codelets” for small sizes.
This is why FFTW is fast at lengths like that a naive radix-2 implementation would have to pad to 1024.
The takeaway idea
The reusable lesson is the CRT index map: when a problem has a size that factors into coprime parts, the CRT often lets you treat a 1-D problem as an independent multi-dimensional one, with no interaction terms. The same move appears in:
- CRT for splitting modular arithmetic into independent prime-power components;
- counting problems over that factor into independent counts over each ;
- multiplicative function computation, where .
Variants / Use Cases
- Cooley-Tukey — the general (non-coprime) decomposition
- Chinese Remainder Theorem — the index map
- FFT and NTT — the topic page
- Winograd FFT — pushes the multiplication count even lower using minimal-multiplication convolution algorithms for small sizes