Next: , Previous: Multi-1D FFT, Up: Multi-1D FFT


ZFFT1M Routine Documentation
— SUBROUTINE: ZFFT1M (MODE,M,N,X,COMM,INFO)
— Input: INTEGER MODE

The value of MODE on input determines the operation performed by ZFFT1M.
On input:

  • MODE=0 : only initializations (specific to the value of N) are performed using a default plan; this is usually followed by calls to the same routine with MODE=-1 or 1.
  • MODE=-1 : forward transforms are performed. Initializations are assumed to have been performed by a prior call to ZFFT1M.
  • MODE=1 : backward (reverse) transforms are performed. Initializations are assumed to have been performed by a prior call to ZFFT1M.
  • MODE=-2 : (default) initializations and forward transforms are performed.
  • MODE=2 : (default) initializations and backward transforms are performed.
  • MODE=100 : similar to MODE=0; only initializations (specific to the value of N) are performed, but these are based on a plan that is first generated by timing a subset of all possible plans and choosing the quickest (i.e. the FFT computation was timed as fastest based on the chosen plan). The plan generation phase may take a significant amount of time depending on the value of N.

— Input: INTEGER M

On input: M is the number of sequences to be transformed.

— Input: INTEGER N

On input: N is the length of the complex sequences in X

— Input/Output: COMPLEX*16 X(N*M)

On input: X contains the M complex sequences of length N to be transformed. Element i of sequence j is stored in location i+(j-1)*N of X.
On output: X contains the transformed sequences.

— Input/Output: COMPLEX*16 COMM(3*N+100)

COMM is a communication array. Some portions of the array are used to store initializations for subsequent calls with the same sequence length N. The remainder is used as temporary store.

— Output: INTEGER INFO

On output: INFO is an error indicator. On successful exit, INFO contains 0. If INFO = -i on exit, the i-th argument had an illegal value.

Example:

             CALL ZFFT1M(0,1,N,X,COMM,INFO)
             CALL ZFFT1M(-1,2,N,X,COMM,INFO)
             DO 10 I = 1, N
                X(I,3) = X(I,1)*DCONJG(X(I,2))
                X(I,2) = DCMPLX(0.0D0,1.0D0)*X(I,2)
        10   CONTINUE
             CALL ZFFT1M(1,2,N,X(1,2),COMM,INFO)