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

◆ qags_r()

void qags_r ( 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,
double *  xx,
double  yy,
int *  irev 
)

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

Purpose
This routine computes I = integral of f over [a, b], satisfying the requested accuracy, where f is a given function with singularities. User should provide the necessary computed values of f according to the argument irev.
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]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
= -5: The argument limit had an illegal value (limit < 1)
= -11: 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
[out]xxirev = 1 to 15: xx contains the abscissa where the function value should be evaluated and given in the next call.
[in]yyirev = 1 to 15: The function value f(xx) should be given in yy in the next call.
[in,out]irevControl variable for reverse communication.
[in] Before first call, irev should be initialized to zero. On succeeding calls, irev should not be altered.
[out] If irev is not zero, complete the following tasks and call this routine again without changing irev.
= 0: Computation finished.
= 1 to 15: User should set the function value at xx in yy. Do not alter any variables other than yy.
Reference
SLATEC (QUADPACK)