CFFTMLT,ZFFTMLT(3)          MathKeisan FFT routine          CFFTMLT,ZFFTMLT(3)



NAME
       cfftmlt,  zfftmlt  -  one-dimensional  multiple complex-to-complex FFT.
       (OpenMP Parallel Support).

SYNOPSIS
       libfft.a

          INTEGER ifax(32), inc, jump, n, lot, isign
          REAL    ar((lot-1)*jump + (n-1)*inc + 1), work(4*n*lot),
                  ai((lot-1)*jump + (n-1)*inc + 1), trigs(2*n)
          CALL  CFFTMLT  (  ar,  ai,  work,  trigs,  ifax,   inc,   jump,   n,
                         lot, isign )

          INTEGER      ifax(32), inc, jump, n, lot, isign
          REAL(kind=8) ar((lot-1)*jump + (n-1)*inc + 1), work(4*n*lot),
                       ai((lot-1)*jump + (n-1)*inc + 1), trigs(2*n)
          CALL   ZFFTMLT   (   ar,  ai,  work,  trigs,  ifax,  inc,  jump,  n,
                         lot, isign )

       libfft_64.a

          INTEGER(kind=8) ifax(32), inc, jump, n, lot, isign
          REAL(kind=8)    ar((lot-1)*jump + (n-1)*inc + 1), work(4*n*lot),
                          ai((lot-1)*jump + (n-1)*inc + 1), trigs(2*n)
          CALL  CFFTMLT  (  ar,  ai,  work,  trigs,  ifax,   inc,   jump,   n,
                         lot, isign )

          INTEGER(kind=8) ifax(32), inc, jump, n, lot, isign
          REAL(kind=8)    ar((lot-1)*jump + (n-1)*inc + 1), work(4*n*lot),
                          ai((lot-1)*jump + (n-1)*inc + 1), trigs(2*n)
          CALL   ZFFTMLT   (   ar,  ai,  work,  trigs,  ifax,  inc,  jump,  n,
                         lot, isign )

DESCRIPTION
       This subroutine computes in place the one-dimensional discrete  Fourier
       transform of the lot complex vectors stored in ar and ai, where ar pro-
       vides the real part of the input data and ai provides the complex  part
       of the input data.  The transformed data replaces the original contents
       of the real arrays ar and ai.

       Conceptually, if we consider a complex vector x(0:n-1), then its trans-
       form, y(0:n-1), is expressed by the following formula:


              n-1

       y(k) = Sum x(j) * exp(isign*j*k*2*pi*i/n)

              j=0

       for k = 0, ..., n-1, where i = sqrt(-1).

       Note  that  both  ifax  and  trigs  must  be initialized with a call to
       (CZ)FTFAX prior to the computation of any transforms.  Furthermore, the
       values  of  ifax  and trigs are valid only for the value of n specified
       for the call to (CZ)FTFAX; if multiple values of n  are  desired,  then
       multiple calls to (CZ)FTFAX are required.

       Set  the OpenMP environmental variable OMP_NUM_THREADS to the number of
       threads you would like to use.



ARGUMENTS
       Input

       ar     Real part to be transformed. Contains lot data sets, each having
              n data elements.

       ai     Imaginary  part  to be transformed. Contains lot data sets, each
              having n data elements.

       inc    Storage increment between successive elements in the  same  data
              set, (inc>0).

       jump   Storage  increment  between corresponding elements in successive
              data sets, (jump>0).

       n      Number of data elements in a given data set, (n>0).

       lot    Number of data sets to transform, (lot>0).

       isign  Determines the sign of the exponential in the transform.

       Working Storage

       work   Workspace for computing the transform.

       trigs  A trigonometric table.  trigs must be initialized by a  call  to
              (CZ)FTFAX prior to the call to (CZ)FFTMLT.

       ifax   A  factorization  table.   ifax must be initialized by a call to
              (CZ)FTFAX prior to the call to (CZ)FFTMLT.

       Output

       ar     Real part of the transformed data sets.

       ai     Imaginary part of the transformed data sets.



SciLib routine                                              CFFTMLT,ZFFTMLT(3)