A method and apparatus to reduce the amount of required memory and instruction
cycles when implementing Fast Fourier Transforms (FFTs) on a computer system is
described. The invention optimizes FFT software using in-place bit reversal (IPBR)
implemented on a processor capable of bit reversed incrementation. Alternative
embodiments implement the invention for out of place bit reversal (OOPBR) and on
processors that do not support special instructions for bit reversed incrementation.
The invention only generates unique bit-reversed address pairs and avoids generation
of self-reversed addresses. To optimize the invention for in place bit reversal,
every non-self bit reversed address in the input array is generated only once,
while making simple, computationally efficient increments away from the previous
pair of bit reversed addresses. The address pair generator can independently advance
only one address in each address pair, and bit reversal of one address uniquely
defines the other address.