core/vnl/algo/vnl_fft.h
Go to the documentation of this file.
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_