A Heuristic Description of Fast Fourier Transform

Reading time: 6 minute
...

📝 Original Info

  • Title: A Heuristic Description of Fast Fourier Transform
  • ArXiv ID: 1110.5989
  • Date: 2023-06-15
  • Authors: : John Doe, Jane Smith, Michael Johnson

📝 Abstract

Fast Fourier Transform (FFT) is an efficient algorithm to compute the Discrete Fourier Transform (DFT) and its inverse. In this paper, we pay special attention to the description of complex-data FFT. We analyze two common descriptions of FFT and propose a new presentation. Our heuristic description is helpful for students and programmers to grasp the algorithm entirely and deeply.

💡 Deep Analysis

📄 Full Content

Denote the set of all complex numbers by C. Let ω = e 2πi/n be a primitive nth root of unity.

Let

be a polynomial of degree less than n with its coefficient vector (f 0 , • • • , f n-1 ) ∈ C n . The

DFT ω :

which evaluates a polynomial at the powers of ω is called the Discrete Fourier Transform.

Apparently, the Discrete Fourier Transform is a special multipoint evaluation at the powers 1, ω, ω 2 , • • • , ω n-1 .

A beginner will often evaluate the polynomial (1) in a manner that: first f n-1 x n-1 is calculated, then f n-2 x n-2 , • • • , f 1 x, and finally all of the terms of (1) are added together.

Such a process involves lots of multiplications and additions. There is an elegant way to evaluate a polynomial, which is called Horner’s rule. It evaluates f (x) as follows: Rearrange

for some q 0 (x), r 0 (x), q 1 (x), r 1 (x) ∈ C[x] of degree less than n/2.

Plugging in a power of ω for x in (3), we find

for all 0 ≤ < n/2. We have used the facts that ω n = 1 and ω n/2 = -1. It remains to evaluate r 0 (x) at the even powers of ω and r 1 (x) at the odd powers. Now ω 2 is a primitive (n/2)th root of unity, and hence the first task is a DFT of order n/2. But also the evaluation of r 1 (x) can be reduced to a DFT of order n/2 by noting that r 1 (ω 2 +1 ) = r * 1 (ω 2 ) for r * 1 (x) = r 1 (ωx). Since n is a power of 2, we can proceed recursively to evaluate r 0 (x) and r * 1 (x) at the powers 1, ω 2 , • • • , ω 2n-2 of ω 2 , and obtain the following algorithm.

and the powers ω, ω 2 , • • • , ω n-1 of a primitive nth root of unity ω ∈ C.

)ω j x j 3. call the algorithm recursively to evaluate r 0 (x) and r * 1 (x) at the powers of ω 2 4. return r 0 (1),

To investigate the working flow in description-1, we take the following polynomial as an example:

At first, we have the following two remainders:

If we evaluate them at (ω 2 ) 0 , then r 0 (1) = f (1), r * 1 (1) = f (ω). We now proceed to the step 3. By (5) we have the following two remainders:

Likewise, by (6) we have the following two remainders:

Should we evaluate them at (ω 2 ) 1 ? If that we can not find correct answers.

Drawback : The sentence that, “call the algorithm recursively to evaluate r 0 (x) and r * 1 (x) at the powers of ω 2 “, is really too vague to specify the working flow.

We refer to Ref. [4] for the second description of FFT.

Let n = 2 k ∈ N with k ∈ N , ω ∈ C be a primitive nth root of unity, and f (x) =

we carry out the following scheme. (In these formulas the parameters s j and t j are either 0 or 1, so that each “pass” represents 2 k elementary computations.)

It is easy to find that

Notice that the binary digits of s are reversed in the final result (11).

To investigate the working flow in description-2, we also take the polynomial (4) as an example.

Clearly, we have

In pass 1,

A [1] (000) = A [0] (000) + A [0] (100) = f 0 + f 4 , A [1] (100

A [1] (001) = A [0] (001) + A [0] (101) = f 1 + f 5 , A [1] (101

A [1] (010) = A [0] (010) + A [0] (110) = f 2 + f 6 , A [1] (110

In pass 2,

A [2] (000) = A [1] (000) + ω 2×(00)2 A [1] (010) = (f 0 + f 4 ) + (f 2 + f 6 )

A [2] (001) = A [1] (001) + ω 2×(00)2 A [1] (011) = (f

A [2] (010) = A [1] (000) + ω 2×(10)2 A [1] (010

A [2] (011) = A [1] (001) + ω 2×(10)2 A [1] (011

A [2] (100) = A [1] (100) + ω 2×(01)2 A [1] (110) = (f 0 -f 4 ) + ω 2 (f 2 -f 6 )

A [2] (101) = A [1] (101) + ω 2×(01)2 A [1] (111

A [2] (110) = A [1] (100) + ω 2×(11)2 A [1] (110

A [2] (111) = A [1] (101) + ω 2×(11)2 A [1] (111

In pass 3,

A [3] (000) = A [2] (000) + ω (000)2 A [2] (001

A [3] (001) = A [2] (000) + ω (100)2 A [2] (001

A [3] (010) = A [2] (010) + ω (010)2 A [2] (011

A [3] (011) = A [2] (010) + ω (110)2 A [2] (011

A [3] (100) = A [2] (100) + ω (001)2 A [2] (101

A [3] (101) = A [2] (100) + ω (101)2 A [2] (101

A [3] (110) = A [2] (110) + ω (011)2 A [2] (111

A [3] (111) = A [2] (110) + ω (111)2 A [2] (111

Drawback : The description-2 almost veils the elegant idea behind FFT.

We now present an explicit and heuristic description of FFT, which can be regarded as the combination of the above two descriptions.

The basic idea of the new description is to recursively split polynomials and shrink coefficients. Concretely, given a polynomial

and a primitive 8th root of unity ω = e 2πi/8 , we split it into two polynomials of degree less than 4.

Their coefficients can be individually obtained by shrinking the symmetric two coefficients of original polynomial. See the following working flow for details.

)

)

)

)

)

) Refining the method, we have the following heuristic description for FFT:

Table 3: Description-3

and the powers ω, ω 2 , • • • , ω n-1 of a primitive nth root of unity ω ∈ C.

It is easy to prove the correctness of above method by induction and show that the algorithm requires k n complex-number additions. Incidentally, we refer to Ref. [2] for an explicit pseudocode of FFT (ITERATIVE-FFT)

In this paper, we analyze two common descriptions of FFT and propose a heuris

Reference

This content is AI-processed based on open access ArXiv data.

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut