When I first started looking for a fast fourier transformation FFT I was confused, since there are so many different algorithms. Finally I ended up using 2 different algorithms, since one was very powerfull but not so easy to understand, the other was realy easy to understand, but not very efficient.
The first algorithm is called butterfly. This is a very efficient algorithm, and I use them for image processing and transformation of large data signals (TButterflyFFT).
The second I call divide and conquere (TSymetricFFT).
See also the entry: Fast Fourier Transformation in Zeus for C++