| [394] | 1 | /* | 
|---|
|  | 2 | ** FFT and FHT routines | 
|---|
|  | 3 | **  Copyright 1988, 1993; Ron Mayer | 
|---|
|  | 4 | ** | 
|---|
|  | 5 | **  fht(fz,n); | 
|---|
|  | 6 | **      Does a hartley transform of "n" points in the array "fz". | 
|---|
|  | 7 | **  fft(n,real,imag) | 
|---|
|  | 8 | **      Does a fourier transform of "n" points of the "real" and | 
|---|
|  | 9 | **      "imag" arrays. | 
|---|
|  | 10 | **  ifft(n,real,imag) | 
|---|
|  | 11 | **      Does an inverse fourier transform of "n" points of the "real" | 
|---|
|  | 12 | **      and "imag" arrays. | 
|---|
|  | 13 | **  realfft(n,real) | 
|---|
|  | 14 | **      Does a real-valued fourier transform of "n" points of the | 
|---|
|  | 15 | **      "real" arrays.  The real part of the transform ends | 
|---|
|  | 16 | **      up in the first half of the array and the imaginary part of the | 
|---|
|  | 17 | **      transform ends up in the second half of the array. | 
|---|
|  | 18 | **  realifft(n,real) | 
|---|
|  | 19 | **      The inverse of the realfft() routine above. | 
|---|
|  | 20 | ** | 
|---|
|  | 21 | ** | 
|---|
|  | 22 | ** NOTE: This routine uses at least 2 patented algorithms, and may be | 
|---|
|  | 23 | **       under the restrictions of a bunch of different organizations. | 
|---|
|  | 24 | **       Although I wrote it completely myself; it is kind of a derivative | 
|---|
|  | 25 | **       of a routine I once authored and released under the GPL, so it | 
|---|
|  | 26 | **       may fall under the free software foundation's restrictions; | 
|---|
|  | 27 | **       it was worked on as a Stanford Univ project, so they claim | 
|---|
|  | 28 | **       some rights to it; it was further optimized at work here, so | 
|---|
|  | 29 | **       I think this company claims parts of it.  The patents are | 
|---|
|  | 30 | **       held by R. Bracewell (the FHT algorithm) and O. Buneman (the | 
|---|
|  | 31 | **       trig generator), both at Stanford Univ. | 
|---|
|  | 32 | **       If it were up to me, I'd say go do whatever you want with it; | 
|---|
|  | 33 | **       but it would be polite to give credit to the following people | 
|---|
|  | 34 | **       if you use this anywhere: | 
|---|
|  | 35 | **           Euler     - probable inventor of the fourier transform. | 
|---|
|  | 36 | **           Gauss     - probable inventor of the FFT. | 
|---|
|  | 37 | **           Hartley   - probable inventor of the hartley transform. | 
|---|
|  | 38 | **           Buneman   - for a really cool trig generator | 
|---|
|  | 39 | **           Mayer(me) - for authoring this particular version and | 
|---|
|  | 40 | **                       including all the optimizations in one package. | 
|---|
|  | 41 | **       Thanks, | 
|---|
|  | 42 | **       Ron Mayer; mayer@acuson.com | 
|---|
|  | 43 | ** | 
|---|
|  | 44 | */ | 
|---|
|  | 45 |  | 
|---|
|  | 46 | #ifndef FFTMayer_SEEN | 
|---|
|  | 47 | #define FFTMayer_SEEN | 
|---|
|  | 48 | void fht( double *fz,int n); | 
|---|
|  | 49 | void ifft(int n, double *real, double *imag); | 
|---|
|  | 50 | void realfft(int n, double *real); | 
|---|
|  | 51 | void fft(int n, double *real,double *imag); | 
|---|
|  | 52 | void realifft(int n,double *real); | 
|---|
|  | 53 |  | 
|---|
|  | 54 | #endif | 
|---|