FFT 
 Introdução 
O seguinte vídeo apresenta contexto histórico e uma pequena intuição do algoritmo:
VIDEO 
Daqui em diante define-se polinómio p : C → C p:\mathbb{C}\to\mathbb{C} p : C → C   de grau r − 1 r-1 r − 1   como:
p ( c ) = a 0 + a 1 c + a 2 c 2 + a 3 c 3 + a 4 c 4 + ⋯ + a r − 1 c r − 1 p(c)=a_0+a_1c+a_2c^2+a_3c^3+a_4c^4+\dots+a_{r-1}c^{r-1} p ( c ) = a 0  + a 1  c + a 2  c 2 + a 3  c 3 + a 4  c 4 + ⋯ + a r − 1  c r − 1  
Agora, tomando λ 0 , λ 1 , λ 2 , … , λ r − 1 ∈ C \lambda_0, \lambda_1, \lambda_2,\dots, \lambda_{r-1} \in \mathbb{C} λ 0  , λ 1  , λ 2  , … , λ r − 1  ∈ C  , sabemos que:
p ( λ 0 ) = a 0 + a 1 λ 0 + a 2 λ 0 2 + a 3 λ 0 3 + ⋯ + a r − 1 λ 0 r − 1 p ( λ 1 ) = a 0 + a 1 λ 1 + a 2 λ 1 2 + a 3 λ 1 3 + ⋯ + a r − 1 λ 1 r − 1 p ( λ 2 ) = a 0 + a 1 λ 2 + a 2 λ 2 2 + a 3 λ 2 3 + ⋯ + a r − 1 λ 2 r − 1 ⋮ p ( λ r − 1 ) = a 0 + a 1 λ r − 1 + a 2 λ r − 1 2 + a 3 λ r − 1 3 + ⋯ + a r − 1 λ r − 1 r − 1 p(\lambda_0)=a_0+a_1\lambda_0+a_2\lambda_0^2+a_3\lambda_0^3+\dots+a_{r-1}\lambda_0^{r-1}\\
p(\lambda_1)=a_0+a_1\lambda_1+a_2\lambda_1^2+a_3\lambda_1^3+\dots+a_{r-1}\lambda_1^{r-1}\\
p(\lambda_2)=a_0+a_1\lambda_2+a_2\lambda_2^2+a_3\lambda_2^3+\dots+a_{r-1}\lambda_2^{r-1}\\
\vdots\\
p(\lambda_{r-1})=a_0+a_1\lambda_{r-1}+a_2\lambda_{r-1}^2+a_3\lambda_{r-1}^3+\dots+a_{r-1}\lambda_{r-1}^{r-1} p ( λ 0  ) = a 0  + a 1  λ 0  + a 2  λ 0 2  + a 3  λ 0 3  + ⋯ + a r − 1  λ 0 r − 1  p ( λ 1  ) = a 0  + a 1  λ 1  + a 2  λ 1 2  + a 3  λ 1 3  + ⋯ + a r − 1  λ 1 r − 1  p ( λ 2  ) = a 0  + a 1  λ 2  + a 2  λ 2 2  + a 3  λ 2 3  + ⋯ + a r − 1  λ 2 r − 1  ⋮ p ( λ r − 1  ) = a 0  + a 1  λ r − 1  + a 2  λ r − 1 2  + a 3  λ r − 1 3  + ⋯ + a r − 1  λ r − 1 r − 1   
Igualdades estas que podem ser representadas matricialmente:
[ p ( λ 0 ) p ( λ 1 ) p ( λ 2 ) … p ( λ r − 1 ) ] = [ a 0 a 1 a 2 … a r − 1 ] ⋅ V r \begin{bmatrix}p(\lambda_0) & p(\lambda_1) & p(\lambda_2) &\dots & p(\lambda_{r-1})\end{bmatrix} =
\begin{bmatrix}a_0& a_1 & a_2 & \dots & a_{r-1}\end{bmatrix}\cdot V_r [ p ( λ 0  )  p ( λ 1  )  p ( λ 2  )  …  p ( λ r − 1  )  ] = [ a 0   a 1   a 2   …  a r − 1   ] ⋅ V r   
Onde V r V_r V r    representa a matriz de Vandermonde. Agora vê-se que as linhas da matriz de Vandermonde  devem ser preenchidas com as potências dos respetivos valores de λ \lambda λ  . Ou seja:
 Representação matricial 
