Cyclotomic fast Fourier transform

From HandWiki

The cyclotomic fast Fourier transform is a type of fast Fourier transform algorithm over finite fields.[1] This algorithm first decomposes a discrete Fourier transform into several circular convolutions. This then derives the discrete Fourier transform results from the circular convolution results. When applied to a discrete Fourier transform over GF(2m), this algorithm has a very low multiplicative complexity. In practice, since there usually exist efficient algorithms for circular convolutions with specific lengths, this algorithm is very efficient.[2]

Background

The discrete Fourier transform over finite fields finds widespread application in the decoding of error-correcting codes such as BCH codes and Reed–Solomon codes. Generalized from the complex field, a discrete Fourier transform of a sequence {fi}0N−1 over a finite field GF(pm) is defined as Fj=∑i=0N−1fiαij,0≤j≤N−1, where α is the N-th primitive root of 1 in GF(pm). If the polynomial representation of {fi}0N−1 can defined as f(x)=f0+f1x+f2x2+⋯+fN−1xN−1=∑0N−1fixi, it is easy to see that Fj is simply f(αj). That is, the discrete Fourier transform of a sequence converts it to a polynomial evaluation problem.

Written in matrix format, 𝐅=[F0F1⋮FN−1]=[α0α0⋯α0α0α1⋯αN−1⋮⋮⋱⋮α0αN−1⋯α(N−1)(N−1)][f0f1⋮fN−1]=ℱ𝐟.

Direct evaluation of the discrete Fourier transform has an O(N2) complexity. Fast Fourier transforms are just efficient algorithms evaluating the above matrix-vector product.

Algorithm

First, define a linearized polynomial over GF(pm) as L(x)=∑ilixpi,li∈GF(pm). Here L(x) is called linearized, because L(x1+x2)=L(x1)+L(x2), which comes from the fact that for elements x1,x2∈GF(pm) and (x1+x2)p=x1p+x2p.

Notice that p is invertible modulo N because N must divide the order pm−1 of the multiplicative group of the field GF(pm). So, the elements {0,1,2,…,N−1} can be partitioned into l+1 cyclotomic cosets modulo N: {0},{k1,pk1,p2k1,…,pm1−1k1},…,{kl,pkl,p2kl,…,pml−1kl}, where ki=pmiki(modN). Therefore, the input to the Fourier transform can be rewritten as f(x)=∑i=0lLi(xki),Li(y)=∑t=0mi−1yptfptkimodN.

In this way, the polynomial representation is decomposed into a sum of linear polynomials. Hence, Fj is given by Fj=f(αj)=∑i=0lLi(αjki). Expanding αjki∈GF(pmi) with the proper basis {βi,0,βi,1,…,βi,mi−1} yields αjki=∑s=0mi−1aijsβi,s, where aijs∈GF(p). By the property of the linearized polynomial Li(x), this yields Fj=∑i=0l∑s=0mi−1aijs(∑t=0mi−1βi,sptfptkimodN).

This equation can be rewritten in matrix form as 𝐅=𝐀𝐋Π𝐟, where 𝐀 is an N×N matrix over GF(p) that contains the elements aijs, 𝐋 is a block diagonal matrix, and Π is a permutation matrix regrouping the elements in 𝐟 according to the cyclotomic coset index.

Note that if the normal basis {γip0,γip1,⋯,γipmi−1} is used to expand the field elements of GF(pmi), the i-th block of 𝐋 is given by: 𝐋i=[γip0γip1⋯γipmi−1γip1γip2⋯γip0⋮⋮⋱⋮γipmi−1γip0⋯γipmi−2], which is a circulant matrix. It is well known that a circulant matrix-vector product can be efficiently computed by convolutions. Hence, it is successful to reduce the discrete Fourier transform into short convolutions.

Complexity

When applied to a characteristic-2 field GF(2m), the matrix 𝐀 is just a binary matrix. Only addition is used when calculating the matrix-vector product of A and LΠf. It has been shown that the multiplicative complexity of the cyclotomic algorithm is given by O(n(log2n)log232), and the additive complexity is given by O(n2/(log2n)log283).[2]

References

  1. ↑ Fedorenko, S. V.; Trifonov, P. V. (2003). "On Computing the Fast Fourier Transform over Finite Fields". Proceedings of International Workshop on Algebraic and Combinatorial Coding Theory: 108–111. http://dcn.ftk.spbstu.ru/~petert/papers/pushkin2.pdf. 
  2. ↑ 2.0 2.1 Wu, Xuebin; Wang, Ying; Yan, Zhiyuan (2012). "On Algorithms and Complexities of Cyclotomic Fast Fourier Transforms Over Arbitrary Finite Fields". IEEE Transactions on Signal Processing 60 (3): 1149–1158. doi:10.1109/tsp.2011.2178844. Bibcode: 2012ITSP...60.1149W.