dfft2f - compute the Fourier coefficients of a periodic sequence. The DFFT operations are unnormalized, so a call of DFFT2F followed by a call of DFFT2B will multiply the input sequence by M*N. =head1 SYNOPSIS
SUBROUTINE DFFT2F( PLACE, FULL, M, N, A, LDA, B, LDB, WORK, LWORK) CHARACTER * 1 PLACE, FULL INTEGER M, N, LDA, LDB, LWORK DOUBLE PRECISION A(LDA,*), B(LDB,*), WORK(*)
SUBROUTINE DFFT2F_64( PLACE, FULL, M, N, A, LDA, B, LDB, WORK, * LWORK) CHARACTER * 1 PLACE, FULL INTEGER*8 M, N, LDA, LDB, LWORK DOUBLE PRECISION A(LDA,*), B(LDB,*), WORK(*)
SUBROUTINE FFT2F( PLACE, FULL, [M], [N], A, [LDA], B, [LDB], WORK, * LWORK) CHARACTER(LEN=1) :: PLACE, FULL INTEGER :: M, N, LDA, LDB, LWORK REAL(8), DIMENSION(:) :: WORK REAL(8), DIMENSION(:,:) :: A, B
SUBROUTINE FFT2F_64( PLACE, FULL, [M], [N], A, [LDA], B, [LDB], * WORK, LWORK) CHARACTER(LEN=1) :: PLACE, FULL INTEGER(8) :: M, N, LDA, LDB, LWORK REAL(8), DIMENSION(:) :: WORK REAL(8), DIMENSION(:,:) :: A, B
#include <sunperf.h>
void dfft2f(char place, char full, int m, int n, double *a, int lda, double *b, int ldb, double *work, int lwork);
void dfft2f_64(char place, char full, long m, long n, double *a, long lda, double *b, long ldb, double *work, long lwork);
A(LDA,N)
that contains the data to be
transformed. Upon exit, A is unchanged if an out-of-place transform is
done. If an in-place transform with partial result is requested,
A(1:(M/2+1)*2,1:N)
will contain the transformed results. If an in-place
transform with full result is requested, A(1:2*M,1:N)
will contain
complete transformed results.
If PLACE = ('O' or 'o') LDA > = M
If PLACE = ('I' or 'i') LDA must be even. If
FULL = ('F' or 'f'), LDA > = 2*M
FULL is not ('F' or 'f'), LDA > = (M/2+1)*2
B(2*LDB,N)
that contains the transformed
results if an out-of-place transform is done. Otherwise, B is not used.
If an out-of-place transform is done and FULL is not 'F' or 'f',
B(1:(M/2+1)*2,1:N)
will contain the partial transformed results.
If FULL = 'F' or 'f', B(1:2*M,1:N)
will contain the complete transformed
results.
If PLACE is ('O' or 'o') and
FULL is ('F' or 'f'), LDB > = M
FULL is not ('F' or 'f'), LDB > = M/2+1
Note that even though LDB is used in the argument list, 2*LDB is the actual leading dimension of B.