Jump to content

Rader's FFT algorithm

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Stevenj (talk | contribs) at 21:04, 6 June 2003 (added new article). 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)

Rader's FFT algorithm is a Fast Fourier Transform (FFT) algorithm that computes the discrete Fourier transform (DFT) of prime sizes by re-expressing the DFT as a cyclic convolution.

Recall that the DFT is defined by the formula

If n is a prime number, then the set of non-zero indices k = 1,...,n-1 modulo n forms a group under multiplication. One consequence of this is that there exists a generator g of the group, an integer such that k = gq for all non-zero k and for some q in 0,...,n-2. Similarly j = g-p for all non-zero j and for some p in 0,...,n-2, where the negative exponent denotes the multiplicative inverse of gp modulo n. That means that we can rewrite the DFT using these new indices p and q as:

The final summation, above, is precisely a cyclic convolution of the two sequences aq and bq of length n-1 (q = 0,...,n-2) defined by:

Since n-1 is composite, this convolution can be performed directly via the convolution theorem and more conventional FFT algorithms. However, this may not be efficient if n-1 itself has large prime factors, requiring recursive use of Rader's algorithm. Instead, one can compute a cyclic convolution exactly by zero-padding it into a linear convolution of at least twice the length, say to a power of two, which can then be evaluated in O(n log n) time without the recursive application of Rader's algorithm.

This algorithm, then, requires O(n) additions plus O(n log n) time for the convolution. In practice, the O(n) additions can often be performed in O(1) additions by absorbing the additions into the convolution: if the convolution is performed by a pair of FFTs, then the sum of xk is given by the DC (0th) output of the FFT of aq, and x0 can be added to all the outputs by adding it to the DC term of the convolution prior to to the inverse FFT. Still, this algorithm requires intrinsically more operations than FFTs of nearby composite sizes, and typically takes 3-10 times as long in practice.


References:

  • C. M. Rader, "Discrete Fourier transforms when the number of data samples is prime," Proc. IEEE 56, 1107-1108 (1968).