Function Integrate-Qags

Part of:

package lisplab
( integrate-qags < f > < a > < b > &key (epsabs 0.0d0) (epsrel 1.d-5) (limit 200) )
Compute the integral of f(x) from a to b.

I f(x) dx

f - function subprogram defining the integrand
function f(x).

a - lower limit of integration

b - upper limit of integration

epsabs - absolute accuracy requested
epsrel - relative accuracy requested
if epsabs.le.0
the routine will end with ier = 6.

result - approximation to the integral

ier - integer
ier = 0 normal and reliable termination of the
routine. it is assumed that the requested
accuracy has been achieved. abnormal termination of the routine
the estimates for integral and error are
less reliable. it is assumed that the
requested accuracy has not been achieved.
abserr - estimate of the modulus of the absolute error,
which should equal or exceed abs(i-result)

neval - number of integrand evaluations

last - on return, last equals the number of
subintervals produced in the subdivision process,
which determines the significant number of
elements actually in the work arrays.

ier = 1 maximum number of subdivisions allowed
has been achieved. one can allow more sub-
divisions by increasing the value of limit
(and taking the according dimension
adjustments into account. however, if
this yields no improvement it is advised
to analyze the integrand in order to
determine the integration difficulties. if
the position of a local difficulty can be
determined (e.g. singularity,
discontinuity within the interval) one
will probably gain from splitting up the
interval at this point and calling the
integrator on the subranges. if possible,
an appropriate special-purpose integrator
should be used, which is designed for
handling the type of difficulty involved.
= 2 the occurrence of roundoff error is detec-
ted, which prevents the requested
tolerance from being achieved.
the error may be under-estimated.
= 3 extremely bad integrand behaviour
occurs at some points of the integration
= 4 the algorithm does not converge.
roundoff error is detected in the
extrapolation table. it is presumed that
the requested tolerance cannot be
achieved, and that the returned result is
the best which can be obtained.
= 5 the integral is probably divergent, or
slowly convergent. it must be noted that
divergence can occur with any other value
of ier.
= 6 the input is invalid, because
(epsabs.le.0 and*rel.mach.acc.,0.5d-28)
or or*4.
result, abserr, neval, last are set to
zero.except when limit or lenw is invalid,
iwork(1), work(limit*2+1) and
work(limit*3+1) are set to zero, work(1)
is set to a and work(limit+1) to b.

limit - limit determines the maximum number of subintervals
in the partition of the given integration interval
if, the routine will end with ier = 6.