Previous Next Contents Generated Index Doc Set Home



EZ Fourier Transform

The subroutine described in this section computes the Fourier coefficients of a perodic sequence. The transform is defined below at output parameters AZERO, A and B. EZFFTF is a simplified but slower version of RFFTF.

Calling Sequence

CALL EZFFTF 
(N, R, AZERO, A, B, WSAVE)






void ezfftf 
(int n, float *r, float *azero, float *a, float *b, 
float *wsave)

Arguments

N

Length of the sequence to be transformed. The method is most efficient when N is the product of small primes. N 0.

R

A real array of length N containing the sequence to be transformed. On exit, R is unchanged.

AZERO

The sum from i=1 to i=n of r(i)/n

A, B

For N even,

and

For N even, define kmax=n/2-1 and for N odd, define kmax=(n-1)/2, then for k=1,...,kmax

xWSAVE

On entry, an array with dimension of at least (3 × N + 15), initialized by EZFFTI.

Sample Program

 
      PROGRAM TEST
      IMPLICIT NONE
C
      INTEGER          N
      PARAMETER       (N = 9) 
C
      INTEGER          I
      REAL             A(N), B(N), AZERO, PI, R(N)
      REAL             WSAVE(3 * N + 15) 
C
      EXTERNAL         EZFFTB, EZFFTF, EZFFTI
      INTRINSIC        ACOS, COS, SIN
C
C     Initialize array to a sequence of real numbers.  
C
      PI = ACOS (-1.0)
      DO 100, I=1, N
        R(I) = 3.0 + SIN ((I - 1.0) * 2.0 * PI / N)  + 
     $         4.0 * COS ((I - 1.0) * 8.0 * PI / N) 
  100 CONTINUE
C
      CALL EZFFTI (N, WSAVE)
      PRINT 1000 
      PRINT 1010, (R(I), I = 1, N)
      CALL EZFFTF (N, R, AZERO, A, B, WSAVE)
      PRINT 1020, AZERO
      PRINT 1030 
      PRINT 1010, (A(I), I = 1, N) 
      PRINT 1040 
      PRINT 1010, (B(I), I = 1, N)
      CALL EZFFTB (N, R, AZERO, A, B, WSAVE)
      PRINT 1050 
      PRINT 1010, (R(I), I = 1, N)
C
 1000 FORMAT (1X, 'Original Sequence: ')
 1010 FORMAT (100(F6.1, 1X))
 1020 FORMAT (1X, 'Azero = ' F4.1)
 1030 FORMAT (1X, 'A =  ')
 1040 FORMAT (1X, 'B = ')
 1050 FORMAT (1X, 'Recovered Sequence: ')
C
      END
 

Sample Output

 
 Original Sequence: 
   7.0   -0.1    7.0    1.9    4.0    3.4    0.1    5.1   -1.4
 Azero =  3.0
 A =  
   0.0    0.0    0.0    4.0    0.0    0.0    0.0    0.0    0.0
 B = 
   1.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0    0.0
 Recovered Sequence: 
   7.0   -0.1    7.0    1.9    4.0    3.4    0.1    5.1   -1.4






Previous Next Contents Generated Index Doc Set Home