Automatic Differentiation
 
Loading...
Searching...
No Matches

◆ integrate_1d_double_exponential() [1/2]

template<typename F , typename... Args, require_all_st_arithmetic< Args... > * = nullptr>
double stan::math::integrate_1d_double_exponential ( const F &  f,
double  a,
double  b,
std::ostream *  msgs,
const Args &...  args 
)
inline

Compute the integral of the single variable function f from a to b using adaptive double-exponential quadrature.

a and b can be finite or infinite.

The signature for f should be: double f(double x, double xc, const std::vector<double>& theta, const std::vector<double>& x_r, const std::vector<int>& x_i, std::ostream* msgs)

It should return the value of the function evaluated at x. Any errors should be printed to the msgs stream.

The integration algorithm terminates per piece when error <= max(relative_tolerance * L1, absolute_tolerance) where L1 is the Boost estimate of the L1 norm of the integral.

Template Parameters
Ftype of function to integrate
Argstypes of additional arguments forwarded to f (all arithmetic)
Parameters
fthe function to be integrated
alower limit of integration
bupper limit of integration
relative_tolerancerelative tolerance passed to Boost quadrature
absolute_toleranceabsolute-error floor on the convergence test
max_refinementsmaximum refinement level passed to the Boost quadrature class constructor
[in,out]msgsthe print stream for warning messages
argsadditional arguments passed to f
Returns
numeric integral of function f

Definition at line 268 of file integrate_1d_double_exponential.hpp.