Matriz de Vandermonde = [ λ 0 0 λ 0 1 λ 0 2 … λ 0 r − 1 λ 1 0 λ 1 1 λ 1 2 … λ 1 r − 1 λ 2 0 λ 2 1 λ 2 2 … λ 2 r − 1 … … … … … λ r − 1 0 λ r − 1 1 λ r − 1 2 … λ r − 1 r − 1 ] \text{Matriz de Vandermonde} = \begin{bmatrix} \lambda_0^0  & \lambda_0^1 & \lambda_0^2 & \dots  & \lambda_0^{r-1} \\
\lambda_1^0  & \lambda_1^1 & \lambda_1^2 & \dots &\lambda_1^{r-1} \\
\lambda_2^0  & \lambda_2^1 & \lambda_2^2 & \dots &\lambda_2^{r-1} \\
\dots & \dots & \dots & \dots & \dots \\
\lambda_{r-1}^0  & \lambda_{r-1}^1 & \lambda_{r-1}^2 & \dots  &\lambda_{r-1}^{r-1} \\
\end{bmatrix} Matriz de Vandermonde =  λ 0 0  λ 1 0  λ 2 0  … λ r − 1 0   λ 0 1  λ 1 1  λ 2 1  … λ r − 1 1   λ 0 2  λ 1 2  λ 2 2  … λ r − 1 2   … … … … …  λ 0 r − 1  λ 1 r − 1  λ 2 r − 1  … λ r − 1 r − 1     
Chamando então à matriz à esquerda da igualdade Y Y Y  , à de Vandermonde V r V_r V r    e à dos coeficientes do polinómio X X X  , vem:
Y T = X T V r Y^T= X^TV_r Y T = X T V r   
É de notar que a matriz de Vandermonde tem  inversa! Assim, é possível chegar aos coeficientes de um polinómio a partir dos seus valores, e vice-versa. Neste problema, a escolha dos valores para os λ ′ s \lambda's λ ′ s   é a parte mais importante. Escolhemos então valores especiais: as raízes de índice r r r   da unidade. Porquê?  Utilizando estes valores, as contas são imensamente facilitadas, principalmente devido à consequente simetria da matriz de Vandermonde.
 Relembrando 
Chamam-se a w 0 , w 1 , w 2 , w 3 , … , w r − 1 , w r ( = 1 ) w^0, w^1, w^2, w^3,\dots, w^{r-1}, w^r(=1) w 0 , w 1 , w 2 , w 3 , … , w r − 1 , w r ( = 1 )  , as raízes de índice r da unidade, onde a raiz principal  pode ser obtida através da fórmula:
w = e i 2 π r = cis  ( 2 π r ) = cos  ( 2 π r ) + i sin  ( 2 π r ) w=e^{i\frac{2\pi} r}=\operatorname{cis}\left(\frac{2\pi} r\right) = \cos\left(\frac {2\pi}{r}\right)+i\sin\left(\frac{2\pi} r\right) w = e i r 2 π  = cis ( r 2 π  ) = cos ( r 2 π  ) + i sin ( r 2 π  )  
Para r = 16 r=16 r = 16  :
      
     
  
           
           
           
         
   
     
Assim, utilizando esta notação, a matriz de Vandermonde viria:
[ 1 w 0 w 0 2 w 0 3 … w 0 r − 1 1 w 1 w 1 2 w 1 3 … w 1 r − 1 1 w 2 w 2 2 w 2 3 … w 2 r − 1 … … … … … … 1 w r − 1 w r − 1 2 w r − 1 3 … w r − 1 r − 1 ] \begin{bmatrix} 1 & w_0 & w_0^2 & w_0^3 & \dots & w_{0}^{r-1}\\ 1  & w_1 & w_1^2 & w_1^3 & \dots & w_{1}^{r-1}\\ 1 & w_2 & w_2^2 & w_2^3 & \dots & w_{2}^{r-1}\\ \dots & \dots & \dots & \dots & \dots &\dots \\ 1 & w_{r-1} & w_{r-1}^2 & w_{r-1}^3 & \dots & w_{r-1}^{r-1}\end{bmatrix}  1 1 1 … 1  w 0  w 1  w 2  … w r − 1   w 0 2  w 1 2  w 2 2  … w r − 1 2   w 0 3  w 1 3  w 2 3  … w r − 1 3   … … … … …  w 0 r − 1  w 1 r − 1  w 2 r − 1  … w r − 1 r − 1     
ou seja, a raiz de Vandermonde para as raízes de índice 4 da unidade viria:
V 4 = [ 1 1 1 1 1 i − 1 − i 1 − 1 1 − 1 1 − i − 1 i ] V_4=\begin{bmatrix} 1 & 1 & 1 & 1
\\ 1 & i & -1 & -i\\1 & -1 & 1 & -1 \\ 1 & -i & -1 & i\end{bmatrix} V 4  =  1 1 1 1  1 i − 1 − i  1 − 1 1 − 1  1 − i − 1 i    
 Construção da inversa 
