Skip to content

An implementation of the Radix-2 Decimation-In-Time (DIT) form of the Cooley-Tukey FFT algorithm, as well as its inverse. The algorithm is used to multiply 2 polynomials and compute the convolution of 2 vectors in O(nlogn) time.

Notifications You must be signed in to change notification settings

AhmedAbdelaal2001/Ring-Isomorphisms-and-The-FFT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polynomials "are" Discrete Signals?

Rings are a very interesting class of algebraic structures in mathematics; a Ring can be thought of as a set of mathematical objects that can be added, subtracted, and multiplied (in more formal terms from abstract algebra, the set should be an Abelian group under addition, and should satisfy commutativity and distributivity under multiplication). It is trivial to observe that real polynomials and real discrete signals are both rings (the operations for signals are addition and convolution). The elegant part in this argument is as follows: there is a bijective mapping from real polynomials to real discrete signals that completely preserves the addition and multiplication (convolution) operations, more formally known as a Ring Isomorphism. In simpler terms, polynomials and signals exactly identical in structure from a purely algebraic perspective, despite how different they are in substance, and convolution between signals can be accurately mapped to polynomial multiplication!

Fast Polynomial Multiplication Using The FFT

Given that we can draw an isomorphism between discrete signals and real polynomials, the Fast Fourier Transform (radix-2) was used in this repository to speed up polynomial multiplication by viewing it as a convolution of discrete signals, accomplishing multiplication in O(log(n)) time. Potential future applications are in public key cryptosystems involving ideal lattices.

About

An implementation of the Radix-2 Decimation-In-Time (DIT) form of the Cooley-Tukey FFT algorithm, as well as its inverse. The algorithm is used to multiply 2 polynomials and compute the convolution of 2 vectors in O(nlogn) time.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages