Previous Next Contents Generated Index Doc Set Home



Two-Dimensional Fourier Synthesis

The subroutines described in this section compute a periodic sequence from its Fourier coefficients. The xFFT2 operations are unnormalized, so a call of xFFT2F followed by a call of xFFT2B will multiply the input sequence by M*N.

Calling Sequence

CALL RFFT2B
(PLACE, M, N, RX, LDX, RY, LDY, RWSAVE, LWSAVE)
CALL DFFT2B
(PLACE, M, N, DX, LDX, DY, LDY, DWSAVE, LWSAVE)
CALL CFFT2B
(M, N, CX, LDX, CWSAVE, LWSAVE)
CALL ZFFT2B
(M, N, ZX, LDX, ZWSAVE, LWSAVE)






void rfft2b
(char place, int m, int n, float *rx, int ldx, int *ry, 
int ldy, float *wsave, int lwsave)
void dfft2b
(char place, int m, int n, double *dx, int ldx, double 
*dy, int ldy, double *wsave, int lwsave)
void cfft2b
(int m, int n, complex *cx, int ldx, complex *wsave, 
int lwsave)
void zfft2b
(int m, int n, doublecomplex *zx, int ldx, 
doublecomplex *wsave, int lwsave)

Arguments

PLACE

Indicates whether the transform should be performed in place or out-of-place. The legal values for PLACE are listed below. Any values not listed below are illegal.

`I' or `i' In-place. Input is supplied in xX and the transformed input is returned in xX. xY is not referenced.

`O' or `o' Out-of-place. Input is supplied in xX and the transformed input is returned in xY.

M

Number of rows to be transformed. These subroutines are most efficient when M is a product of small primes. M 0.

N

Number of columns to be transformed. These subroutines are most efficient when N is a product of small primes. N 0.

xX

On entry, a two-dimensional array xX(LDX,N) that contains the sequences to be transformed. On exit, the transformed sequence if the transform is performed in place, otherwise unchanged.

LDX

Leading dimension of the array containing the data to be transformed. LDX M.

xY

Undefined on entry. On exit, the transformed sequence in the transform is performed out of place, otherwise undefined.

LDY

Leading dimension of the output array. LDY M.

xWSAVE

On entry, an array with dimension of at least (M + N + MAX(M,N) + 45). The array must have been initialized by xFFT2I.

LWSAVE

On entry, the length of WSAVE. Unchanged on output.

Sample Program




      PROGRAM TEST
      IMPLICIT NONE
C
      INTEGER           LWSAVE, M, N
      PARAMETER        (M = 2)
      PARAMETER        (N = 4)
      PARAMETER        (LWSAVE = 4 * (M + N + N) + 40)
C
      INTEGER           I, J
      REAL              PI, WSAVE(LWSAVE)
      REAL              X, Y
      COMPLEX           C(M,N)
C
      EXTERNAL          CFFT2B, CFFT2F, CFFT2I
      INTRINSIC         ACOS, CMPLX, COS, SIN
C
C     Initialize the array C to a complex sequence.
C
      PI = ACOS (-1.0)
      DO 110, J = 1, N
        DO 100, I = 1, M
          X = SIN ((I - 1.0) * 2.0 * PI / N)
          Y = COS ((J - 1.0) * 2.0 * PI / M)
          C(I,J) = CMPLX (X, Y)
  100   CONTINUE
  110 CONTINUE
C
      PRINT 1000
      DO 200, I = 1, M
        PRINT 1010, (C(I,J), J = 1, N)
  200 CONTINUE
      CALL CFFT2I (M, N, WSAVE)
      CALL CFFT2F (M, N, C, M, WSAVE, LWSAVE)
      PRINT 1020
      DO 300, I = 1, M
        PRINT 1010, (C(I,J), J = 1, N)
  300 CONTINUE
      CALL CFFT2B (M, N, C, M, WSAVE, LWSAVE)
      PRINT 1030
      DO 400, I = 1, M
        PRINT 1010, (C(I,J), J = 1, N)
  400 CONTINUE
C
 1000 FORMAT (1X, `Original Sequences:')
 1010 FORMAT (1X, 100(F4.1' +',F4.1,'i  `))
 1020 FORMAT (1X, `Transformed Sequences:')
 1030 FORMAT (1X, `Recovered Sequences:')
C
      END



Sample Output




  0.0 + 1.0i   0.0 +-1.0i   0.0 + 1.0i   0.0 +-1.0i  
  1.0 + 1.0i   1.0 +-1.0i   1.0 + 1.0i   1.0 +-1.0i  
 Transformed Sequences:
  4.0 + 0.0i   0.0 + 0.0i   0.0 + 8.0i   0.0 + 0.0i  
 -4.0 + 0.0i   0.0 + 0.0i   0.0 + 0.0i   0.0 + 0.0i  
 Recovered Sequences:
  0.0 + 8.0i   0.0 +-8.0i   0.0 + 8.0i   0.0 +-8.0i  
  8.0 + 8.0i   8.0 +-8.0i   8.0 + 8.0i   8.0 +-8.0i  






Previous Next Contents Generated Index Doc Set Home