Repara-se que, aproveitando-se da simetria nestes casos:
X T = Y T V r − 1 ⇔ X = ( V r T ) − 1 Y = V r − 1 Y X^T= Y^T V_r^{-1} \Leftrightarrow X=(V_r^T)^{-1}Y = V_r^{-1}Y X T = Y T V r − 1  ⇔ X = ( V r T  ) − 1 Y = V r − 1  Y  
tomando agora proveito da progressão geométrica, vem:
ρ r − 1 ρ − 1 = 1 + ρ + ρ 2 + ⋯ + ρ r − 1 ⇔ ( ρ r − 1 ) = ( ρ − 1 ) ( 1 + ρ + ρ 2 + ⋯ + ρ r − 1 ) ⇔ Sabendo que  ρ r = 1 ,  vem: ρ = 1 ou 1 + ρ + ρ 2 + ⋯ + ρ r − 1 = 0 \frac{\rho^r-1}{\rho-1} = 1+\rho+\rho^2+\dots+\rho^{r-1} \Leftrightarrow\\
(\rho^r-1)=(\rho-1)(1+\rho+\rho^2+\dots+\rho^{r-1})\Leftrightarrow \\\text{Sabendo que }\rho^r=1, \text{ vem:} \\
\rho=1\quad \text{ou}\quad 1+\rho+\rho^2+\dots+\rho^{r-1}=0 ρ − 1 ρ r − 1  = 1 + ρ + ρ 2 + ⋯ + ρ r − 1 ⇔ ( ρ r − 1 ) = ( ρ − 1 ) ( 1 + ρ + ρ 2 + ⋯ + ρ r − 1 ) ⇔ Sabendo que  ρ r = 1 ,  vem: ρ = 1 ou 1 + ρ + ρ 2 + ⋯ + ρ r − 1 = 0  
Como a raiz principal nunca é 1, descobrimos que a soma de todas as raízes de índice r r r   da unidade devem dar 0.
Tome-se então, a multiplicação entre uma linha de uma matriz de Vandermonde com uma coluna de uma outra matriz de Vandermonde, vem:
[ 1 w k w 2 k w 3 k … w ( r − 1 ) k ] ⋅ [ 1 w − j w − 2 j w − 3 j ⋮ w − ( r − 1 ) j ] = 1 + w k − j + w 2 ( k − j ) + w 3 ( k − j ) + ⋯ + w ( r − 1 ) ( k − j ) \begin{bmatrix} 1 & w^k & w^{2k} & w^{3k} & \dots & w^{(r-1)k}\end{bmatrix} \cdot \begin{bmatrix} 1 \\ w^{-j} \\ w^{-2j} \\ w^{-3j} \\ \vdots \\ w^{-{(r-1)}j}\end{bmatrix} = \\ 1+w^{k-j} + w^{2(k-j)} + w^{3(k-j)} + \dots + w^{(r-1)(k-j)} [ 1  w k  w 2 k  w 3 k  …  w ( r − 1 ) k  ] ⋅  1 w − j w − 2 j w − 3 j ⋮ w − ( r − 1 ) j   = 1 + w k − j + w 2 ( k − j ) + w 3 ( k − j ) + ⋯ + w ( r − 1 ) ( k − j )  
É de notar que, apesar de w w w   ser um complexo, como todos estes valores para w w w   têm módulo 1, o seu inverso equivale ao conjugado.
Agora, expandindo este pensamento para matrizes em vez de colunas/linhas, percebe-se que o resultado será uma matriz preenchida por r r r   (1+1+1+1...) se k = j k=j k = j   (na diagonal) e 0 caso contrário. Ou seja:
V r ⋅ V r † = r I n ⇔ V r − 1 = 1 r V r † V_r \cdot V_r^\dagger = rI_n \Leftrightarrow V_r^{-1} = \frac 1 r V_r^\dagger V r  ⋅ V r †  = r I n  ⇔ V r − 1  = r 1  V r †   
Onde V r † V_r^\dagger V r †    simboliza a matriz composta por todos os valores de V r V_r V r    original, mas conjugados.
Ou seja,
X = 1 r V r ( w ) † Y X=\frac 1 r V_r(w)^\dagger Y X = r 1  V r  ( w ) † Y  
Para mais sobre as utilidades da matriz de Vandermonde, podem ver este  vídeo.
 Reversão e Matrizes de Fourier 
Antes de passar à multiplicação de polinómios pela FFT , é necessário introduzir alguns conceitos essenciais que levaram à descoberta deste algoritmo.
 Reversão 
 
Função dada por:
Rev  k : { 0 , 1 } k → { 0 , 1 } k \operatorname{Rev}_k : \{0,1\}^k \rightarrow \{0,1\}^k Rev k  : { 0 , 1 } k → { 0 , 1 } k  
Consiste em transformar uma palavra binária, de k k k   componentes, na sua simétrica.
Exemplos 
Seja k = 4 k = 4 k = 4  
Rev  4 ( 1010 ) = 0101 \operatorname{Rev}_4(1010) = 0101 Rev 4  ( 1010 ) = 0101  
 
 
Seja k = 3 k = 3 k = 3  
Rev  3 ( 101 ) = 101 \operatorname{Rev}_3(101) = 101 Rev 3  ( 101 ) = 101  
 
 É como colocar um "espelho" no final da palavra. O resultado é a sua reflexão,
