    Program c06bafe

!     C06BAF Example Program Text

!     Mark 24 Release. NAG Copyright 2012.

!     .. Use Statements ..
      Use nag_library, Only: c06baf, nag_wp, x01aaf
!     .. Implicit None Statement ..
      Implicit None
!     .. Parameters ..
      Integer, Parameter               :: lwork = 16, nout = 6
!     .. Local Scalars ..
      Real (Kind=nag_wp)               :: abserr, ans, error, pi, r, result,   &
                                          seqn, sig
      Integer                          :: i, ifail, ncall
!     .. Local Arrays ..
      Real (Kind=nag_wp), Allocatable  :: work(:)
!     .. Intrinsic Procedures ..
      Intrinsic                        :: real
!     .. Executable Statements ..
      Write (nout,*) 'C06BAF Example Program Results'
      Write (nout,*)

      Allocate (work(lwork))

      pi = x01aaf(pi)
      ans = pi**2/12.0_nag_wp
      ncall = 0
      sig = 1.0_nag_wp
      seqn = 0.0_nag_wp
      Write (nout,99999) 'Estimated       Actual'
      Write (nout,99998) 'I       SEQN       RESULT', 'abs error        error'
      Write (nout,*)
      Do i = 1, 10
        r = real(i,kind=nag_wp)
        seqn = seqn + sig/(r**2)

!       ifail: behaviour on error exit   
!              =0 for hard exit, =1 for quiet-soft, =-1 for noisy-soft
        ifail = 0
        Call c06baf(seqn,ncall,result,abserr,work,lwork,ifail)

        error = result - ans
        sig = -sig
        If (i<=3) Then
!         First three calls of C06BAF return no error estimate
          Write (nout,99997) i, seqn, result, error
        Else
          Write (nout,99996) i, seqn, result, abserr, error
        End If
      End Do

99999 Format (36X,A)
99998 Format (3X,A25,8X,A)
99997 Format (1X,I4,2F12.4,3X,10X,'-   ',E14.2)
99996 Format (1X,I4,2F12.4,3X,2E14.2)
    End Program c06bafe
