An optimized FFT for the SA-1100 (and other ARM processors).

The Fast Fourier Transform is a signal processing algorithm, transforming signals between time and frequency domain. It is used quite often in audio, vision, communication and data analysis. Most FFT libraries (like fftw) are written to use floating point instructions. Unfortunately most ARM processors don't have integrated FPUs and rely on slow emulated support for floating point. The fft-arm library solely uses fixed point numbers to achieve high performance.

This code is a very minimal set of functions for radix 4/5 complex fixed point in-place FFT routines, optimized for the DEC/Intel StrongARM and other recent ARM cores. All that's provided as of now are FFTs with size 20, 64 and 80, with medium user effort other sizes can be supported. Since it's all C code, a smart compiler can tune the scheduling for newer processors (like XScale), and you can even test the functionality of the code on another architecture (like an x86 Linux box).

Sources