Jump to content

Butterfly diagram

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Stevenj (talk | contribs) at 15:18, 19 September 2005 (added). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

In the context of fast Fourier transform algorithms, a butterfly is a portion of the computation that combines the results of smaller discrete Fourier transforms (DFTs) into a larger DFT. The name "butterfly" comes from the shape of the data-flow diagram in the radix-2 case, as described below.

Most commonly, the term "butterfly" appears in the context of the Cooley-Tukey FFT algorithm, which recursively breaks down a DFT of composite size into smaller transforms of size where is the "radix" of the transform. These smaller DFTs are then combined with a size- butterfly, which itself is a DFT of size (performed times on corresponding outputs of the sub-transforms) pre-multiplied by roots of unity (known as "twiddle factors"). (This is the "decimation in time" case; one can also perform the steps in reverse, known as "decimation in frequency", where the butterflies comes first and are post-multiplied by twiddle factors. See also the Cooley-Tukey FFT article.)

In the case of the radix-2 Cooley-Tukey algorithm, the butterfly is simply a DFT of size 2 that takes two inputs and gives two outputs by the formula (not including twiddle factors):

If one draws the data-flow diagram for this pair of operations, the to cross and resemble somewhat the wings of a butterfly, hence the name.