MCFFT,MZFFT(3)              MathKeisan FFT routine              MCFFT,MZFFT(3)



NAME
       mcfft, mzfft - one-dimensional multiple complex-to-complex FFT. (OpenMP
       Parallel Support).

SYNOPSIS
       libfft.a

          INTEGER isign, n, m, inc1x, inc2x, inc1y, inc2y, ntable, nwork
          COMPLEX x((m-1)*inc2x + (n-1)*inc1x + 1),
                  y((m-1)*inc2y + (n-1)*inc1y + 1)
          REAL    scale, table(ntable), work(nwork)
          CALL MCFFT ( isign, n, m, scale,  x,  inc1x,  inc2x,  y,
          inc1y, inc2y, table, ntable, work, nwork )

          INTEGER         isign, n, m, inc1x, inc2x, inc1y, inc2y, ntable, nwork
          COMPLEX(kind=8)     x((m-1)*inc2x + (n-1)*inc1x + 1),
                          y((m-1)*inc2y + (n-1)*inc1y + 1)
          REAL(kind=8)    scale, table(ntable), work(nwork)
          CALL  MZFFT  (  isign,  n,  m, scale, x, inc1x, inc2x, y,
          inc1y, inc2y, table, ntable, work, nwork )

       libfft_64.a

          INTEGER(kind=8) isign, n, m, inc1x, inc2x, inc1y, inc2y, ntable, nwork
          COMPLEX(kind=8) x((m-1)*inc2x + (n-1)*inc1x + 1),
                          y((m-1)*inc2y + (n-1)*inc1y + 1)
          REAL(kind=8)    scale, table(ntable), work(nwork)
          CALL MCFFT ( isign, n, m, scale,  x,  inc1x,  inc2x,  y,
          inc1y, inc2y, table, ntable, work, nwork )

          INTEGER(kind=8) isign, n, m, inc1x, inc2x, inc1y, inc2y, ntable, nwork
          COMPLEX(kind=8) x((m-1)*inc2x + (n-1)*inc1x + 1),
                          y((m-1)*inc2y + (n-1)*inc1y + 1)
          REAL(kind=8)    scale, table(ntable), work(nwork)
          CALL  MZFFT  (  isign,  n,  m, scale, x, inc1x, inc2x, y,
          inc1y, inc2y, table, ntable, work, nwork )

DESCRIPTION
       This subroutine computes the one-dimensional discrete Fourier transform
       of the m complex vectors stored in x; the transformed data is stored in
       the complex array y.  Examining a single vector to be  transformed,  if
       we  take x and y to be dimensioned as x(0:n-1) and y(0:n-1), the trans-
       form is expressed by the following formula:


                      n-1

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

                      j=0


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

       In order to accomodate multiple calls of the same size to this routine,
       an  additional initialization step is required prior to the computation
       of any transforms.  Hence, whenever it is desired to use  [(MZ)(MC)]FFT
       in a program, it must be called at least twice.

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


ARGUMENTS
       Input

       isign  Option flag:

              If isign = 0, the routine is initialized for the given value  of
              n.

              If  isign = (+/-) 1, isign is the sign of the exponential in the
              transform.

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

       m      Number of data sets to transform (m>0).

       scale  Scaling factor for the transform.

              Not used if isign = 0.

       x      Array of data to be transformed.

              Not used if isign = 0.

       inc1x  Number of complex values between successive points  in  a  given
              data set in x.  (inc1x != 0).

       inc2x  Number  of  complex  values  between  successive data sets in x.
              (inc2x != 0).

       inc1y  Number of complex values between successive points  in  a  given
              data set in y.  (inc1y != 0).

       inc2y  Number  of  complex  values  between  successive data sets in y.
              (inc2y != 0).

       ntable The size of table.  (ntable >= 2*n+64).

       nwork  The size of work.  (nwork >= 4*n*m).

       Working Storage

       table  If isign = 0, table is initialized for computing  transforms  of
              length n.

              If  isign  !=  0, table must have been initialized by a previous
              call with this value of n in which isign was 0.

       work   Workspace for computing the transform.

              Not used if isign = 0.

       Output

       y      Transformed data.

              Not used if isign = 0.



SciLib routine                                                  MCFFT,MZFFT(3)