1 #ifndef GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H 2 #define GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H 1 21 #include "CLHEP/GenericFunctions/AbsFunction.hh" 23 #include "gsl/gsl_integration.h" 25 #if defined( __clang__ ) || defined( __CLING__ ) 26 #pragma clang diagnostic push 27 #pragma clang diagnostic ignored "-Winconsistent-missing-override" 28 #elif defined( __GNUC__ ) && __GNUC__ >= 5 29 #pragma GCC diagnostic push 30 #pragma GCC diagnostic ignored "-Wsuggest-override" 35 namespace GaudiMathImplementation
84 gsl_integration_workspace*
ws;
151 const
double epsabs = 1.e-10, const
double epsrel = 1.e-7, const
size_t size = 1000 );
182 const Points& points, const
double epsabs = 1e-9, const
double epsrel = 1.e-6,
183 const
size_t size = 1000 );
212 const
double epsabs = 1e-9, const
double epsrel = 1.e-6, const
size_t size = 1000 );
240 const
double b, const
double epsabs = 1e-9, const
double epsrel = 1.e-6,
241 const
size_t size = 1000 );
270 const
float epsabs = 1e-9, const
float epsrel = 1.e-6, const
size_t size = 1000 );
277 unsigned int dimensionality()
const override {
return m_DIM; }
280 double operator()(
double argument )
const override;
282 double operator()(
const Argument& argument )
const override;
292 const AbsFunction&
function()
const {
return *m_function; }
294 double a()
const {
return m_a; }
295 double b()
const {
return m_b; }
297 const Points&
points()
const {
return m_points; }
299 double epsabs()
const {
return m_epsabs; }
301 double epsrel()
const {
return m_epsrel; }
304 double result()
const {
return m_result; }
306 double error()
const {
return m_error; }
309 size_t size()
const {
return m_size; }
348 if ( p ) gsl_integration_workspace_free( p->
ws );
385 #if defined( __clang__ ) || defined( __CLING__ ) 386 #pragma clang diagnostic pop 387 #elif defined( __GNUC__ ) && __GNUC__ >= 5 388 #pragma GCC diagnostic pop 394 #endif // GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H
constexpr static const auto FAILURE
GaudiMath::Integration::Category category() const
integration category
gsl_integration_workspace * ws
GaudiMath::Integration::Category m_category
Category
integration category
double result() const
previous result
Genfun::GaudiMathImplementation::NumericalDerivative Derivative
constexpr auto size(const C &c) noexcept(noexcept(c.size())) -> decltype(c.size())
PropertyMgr & operator=(const PropertyMgr &)=delete
bool hasAnalyticDerivative() const override
Does this function have an analytic derivative?
double epsabs() const
absolute precision
GaudiMath::Integration::KronrodRule m_rule
This class is used for returning status codes from appropriate routines.
Type
type of integration (for finite limits)
double error() const
evaluate of previous error
double epsrel() const
relatiove precision
void operator()(_Workspace *p) const
GaudiMath::Integration::Type m_type
std::unique_ptr< _Workspace, gsl_ws_deleter > m_ws
GaudiMath::Integration::Type type() const
integration type
std::unique_ptr< const AbsFunction > m_function
std::vector< double > Points
typedef for vector of singular points
virtual Out operator()(const vector_of_const_< In > &inputs) const =0
const Points & points() const
known singularities
double fun(const std::vector< double > &x)
GaudiMath.h GaudiMath/GaudiMath.h.
KronrodRule
integration rule
Type
the list of available types for ntuples
GaudiMath::Integration::KronrodRule rule() const
integration rule
double a() const
integration limit
collection of common types for classes NumericalIndefiniteIntegral and NumericalDefiniteIntegral ...
This class allows the numerical evaluation of the following functions: