
FFT Test patterns
=================

FFT test patterns have the following parameters:

 1. N = the number of points in the transform
    This may not be a power of 2 in future implementations
    
 2. name = textual name describing the test pattern
    - Eg, parabola, sinewave etc
 
 3. in = pointer to the input data for a forward transform
    out = pointer to the output data for a forward transform
    - The in array is scaled to a maximum amplitude of 1
    - The in and out arrays are complex
    
The foward and inverse relations for the FFT are:

  out[k] = sum_n( in[n] * exp(-i*n*k*w) )
  
  in [n] = 1/N sum_k( out[k] * exp(+i*n*k*w) )
  
where w = 2*pi/N.


  Inverse FFT's
  =============
  
To test inverse FFT code rather than foward FFT code the following is done:
  (i)  Conjugate the input data before running the FFT
  (ii) Conjugate the output data when testing the FFT

This means that additional separate test vectors are not required for inverse
FFT's. It works since conjugate,inverse-transform,conjugate produces the same
result as the forward transform (unscaled).


  Real FFT's
  ==========
  
Some of the test patterns contain real data (the imaginary parts of all the
data in the 'in' buffer is set to 0). This type of data is flagged by use of
the FFT_real bit in the flags field. Complex FFT's can be tested on the real
test patterns as well as the complex ones.
