1 #ifndef GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H 2 #define GAUDIMATH_NUMERICALDEFINITEINTEGRAL_H 1 20 #include "CLHEP/GenericFunctions/AbsFunction.hh" 22 #include "gsl/gsl_integration.h" 24 #if defined( __clang__ ) || defined( __CLING__ ) 25 #pragma clang diagnostic push 26 #pragma clang diagnostic ignored "-Winconsistent-missing-override" 27 #elif defined( __GNUC__ ) && __GNUC__ >= 5 28 #pragma GCC diagnostic push 29 #pragma GCC diagnostic ignored "-Wsuggest-override" 34 namespace GaudiMathImplementation
83 gsl_integration_workspace*
ws;
150 const
double epsabs = 1.e-10, const
double epsrel = 1.e-7, const
size_t size = 1000 );
181 const Points& points, const
double epsabs = 1e-9, const
double epsrel = 1.e-6,
182 const
size_t size = 1000 );
211 const
double epsabs = 1e-9, const
double epsrel = 1.e-6, const
size_t size = 1000 );
239 const
double b, const
double epsabs = 1e-9, const
double epsrel = 1.e-6,
240 const
size_t size = 1000 );
269 const
float epsabs = 1e-9, const
float epsrel = 1.e-6, const
size_t size = 1000 );
276 unsigned int dimensionality()
const override {
return m_DIM; }
279 double operator()(
double argument )
const override;
281 double operator()(
const Argument& argument )
const override;
291 const AbsFunction&
function()
const {
return *m_function; }
293 double a()
const {
return m_a; }
294 double b()
const {
return m_b; }
296 const Points&
points()
const {
return m_points; }
298 double epsabs()
const {
return m_epsabs; }
300 double epsrel()
const {
return m_epsrel; }
303 double result()
const {
return m_result; }
305 double error()
const {
return m_error; }
308 size_t size()
const {
return m_size; }
347 if ( p ) gsl_integration_workspace_free( p->
ws );
384 #if defined( __clang__ ) || defined( __CLING__ ) 385 #pragma clang diagnostic pop 386 #elif defined( __GNUC__ ) && __GNUC__ >= 5 387 #pragma GCC diagnostic pop 393 #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)
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: