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" 34 namespace GaudiMathImplementation {
81 gsl_integration_workspace*
ws;
148 const
double epsabs = 1.e-10, const
double epsrel = 1.e-7, const
size_t size = 1000 );
179 const Points& points, const
double epsabs = 1e-9, const
double epsrel = 1.e-6,
180 const
size_t size = 1000 );
209 const
double epsabs = 1e-9, const
double epsrel = 1.e-6, const
size_t size = 1000 );
237 const
double b, const
double epsabs = 1e-9, const
double epsrel = 1.e-6,
238 const
size_t size = 1000 );
267 const
float epsabs = 1e-9, const
float epsrel = 1.e-6, const
size_t size = 1000 );
274 unsigned int dimensionality()
const override {
return m_DIM; }
277 double operator()(
double argument )
const override;
279 double operator()(
const Argument& argument )
const override;
289 const AbsFunction&
function()
const {
return *m_function; }
291 double a()
const {
return m_a; }
292 double b()
const {
return m_b; }
294 const Points&
points()
const {
return m_points; }
296 double epsabs()
const {
return m_epsabs; }
298 double epsrel()
const {
return m_epsrel; }
301 double result()
const {
return m_result; }
303 double error()
const {
return m_error; }
306 size_t size()
const {
return m_size; }
344 if ( p ) gsl_integration_workspace_free( p->
ws );
381 #if defined( __clang__ ) || defined( __CLING__ ) 382 # pragma clang diagnostic pop 383 #elif defined( __GNUC__ ) && __GNUC__ >= 5 384 # pragma GCC diagnostic pop 390 #endif // GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H
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)
constexpr static const auto FAILURE
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: