! D01BDF Example Program Text ! Mark 24 Release. NAG Copyright 2012. Module d01bdfe_mod ! D01BDF Example Program Module: ! Parameters and User-defined Routines ! .. Use Statements .. Use nag_library, Only: nag_wp ! .. Implicit None Statement .. Implicit None ! .. Parameters .. Integer, Parameter :: nout = 6 Contains Function f(x) ! .. Use Statements .. Use nag_library, Only: x01aaf ! .. Function Return Value .. Real (Kind=nag_wp) :: f ! .. Scalar Arguments .. Real (Kind=nag_wp), Intent (In) :: x ! .. Intrinsic Procedures .. Intrinsic :: sin ! .. Executable Statements .. f = (x**2)*sin(10.0E0_nag_wp*x01aaf(f)*x) Return End Function f End Module d01bdfe_mod Program d01bdfe ! D01BDF Example Main Program ! .. Use Statements .. Use nag_library, Only: d01bdf, nag_wp Use d01bdfe_mod, Only: f, nout ! .. Implicit None Statement .. Implicit None ! .. Local Scalars .. Real (Kind=nag_wp) :: a, abserr, b, epsabs, epsrel, & result ! .. Intrinsic Procedures .. Intrinsic :: abs, max ! .. Executable Statements .. Write (nout,*) 'D01BDF Example Program Results' epsabs = 0.0E0_nag_wp epsrel = 1.0E-04_nag_wp a = 0.0E0_nag_wp b = 1.0E0_nag_wp Call d01bdf(f,a,b,epsabs,epsrel,result,abserr) Write (nout,*) Write (nout,99999) 'A - lower limit of integration = ', a Write (nout,99999) 'B - upper limit of integration = ', b Write (nout,99998) 'EPSABS - absolute accuracy requested = ', epsabs Write (nout,99998) 'EPSREL - relative accuracy requested = ', epsrel Write (nout,*) Write (nout,99997) 'RESULT - approximation to the integral = ', result Write (nout,99998) 'ABSERR - estimate to the absolute error = ', abserr Write (nout,*) If (abserr>max(epsabs,epsrel*abs(result))) Then Write (nout,*) & 'Warning - requested accuracy may not have been achieved' End If 99999 Format (1X,A,F10.4) 99998 Format (1X,A,E9.2) 99997 Format (1X,A,F9.5) End Program d01bdfe