Lesson
The theory — The Fast Fourier Transform
The fast Fourier transform (FFT) is any algorithm that computes the discrete Fourier transform X[k] = Σ x[n] Wkn, W = e−2πi/N, exactly up to rounding, in about N log N operations instead of N². The Cooley–Tukey form splits N = N1N2: N2 interleaved transforms of length N1, each output k1 of transform n2 multiplied by its own twiddle factor Wn2k1, then N1 transforms of length N2 across them. Applied again and again to N = 2m it is the radix-2 FFT: m stages of N/2 butterflies.
What each symbol means
N- the number of samples, and of frequencies computed
W- the root of unity e−2πi/N; its powers are the twiddle factors
m- log2N, the number of stages of a radix-2 FFT
Problem solved in full
-
Gauss's other example: Juno, 36 values 4 steps
Article 41 of Gauss's manuscript interpolates the equation of the centre of Juno from 36 values, one every 10°, split as 6 × 6. By Cooley and Tukey's count, how much work does the direct sum take, how much does Gauss's split save, and could a finer split do better? Press Gauss, 3 periods of 4 first: the page counts the same way for twelve values.
-
The direct sum, one operation per sample per frequency:
-
Gauss's split, six periods of six: Cooley and Tukey's two-step count is N times the sum of the factors.
-
Split all the way down, 36 = 2 × 2 × 3 × 3:
-
Cooley and Tukey's rule: a factor r = st with s, t > 1 always has s + t < r, unless s = t = 2:
Answer
1,296 operations direct, 432 with Gauss's 6 × 6 split, 360 split all the way. Gauss's split already does three times less work, and the finest split saves another sixth of what is left. The page's twelve values go the same way: 144 direct and 84 split, or 12 × (2 + 2 + 3) = 84 again all the way down, because a factor of 4 split into 2 × 2 costs the same.
-
Learning path
The Fourier transform in practice
References (3)
- Gauss's manuscript on trigonometric interpolation, printed after his death. Article 28 is the page's Gauss mode: twelve declinations of the northern limit of Pallas's zodiac at every 30° of right ascension, split into three periods of four and into four periods of three. Article 27 says the split extends to three or more factors and that practice will teach whoever tries it ("praxis tentantem docebit"); article 41 works Juno's equation of the centre from 36 values with the eccentricity 0.254236. The editor's note calls the text a reworking of a draft apparently begun in October 1805: C. F. Gauss, Theoria interpolationis methodo nova tractata (Nachlass). Werke, Band III, Königliche Gesellschaft der Wissenschaften, Göttingen, 1866; second printing 1876, where the treatise begins on p. 265 and arts. 25–28 are on pp. 303–310.
- The paper that showed Gauss's split is the Cooley–Tukey FFT: the change of index n = N₂n₁ + n₂, k = k₁ + N₁k₂ written as Gauss's procedure, his examples (N = 12 as 4 × 3 and 3 × 4, N = 36 as 6 × 6), the dating to October–November 1805 from the Juno eccentricity and other clues, and what the manuscript does not contain: "Gauss did not, however, go on to quantify the computational requirements of his method": M. T. Heideman, D. H. Johnson and C. S. Burrus, Gauss and the history of the fast Fourier transform. IEEE ASSP Magazine 1(4), 14–21 (October 1984). doi:10.1109/MASSP.1984.1162257
- The paper that made the FFT standard: the split N = r₁r₂ with T = N(r₁ + r₂) operations, its repetition to T = N(r₁ + … + r_m), the radix-2 form with bit-reversed order, and the count of N² operations for the direct sum against fewer than 2N log₂N, where an operation is a complex multiplication followed by a complex addition: J. W. Cooley and J. W. Tukey, An algorithm for the machine calculation of complex Fourier series. Mathematics of Computation 19(90), 297–301 (1965). doi:10.1090/S0025-5718-1965-0178586-1