      REAL    X(21), F(21), D(21), WK(42), FE(101), XE(101), FD(101)
      REAL    XANS(4), FANS(4), ERANS(4), EDANS(4), QANS
      LOGICAL SPLINE
      DATA XANS/-0.03,-.02,-.01,0.0/
      DATA FANS/0.971920,0.986880,0.996560,1.0/
      DATA ERANS/-0.607510E-02,-0.321901E-02,-0.946257E-03,0.0/
      DATA EDANS/0.293288,0.267704,0.174490,0.0/
      DATA QANS,IANS/0.274679,0/
C
C Arithmetic statement functions for Runge's function and derivative.
C
      R(X)  = 1.0/(1.0+25.0*X*X)
      RP(X) = -50.0*X*R(X)**2
C
C Compute Runge's function at 21 points in [-1,1].
C
      DO 1 I=1,21
          X(I) = -1.0 + (I-1)/10.0
          F(I) = R(X(I))
    1 CONTINUE
      N = 21
      NWK = 42 
      SPLINE = .FALSE.
C
C Compute cubic Hermite interpolant because SPLINE is .FALSE.
C
      CALL PCHEZ (N,X,F,D,SPLINE,WK,NWK,IERR)
      IF (IERR .LT. 0) THEN
          WRITE (*,*) 'AN ERROR CALLING PCHEZ, IERR= ',IERR
          STOP
      ENDIF
C
      NE = 101
C
C Evaluate interpolant and derivative at 101 points from -1 to 0.
C
      DO 2 I=1,NE
          XE(I) = -1.0 + (I-1.0)/(NE-1.0)
    2 CONTINUE
      CALL PCHEV (N,X,F,D,NE,XE,FE,FD,IERR)
      IF (IERR .NE. 0) THEN
          WRITE (*,*) 'AN ERROR CALLING PCHEV, IERR= ',IERR
          STOP
      ENDIF
C
      DO 3 I=1,NE
          ERROR = FE(I) - R(XE(I))
          ERRORD = FD(I) - RP(XE(I))
          WRITE (*,*) XE(I),FE(I),ERROR,ERRORD
    3 CONTINUE
C
C Compute integral over the interval [0,1] 
C
      A = 0.0
      B = 1.0
      Q = PCHQA (N,X,F,D,A,B,IERR)
      WRITE (*,*) 'INTEGRAL FROM 0 TO 1 = ',Q,' IERR = ',IERR
C
      WRITE (*,*) 
      WRITE (*,*) 
     *   ' REFERENCE RESULTS FROM IBM PC/AT OF PRECEDING 5 LINES '
      DO 4 I=1,4
          WRITE (*,*) XANS(I),FANS(I),ERANS(I),EDANS(I)
    4 CONTINUE
      WRITE (*,*) 'INTEGRAL FROM 0 TO 1 = ',QANS,' IERR = ',IANS
C
      STOP
      END
