Encyclopedia > Prime-factor FFT algorithm

  Article Content

Prime-factor FFT algorithm

The Prime-factor algorithm (PFA), also called the Good-Thomas algorithm, is a Fast Fourier Transform (FFT) algorithm that re-expresses the discrete Fourier transform (DFT) of a size n = n1n2 as a two-dimensional n1 by n2 DFT, but only for the case where n1 and n2 are relatively prime. These smaller transforms of size n1 and n2 can then be evaluated by applying PFA recursively or by using some other FFT algorithm.

The popular Cooley-Tukey algorithm also subdivides a DFT of size n into smaller transforms of size n1 and n2, but it has the disadvantage that it also requires extra multiplications by roots of unity called twiddle factors, in addition to the smaller transforms. On the other hand, the PFA has the disadvantages that it only works for relatively prime factors and that it requires a more complicated re-indexing of the data based on the Chinese Remainder Theorem (CRT).

The PFA algorithm is also closely related to the nested Winograd FFT algorithm, where the latter performs the decomposed n1 by n2 transform via more sophisticated two-dimensional convolution techniques. Some older papers therefore also call Winograd's algorithm a PFA FFT. (Outside of the FFT literature, a few people confusingly refer to the mixed-radix Cooley-Tukey algorithm as a "prime-factor" FFT.)

(Although the PFA is distinct from the Cooley-Tukey algorithm, it is interesting to note that Good's 1958 work on the PFA was cited as inspiration by Cooley and Tukey in their famous 1965 paper. In fact, it was the only prior FFT work cited by them, as they were not then aware of the earlier research by Gauss and others.)

Algorithm

Recall that the DFT is defined by the formula:

<math>f_j = \sum_{k=0}^{n-1} x_k e^{-\frac{2\pi i}{n} jk }
\qquad j = 0,\dots,n-1. </math>

The PFA involves a re-indexing of the input and output arrays, which when substituted into the DFT formula transforms it into two nested DFTs (a two-dimensional DFT).

Re-indexing

Suppose that n = n1n2, where n1 and n2 are relatively prime. In this case, we can define a one-to-one re-indexing of the input k and output j by:

<math>k = k_1 n_2 + k_2 n_1 \mod n,</math>
<math>j = j_1 n_2^{-1} n_2 + j_2 n_1^{-1} n_1 \mod n,</math>

where n1-1 is the multiplicative inverse of n1 modulo n2 and vice-versa for n2-1; the indices ja and ka run from 0,...,na-1 (for a = 1, 2). These inverses only exist for relatively prime n1 and n2, and that condition is also required for the mappings to be one-to-one.

This re-indexing of k is called the Ruritanian mapping, while this re-indexing of j is called the CRT mapping. The latter refers to the fact that j is the solution to the Chinese remainder problem j = j1 mod n1 and j = j2 mod n2.

(One could instead use the Ruritanian mapping for the output j and the CRT mapping for the input k, or various intermediate choices.)

A great deal of research has been devoted to schemes for evaluating this re-indexing efficiently, ideally in-place, while minimizing the number of costly modulo operations (Chan, 1991, and references).

DFT re-expression

The above re-indexing is then substituted into the formula for the DFT, and in particular into the product jk in the exponent. Because ei = 1, this exponent is evaluated modulo n: any n1n2 = n cross term in the jk product can be set to zero. (Similarly, fj and xk are implicitly periodic in n, so their subscripts are evaluated modulo n.) The remaining terms give:

<math>f_{j_1 n_2^{-1} n_2 + j_2 n_1^{-1} n_1} =
  \sum_{k_1=0}^{n_1-1} 
      \left( \sum_{k_2=0}^{n_2-1} x_{k_1 n_2 + k_2 n_1}  
              e^{-\frac{2\pi i}{n_2} j_2 k_2 } \right)
      e^{-\frac{2\pi i}{n_1} j_1 k_1 }.

</math>

The inner and outer sums are simply DFTs of size n2 and n1, respectively

(Here, we have used the fact that n1-1n1 vanishes when evaluated modulo n2 in the inner sum's exponent, and vice-versa for the outer sum's exponent.)


References:

  • I. J. Good, "The interaction algorithm and practical Fourier analysis," J. R. Statist. Soc. B 20 (2), 361-372 (1958). Addendum, ibid. 22 (2), 373-375 (1960).
  • L. H. Thomas, "Using a computer to solve problems in physics," in Applications of Digital Computers (Ginn: Boston, 1963).
  • P. Duhamel and M. Vetterli, "Fast Fourier transforms: a tutorial review and a state of the art," Signal Processing 19, 259-299 (1990).
  • S. C. Chan and K. L. Ho, "On indexing the prime-factor fast Fourier transform algorithm," IEEE Trans. Circuits and Systems 38 (8), 951-953 (1991).



All Wikipedia text is available under the terms of the GNU Free Documentation License

 
  Search Encyclopedia

Search over one million articles, find something about almost anything!
 
 
  
  Featured Article
Grand Prix

... dumped 2003-03-17 with ...

 
 
 
This page was created in 52.8 ms