n 0 n 1 … n k − 1   ∣   n k − 1 … n 1 n 0 n_0n_1 \dots n_{k-1}\ |\ n_{k-1}\dots n_1n_0 n 0  n 1  … n k − 1    ∣   n k − 1  … n 1  n 0   
Também se pode aplicar Rev  k \operatorname{Rev}_k Rev k    a matrizes com 2 k 2^k 2 k   colunas. 
Segue-se um exemplo onde aplicamos a uma matriz 2 2 × 2 2 2^2\times2^2 2 2 × 2 2   genérica.
Rev  2 { [ a 0 , 0 a 0 , 1 a 0 , 2 a 0 , 3 a 1 , 0 a 1 , 1 a 1 , 2 a 1 , 3 a 2 , 0 a 2 , 1 a 2 , 2 a 2 , 3 a 3 , 0 a 3 , 1 a 3 , 2 a 3 , 3 ] } = = Rev  2 { [ a 0 , 00 a 0 , 01 a 0 , 10 a 0 , 11 a 1 , 00 a 1 , 01 a 1 , 10 a 1 , 11 a 2 , 00 a 2 , 01 a 2 , 10 a 2 , 11 a 3 , 00 a 3 , 01 a 3 , 10 a 3 , 11 ] } = [ a 0 , 00 a 0 , 10 a 0 , 01 a 0 , 11 a 1 , 00 a 1 , 10 a 1 , 01 a 1 , 11 a 2 , 00 a 2 , 10 a 2 , 01 a 2 , 11 a 3 , 00 a 3 , 10 a 3 , 01 a 3 , 11 ] \operatorname{Rev}_2\left\{\begin{bmatrix}a_{0,0} & a_{0,1} & a_{0,2} & a_{0,3} \\ a_{1,0} & a_{1,1} & a_{1,2} & a_{1,3} \\ a_{2,0} & a_{2,1} & a_{2,2} & a_{2,3} \\ a_{3,0} & a_{3,1} & a_{3,2} & a_{3,3} \\\end{bmatrix}\right\} =
\\ = \operatorname{Rev}_2\left\{\begin{bmatrix}a_{0,00} & a_{0,01} & a_{0,10} & a_{0,11} \\ a_{1,00} & a_{1,01} & a_{1,10} & a_{1,11} \\ a_{2,00} & a_{2,01} & a_{2,10} & a_{2,11} \\ a_{3,00} & a_{3,01} & a_{3,10} & a_{3,11} \\\end{bmatrix}\right\} \\ = \begin{bmatrix}a_{0,00} & a_{0,10} & a_{0,01} & a_{0,11} \\ a_{1,00} & a_{1,10} & a_{1,01} & a_{1,11} \\ a_{2,00} & a_{2,10} & a_{2,01} & a_{2,11} \\ a_{3,00} & a_{3,10} & a_{3,01} & a_{3,11} \\\end{bmatrix} Rev 2  ⎩ ⎨ ⎧   a 0 , 0  a 1 , 0  a 2 , 0  a 3 , 0   a 0 , 1  a 1 , 1  a 2 , 1  a 3 , 1   a 0 , 2  a 1 , 2  a 2 , 2  a 3 , 2   a 0 , 3  a 1 , 3  a 2 , 3  a 3 , 3    ⎭ ⎬ ⎫  = = Rev 2  ⎩ ⎨ ⎧   a 0 , 00  a 1 , 00  a 2 , 00  a 3 , 00   a 0 , 01  a 1 , 01  a 2 , 01  a 3 , 01   a 0 , 10  a 1 , 10  a 2 , 10  a 3 , 10   a 0 , 11  a 1 , 11  a 2 , 11  a 3 , 11    ⎭ ⎬ ⎫  =  a 0 , 00  a 1 , 00  a 2 , 00  a 3 , 00   a 0 , 10  a 1 , 10  a 2 , 10  a 3 , 10   a 0 , 01  a 1 , 01  a 2 , 01  a 3 , 01   a 0 , 11  a 1 , 11  a 2 , 11  a 3 , 11     
Note-se que a Reversão é apenas aplicada aos índices das colunas. 
Através deste exemplo, é possível concluir que em matrizes 2 2 × 2 2 2^2\times2^2 2 2 × 2 2  , esta aplicação é equivalente a trocar as duas colunas do meio.   É fácil verificar que isto é verdade para todas as matrizes com dimensão n × 2 2 n\times 2^2 n × 2 2  , com n ≥ 1 n\geq 1 n ≥ 1  .
 Matriz de Permutação 
Seja P k P_k P k    a Matriz de Permutação, e I k I_k I k    a matriz identidade, ambas de dimensão 2 k × 2 k 2^k\times 2^k 2 k × 2 k  ,
P k = Rev  k { I k } e P k 2 = P k P k = I k P_k = \operatorname{Rev}_k\{I_k\} \\
\text{e} \\  P_k^2 = P_kP_k = I_k P k  = Rev k  { I k  } e P k 2  = P k  P k  = I k   
Exemplos P 2 = Rev  2 { [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] } ⇔ P 2 = [ 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 ] P_2 = \operatorname{Rev}_2\left\{\begin{bmatrix}1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0  \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1\end{bmatrix}\right\} \Leftrightarrow \\ P_2 = \begin{bmatrix}1 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 \\ 0  & 1 & 0 & 0 \\ 0 & 0 & 0 & 1\end{bmatrix} P 2  = Rev 2  ⎩ ⎨ ⎧   1 0 0 0  0 1 0 0  0 0 1 0  0 0 0 1   ⎭ ⎬ ⎫  ⇔ P 2  =  1 0 0 0  0 0 1 0  0 1 0 0  0 0 0 1    
 Matriz Diagonal de Fourier 
