*DECK FTEST
      PROGRAM FTEST 
      REAL XMIN,XMAX
      INTEGER NCALLS
      EXTERNAL F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13
      COMMON XMIN,XMAX,NCALLS 
C
      XMIN = -3.
      XMAX = 3.
      CALL AVEVAL(F1,-1.,2.,1)
      CALL AVEVAL(F2,0.,2.,2) 
      XMIN = 1.E-10 
      XMAX = 1000.
      CALL AVEVAL(F3,0.005,1.,3)
      CALL AVEVAL(F4,0.005,1.,4)
      CALL AVEVAL(F5,0.005,1.,5)
      CALL AVEVAL(F6,0.005,1.,6)
      CALL AVEVAL(F12,0.005,1.,12)
      XMIN = -1000. 
      CALL AVEVAL(F7,-2.,5.,7)
      CALL AVEVAL(F8,0.,2.,8) 
      CALL AVEVAL(F9,0.,2.,9) 
      CALL AVEVAL(F10,0.,1.,10)
      CALL AVEVAL(F11,0.,2.,11)
      CALL AVEVAL(F13,0.,.5,13)
C
      XMIN = -3.
      XMAX = 3.
      CALL AVGERR(F1,-1.,2.,1)
      CALL AVGERR(F2,0.,2.,2) 
      XMIN = 1.E-10 
      XMAX = 1000.
      CALL AVGERR(F3,0.005,1.,3)
      CALL AVGERR(F4,0.005,1.,4)
      CALL AVGERR(F5,0.005,1.,5)
      CALL AVGERR(F6,0.005,1.,6)
      CALL AVGERR(F12,0.005,1.,12)
      XMIN = -1000. 
      CALL AVGERR(F7,-2.,5.,7)
      CALL AVGERR(F8,0.,2.,8) 
      CALL AVGERR(F9,0.,2.,9) 
      CALL AVGERR(F10,0.,1.,10)
      CALL AVGERR(F11,0.,2.,11)
      CALL AVGERR(F13,0.,.5,13)
      STOP
      END 
C
      SUBROUTINE AVEVAL(F,A,B,K)
      EXTERNAL F
      INTEGER FAIL,NF(6),NFF(6),N2(6)
      CHARACTER ASTER(6)
      COMMON/COM1/ X0,J,EPS,ACC,DERIV,ERROR,FAIL,N,
     +   NF,NFF,N2
      COMMON/COM2/ ASTER
      J = 1
      N = 1
      EPS = -1.E-3
      CALL DOIT(F,A,B,K)
      N = 2
      EPS = -1.E-4
      CALL DOIT(F,A,B,K)
      N = 3
      EPS = -1.E-5
      CALL DOIT(F,A,B,K)
      J = 2
      N = 4
      EPS = -1.E-3
      CALL DOIT(F,A,B,K)
      N = 5
      EPS = -1.E-4
      CALL DOIT(F,A,B,K)
      N = 6
      J = 3
      EPS = -1.E-3
      CALL DOIT(F,A,B,K)
      WRITE(*,100)K,(ASTER(I),NF(I),NFF(I),N2(I),I=1,6)
  100 FORMAT(1X,I2,6(1X,A1,I3,'/',I3,'(',I2,')')) 
      RETURN
      END 
