An Iterative FFT We rewrite the loop to calculate nkyk[1] once We refer to this calculation as a butterfly operation
Order of Evaluation Recursive call sequence for n = 8 The order 0,4,2,6,1,5,3,7 is a bit reversal Start with 000,001,010,011,100,101,110,111 Reverse the bits of each binary number to obtain 000,100,010,110,001,101,011,111 We show how to calculate this shortly
Developing an Iterative Solution Consider the tree structure on the prior slide We computer the DFT for each pair of items first We take the pairs and compute the DFT for 4 vectors We continue until we reach the final n-element DFT Expressing this strategy as an algorithm We now expand the code in line 3 in more detail
An Intermediate Solution
The Final Solution
The Bit Reversal Assume we have a routine rev(k) that reverses a binary numeral We can reverse n-bits in O( lg n) time, so the overall complexity is O( n lg n) An alternative is to store the reversed bits in a table so bit-reverse-copy runs in O( n ) time
Efficient FFT Complexity The complexity is O( n lg n); to show this we must show the innermost loop (lines 9-12) runs in O( n lg n) time
A Parallel FFT Circuit
Design of the Circuit a bit reversal permutation is at the left there are lg n stages, each stage has n/2 butterflies the butterfly operations at each stage can be done in parallel For each stage s from 1,2,…, lg n, there are n/2s butterfly groups with 2s-1 butterflies per group at stage s we use where m = 2s