integer function fft_ccfft2d(isign, scale, n1, n2, ld1, cdata, iopt)
The parameter, "scale", specifies the scale factor to be applied to the data.
The size parameters, "n1" and "n2", specifies the 2D FFT sizes. These must be setup as mixed radix values (must be even) in order to allow the FFT's to be more efficient. It is recommended to use fft_nrfft5 to calculate these values.
The leading dimension parameter, "ld1", specifies the leading dimension of the complex array. If it is the same as the fft size, "n1", then the routine will be more efficient.
The complex array, "cdata", is the I/O array; it is performed "in place".
The parameter, "iopt", is used to specify any other information that is unique to a specific FFT implementation. Currently, the use is for specifying whether to measure or estimate the FFT's when using FFTW routines. The "fft.h" header defines FFT_MEASURE and FFT_ESTIMATE, besides defining the FFT functions, as integer.
integer :: fft_size1, fft_size2, fft_flag integer :: isign, ier real :: fft_scale complex, allocatable :: cdata(:,:) fft_size1 = fft_nrfft5(100) fft_size2 = fft_nrfft5(50) allocate(cdata(fft_size1, fft_size2)) ... fft_flag = FFT_ESTIMATE ! forward FFT isign = -1 fft_scale = 1.0D+00/(dble(fft_size1)*dble(fft_size2)) ier = fft_ccfftm(isign, fft_scale, fft_size1, fft_size2, fft_size1, cdata, fft_flag) ! inverse FFT isign = 1 fft_scale = 1.0 ier = fft_ccfftm(isign, fft_scale, fft_size1, fft_size2, fft_size1, cdata, fft_flag)