Applied Symbolic Computation (CS 300) The Fast Fourier Transform (FFT) and Convolution. Jeremy R. Johnson. Introduction.
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
Applied Symbolic Computation (CS 300)The Fast Fourier Transform (FFT) and Convolution
Jeremy R. Johnson
Applied Symbolic Computation
References: Lipson, Tolimieri, Cormen et al.
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Lemma: -1= .
Lemma: Let n = 2m, and be a primitive nth root of unity. Then 2 is a primitive mth root of unity.
Lemma: Let n = 2m, and be a primitive nth root of unity. Then m = -1 and m+k = -k.
Therefore, F2m is a Vandermonde matrix where half the points are negatives of the other half. Thus, we can utilize the previous factorization to compute the DFT. Moreover, if n=2k this property can be used recursively.
Applied Symbolic Computation
Assume that n = 2m, then
Let T(n) be the computing time of the FFT and assume that n=2k, then
T(n) = 2T(n/2) + (n)
T(n) = (nlogn)
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Proof: The (i,j) element of
If i = j, then the sum is equal to n, and if i j, then the sum is 0, since xn-1 = (x-1)(xn-1 + … + x + 1)
Applied Symbolic Computation
Applied Symbolic Computation
= (u2v2)x4 + (u1v2 + u2v1)x3 + (u0v2 + u1v1 + u2v0)x2 + (u0v1 + u1v0)x + u0v0
Applied Symbolic Computation
Applied Symbolic Computation
u(x)v(x) = (u2x2 + u1x + u0)(v2x2 + v1x + v0)
= (u2v2)x4 + (u1v2 + u2v1)x3 + (u0v2 + u1v1 + u2v0)x2 + (u0v1 + u1v0)x + u0v0
= (u2v2)x+ (u1v2 + u2v1)+ (u0v2 + u1v1 + u0v2)x2 + (u0v1 + u1v0)x + u0v0
= (u0v2 + u1v1 + u2v0)x2 + (u0v1 + u1v0 + u2v2)x + (u0v0+u1v2 + u2v1)
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
u * v = Fn-1(Fn(u) Fn(v))
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
u * v = Fn-1(Fn(u) Fn(v))
Proof:
Fn(u * v) = Fn(C(u) v)
= diag(Fn(u)) Fnv
= Fn(u) Fn(v)
Applied Symbolic Computation
Theorem: Let f(x) and g(x) be polynomials in F[x] (coefficients in a field). Assume that gcd(f(x),g(x)) = 1. For any A1(x) and A2(x) there exist a polynomial A(x) with A(x) A1(x) (mod f(x)) and A(x) A2(x) (mod g(x)).
Theorem: F[x]/(f(x)g(x)) F[x]/(f(x)) F[x]/(g(x)). I.E. There is a 1-1 mapping from F[x]/(f(x)g(x)) onto F[x]/(f(x)) F[x]/(g(x)) that preserves arithmetic.
A(x) (A(x) mod f(x), A(x) mod g(x))
Applied Symbolic Computation
Applied Symbolic Computation
Applied Symbolic Computation
(Fm WmFm)(F2 Im)
Applied Symbolic Computation
(Fm WmFm)(F2 Im)
A(x) (A(1),A(2),…,A(2(m-1)),A(),…,A(n-1)))
F2m
A(x) (A(1), A(),A(2),…,A(n-1)))
Therefore,
Applied Symbolic Computation