XLPack 7.0
XLPack Numerical Library (C API) Reference Manual
Loading...
Searching...
No Matches

◆ qags()

void qags ( double(*)(double)  f,
double  a,
double  b,
double  epsabs,
double  epsrel,
int  limit,
double *  result,
double *  abserr,
int *  neval,
int *  last,
double  work[],
int  lwork,
int  iwork[],
int *  info 
)

Finite interval adaptive quadrature with sigularities (21 point Gauss-Kronrod rule)

Purpose
This routine computes I = integral of f over [a, b], satisfying the requested accuracy, where f is a given function with singularities defined by a user supplied subroutine.
21 point Gauss-Kronrod rule is used, and the integration interval will be adaptively subdivided to satisfy the requested accuracy in connection with extrapolation, which will eliminate the effects of integrand singularities of several types.
Parameters
[in]fThe user supplied subroutine which calculates the integrand function f(x) defined as follows.
double f(double x)
{
return computed f(x) value
}
[in]aLower limit of integration.
[in]bUpper limit of integration.
[in]epsabsAbsolute accuracy requested.
The requested accuracy is assumed to be satisfied if abserr <= max(epsabs, epsrel*|result|)).
[in]epsrelRelative accuracy requested.
The requested accuracy is assumed to be satisfied if abserr <= max(epsabs, epsrel*|result|)).
If epsabs <= 0 and epsrel < 50*eps, epsrel is assumed to be 50*eps, where eps is the machine precision.
[in]limitMaximum number of subintervals in the partition of the given integration interval [a, b]. (limit >= 1)
[out]resultApproximation to I = integral of f over [a, b].
[out]abserrEstimate of the modulus of the absolute error, which should equal or exceed the true error.
[out]nevalNumber of integrand evaluations.
[out]lastNumber of subintervals produced in the subdivision process.
[out]work[]Array work[lwork]
Work array.
work[0], ..., work[last-1]: Left end points of the subintervals in the partition of [a, b].
work[limit], ..., work[limit+last-1]: Right end poits of the subintervals.
work[2*limit], ..., work[2*limit+last-1]: The integral approximations over the subintervals.
work[3*limit], ..., work[3*limit+last-1]: The error estimates over the subintervals.
[in]lworkThe length of work[]. (lwork >= 4*limit)
[out]iwork[]Array iwork[liwork] (liwork >= limit)
Work array.
The first k elements contain pointers to the error estimates over the subintervals, such that work[3*limit+iwork[0]-1], ..., work[3*limit+iwork[k-1]-1] form a decreasing sequence with k = last if last <= limit/2+2, and k = limit+1-last otherwise.
[out]info= 0: Successful exit
= -6: The argument limit had an illegal value (limit < 1)
= -12: The argument lwork had an illegal value (lwork < 4*limit)
= 1: Maximum number of subdivisions allowed has been achieved
= 2: The occurrence of roundoff error is detected
= 3: Extremely bad integrand behaviour occurs
= 4: The algorithm does not converge. roundoff error is detected in the extrapolation table
= 5: The integral is probably divergent, or slowly convergent
Reference
SLATEC (QUADPACK)