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.