Cyclotomic fast Fourier transform

From testwiki
Revision as of 16:16, 29 December 2024 by imported>Citation bot (Add: bibcode, authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:FFT algorithms | #UCB_Category 13/17)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The cyclotomic fast Fourier transform is a type of fast Fourier transform algorithm over finite fields.[1] This algorithm first decomposes a DFT into several circular convolutions, and then derives the DFT results from the circular convolution results. When applied to a DFT 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}0N1 over a finite field GF(pm) is defined as

Fj=i=0N1fiαij,0jN1,

where α is the N-th primitive root of 1 in GF(pm). If we define the polynomial representation of {fi}0N1 as

f(x)=f0+f1x+f2x2++fN1xN1=0N1fixi,

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,

𝐅=[F0F1FN1]=[α0α0α0α0α1αN1α0αN1α(N1)(N1)][f0f1fN1]=𝐟.

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

Algorithm

First, we define a linearized polynomial over GF(pm) as

L(x)=ilixpi,liGF(pm).

L(x) is called linearized because L(x1+x2)=L(x1)+L(x2), which comes from the fact that for elements x1,x2GF(pm),(x1+x2)p=x1p+x2p.

Notice that p is invertible modulo N because N must divide the order pm1 of the multiplicative group of the field GF(pm). So, the elements {0,1,2,,N1} can be partitioned into l+1 cyclotomic cosets modulo N:

{0},
{k1,pk1,p2k1,,pm11k1},
,
{kl,pkl,p2kl,,pml1kl},

where ki=pmiki(modN). Therefore, the input to the Fourier transform can be rewritten as

f(x)=i=0lLi(xki),Li(y)=t=0mi1yptfptkimodN.

In this way, the polynomial representation is decomposed into a sum of linear polynomials, and hence Fj is given by

Fj=f(αj)=i=0lLi(αjki).

Expanding αjkiGF(pmi) with the proper basis {βi,0,βi,1,,βi,mi1}, we have αjki=s=0mi1aijsβi,s where aijsGF(p), and by the property of the linearized polynomial Li(x), we have

Fj=i=0ls=0mi1aijs(t=0mi1β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,,γipmi1} is used to expand the field elements of GF(pmi), the i-th block of 𝐋 is given by:

𝐋i=[γip0γip1γipmi1γip1γip2γip0γipmi1γip0γipmi2]

which is a circulant matrix. It is well known that a circulant matrix-vector product can be efficiently computed by convolutions. Hence we successfully 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

Template:Reflist

  1. S.V. Fedorenko and P.V. Trifonov, Template:Cite journal
  2. 2.0 2.1 Template:Cite journal