D k = [ w 0 0 0 … 0 0 w 1 0 … 0 0 0 w 2 … 0 … … … … … 0 0 0 … w 2 k − 1 ] D_k = \begin{bmatrix} w_0 & 0 & 0 & \dots & 0
\\ 0 & w_1 & 0 &\dots & 0 \\ 0 & 0 & w_2 & \dots & 0 \\\dots & \dots & \dots & \dots & \dots \\ 0 & 0 & 0 & \dots & w_{2^k-1}\end{bmatrix} D k  =  w 0  0 0 … 0  0 w 1  0 … 0  0 0 w 2  … 0  … … … … …  0 0 0 … w 2 k − 1     
Representada por D k D_k D k   , é uma matriz diagonal de dimensão 2 k × 2 k 2^k \times 2^k 2 k × 2 k  , onde a sua diagonal é constituída pelas primeiras 2 k 2^k 2 k   raízes índices 2 k + 1 2^{k+1} 2 k + 1  .
Exemplo 
Sendo k = 2 k=2 k = 2  , as primeiras 2 2 2^2 2 2   raízes índice 2 3 2^3 2 3   da unidade são: 
 e 0 i ⋅ 2 π 2 3 = 1 , e 1 i ⋅ 2 π 2 3 = 2 2 + i 2 2 , e 2 i ⋅ 2 π 2 3 = i , e 3 i ⋅ 2 π 2 3 = − 2 2 + i 2 2  e^{0i\cdot\frac{2\pi}{2^3}} = 1 ,\quad e^{1i\cdot\frac{2\pi}{2^3}} = \frac{\sqrt{2}}{2} + i\frac{\sqrt{2}}{2},\quad e^{2i\cdot\frac{2\pi}{2^3}} = i,\quad e^{3i\cdot\frac{2\pi}{2^3}} = -\frac{\sqrt{2}}{2} + i\frac{\sqrt{2}}{2} e 0 i ⋅ 2 3 2 π  = 1 , e 1 i ⋅ 2 3 2 π  = 2 2   + i 2 2   , e 2 i ⋅ 2 3 2 π  = i , e 3 i ⋅ 2 3 2 π  = − 2 2   + i 2 2   logo
D 2 = [ 1 0 0 0 0 2 2 + i 2 2 0 0 0 0 i 0 0 0 0 − 2 2 + i 2 2 ] D_2 = \begin{bmatrix} 1 & 0 & 0 & 0
\\ 0 & \frac{\sqrt{2}}{2} + i\frac{\sqrt{2}}{2} & 0 & 0 \\ 0 & 0 & i & 0 \\ 0  & 0 & 0 & -\frac{\sqrt{2}}{2} + i\frac{\sqrt{2}}{2}\end{bmatrix} D 2  =  1 0 0 0  0 2 2   + i 2 2   0 0  0 0 i 0  0 0 0 − 2 2   + i 2 2      
 Matriz de Fourier 
F k ( w ) F_k(w) F k  ( w )  , a Matriz de Fourier de dimensão 2 k × 2 k 2^k\times2^k 2 k × 2 k  , é dada por:
F k ( w ) = ν k ( w ) ⋅ P k F_k(w) = \nu_k(w) \cdot P_k F k  ( w ) = ν k  ( w ) ⋅ P k   
onde
w w w   é a raiz principal da unidade, com:
w = e i 2 π 2 k = cos  ( 2 π 2 k ) + i sin  ( 2 π 2 k ) w = e^{i\frac{2\pi}{2^k}} = \cos\left(\frac {2\pi}{2^k}\right)+i\sin\left(\frac{2\pi} {2^k}\right) w = e i 2 k 2 π  = cos ( 2 k 2 π  ) + i sin ( 2 k 2 π  )  
 
P k P_k P k    é a Matriz de Permutação de ordem k k k  
ν k ( w ) \nu_k(w) ν k  ( w )   equivalente à Matriz de Vandermonde V r ( w ) V_r(w) V r  ( w )  , tal que 2 k = r 2^k=r 2 k = r  . 
 
Em suma, é o produto da Matriz de Permutação pela Matriz de Vandermonde.
 
Define-se, agora, os problemas de Valoração e Interpolação, com base na Matriz de Fourier.
Valoração Y = ν k ( w ) X = ν k ( w ) P k P k − 1 X = ( ν k ( w ) P k ) ( P k X ) = F k ( w ) ( P k X ) \begin{aligned} Y &= \nu_k(w)X \\ &= \nu_k(w)P_kP_k^{-1}X \\ &= (\nu_k(w)P_k)(P_kX) \\ &= F_k(w)(P_kX) \end{aligned} Y  = ν k  ( w ) X = ν k  ( w ) P k  P k − 1  X = ( ν k  ( w ) P k  ) ( P k  X ) = F k  ( w ) ( P k  X )   
Interpolação X = 1 r ν k ( w ) † Y = 1 r ν k ( w ) † P k P k Y = 1 r ν k ( w ) † P k † P k † Y = 1 r ( ν k ( w ) P k ) † ( P k Y † ) † = 1 r F k ( w ) † ( P k Y † ) † = 1 r F k ( w ) † ( P k Y † ) † = 1 r [ F k ( w ) ( P k Y † ) ] † = 1 r F k ( w ) ( P k Y † ) \begin{aligned}
X &=\frac 1 r \nu_k(w)^\dagger Y \\
&= \frac 1 r \nu_k(w)^\dagger P_kP_kY \\
&= \frac 1 r \nu_k(w)^\dagger P_k^\dagger P_k^\dagger Y \\
&= \frac 1 r (\nu_k(w) P_k)^\dagger (P_kY^\dagger)^\dagger\\
&= \frac 1 r F_k(w)^\dagger (P_kY^\dagger)^\dagger \\
&= \frac 1 r F_k(w)^\dagger (P_kY^\dagger)^\dagger\\
&= \frac 1 r [F_k(w) (P_kY^\dagger)]^\dagger\\
&= \frac 1 r F_k(w) (P_kY^\dagger)
\end{aligned} X  = r 1  ν k  ( w ) † Y = r 1  ν k  ( w ) † P k  P k  Y = r 1  ν k  ( w ) † P k †  P k †  Y = r 1  ( ν k  ( w ) P k  ) † ( P k  Y † ) † = r 1  F k  ( w ) † ( P k  Y † ) † = r 1  F k  ( w ) † ( P k  Y † ) † = r 1  [ F k  ( w ) ( P k  Y † ) ] † = r 1  F k  ( w ) ( P k  Y † )   
 Teorema de Cooley e Tukey 
