Rader's algorithm (1968), named for Charles M. Rader of MIT Lincoln Laboratory, 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 (the other algorithm for FFTs of prime sizes, Bluestein's algorithm, also works by rewriting the DFT as a convolution). Since Rader's algorithm only depends upon the periodicity of the DFT kernel, it is directly applicable to any other transform (of prime order) with a similar property, such as a number-theoretic transform or the discrete Hartley transform. The algorithm can be modified to gain a factor of two savings for the case of DFTs of real data, using a slightly modified re-indexing/permutation to obtain two half-size cyclic convolutions of real data; an alternative adaptation for DFTs of real data uses the discrete Hartley transform. Winograd extended Rader's algorithm to include prime-power DFT sizes p m {\displaystyle p^{m}} , and today Rader's algorithm is sometimes described as a special case of Winograd's FFT algorithm, also called the multiplicative Fourier transform algorithm (Tolimieri et al., 1997), which applies to an even larger class of sizes. However, for composite sizes such as prime powers, the Cooley–Tukey FFT algorithm is much simpler and more practical to implement, so Rader's algorithm is typically only used for large-prime base cases of Cooley–Tukey's recursive decomposition of the DFT.
Algorithm
Begin with the definition of the discrete Fourier transform:
X k = ∑ n = 0 N − 1 x n e − 2 π i N n k k = 0 , … , N − 1. {\displaystyle X_{k}=\sum _{n=0}^{N-1}x_{n}e^{-{\frac {2\pi i}{N}}nk}\qquad k=0,\dots ,N-1.}
If N is a prime number, then the set of non-zero indices n ∈
{ 1 , … , N − 1 } {\displaystyle n\in {}\{1,\dots ,N-1\}} forms a group under multiplication modulo N. One consequence of the number theory of such groups is that there exists a generator of the group (sometimes called a primitive root, which can be found by exhaustive search or slightly better algorithms). This generator is an integer g such that n = g q ( mod N ) {\displaystyle n=g^{q}{\pmod {N}}} for any non-zero index n and for a unique q ∈
{ 0 , … , N − 2 } {\displaystyle q\in {}\{0,\dots ,N-2\}} (forming a bijection from q to non-zero n). Similarly, k = g − p ( mod N ) {\displaystyle k=g^{-p}{\pmod {N}}} for any non-zero index k and for a unique p ∈
{ 0 , … , N − 2 } {\displaystyle p\in {}\{0,\dots ,N-2\}} , where the negative exponent denotes the multiplicative inverse of g p mod N {\displaystyle g^{p}\mod N} . That means that we can rewrite the DFT using these new indices p and q as:
X 0 = ∑ n = 0 N − 1 x n , {\displaystyle X_{0}=\sum _{n=0}^{N-1}x_{n},}
X g − p = x 0 + ∑ q = 0 N − 2 x g q e − 2 π i N g − ( p − q ) p = 0 , … , N − 2. {\displaystyle X_{g^{-p}}=x_{0}+\sum _{q=0}^{N-2}x_{g^{q}}e^{-{\frac {2\pi i}{N}}g^{-(p-q)}}\qquad p=0,\dots ,N-2.}
(Recall that xn and Xk are implicitly periodic in N, and also that e 2 π i = 1 {\displaystyle e^{2\pi i}=1} (Euler's identity). Thus, all indices and exponents are taken modulo N as required by the group arithmetic.) The final summation, above, is precisely a cyclic convolution of the two sequences aq and bq (of length N–1, because q ∈
… excerpt ends here. Continue reading the full article.

