C Using complex discrete Fourier transform, find the approximate Fourier
C coefficients to Runge's function on [-1,1] with N=16 and N=17. 
C 
       REAL    WSAVE(150)
       COMPLEX COEFF(0:16), SQTM1
C
C Note 0 subscript, which makes indexing easier, allowed in Fortran 77.
C
C Arithmetic statement function for Runge's function. 
       RUNGE(X) = 1.0/(1+25.0*X*X) 
C 
       X0 = -1.0 
       PI = ASIN(1.0)*2.0 
       SQTM1 = CMPLX(0.0,-1.0)

C
       DO 10 N = 16,17 
          CALL CFFTI (N,WSAVE) 
C Function assumed to be periodic on [-1,1], of length 2.
          DEL = 2.0/N 
          F = 2.0*PI/(N*DEL) 
          DO 1 J = 0,N-1
C First sample point at -1, last at 1-DEL
              XJ = (-1.0) + J*DEL 
              COEFF(J) = CMPLX(RUNGE(XJ),0.0) 
    1     CONTINUE 
          CALL CFFTF (N,COEFF,WSAVE) 
C Returned coefficients must be divided by N for correct normaliziation.
C 
C Note repetition after N/2 in original coefficients. Scaling because
C X0 not at origin destroys this to some extent. 
C
          WRITE (*,*) ' CFFTF RESULTS FOR N = ' ,N 
          WRITE (*,*) ' CZERO = ',COEFF(0)/N*2
          WRITE (*,*)  
     *' J          OUTPUT FROM CFFTF,               SCALED COEFFICIENTS'   
          DO 11 J = 1,N-1
              WRITE (*,'(I5,2E15.6,5X,2E15.6)') 
     *              J, COEFF(J), EXP(-SQTM1*J*F*X0) * COEFF(J)/N *2
   11     CONTINUE 
          WRITE (*,*)

   10  CONTINUE 
       WRITE (*,*) 'REFERENCE RESULTS (PARTIAL) FROM IBM PC/AT'
       WRITE (*,*) ' CFFTF RESULTS FOR N =           17'
       WRITE (*,*) ' CZERO =  (0.549161,0.000000)'
       WRITE (*,*) '    .  '
       WRITE (*,*) '    .  '
       WRITE (*,*) '  10  -0.603455E-01   0.568597E-07 '  
       WRITE (*,*) '  11   0.112482E+00  -0.293560E-07 '  
       WRITE (*,*) '  12  -0.234573E+00   0.245598E-07 '  
       WRITE (*,*) '  13   0.421975E+00  -0.271580E-07 '  
       WRITE (*,*) '  14  -0.824417E+00   0.349775E-07 '
       WRITE (*,*) '  15   0.149192E+01  -0.488273E-07 '
       WRITE (*,*) '  16  -0.292606E+01   0.421539E-07 '
       STOP 
       END  