Para todo o k ∈ N 0 k \in \N_0 k ∈ N 0   , a Matriz de Fourier F k ( w ) F_k(w) F k  ( w )   admite a seguinte definição recursiva:
F 0 ( 1 ) = 1 F k + 1 = [ F k ( w 2 ) D k F k ( w 2 ) F k ( w 2 ) − D k F k ( w 2 ) ] F_0(1) = 1 \\
F_{k+1} = \begin{bmatrix}F_k(w^2) & D_kF_k(w^2)\\ F_k(w^2) & -D_kF_k(w^2)\end{bmatrix} F 0  ( 1 ) = 1 F k + 1  = [ F k  ( w 2 ) F k  ( w 2 )  D k  F k  ( w 2 ) − D k  F k  ( w 2 )  ]  
Esta estrutura recursiva é a base do algoritmo FFT .
 Multiplicação de polinómios - FFT 
Exemplo p 1 ( n ) = n + 1 p 2 ( n ) = 3 n + 2 q ( n ) = p 1 ( n ) × p 2 ( n ) p_1(n) = n + 1 \\ p_2(n) = 3n+2 \\
q(n) = p_1(n) \times p_2(n) p 1  ( n ) = n + 1 p 2  ( n ) = 3 n + 2 q ( n ) = p 1  ( n ) × p 2  ( n ) Queremos determinar q ( n ) q(n) q ( n ) 
Passo 1  
Como ambos os polinómios têm grau 1 1 1  , o seu produto terá grau 2 2 2   ( 1 + 1 ) (1+1) ( 1 + 1 )   e no máximo 3 3 3   componentes ( grau + 1 ) (\text{grau}+1) ( grau + 1 )  . Assim, o menor k ∈ N k \in \N k ∈ N   tal que 2 k ≥ 3 2^k \geq 3 2 k ≥ 3   é 2 2 2  . 
Logo, iremos usar vetores de dimensão 2 2 2^2 2 2   para representar os polinómios.  
Assim, o primeiro polinómio é representado por ( 1 , 1 , 0 , 0 ) (1,1,0,0) ( 1 , 1 , 0 , 0 )   e o segundo por ( 2 , 3 , 0 , 0 ) (2,3,0,0) ( 2 , 3 , 0 , 0 )  . 
Passo 2   
Aplicar Rev  k \operatorname{Rev}_k Rev k   , com k = 2 k=2 k = 2 
00 01 10 11 00 01 10 11 ( 1 , 1 , 0 , 0 ) ( 2 , 3 , 0 , 0 ) ( 1 , 0 , 1 , 0 ) ( 2 , 0 , 3 , 0 ) \begin{matrix}
00 & 01 & 10 & 11 && 00 & 01 & 10 & 11 \\
(1, & 1, & 0, & 0) && (2, & 3, & 0, & 0) \\
(1, & 0, & 1, & 0) && (2, & 0, & 3, & 0)
\end{matrix} 00 ( 1 , ( 1 ,  01 1 , 0 ,  10 0 , 1 ,  11 0 ) 0 )   00 ( 2 , ( 2 ,  01 3 , 0 ,  10 0 , 3 ,  11 0 ) 0 )  Passo 3 
F 2 ( i ) [ 1 0 1 0 ] = [ F 1 ( − 1 ) D 1 F 1 ( − 1 ) F 1 ( − 1 ) − D 1 F 1 ( − 1 ) ] [ 1 0 1 0 ] = [ [ 1 1 1 − 1 ] [ 1 0 ] + [ 1 0 0 i ] [ 1 1 1 − 1 ] [ 1 0 ] [ 1 1 1 − 1 ] [ 1 0 ] − [ 1 0 0 i ] [ 1 1 1 − 1 ] [ 1 0 ] ] = [ [ 1 1 ] + [ 1 0 0 i ] [ 1 1 ] [ 1 1 ] − [ 1 0 0 i ] [ 1 1 ] ] = [ 2 1 + i 0 1 − i ] F_2(i) \begin{bmatrix}1\\0\\1\\0\end{bmatrix}= \begin{bmatrix}F_1(-1) & D_1F_1(-1)\\ F_1(-1) & -D_1F_1(-1)\end{bmatrix}\begin{bmatrix}1\\0\\1\\0\end{bmatrix}\\
= \begin{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}1\\0\end{bmatrix}+
\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}1\\0\end{bmatrix}\\
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}1\\0\end{bmatrix}-
\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}\begin{bmatrix}1\\0\end{bmatrix}
\end{bmatrix}\\
=\begin{bmatrix}
\begin{bmatrix}1\\1\end{bmatrix}+\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}\begin{bmatrix}1\\1\end{bmatrix}\\
\begin{bmatrix}1\\1\end{bmatrix}-\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}\begin{bmatrix}1\\1\end{bmatrix}
\end{bmatrix}\\
=\begin{bmatrix}2\\1+i\\0\\1-i\end{bmatrix} F 2  ( i )  1 0 1 0   = [ F 1  ( − 1 ) F 1  ( − 1 )  D 1  F 1  ( − 1 ) − D 1  F 1  ( − 1 )  ]  1 0 1 0   =  [ 1 1  1 − 1  ] [ 1 0  ] + [ 1 0  0 i  ] [ 1 1  1 − 1  ] [ 1 0  ] [ 1 1  1 − 1  ] [ 1 0  ] − [ 1 0  0 i  ] [ 1 1  1 − 1  ] [ 1 0  ]   =  [ 1 1  ] + [ 1 0  0 i  ] [ 1 1  ] [ 1 1  ] − [ 1 0  0 i  ] [ 1 1  ]   =  2 1 + i 0 1 − i   Relembrar que ( 2 , 1 + i , 0 , 1 − i ) (2,1+i,0,1-i) ( 2 , 1 + i , 0 , 1 − i )   são os valores de p 1 ( n ) p_1(n) p 1  ( n )   substituindo n n n   pelas raízes de índice 2 2 2^2 2 2   da unidade: ( 1 , i , − 1 , − i ) (1,i,-1,-i) ( 1 , i , − 1 , − i ) 
F 2 ( i ) [ 2 0 3 0 ] = [ F 1 ( − 1 ) D 1 F 1 ( − 1 ) F 1 ( − 1 ) − D 1 F 1 ( − 1 ) ] [ 2 0 3 0 ] = [ [ 1 1 1 − 1 ] [ 2 0 ] + [ 1 0 0 i ] [ 1 1 1 − 1 ] [ 3 0 ] [ 1 1 1 − 1 ] [ 2 0 ] − [ 1 0 0 i ] [ 1 1 1 − 1 ] [ 3 0 ] ] = [ [ 2 2 ] + [ 1 0 0 i ] [ 3 3 ]   [ 2 2 ] − [ 1 0 0 i ] [ 3 3 ] ] = [ 5 2 + 3 i − 1 2 − 3 i ] F_2(i) \begin{bmatrix}2\\0\\3\\0\end{bmatrix}= \begin{bmatrix}F_1(-1) & D_1F_1(-1)\\ F_1(-1) & -D_1F_1(-1)\end{bmatrix}\begin{bmatrix}2\\0\\3\\0\end{bmatrix}\\
= \begin{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}2\\0\end{bmatrix}+
\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}3\\0\end{bmatrix}\\
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}2\\0\end{bmatrix}-
\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}\begin{bmatrix}3\\0\end{bmatrix}
\end{bmatrix}\\
=\begin{bmatrix}
\begin{bmatrix}2\\2\end{bmatrix}+\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}\begin{bmatrix}3\\3\end{bmatrix}\\~\\
\begin{bmatrix}2\\2\end{bmatrix}-\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}\begin{bmatrix}3\\3\end{bmatrix}
\end{bmatrix}\\
=\begin{bmatrix}5\\2+3i\\-1\\2-3i\end{bmatrix} F 2  ( i )  2 0 3 0   = [ F 1  ( − 1 ) F 1  ( − 1 )  D 1  F 1  ( − 1 ) − D 1  F 1  ( − 1 )  ]  2 0 3 0   =  [ 1 1  1 − 1  ] [ 2 0  ] + [ 1 0  0 i  ] [ 1 1  1 − 1  ] [ 3 0  ] [ 1 1  1 − 1  ] [ 2 0  ] − [ 1 0  0 i  ] [ 1 1  1 − 1  ] [ 3 0  ]   =  [ 2 2  ] + [ 1 0  0 i  ] [ 3 3  ]   [ 2 2  ] − [ 1 0  0 i  ] [ 3 3  ]   =  5 2 + 3 i − 1 2 − 3 i   Passo 4  
Calcula-se o produto componente a componente.
( 2 , 1 + i , 0 , 1 − i ) ⊗ ( 5 , 2 + 3 i , − 1 , 2 − 3 i ) = = ( 10 , − 1 + 5 i , 0 , − 1 − 5 i ) (2,1+i,0,1-i) \otimes (5,2+3i,-1,2-3i) = \\
=(10, -1+5i,0, -1-5i) ( 2 , 1 + i , 0 , 1 − i ) ⊗ ( 5 , 2 + 3 i , − 1 , 2 − 3 i ) = = ( 10 , − 1 + 5 i , 0 , − 1 − 5 i ) Estes são os valores do polinómio produto, ainda desconhecido, nos pontos 1 , i , − 1 , − i 1,i,-1,-i 1 , i , − 1 , − i  . 
 
