Optimizing FFTs using 3 summations.

30 Views Asked by At

The formula for mixed-radix (Cooley Tuky) FFT can be given as:

\begin{align} \widehat{x_k} = \sum_{n=0}^{N-1}{ x_n \omega^{n k}} \end{align}

with input $x_n$, output $\widehat{x_k}$, and setting $\omega = e^{2 \pi i / N}$. The more specific mixed-radix formula becomes, setting $k = k_0 + k_1 N^{1/2}$, and $n = n_0 + n_1 N^{1/2}$:

\begin{align} \widehat{x_{(k_0 + k_1 N^{1/2})}} &= \sum_{n_0=0}^{N^{1/2}-1}{ \sum_{n_1=0}^{N^{1/2}-1} { x_{(n_0 + n_1 N^{1/2})} \omega^{(n_0 + n_1 N^{1/2}) (k_0 + k_1 N^{1/2})}} } \\ &= \sum_{n_0=0}^{N^{1/2}-1}{ \left( \sum_{n_1=0}^{N^{1/2}-1} { x_{(n_0 + n_1 N^{1/2})} \omega^{( k_0 n_1 N^{1/2})}} \right)} \omega^{k_1 n_0} \cdot \underbrace{\omega^{k_0 n_0}}_{\text{twiddle factor}} \end{align}

My question is, can we extend this to three summations, by setting

$$k = (k_0 + k_1 N^{1/3} + k_2 N^{2/3})$$ $$n = (n_0 + n_1 N^{1/3} + n_2 N^{2/3})$$

I have already explored recursion. I am really currently interested in determining how this would work with three nested summations. I assume that we may need two seperate twiddle factors for some of the summations. Here is one idea:

$$s_1 = \sum_{n_2 = 0}^{N^{1/3}-1}{ x_{(n_0 + n_1 N^{1/3} + n_2 N^{2/3})} \omega^{(n_2 k_2 N^{1/3} + n_2 k_0 N^{2/3})}}$$ $$s_2 = \sum_{n_1 = 0}^{N^{1/3}}{(s_1) \omega^{(n_1 k_0 N^{1/3} + n_1 k_1 N^{2/3})} }$$ $$s_3 = \sum_{n_0 = 0}^{N^{1/3}}{(s_2) \omega^{(n_0 k_0 + n_0 k_1 N^{1/3} + n_0 k_2 N^{2/3})} }$$

I'm especially interersted in how many total DFT's of size $N^{1/3}$ are called. I'm also less interested in how many total twiddle factors are required to be calculated.