Professional Documents
Culture Documents
• Fourier coefficients:
𝑇 𝑇
𝑎𝑛 = 2 න 𝑓(𝑡) cos(2𝜋𝑛𝑡) 𝑑𝑡, 𝑏𝑛 = 2 න 𝑓(𝑥) sin 2𝜋𝑛𝑡 𝑑𝑡
0 0
𝑋𝑘 = 𝑥𝑛 𝑒 −2𝜋𝑖𝑘𝑛/𝑁
𝑛=0
such that
𝑁−1
1
𝑥𝑛 = 𝑋𝑘 𝑒 2𝜋𝑖𝑘𝑛/𝑁
𝑁
𝑘=0
𝑃 𝑥 = 𝑥2 − 2
evaluation
𝑎0 , 𝑎1 , ⋯ , 𝑎𝑛−1 𝑥0 , 𝑦0 , ⋯ , 𝑥𝑛−1 , 𝑦𝑛−1
interpolation
Coefficient representation Point-value representation
Horner’s rule:
𝑝 𝑥 = 𝑎0 + 𝑥 𝑎1 + 𝑥 𝑎2 + 𝑥 𝑎3 + ⋯ + 𝑥 𝑎𝑛−1 + 𝑥𝑎𝑛 ⋯
𝐴 𝑥𝑖 = 𝐴𝑒 𝑥𝑖2 + 𝑥𝑖 𝐴𝑜 𝑥𝑖2
𝐴 −𝑥𝑖 = 𝐴𝑒 𝑥𝑖2 − 𝑥𝑖 𝐴𝑜 𝑥𝑖2
Evaluate:
𝐴𝑒 𝑥 and 𝐴𝑜 (𝑥) 𝑥02 𝑥12 ⋯ 2
𝑥𝑛/2−1
degree ≤ 𝑛/2 − 1
Evaluate:
𝐴𝑒 𝑥 and 𝐴𝑜 (𝑥) 𝑥02 𝑥12 ⋯ 2
𝑥𝑛/2−1
degree ≤ 𝑛/2 − 1
𝑥04 +1 𝑥24 −1
Note:
1
𝑥08 +1 𝑖=±
2
1+𝑖
1
−𝑖 = ± (1 − 𝑖)
2
Fast Fourier Transform © Dept. CS, UPC 17
Selection of the evaluation points
+𝑖
− −𝑖 + 𝑖
−1 +1
− 𝑖 + −𝑖
−𝑖
𝑧 = 𝑎 + 𝑏𝑖 𝑧 = 𝑟(cos 𝜃 + 𝑖 sin 𝜃) = 𝑟𝑒 𝑖𝜃
𝑏
Polar coordinates: (𝑟, 𝜃)
𝑟 Length: 𝑟 = 𝑎2 + 𝑏 2
𝑎 𝑏
Angle 𝜃 ∈ 0,2𝜋 : cos 𝜃 = , sin 𝜃 =
𝑟 𝑟
𝜃 can always be reduced modulo 2𝜋
𝜃
Real
𝑎
Some examples:
Number −1 𝑖 5 + 5𝑖
Polar coords (1, 𝜋) (1, 𝜋/2) (5 2, 𝜋Τ4)
Fast Fourier Transform © Dept. CS, UPC 19
Complex numbers: multiplication
(𝑟1 , 𝜃1 )
(𝑟2 , 𝜃2 )
𝑟1 , 𝜃1 × 𝑟2 , 𝜃2 = (𝑟1 𝑟2 , 𝜃1 + 𝜃2 )
Solutions are 𝑧 = 1, 𝜃 ,
4𝜋/𝑛
for 𝜃 a multiple of 2𝜋/𝑛
Angle 2𝜋/𝑛
2𝜋 − 1, 𝜃 = (1, 𝜃 + 𝜋)
+𝜋
𝑛
− −𝑖 + 𝑖
−1 +1
− 𝑖 + −𝑖
−𝑖
𝑨𝒆 𝝎𝟎 , 𝑨𝒆 𝝎𝟐 , … , 𝑨𝒆 (𝝎𝒏−𝟐 ) = FFT(𝑨𝒆 , 𝝎𝟐 )
𝑨𝒐 𝝎𝟎 , 𝑨𝒐 𝝎𝟐 , … , 𝑨𝒐 (𝝎𝒏−𝟐 ) = FFT(𝑨𝒐 , 𝝎𝟐 )
for 𝒌 = 𝟎 to 𝒏 − 𝟏:
𝑨 𝝎𝒌 = 𝑨𝒆 𝝎𝟐𝒌 + 𝝎𝒌 𝑨𝒐 (𝝎𝟐𝒌 )
return 𝑨 𝟏 , 𝑨 𝝎 , 𝑨 𝝎𝟐 , … , 𝑨(𝝎𝒏−𝟏 )
Example (𝒏 = 𝟖):
𝝎𝟐
𝐴 𝜔0 = 𝐴𝑒 𝜔 0 + 𝜔 0 𝐴𝑜 𝜔0
𝝎𝟑 𝝎𝟏
𝐴 𝜔1 = 𝐴𝑒 𝜔 2 + 𝜔1 𝐴𝑜 𝜔2
𝐴 𝜔2 = 𝐴𝑒 𝜔 4 + 𝜔 2 𝐴𝑜 𝜔4
𝐴 𝜔3 = 𝐴𝑒 𝜔 6 + 𝜔 3 𝐴𝑜 𝜔6
𝝎𝟒 𝝎𝟎
𝐴 𝜔4 = 𝐴𝑒 𝜔 8 + 𝜔 4 𝐴𝑜 𝜔8
𝐴 𝜔5 = 𝐴𝑒 𝜔10 + 𝜔 5 𝐴𝑜 𝜔10
𝐴 𝜔6 = 𝐴𝑒 𝜔12 + 𝜔 6 𝐴𝑜 𝜔12
𝐴 𝜔7 = 𝐴𝑒 𝜔14 + 𝜔 7 𝐴𝑜 𝜔14 𝝎𝟓 𝝎𝟕
𝝎𝟔
𝝎𝟒 = 𝝎𝟏𝟐 𝝎𝟐 = −𝝎𝟔
Fast Fourier Transform © Dept. CS, UPC 26
FFT algorithm
for 𝒌 = 𝟎 to 𝒏 − 𝟏: 𝑨 𝝎𝒌 = 𝑨𝒆 𝝎𝟐𝒌 + 𝝎𝒌 𝑨𝒐 (𝝎𝟐𝒌 )
Example (𝒏 = 𝟖):
𝐴 𝜔0 = 𝐴𝑒 𝜔 0 + 𝜔 0 𝐴𝑜 𝜔0 𝐴 𝜔0 = 𝐴𝑒 𝜔0 + 𝜔 0 𝐴𝑜 𝜔0
𝐴 𝜔1 = 𝐴𝑒 𝜔 2 + 𝜔1 𝐴𝑜 𝜔2 𝐴 𝜔1 = 𝐴𝑒 𝜔2 + 𝜔1 𝐴𝑜 𝜔2
𝐴 𝜔2 = 𝐴𝑒 𝜔 4 + 𝜔 2 𝐴𝑜 𝜔4 𝐴 𝜔2 = 𝐴𝑒 𝜔4 + 𝜔 2 𝐴𝑜 𝜔4
𝐴 𝜔3 = 𝐴𝑒 𝜔 6 + 𝜔 3 𝐴𝑜 𝜔6 𝐴 𝜔3 = 𝐴𝑒 𝜔6 + 𝜔 3 𝐴𝑜 𝜔6
𝐴 𝜔4 = 𝐴𝑒 𝜔 8 + 𝜔 4 𝐴𝑜 𝜔8 𝐴 𝜔4 = 𝐴𝑒 𝜔0 − 𝜔 0 𝐴𝑜 𝜔0
𝐴 𝜔5 = 𝐴𝑒 𝜔10 + 𝜔 5 𝐴𝑜 𝜔10 𝐴 𝜔5 = 𝐴𝑒 𝜔2 − 𝜔1 𝐴𝑜 𝜔2
𝐴 𝜔6 = 𝐴𝑒 𝜔12 + 𝜔 6 𝐴𝑜 𝜔12 𝐴 𝜔6 = 𝐴𝑒 𝜔4 − 𝜔 2 𝐴𝑜 𝜔4
𝐴 𝜔7 = 𝐴𝑒 𝜔14 + 𝜔 7 𝐴𝑜 𝜔14 𝐴 𝜔7 = 𝐴𝑒 𝜔6 − 𝜔 3 𝐴𝑜 𝜔6
𝝎𝟒 = 𝝎𝟏𝟐 𝝎𝟐 = −𝝎𝟔
Fast Fourier Transform © Dept. CS, UPC 27
FFT algorithm
for 𝒌 = 𝟎 to 𝒏 − 𝟏: 𝑨 𝝎𝒌 = 𝑨𝒆 𝝎𝟐𝒌 + 𝝎𝒌 𝑨𝒐 (𝝎𝟐𝒌 )
Example (𝒏 = 𝟖):
𝐴 𝜔0 = 𝐴𝑒 𝜔0 + 𝜔 0 𝐴𝑜 𝜔0 𝐴 𝜔0 = 𝐴𝑒 𝜔0 + 𝜔 0 𝐴𝑜 𝜔0
𝐴 𝜔4 = 𝐴𝑒 𝜔0 − 𝜔 0 𝐴𝑜 𝜔0 𝐴 𝜔1 = 𝐴𝑒 𝜔2 + 𝜔1 𝐴𝑜 𝜔2
𝐴 𝜔1 = 𝐴𝑒 𝜔2 + 𝜔1 𝐴𝑜 𝜔2 𝐴 𝜔2 = 𝐴𝑒 𝜔4 + 𝜔 2 𝐴𝑜 𝜔4
𝐴 𝜔5 = 𝐴𝑒 𝜔2 − 𝜔1 𝐴𝑜 𝜔2 𝐴 𝜔3 = 𝐴𝑒 𝜔6 + 𝜔 3 𝐴𝑜 𝜔6
𝐴 𝜔2 = 𝐴𝑒 𝜔4 + 𝜔 2 𝐴𝑜 𝜔4 𝐴 𝜔4 = 𝐴𝑒 𝜔0 − 𝜔 0 𝐴𝑜 𝜔0
𝐴 𝜔6 = 𝐴𝑒 𝜔4 − 𝜔 2 𝐴𝑜 𝜔4 𝐴 𝜔5 = 𝐴𝑒 𝜔2 − 𝜔1 𝐴𝑜 𝜔2
𝐴 𝜔3 = 𝐴𝑒 𝜔6 + 𝜔 3 𝐴𝑜 𝜔6 𝐴 𝜔6 = 𝐴𝑒 𝜔4 − 𝜔 2 𝐴𝑜 𝜔4
𝐴 𝜔7 = 𝐴𝑒 𝜔6 − 𝜔 3 𝐴𝑜 𝜔6 𝐴 𝜔7 = 𝐴𝑒 𝜔6 − 𝜔 3 𝐴𝑜 𝜔6
FFT shuffling
Fast Fourier Transform © Dept. CS, UPC 28
FFT algorithm
for 𝒌 = 𝟎 to 𝒏 − 𝟏: 𝑨 𝝎𝒌 = 𝑨𝒆 𝝎𝟐𝒌 + 𝝎𝒌 𝑨𝒐 (𝝎𝟐𝒌 )
Example (𝒏 = 𝟖):
𝐴 𝜔0 = 𝐴𝑒 𝜔0 + 𝜔 0 𝐴𝑜 𝜔0
𝐴 𝜔4 = 𝐴𝑒 𝜔0 − 𝜔 0 𝐴𝑜 𝜔0
𝐴 𝜔1 = 𝐴𝑒 𝜔2 + 𝜔1 𝐴𝑜 𝜔2 for 𝒌 = 𝟎 to 𝒏/𝟐 − 𝟏:
𝐴 𝜔5 = 𝐴𝑒 𝜔2 − 𝜔1 𝐴𝑜 𝜔2
𝑨 𝝎𝒌 = 𝑨𝒆 𝝎𝟐𝒌 + 𝝎𝒌 𝑨𝒐 𝝎𝟐𝒌
𝐴 𝜔2 = 𝐴𝑒 𝜔4 + 𝜔 2 𝐴𝑜 𝜔4
𝒏
𝐴 𝜔6 = 𝐴𝑒 𝜔4 − 𝜔 2 𝐴𝑜 𝜔4 𝑨 𝒌+
𝝎 𝟐 = 𝑨𝒆 𝝎𝟐𝒌 − 𝝎𝒌 𝑨𝒐 𝝎𝟐𝒌
𝐴 𝜔3 = 𝐴𝑒 𝜔6 + 𝜔 3 𝐴𝑜 𝜔6
𝐴 𝜔7 = 𝐴𝑒 𝜔6 − 𝜔 3 𝐴𝑜 𝜔6
𝑎0
𝑎2
+ 𝑟𝑘
⋮ 𝐹𝐹𝑇𝑛Τ2
𝜔𝑘
𝑎𝑛−2
𝑎1
𝑎3
𝜔 𝑘+𝑛Τ2 𝑟𝑘+𝑛Τ2
+
⋮ 𝐹𝐹𝑇𝑛Τ2
𝑎𝑛−1
100 𝑎4
4
𝐴(𝜔1 ) 001
010 𝑎2 4
𝐴(𝜔2 ) 010
2
110 𝑎6 𝐴(𝜔3 ) 011
4 6
1. Selection:
Pick 𝜔 = (1, 2𝜋Τ𝑛), such that 𝑛 ≥ 𝑑 + 1 and 𝑛 is a power of two.
2. Evaluation (FFT):
Compute 𝐴 1 , 𝐴 𝜔 , 𝐴 𝜔2 , … , 𝐴 𝜔𝑛−1 .
Compute 𝐵 1 , 𝐵 𝜔 , 𝐵 𝜔2 , … , 𝐵 𝜔𝑛−1 .
3. Multiplication:
Compute 𝐶 𝜔𝑘 = 𝐴 𝜔𝑘 ⋅ 𝐵(𝜔𝑘 ), for all 𝑘 = 0, … , 𝑛 − 1.
𝑘 = 0 ቊ 𝑟0 = 6 + 2 = 8
𝑟2 = 6 − 2 = 4
𝑟1 = −2 + −𝑖 −2𝑖 = −4
𝑘 = 1 ቊ 𝑟 = −2 − −𝑖 −2𝑖 = 0
3
𝑟0 = 2 + 4 = 6 𝑟0 = 1 − 𝑖 + 1 + 𝑖 = 2
𝑟1 = 2 − 4 = −2 𝑟1 = 1 − 𝑖 − 1 − 𝑖 = −2𝑖
1
𝑎0 , 𝑎1 , 𝑎2 , 𝑎3 = [8, −4,4,0] 𝑃 𝑥 = 𝑥2 − 𝑥 + 2
4
Fast Fourier Transform © Dept. CS, UPC 41
Example: from coefficients to values
𝑃 𝑥 = 𝑥2 − 𝑥 + 2 FFT( 2, −1,1,0 , 𝜔 = 𝑖)
𝑘 = 0 ቊ 𝑟0 = 3 − 1 = 2
𝑟2 = 3 + 1 = 4
𝑟1 = 1 + 𝑖 ⋅ −1 = 1 − 𝑖
𝑘 = 1 ቊ 𝑟 = 1 − 𝑖 ⋅ −1 = 1 + 𝑖
3
𝑟0 = 2 + 1 = 3 𝑟0 = −1 + 0 = −1
𝑟1 = 2 − 1 = 1 𝑟1 = −1 − 0 = −1