A direct N-point DFT computes N outputs, each a sum of N products: N2 complex multiplications and N(N−1) complex additions. The fast Fourier transform (FFT) computes exactly the same X[k] (it is not an approximation) by splitting the DFT into smaller DFTs and reusing WNk+N/2=−WNk. The radix-2 algorithms need N=2ν; pad with zeros to the next power of 2 if necessary. There are ν=log2N stages, each made of N/2 butterflies.
DECIMATION-IN-TIME (DIT) SPLIT
X[k]=Xe[k]+WNkXo[k],X[k+N/2]=Xe[k]−WNkXo[k],k=0,1,…,N/2−1
Xe[k] and Xo[k] are the N/2-point DFTs of the even-indexed samples x[2r] and the odd-indexed samples x[2r+1]. Repeat the split until only 2-point DFTs remain.
DECIMATION-IN-FREQUENCY (DIF) SPLIT
X[2r]=n=0∑N/2−1(x[n]+x[n+N/2])WN/2rn,X[2r+1]=n=0∑N/2−1(x[n]−x[n+N/2])WNnWN/2rn
For r=0,1,…,N/2−1. The first and second halves of the input are combined, and the even- and odd-indexed outputs each come from an N/2-point DFT.
COST OF A RADIX-2 FFT
MFFT=2Nlog2N,AFFT=Nlog2N
log2N stages of N/2 butterflies. The count includes trivial multiplications by WN0=1 and by −j, which a practical program skips; use the formula as stated unless a question says otherwise. One complex multiplication, done directly as (a+jb)(c+jd)=(ac−bd)+j(ad+bc), costs 4 real multiplications and 2 real additions.
Bit reversal and stage structure. Write the index in ν=log2N bits and reverse the bits. For N=8: 1=001→100=4 and 3=011→110=6, so the DIT input order is x[0],x[4],x[2],x[6],x[1],x[5],x[3],x[7]. Indices whose bit pattern reads the same both ways (0,2,5,7 for N=8) stay in place. In the DIT graph with bit-reversed input, stage m (m=1,…,ν) uses the twiddles W2mr, r=0,1,…,2m−1−1, so the first stage is plain 2-point DFTs with W20=1. Each stage can overwrite its inputs with its outputs (in-place computation), so only N complex storage locations are needed.