Previous Next Contents Generated Index Doc Set Home



EZ Fourier Synthesis

The subroutine described in this section computes a perodic sequence from its Fourier coefficients. The synthesis is defined as:

If N is even let kmax=n/2, otherwise let kmax=(n-1)/2. Then for i=1,...,n

EZFFTB is a simplified but slower version of RFFTB.

Calling Sequence

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






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

Arguments

N

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

R

On exit, the Fourier synthesis of the inputs.

AZERO

The constant Fourier coefficient a0.

A, B

Arrays that contain the remaining Fourier coefficients. On exit, these arrays are unchanged. If N is even, then A and B are length N/2, otherwise A and B are length (N-1)/2.

WSAVE

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