00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef OBITFFT_H
00029 #define OBITFFT_H
00030
00031
00032 #if HAVE_FFTW==1
00033 #include <fftw.h>
00034 #include <rfftw.h>
00035 #elif HAVE_GSL==1
00036 #include <gsl/gsl_fft_complex_float.h>
00037 #include <gsl/gsl_fft_halfcomplex_float.h>
00038 #include <gsl/gsl_fft_real_float.h>
00039 #endif
00040 #include "Obit.h"
00041 #include "ObitThread.h"
00042 #include "ObitFArray.h"
00043 #include "ObitCArray.h"
00044
00045
00077
00083 enum obitFFTdir {
00085 OBIT_FFT_Forward,
00087 OBIT_FFT_Reverse
00088 };
00090 typedef enum obitFFTdir ObitFFTdir;
00091
00097 enum obitFFTtype {
00099 OBIT_FFT_FullComplex,
00101 OBIT_FFT_HalfComplex
00102 };
00104 typedef enum obitFFTtype ObitFFTtype;
00105
00106
00108 typedef struct {
00109 #include "ObitFFTDef.h"
00110 } ObitFFT;
00111
00112
00118 #define ObitFFTUnref(in) ObitUnref (in)
00119
00125 #define ObitFFTRef(in) ObitRef (in)
00126
00133 #define ObitFFTIsA(in) ObitIsA (in, ObitFFTGetClass())
00134
00135
00137 void ObitFFTClassInit (void);
00138
00140 ObitFFT* newObitFFT (gchar* name, ObitFFTdir dir, ObitFFTtype type,
00141 gint rank, gint *dim);
00143 typedef ObitFFT* (*newObitFFTFP) (gchar *name, ObitFFTdir dir,
00144 ObitFFTtype type,
00145 gint rank, gint *dim);
00146
00148 gconstpointer ObitFFTGetClass (void);
00149
00151 gint ObitFFTSuggestSize (gint length);
00152
00154 void ObitFFTR2C (ObitFFT *in, ObitFArray *inArray, ObitCArray *outArray);
00155 typedef void (*ObitFFTR2CFP) (ObitFFT *in, ObitFArray *inArray,
00156 ObitCArray *outArray);
00157
00159 void ObitFFTC2R (ObitFFT *in, ObitCArray *inArray, ObitFArray *outArray);
00160 typedef void (*ObitFFTC2RFP) (ObitFFT *in, ObitCArray *inArray,
00161 ObitFArray *outArray);
00162
00164 void ObitFFTC2C (ObitFFT *in, ObitCArray *inArray, ObitCArray *outArray);
00165 typedef void (*ObitFFTC2CFP) (ObitFFT *in, ObitCArray *inArray,
00166 ObitCArray *outArray);
00167
00168
00174 typedef struct {
00175 #include "ObitFFTClassDef.h"
00176 } ObitFFTClassInfo;
00177
00178 #endif