Math 2.0

Numerical analysis Fourier and transform methods Theorem

Cooley–Tukey FFT algorithm

Builds on Discrete Fourier transformPrimitive root of unityBig O notation

Statement

For an integer M≥1M \ge 1 let ωM=e−2πi/M\omega_M = e^{-2\pi i/M}, a primitive MM-th root of unity. Let N=N1N2N = N_1 N_2 with integers N1,N2≥1N_1, N_2 \ge 1, let x=(x0,…,xN−1)∈ℂNx = (x_0, \ldots, x_{N-1}) \in \C^N, and let XX be its discrete Fourier transform, Xk=∑n=0N−1xnωNnkX_k = \sum_{n=0}^{N-1} x_n \omega_N^{nk}. Then for all 0≤k1<N10 \le k_1 < N_1 and 0≤k2<N20 \le k_2 < N_2, Xk1+N1k2=∑n2=0N2−1ωN2n2k2[ωNn2k1∑n1=0N1−1xN2n1+n2 ωN1n1k1].X_{k_1 + N_1 k_2} = \sum_{n_2=0}^{N_2-1} \omega_{N_2}^{n_2 k_2} \left[ \omega_N^{n_2 k_1} \sum_{n_1=0}^{N_1-1} x_{N_2 n_1 + n_2}\, \omega_{N_1}^{n_1 k_1} \right]. Thus a DFT of length NN is obtained in three stages. First come N2N_2 DFTs of length N1N_1, then NN multiplications by the twiddle factors ωNn2k1\omega_N^{n_2 k_1}, then N1N_1 DFTs of length N2N_2. In particular, if N=2mN = 2^m, applying this with N1=2N_1 = 2 (or N2=2N_2 = 2) recursively computes XX with O(Nlog⁡N)O(N \log N) arithmetic operations.

Remarks

The proof is one line: write n=N2n1+n2n = N_2 n_1 + n_2 and k=k1+N1k2k = k_1 + N_1 k_2 and expand ωNnk\omega_N^{nk}. The factor ωNN2N1n1k2\omega_N^{N_2 N_1 n_1 k_2} equals 11, while ωNN2n1k1=ωN1n1k1\omega_N^{N_2 n_1 k_1} = \omega_{N_1}^{n_1 k_1} and ωNN1n2k2=ωN2n2k2\omega_N^{N_1 n_2 k_2} = \omega_{N_2}^{n_2 k_2}. For N=2MN = 2M the radix-2 form reads Xk=Ek+ωNkOkX_k = E_k + \omega_N^k O_k and Xk+M=Ek−ωNkOkX_{k+M} = E_k - \omega_N^k O_k for 0≤k<M0 \le k < M, where EE and OO are the DFTs of length MM of the even-indexed and odd-indexed entries. The cost then satisfies T(N)=2T(N/2)+O(N)T(N) = 2T(N/2) + O(N), so T(N)=O(Nlog⁡N)T(N) = O(N \log N). Direct evaluation of the defining sums costs about N2N^2 multiplications; for N=220N = 2^{20} the ratio is about 5×1045 \times 10^4. The splitting is useless when NN is prime, since then one factor is 11.

Going deeper

For a student

This is the most common fast Fourier transform. The index maps n=N2n1+n2n = N_2 n_1 + n_2 and k=k1+N1k2k = k_1 + N_1 k_2 turn a one-dimensional transform into a two-dimensional one, up to the twiddle factors. Radix-2, radix-4, split-radix and mixed-radix versions differ only in how NN is factored at each step. When N1N_1 and N2N_2 are coprime, the prime-factor algorithm uses other index maps and avoids the twiddle factors. Prime lengths need a different reduction, such as Rader's or Bluestein's algorithm.

Reading path

To understand this page from the ground up, read these 4 pages in order. The foundations come first.

Show the path as a graph
Each page uses the pages above it. The colour of the bar on a box shows how strong the evidence is, and the box also gives it as text. The list has the same pages.
  • no evidence level
  1. Big O notation concept
  2. Discrete Fourier transform concept
  3. Primitive root of unity concept
  4. Cooley–Tukey FFT algorithm statement

Where this leads

5 pages build on this one.

Further reading

  1. Web https://en.wikipedia.org/wiki/Cooley–Tukey_FFT_algorithm
About this page
Tag9N8D9E5TB2
URIm2://9N8D9E5TB2
Kindstatement, theorem
WritingW0 stub
MSC65T50, 65Y20
StatusThis copy of the site has no build data. Run m2 status 9N8D9E5TB2.
AboutDiscrete Fourier transform
UsesDiscrete Fourier transform, Primitive root of unity, Big O notation
Same as

Markdown · JSON · Edit on GitHub

What this page needs for W1

  • an inventory row: the row of the inventory that the node accounts for (0 of 1)
  • a source with a locator (0 of 1)

The writing levels say how complete the text of a page is. They do not measure its truth.

What links here

Used by