Contents


NAME

     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.

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(2*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(2*LDB,*), WORK(*)

  F95 INTERFACE
     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

  C INTERFACE
     #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);

ARGUMENTS

     PLACE (input)
               Character.  If PLACE = 'I' or 'i' (for in-place) ,
               the  input  and output data are stored in array A.
               If PLACE = 'O'  or  'o'  (for  out-of-place),  the
               input  data  is stored in array B while the output
               is stored in A.

     FULL (input)
               Indicates whether or  not  to  generate  the  full
               result  matrix.   'F'  or 'f' will cause DFFT2F to
               generate the full result matrix.  Otherwise only a
               partial  matrix  that  takes advantage of symmetry
               will be generated.

     M (input) Integer  specifying  the  number  of  rows  to  be
               transformed.   It  is  most  efficient when M is a
               product of small primes.  M >= 0; when M = 0,  the
               subroutine  returns  immediately  without changing
               any data.

     N (input) Integer specifying the number  of  columns  to  be
               transformed.   It is most most efficient when N is
               a product of small primes.  N >= 0; when  N  =  0,
               the  subroutine returns immediately without chang-
               ing any data.

     A (input/output)
               On entry, a two-dimensional  array  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.

     LDA (input)
               Leading dimension of the array containing the data
               to  be  transformed.   LDA  must  be  even  if the
               transformed sequences are to be stored in A.

               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 (input/output)
               Upon exit, a two-dimensional array 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.

     LDB (input)
               2*LDB is the leading dimension of the array B.  If
               an in-place transform is desired LDB is ignored.

               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.

     WORK (input/output)
               One-dimensional real  array  of  length  at  least
               LWORK.   On input, WORK must have been initialized
               by DFFT2I.

     LWORK (input)
               Integer.  LWORK >= (M + 2*N + MAX(M, 2*N) + 30)