Passo 5  
Conjugamos os valores do produto obtido, e aplicamos mais uma vez Rev  2 \operatorname{Rev}_2 Rev 2  
( 10 , − 1 + 5 i , 0 , − 1 − 5 i ) → ( 10 , − 1 − 5 i , 0 , − 1 + 5 i ) ( 10 , − 1 − 5 i , 0 , − 1 + 5 i ) ( 10 , 0 , − 1 − 5 i , − 1 + 5 i ) (10,-1+5i,0,-1-5i) \rightarrow (10,-1-5i,0,-1+5i) \\
\\
\begin{matrix}
(10, & -1-5i, & 0, & -1+5i) \\
(10, & 0, & -1-5i, & -1+5i)
\end{matrix} ( 10 , − 1 + 5 i , 0 , − 1 − 5 i ) → ( 10 , − 1 − 5 i , 0 , − 1 + 5 i ) ( 10 , ( 10 ,  − 1 − 5 i , 0 ,  0 , − 1 − 5 i ,  − 1 + 5 i ) − 1 + 5 i )  Passo 6 
F 2 ( i ) [ 10 0 − 1 − 5 i − 1 + 5 i ] = [ F 1 ( − 1 ) D 1 F 1 ( − 1 ) F 1 ( − 1 ) − D 1 F 1 ( − 1 ) ] [ 10 0 − 1 − 5 i − 1 + 5 i ] = [ [ 1 1 1 − 1 ] [ 10 0 ] + [ 1 0 0 i ] [ 1 1 1 − 1 ] [ − 1 − 5 i − 1 + 5 i ] [ 1 1 1 − 1 ] [ 10 0 ] − [ 1 0 0 i ] [ 1 1 1 − 1 ] [ − 1 − 5 i − 1 + 5 i ] ] = [ [ 10 10 ] + [ 1 0 0 i ] [ − 2 − 10 i ] [ 10 10 ] − [ 1 0 0 i ] [ − 2 − 10 i ] ] = [ 8 20 12 0 ] F_2(i) \begin{bmatrix}10\\0\\-1-5i\\-1+5i\end{bmatrix}= \begin{bmatrix}F_1(-1) & D_1F_1(-1)\\ F_1(-1) & -D_1F_1(-1)\end{bmatrix}\begin{bmatrix}10\\0\\-1-5i\\-1+5i\end{bmatrix}\\
= \begin{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}10\\0\end{bmatrix}+
\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}-1-5i\\-1+5i\end{bmatrix}\\
\begin{bmatrix}1&1\\1&-1\end{bmatrix}
\begin{bmatrix}10\\0\end{bmatrix}-
\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}
\begin{bmatrix}1&1\\1&-1\end{bmatrix}\begin{bmatrix}-1-5i\\-1+5i\end{bmatrix}
\end{bmatrix}\\
=\begin{bmatrix}
\begin{bmatrix}10\\10\end{bmatrix}+\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}\begin{bmatrix}-2\\-10i\end{bmatrix}\\
\begin{bmatrix}10\\10\end{bmatrix}-\begin{bmatrix}1 & 0 \\ 0 & i\end{bmatrix}\begin{bmatrix}-2\\-10i\end{bmatrix}
\end{bmatrix}\\
=\begin{bmatrix}8\\20\\12\\0\end{bmatrix} F 2  ( i )  10 0 − 1 − 5 i − 1 + 5 i   = [ F 1  ( − 1 ) F 1  ( − 1 )  D 1  F 1  ( − 1 ) − D 1  F 1  ( − 1 )  ]  10 0 − 1 − 5 i − 1 + 5 i   =  [ 1 1  1 − 1  ] [ 10 0  ] + [ 1 0  0 i  ] [ 1 1  1 − 1  ] [ − 1 − 5 i − 1 + 5 i  ] [ 1 1  1 − 1  ] [ 10 0  ] − [ 1 0  0 i  ] [ 1 1  1 − 1  ] [ − 1 − 5 i − 1 + 5 i  ]   =  [ 10 10  ] + [ 1 0  0 i  ] [ − 2 − 10 i  ] [ 10 10  ] − [ 1 0  0 i  ] [ − 2 − 10 i  ]   =  8 20 12 0   Passo 7   
Conjuga-se e divide-se o resultado por 2 2 = 4 2^2=4 2 2 = 4  .
( 8 , 20 , 12 , 0 ) → ( 2 , 5 , 3 , 0 ) (8,20,12,0) \rightarrow (2,5,3,0) ( 8 , 20 , 12 , 0 ) → ( 2 , 5 , 3 , 0 ) Podemos concluir:
q ( n ) = 2 + 5 n + 3 n 2 q(n) = 2 + 5n + 3n^2 q ( n ) = 2 + 5 n + 3 n 2 ATENÇÃO:  Como os polinómios iniciais tinham valores inteiros e reais, o polinómio produto também terá. Se o resultado não for inteiro ou real, nestes casos, houve um erro de contas.
Para exemplos com k = 3 k = 3 k = 3  , consultar os slides disponibilizados na Página da Cadeira.