d01gac integrates a function which is specified numerically at four or more points, over the whole of its specified range, using third-order finite difference formulae with error estimates, according to a method due to
Gill and Miller (1972).
d01gac evaluates the definite integral
where the function
is specified at the
-points
, which should be all distinct, and in either ascending or descending order. The integral between successive points is calculated by a four-point finite difference formula centred on the interval concerned, except in the case of the first and last intervals, where four-point forward and backward difference formulae respectively are employed. If
is less than
, the function fails. An approximation to the truncation error is integrated and added to the result. It is also returned separately to give an estimate of the uncertainty in the result. The method is due to
Gill and Miller (1972).
Gill P E and Miller G F (1972) An algorithm for the integration of unequally spaced data Comput. J. 15 80–83
No accuracy level is specified by you before calling
d01gac but on return the absolute value of
er is an approximation to, but not necessarily a bound for,
. If on exit
NE_INT,
NE_NOT_STRICTLY_DECREASING,
NE_NOT_STRICTLY_INCREASING or
NE_QUAD_FIRST_TWO_PTS_EQL, both
ans and
er are returned as zero.
Background information to multithreading can be found in the
Multithreading documentation.
In their paper,
Gill and Miller (1972) do not add the quantity
er to
ans before return. However, extensive tests have shown that a dramatic reduction in the error often results from such addition. In other cases, it does not make an improvement, but these tend to be cases of low accuracy in which the modified answer is not significantly inferior to the unmodified one. You have the option of recovering the Gill–Miller answer by subtracting
er from
ans on return from the function.
This example evaluates the integral
reading in the function values at
unequally spaced points.