00001 // This is core/vnl/algo/vnl_fft.h 00002 #ifndef vnl_fft_h_ 00003 #define vnl_fft_h_ 00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE 00005 #pragma interface 00006 #endif 00007 //: 00008 // \file 00009 // \author fsm 00010 00011 #include <vcl_compiler.h> 00012 00013 //: use C++ overloading to find the correct FORTRAN routine from templated FFT code. 00014 void vnl_fft_setgpfa(float *triggs, long size, long pqr[3], long *info); 00015 //: use C++ overloading to find the correct FORTRAN routine from templated FFT code. 00016 void vnl_fft_setgpfa(double *triggs, long size, long pqr[3], long *info); 00017 00018 00019 // CALL GPFA(A,B,TRIGS,INC,JUMP,N,LOT,ISIGN,NIPQ,INFO) 00020 // 00021 // A IS FIRST REAL INPUT/OUTPUT VECTOR 00022 // B IS FIRST IMAGINARY INPUT/OUTPUT VECTOR 00023 // TRIGS IS A TABLE OF TWIDDLE FACTORS, PRECALCULATED 00024 // BY CALLING SUBROUTINE 'SETGPFA' 00025 // INC IS THE INCREMENT WITHIN EACH DATA VECTOR 00026 // JUMP IS THE INCREMENT BETWEEN DATA VECTORS 00027 // N IS THE LENGTH OF THE TRANSFORMS: 00028 // ----------------------------------- 00029 // N = (2**IP) * (3**IQ) * (5**IR) 00030 // ----------------------------------- 00031 // LOT IS THE NUMBER OF TRANSFORMS 00032 // ISIGN = +1 FOR FORWARD TRANSFORM 00033 // = -1 FOR INVERSE TRANSFORM 00034 // NIPQ is an array containing the number of factors (for 00035 // power of 2,3 and 5 00036 // INFO is set to -1 if there is a problem, 0 otherwise 00037 00038 // These functions perform a number (LOT) of 1D FFTs, each of the same signal size (N). 00039 // The signal is stored in two real arrays (A, B), with consecutive elements separated 00040 // by a stride (INC). The separation between the LOT signals to be transformed is JUMP. 00041 void vnl_fft_gpfa(float *a, float *b, float const *triggs, 00042 long inc, long jump, long n, 00043 long lot, long isign, long const pqr[3], long *info); 00044 void vnl_fft_gpfa(double *a, double *b, double const *triggs, 00045 long inc, long jump, long n, 00046 long lot, long isign, long const pqr[3], long *info); 00047 00048 #endif // vnl_fft_h_