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