gslint
input parametersThe library functions qng
and qagx
take an
argument of the form (
f,(
a,
b))
, where f
is a function to be integrated, a is the lower limit, and
b is the upper limit, both limits being floating point numbers
as in math.
The qng_tol
and qagx_tol
functions take an argument of
the form ((
f,
t),(
a,
b))
, where f,
a, and b are as above, and t is a specified
tolerance.
The qagp
and qagp_tol
functions take arguments of
the form (
f,
p)
and
((
f,
t),
p)
, respectively, where f and
t are as above, and p is an ordered list of real numbers
specifying the limits of integration along with arbitrarily many
intervening breakpoints.
The integrand f is expressed in virtual machine code, and takes a single real argument to a real result. The argument and result of f are required to be floating point numbers as described in math. Any expressible function of this type is acceptable, even one defined in terms of other integrals, so that a double or triple integral can be expressed easily, albeit a costly computation. However, a constant overhead in stack space is required for each nested library function call, and there is currently no mechanism to prevent segmentation faults due to a stack overflow.
When no tolerance is specified, as with qng
, qagx
, and
qagp
, the tightest attainable tolerance is chosen by default,
currently 2e-14
, in order find the most accurate result
possible. A selection of progressively looser tolerances is tried
automatically if the tightest one is not successful, stopping when
either a solution is found or ten orders of magnitude are covered.
If a tolerance is explicitly specified, as with qng_tol
,
qagx_tol
or qagp_tol
, only that tolerance is tried.