Math 2.0

Numerical analysis Fourier and transform methods Theorem

Bluestein's FFT algorithm

Builds on Discrete Fourier transformConvolutionCooley–Tukey FFT algorithmBig O notation

Statement

Let N≥1N \ge 1, let x∈ℂNx \in \C^N and let XX be its discrete Fourier transform, Xk=∑n=0N−1xne−2πink/NX_k = \sum_{n=0}^{N-1} x_n e^{-2\pi i nk/N}. For integers mm let bm=eπim2/Nb_m = e^{\pi i m^2/N}, and for 0≤n<N0 \le n < N let an=xne−πin2/Na_n = x_n e^{-\pi i n^2/N}. Then for 0≤k<N0 \le k < N, Xk=bk‾∑n=0N−1an bk−n.X_k = \overline{b_k} \sum_{n=0}^{N-1} a_n\, b_{k-n}. Let M≥2N−1M \ge 2N - 1, let α∈ℂM\alpha \in \C^M be aa followed by zeros, and let β∈ℂM\beta \in \C^M have βj=bj\beta_j = b_j for 0≤j<N0 \le j < N, βM−j=b−j\beta_{M-j} = b_{-j} for 1≤j<N1 \le j < N, and zeros elsewhere. Then Xk=bk‾ (α⊛β)kX_k = \overline{b_k}\, (\alpha \circledast \beta)_k for 0≤k<N0 \le k < N, where (α⊛β)k=∑j=0M−1αjβ(k−j) mod M(\alpha \circledast \beta)_k = \sum_{j=0}^{M-1} \alpha_j \beta_{(k-j) \bmod M} is the cyclic convolution of length MM. Take MM a power of 22 and compute the cyclic convolution with three radix-2 FFTs of length MM. Then the DFT of any length NN costs O(Nlog⁡N)O(N \log N) operations.

Remarks

The key identity is nk=12(n2+k2−(k−n)2)nk = \frac12 \bigl(n^2 + k^2 - (k-n)^2\bigr), which gives e−2πink/N=e−πin2/Ne−πik2/Neπi(k−n)2/Ne^{-2\pi i nk/N} = e^{-\pi i n^2/N} e^{-\pi i k^2/N} e^{\pi i (k-n)^2/N}. So the DFT is a pointwise product with a chirp, a convolution with the conjugate chirp, and another pointwise product. The index k−nk - n runs from −(N−1)-(N-1) to N−1N-1, and the zero padding to M≥2N−1M \ge 2N-1 makes the cyclic convolution agree with this linear convolution on 0≤k<N0 \le k < N. The cyclic convolution of length MM equals the inverse DFT of the product of the DFTs of α\alpha and β\beta. Since one can choose M<4NM < 4N, the constant in O(Nlog⁡N)O(N \log N) does not depend on the arithmetic of NN; in particular prime NN is allowed. The same identity with e−2πi/Ne^{-2\pi i/N} replaced by any complex zz evaluates the chirp z-transform ∑nxnz−nk\sum_n x_n z^{-nk}, which is the subject of the source article.

Going deeper

For a student

The algorithm is the standard fallback in FFT libraries for lengths with large prime factors. Compared with Rader's algorithm, it does not need a primitive root and works for every NN, not only primes. It needs about three FFTs of length M≈2NM \approx 2N to 4N4N, so it is slower than a direct Cooley–Tukey FFT of a highly composite length. The chirp eπim2/Ne^{\pi i m^2/N} is the same object as in the fractional Fourier transform and in radar signal processing.

Reading path

To understand this page from the ground up, read these 6 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. Convolution concept
  3. Discrete Fourier transform concept
  4. Primitive root of unity concept
  5. Cooley–Tukey FFT algorithm statement
  6. Bluestein's FFT algorithm statement

Where this leads

2 pages build on this one.

Further reading

  1. Web https://en.wikipedia.org/wiki/Chirp_Z-transform, Bluestein's algorithm
About this page
TagRY3QGW87HX
URIm2://RY3QGW87HX
Kindstatement, theorem
WritingW0 stub
MSC65T50, 65Y20
StatusThis copy of the site has no build data. Run m2 status RY3QGW87HX.
AboutDiscrete Fourier transform
UsesDiscrete Fourier transform, Convolution, Cooley–Tukey FFT algorithm, Big O notation

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)

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

What links here

Used by