CFFT,ZFFT(3)                MathKeisan FFT routine                CFFT,ZFFT(3)



NAME
       cfft, zfft - one-dimensional complex-to-complex FFT

SYNOPSIS
       libfft.a

          INTEGER isign, n, incx, incy, ntable, nwork
          COMPLEX x(incx*(n-1) + 1), y(incy*(n-1) + 1)
          REAL    scale, table(ntable), work(nwork)
          CALL  CFFT  (  isign,  n, scale, x, incx, y, incy, table,
          ntable, work, nwork )

          INTEGER         isign, n, incx, incy, ntable, nwork
          COMPLEX(kind=8) x(incx*(n-1) + 1), y(incy*(n-1) + 1)
          REAL(kind=8)    scale, table(ntable), work(nwork)
          CALL ZFFT ( isign, n, scale, x, incx,  y,  incy,  table,
          ntable, work, nwork )

       libfft_64.a

          INTEGER(kind=8) isign, n, incx, incy, ntable, nwork
          COMPLEX(kind=8) x(incx*(n-1) + 1), y(incy*(n-1) + 1)
          REAL(kind=8)    scale, table(ntable), work(nwork)
          CALL  CFFT  (  isign,  n, scale, x, incx, y, incy, table,
          ntable, work, nwork )

          INTEGER(kind=8) isign, n, incx, incy, ntable, nwork
          COMPLEX(kind=8) x(incx*(n-1) + 1), y(incy*(n-1) + 1)
          REAL(kind=8)    scale, table(ntable), work(nwork)
          CALL ZFFT ( isign, n, scale, x, incx,  y,  incy,  table,
          ntable, work, nwork )

DESCRIPTION
       This subroutine computes the one-dimensional discrete Fourier transform
       of the given complex array x; the transformed data  is  stored  in  the
       complex  array y.  If we take x and y to be dimensioned as x(0:n-1) and
       y(0:n-1), the transform 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 [CZ]FFT  in  a
       program, it must be called at least twice.

       Note that this routine currently provides only serial functionality.


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 (n>0).

       scale  Scaling factor for the transform.

              Not used if isign = 0.

       x      Array of data to be transformed.

              Not used if isign = 0.

       incx   Number of complex values between successive data points in x.

              incx != 0.

       incy   Number of complex values between successive data points in y.

              incy != 0.

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

       nwork  The size of work.  nwork >= 4*n.

       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                                                    CFFT,ZFFT(3)