Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a422632efe32c235

Jump to content

// Workers AI · dad joke modeWhat did Bailey's FFT algorithm say? "I've got a fast fourier friend.

From Wikipedia, the free encyclopedia
(Redirected from Four-step FFT)
Bailey algorithm (4-step version) for a 16-point FFT

Bailey's FFT (also known as a 4-step FFT) is a high-performance algorithm for computing the fast Fourier transform (FFT). This variation of the Cooley–Tukey FFT algorithm was originally designed for systems with hierarchical memory, as is common in modern computers, and was the first FFT algorithm in this "out of core" class. The algorithm treats the samples as a two dimensional matrix (thus another name, a matrix FFT algorithm[1]) and executes short FFT operations on the columns and rows of the matrix, with multiplication by correction "twiddle factors" in between.[2]

The algorithm is named after an article by David H. Bailey, FFTs in external or hierarchical memory, published in 1989. In this article, Bailey credits the algorithm to W. M. Gentleman and G. Sande, who published their paper, Fast Fourier Transforms: for fun and profit,[3] in 1966, more than two decades earlier.[4] The algorithm can be considered a radix- FFT decomposition.[5]

Algorithm

[edit]

Let be the transform size, and let the input data be represented as a matrix. Bailey's four-step FFT consists of the following steps:[6]

  1. Perform independent point FFTs on the input matrix.
  2. Multiply each resulting matrix element by the corresponding twiddle factor , where the sign depends on the convention used for the transform.
  3. Transpose the resulting matrix to get a matrix.
  4. Perform independent point FFTs on the transposed matrix.

When the component FFTs produce their outputs in natural order, the resulting transform is also in natural order and does not require a separate bit-reversal permutation.[7] Bailey noted that and don't need to be equal, although on many systems the algorithm is the most efficient when they are chosen as close as possible to .[4]

The algorithm resembles a 2-dimensional FFT; three-dimensional and higher dimensional extensions are known as 5-step FFT, 6-step FFT, etc.[2][8]

Applications

[edit]

The Bailey FFT is typically used for computing DFTs of large datasets, such as those used in scientific and engineering applications. It has been used to compute FFTs of datasets with billions of elements; when applied to the number-theoretic transform, datasets on the order of 1012 elements were processed in the mid-2000s.[9]

Memory locality

[edit]

The Bailey FFT's four step decomposition improves memory locality by replacing one large transform with groups of smaller transforms that can be performed on contiguous portions of data. If the component transforms fit within a faster level of a memory hierarchy, then the accesses during those transforms can be served from that level rather than from a slower level of memory.[10]

Likewise, the matrix transpose rearranges the data so that the second set of component transforms can be performed with better access patterns. The original intention of Bailey was to develop a method for systems in which the complete dataset could not be held in fast memory, which allows the transform to be organized around transfers between levels of a hierarchical memory system.[6]

See also

[edit]

References

[edit]
  1. ↑ Arndt 2010, p. 438.
  2. 1 2 Hart, Tornaría & Watkins 2010, p. 191.
  3. ↑ Gentleman, W.M.; Sande, G. (1966). "Fast Fourier Transforms—For Fun and Profit" (PDF). AFIPS Conference Proceedings Volume 29. Fall Joint Computer Conference, November 7-10, 1966. San Francisco, California. pp. 563–578.
  4. 1 2 Bailey 1989, p. 2.
  5. ↑ Frigo & Johnson 2005, p. 2.
  6. 1 2 Bailey 1989, pp. 2–3.
  7. ↑ Bailey 1989, p. 3.
  8. ↑ Al Na'mneh & Pan 2007, pp. 191–192.
  9. ↑ Al Na'mneh & Pan 2007.
  10. ↑ Bailey 1989, pp. 1–3.

Sources

[edit]