C
      SUBROUTINE DOIT(F,A,B,K)
      CHARACTER ASTER(6)
      INTEGER FAIL, NFF(6),NF(6),N2(6),N1
      EXTERNAL F
      COMMON XMIN,XMAX,NCALLS 
      COMMON/COM1/ X0,J,EPS,ACC,DERIV,ERROR,FAIL,N,
     +   NF,NFF,N2
      COMMON/COM2/ ASTER
      ASTER(N) = ' '
      N1 = 0
      NF(N) = 0
      NFF(N) = 0
      N2(N) = 0
      DO 10 I = 0,9 
          NCALLS = 0
          X0 = A+FLOAT(I)/9.*(B-A)
          CALL DIFF(J,X0,XMIN,XMAX,F,EPS,ACC,DERIV,ERROR,FAIL)
          IF((K.EQ.2.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0) .OR.
     +       (K.EQ.8.AND.J.EQ.2.AND.I.EQ.0) .OR.
     +       (K.EQ.9.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0) .OR.
     +       (K.EQ.10.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0) .OR.
     +       (K.EQ.11.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0) .OR.
     +       (K.EQ.12.AND.J.EQ.1.AND.I.EQ.9) .OR. 
     +       (K.EQ.13.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0)) THEN
                 ASTER(N) = '*'
          ELSEIF(FAIL.EQ.1) THEN
              NFF(N) = NFF(N)+NCALLS
              N2(N) = N2(N)+1 
          ELSE
              NF(N) = NF(N)+NCALLS
              N1 = N1+1
          ENDIF
   10 CONTINUE
      IF(N2(N).NE.0) NFF(N) = NFF(N)/N2(N)
      IF(N1.NE.0) NF(N) = NF(N)/N1
      RETURN
      END 
C
C
      SUBROUTINE AVGERR(F,A,B,K)
      EXTERNAL F
      REAL A,B,F,X0,ERROR,DERIV,N,SUM(3)
      INTEGER I,J,FAIL,NF(3),NCALLS,K
      COMMON XMIN,XMAX,NCALLS 
      DO 30 J = 1,3 
      SUM(J) = 0.
      N = 10.
      NCALLS = 0
      DO 20 I = 0,9 
          X0 = A+FLOAT(I)/9.*(B-A)
          CALL DIFF(J,X0,XMIN,XMAX,F,EPS,ACC,DERIV,ERROR,FAIL)
          IF((K.EQ.2.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0) .OR.
     +       (K.EQ.8.AND.J.EQ.2.AND.I.EQ.0) .OR.
     +       (K.EQ.9.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0) .OR.
     +       (K.EQ.10.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0) .OR.
     +       (K.EQ.11.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0) .OR.
     +       (K.EQ.12.AND.J.EQ.1.AND.I.EQ.9) .OR. 
     +       (K.EQ.13.AND.(J.EQ.1.OR.J.EQ.3).AND.I.EQ.0)) THEN
                 N = 9.
              ELSE
                  SUM(J) = SUM(J)+ABS(ERROR/DERIV)
              ENDIF 
   20     CONTINUE
          SUM(J) = SUM(J)/N
          NF(J) = NCALLS/10
   30 CONTINUE
      WRITE(*,100) K,(SUM(I),NF(I),I=1,3)
  100 FORMAT(1X,I2,3(1X,E10.4,I4))
      RETURN
      END 
C
C
      REAL FUNCTION F1(X)
      COMMON XMIN,XMAX,NCALLS 
      F1 = EXP(4*X) 
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F2(X)
      COMMON XMIN,XMAX,NCALLS 
      F2 = EXP(X*X) 
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F3(X)
      COMMON XMIN,XMAX,NCALLS 
      F3 = SQRT(X)
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F4(X)
      COMMON XMIN,XMAX,NCALLS 
      F4 = 1./X
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F5(X)
      COMMON XMIN,XMAX,NCALLS 
      F5 = LOG(X)
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F6(X)
      COMMON XMIN,XMAX,NCALLS 
      F6 = X*X*LOG(X)
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F7(X)
      COMMON XMIN,XMAX,NCALLS 
      F7 = LOG(X+SQRT(1.+X*X))
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F8(X)
      COMMON XMIN,XMAX,NCALLS 
      F8 = SIN(X)
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F9(X)
      COMMON XMIN,XMAX,NCALLS 
      F9 = SIN(X*X) 
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F10(X)
      COMMON XMIN,XMAX,NCALLS 
      F10 = X*X*COS(2*X)
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F11(X)
      COMMON XMIN,XMAX,NCALLS 
      F11 = SIN(X)**2
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F12(X)
      COMMON XMIN,XMAX,NCALLS 
      F12 = COS(LOG(X))
      NCALLS = NCALLS+1
      RETURN
      END 
C
      REAL FUNCTION F13(X)
      COMMON XMIN,XMAX,NCALLS 
      F13 = 1./(X*X+0.01)
      NCALLS = NCALLS+1
      RETURN
      END 
