Genfun::GaudiMathImplementation::NumericalDefiniteIntegral Class Reference

This class allows the numerical evaluation of the following functions: More...

#include </scratch/z5/marcocle/GaudiDocs/lhcb-release/996/GAUDI/GAUDI_v26r4/InstallArea/x86_64-slc6-gcc48-opt/include/GaudiMath/NumericalDefiniteIntegral.h>

Inheritance diagram for Genfun::GaudiMathImplementation::NumericalDefiniteIntegral:
Collaboration diagram for Genfun::GaudiMathImplementation::NumericalDefiniteIntegral:

Classes

struct  _Function
 
struct  _Workspace
 
struct  gsl_ws_deleter
 

Public Types

typedef std::vector< double > Points
 typedef for vector of singular points More...
 
typedef std::vector< double > Points
 typedef for vector of singular points More...
 

Public Member Functions

 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const double b, const GaudiMath::Integration::Type type=GaudiMath::Integration::Adaptive, const GaudiMath::Integration::KronrodRule rule=GaudiMath::Integration::Default, const double epsabs=1.e-10, const double epsrel=1.e-7, const size_t size=1000)
 From CLHEP/GenericFunctions. More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const double b, const Points &points, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const GaudiMath::Integration::Inf b=GaudiMath::Integration::Infinity, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const GaudiMath::Integration::Inf a, const double b, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const float epsabs=1e-9, const float epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const NumericalDefiniteIntegral &)
 copy constructor More...
 
virtual ~NumericalDefiniteIntegral ()=default
 destructor More...
 
virtual unsigned int dimensionality () const
 dimensionality of the problem More...
 
virtual double operator() (double argument) const
 Function value. More...
 
virtual double operator() (const Argument &argument) const
 Function value. More...
 
virtual bool hasAnalyticDerivative () const
 Does this function have an analytic derivative? More...
 
virtual Genfun::Derivative partial (unsigned int index) const
 Derivatives. More...
 
const AbsFunction & function () const
 accessor to the function itself More...
 
double a () const
 integration limit More...
 
double b () const
 
const Pointspoints () const
 known singularities More...
 
double epsabs () const
 absolute precision More...
 
double epsrel () const
 relatiove precision More...
 
double result () const
 previous result More...
 
double error () const
 evaluate of previous error More...
 
size_t size () const
 
GaudiMath::Integration::Type type () const
 integration type More...
 
GaudiMath::Integration::Category category () const
 integration category More...
 
GaudiMath::Integration::KronrodRule rule () const
 integration rule More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const double b, const GaudiMath::Integration::Type type=GaudiMath::Integration::Adaptive, const GaudiMath::Integration::KronrodRule rule=GaudiMath::Integration::Default, const double epsabs=1.e-10, const double epsrel=1.e-7, const size_t size=1000)
 From CLHEP/GenericFunctions. More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const double b, const Points &points, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const double a, const GaudiMath::Integration::Inf b=GaudiMath::Integration::Infinity, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const GaudiMath::Integration::Inf a, const double b, const double epsabs=1e-9, const double epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const AbsFunction &function, const size_t index, const float epsabs=1e-9, const float epsrel=1.e-6, const size_t size=1000)
 Standard constructor The function created with this constructor compute the following integral: More...
 
 NumericalDefiniteIntegral (const NumericalDefiniteIntegral &)
 copy constructor More...
 
virtual ~NumericalDefiniteIntegral ()=default
 destructor More...
 
virtual unsigned int dimensionality () const
 dimensionality of the problem More...
 
virtual double operator() (double argument) const
 Function value. More...
 
virtual double operator() (const Argument &argument) const
 Function value. More...
 
virtual bool hasAnalyticDerivative () const
 Does this function have an analytic derivative? More...
 
virtual Genfun::Derivative partial (unsigned int index) const
 Derivatives. More...
 
const AbsFunction & function () const
 accessor to the function itself More...
 
double a () const
 integration limit More...
 
double b () const
 
const Pointspoints () const
 known singularities More...
 
double epsabs () const
 absolute precision More...
 
double epsrel () const
 relatiove precision More...
 
double result () const
 previous result More...
 
double error () const
 evaluate of previous error More...
 
size_t size () const
 
GaudiMath::Integration::Type type () const
 integration type More...
 
GaudiMath::Integration::Category category () const
 integration category More...
 
GaudiMath::Integration::KronrodRule rule () const
 integration rule More...
 

Protected Member Functions

double QAGI (_Function *fun) const
 
double QAGP (_Function *fun) const
 
double QNG (_Function *fun) const
 
double QAG (_Function *fun) const
 
double QAGS (_Function *fun) const
 
_Workspaceallocate () const
 allocate the integration workspace More...
 
_Workspacews () const
 
StatusCode Exception (const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
 
double QAGI (_Function *fun) const
 
double QAGP (_Function *fun) const
 
double QNG (_Function *fun) const
 
double QAG (_Function *fun) const
 
double QAGS (_Function *fun) const
 
_Workspaceallocate () const
 
_Workspacews () const
 
StatusCode Exception (const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
 

Private Member Functions

 NumericalDefiniteIntegral ()
 
NumericalDefiniteIntegraloperator= (const NumericalDefiniteIntegral &)
 
 NumericalDefiniteIntegral ()
 
NumericalDefiniteIntegraloperator= (const NumericalDefiniteIntegral &)
 

Private Attributes

std::unique_ptr< const AbsFunction > m_function
 
size_t m_DIM
 
size_t m_index
 
double m_a
 
double m_b
 
bool m_ia
 
bool m_ib
 
GaudiMath::Integration::Type m_type
 
GaudiMath::Integration::Category m_category
 
GaudiMath::Integration::KronrodRule m_rule
 
Points m_points
 
std::unique_ptr< double[]> m_pdata
 
double m_epsabs
 
double m_epsrel
 
double m_result
 
double m_error
 
size_t m_size
 
std::unique_ptr< _Workspace, gsl_ws_deleterm_ws
 
Argument m_argument
 
Argument m_argF
 

Detailed Description

This class allows the numerical evaluation of the following functions:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

Author
Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@i.nosp@m.tep..nosp@m.ru
Date
2003-08-31

Definition at line 71 of file NumericalDefiniteIntegral.h.

Member Typedef Documentation

typedef for vector of singular points

Definition at line 75 of file NumericalDefiniteIntegral.h.

typedef for vector of singular points

Definition at line 75 of file NumericalDefiniteIntegral.h.

Constructor & Destructor Documentation

Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const double  b,
const GaudiMath::Integration::Type  type = GaudiMath::Integration::Adaptive,
const GaudiMath::Integration::KronrodRule  rule = GaudiMath::Integration::Default,
const double  epsabs = 1.e-10,
const double  epsrel = 1.e-7,
const size_t  size = 1000 
)

From CLHEP/GenericFunctions.

from CLHEP/GenericFunctions

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

If function contains singularities, the type = Type::AdaptiveSingular need to be used

For faster integration of smooth function non-adaptive integration can be used: type = Type::NonAdaptive need to be used

For adaptive integration type = Type>>Adaptive one can specify the order of Gauss-Kronrad integration rule rule = KronrodRule::Gauss15 The higher-order rules give better accuracy for smooth functions, while lower-order rules save the time when the function contains local difficulties, such as discontinuites.

  • The GSL routine gsl_integration_qng is used for type = Type:NonAdaptive :

The GSL routine gsl_integration_qag is used for type = Type:Adaptive :

  • The GSL routine gsl_integration_qags is used for type = Type:AdaptiveSingular :
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bhigh integration limit
typeintegration type
ruleintegration rule (for adaptive integration)
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration

Definition at line 107 of file NumericalDefiniteIntegral.cpp.

116  : AbsFunction ()
117  , m_function ( function.clone () )
118  , m_DIM ( 0 )
119  , m_index ( index )
120  , m_a ( a )
121  , m_b ( b )
122  , m_ia ( false )
123  , m_ib ( false )
124  , m_type ( type )
126  , m_rule ( rule )
127  , m_points ( )
128  , m_epsabs ( epsabs )
129  , m_epsrel ( epsrel )
130  , m_result ( GSL_NEGINF )
131  , m_error ( GSL_POSINF )
132  , m_size ( size )
133  , m_argument ()
134  , m_argF ()
135  {
138  if ( function.dimensionality() < 2 )
139  { Exception("::constructor: invalid dimensionality ") ; }
140  if ( m_index >= function.dimensionality() )
141  { Exception("::constructor: invalid variable index") ; }
142 
143  m_DIM = function.dimensionality() - 1 ;
144  m_argument = Argument( m_DIM ) ;
145  m_argF = Argument( m_DIM + 1 ) ;
146 
147  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
GaudiMath::Integration::Type type() const
integration type
GaudiMath::Integration::KronrodRule rule() const
integration rule
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const double  b,
const Points points,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

standard constructor

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

where function have known singulatities

  • The GSL routine gsl_integration_qagp is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bhigh integration limit
pointnsvector of know singular points
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
functionthe base function
indexthe variable index
aintegration limit
bintegration limit
pointslist of known function singularities
epsabsabsolute precision for integration
epsrelrelative precision for integration

Definition at line 160 of file NumericalDefiniteIntegral.cpp.

168  : AbsFunction ()
169  , m_function ( function.clone() )
170  , m_DIM ( 0 )
171  , m_index ( index )
172  , m_a ( a )
173  , m_b ( b )
174  , m_ia ( false )
175  , m_ib ( false )
179  , m_points ( points )
180  , m_epsabs ( epsabs )
181  , m_epsrel ( epsrel )
182  //
183  , m_result ( GSL_NEGINF )
184  , m_error ( GSL_POSINF )
185  //
186  , m_size ( size )
187  , m_argument ()
188  , m_argF ()
189  {
190  if ( function.dimensionality() < 2 )
191  { Exception("::constructor: invalid dimensionality ") ; }
192  if ( m_index >= function.dimensionality() )
193  { Exception("::constructor: invalid variable index") ; }
194 
195  m_DIM = function.dimensionality() - 1 ;
196  m_argument = Argument( m_DIM ) ;
197  m_argF = Argument( m_DIM + 1 ) ;
198 
199  const double l1 = std::min ( a , b ) ;
200  const double l2 = std::max ( a , b ) ;
201  m_points.push_back ( l1 ) ;
202  m_points.push_back ( l2 ) ;
203  std::sort ( m_points.begin() , m_points.end() ) ;
204  m_points.erase( std::unique( m_points.begin () ,
205  m_points.end () ) ,
206  m_points.end() );
207 
208  Points::iterator lower =
209  std::lower_bound ( m_points.begin () , m_points.end () , l1 ) ;
210  m_points.erase ( m_points.begin () , lower ) ;
211  Points::iterator upper =
212  std::upper_bound ( m_points.begin () , m_points.end () , l2 ) ;
213  m_points.erase ( upper , m_points.end () ) ;
214 
215  m_pdata.reset( new double[ m_points.size() ] );
216  std::copy( m_points.begin() , m_points.end() , m_pdata.get() );
217  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const GaudiMath::Integration::Inf  b = GaudiMath::Integration::Infinity,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagiu is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bindication for infinity
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration

Definition at line 245 of file NumericalDefiniteIntegral.cpp.

252  : AbsFunction()
253  , m_function ( function.clone() )
254  , m_DIM ( 0 )
255  , m_index ( index )
256  , m_a ( a )
257  , m_b ( GSL_POSINF )
258  , m_ia ( false )
259  , m_ib ( true )
263  , m_points ( )
264  , m_epsabs ( epsabs )
265  , m_epsrel ( epsrel )
266  //
267  , m_result ( GSL_NEGINF )
268  , m_error ( GSL_POSINF )
269  //
270  , m_size ( size )
271  , m_argument ()
272  , m_argF ()
273  {
274  if ( function.dimensionality() < 2 )
275  { Exception("::constructor: invalid dimensionality ") ; }
276  if ( m_index >= function.dimensionality() )
277  { Exception("::constructor: invalid variable index") ; }
278 
279  m_DIM = function.dimensionality() - 1 ;
280  m_argument = Argument( m_DIM ) ;
281  m_argF = Argument( m_DIM + 1 ) ;
282 
283  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const GaudiMath::Integration::Inf  a,
const double  b,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagiu is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bindication for infinity
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration

Definition at line 312 of file NumericalDefiniteIntegral.cpp.

319  : AbsFunction()
320  , m_function ( function.clone() )
321  , m_DIM ( 0 )
322  , m_index ( index )
323  , m_a ( GSL_NEGINF )
324  , m_b ( b )
325  , m_ia ( true )
326  , m_ib ( false )
330  , m_points ( )
331  , m_epsabs ( epsabs )
332  , m_epsrel ( epsrel )
333  //
334  , m_result ( GSL_NEGINF )
335  , m_error ( GSL_POSINF )
336  //
337  , m_size ( size )
338  , m_argument ()
339  , m_argF ()
340  {
341  if ( function.dimensionality() < 2 )
342  { Exception("::constructor: invalid dimensionality ") ; }
343  if ( m_index >= function.dimensionality() )
344  { Exception("::constructor: invalid variable index") ; }
345 
346  m_DIM = function.dimensionality() - 1 ;
347  m_argument = Argument( m_DIM ) ;
348  m_argF = Argument( m_DIM + 1 ) ;
349  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const float  epsabs = 1e-9,
const float  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagi is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration

Definition at line 375 of file NumericalDefiniteIntegral.cpp.

380  : AbsFunction()
381  , m_function ( function.clone() )
382  , m_DIM ( 0 )
383  , m_index ( index )
384  , m_a ( GSL_NEGINF )
385  , m_b ( GSL_POSINF )
386  , m_ia ( true )
387  , m_ib ( true )
391  , m_points ( )
392  , m_epsabs ( epsabs )
393  , m_epsrel ( epsrel )
394  //
395  , m_result ( GSL_NEGINF )
396  , m_error ( GSL_POSINF )
397  //
398  , m_size ( size )
399  , m_argument ()
400  , m_argF ()
401  {
402  if ( function.dimensionality() < 2 )
403  { Exception("::constructor: invalid dimensionality ") ; }
404  if ( m_index >= function.dimensionality() )
405  { Exception("::constructor: invalid variable index") ; }
406 
407  m_DIM = function.dimensionality() - 1 ;
408  m_argument = Argument( m_DIM ) ;
409  m_argF = Argument( m_DIM + 1 ) ;
410 
411  }
virtual unsigned int dimensionality() const
dimensionality of the problem
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const NumericalDefiniteIntegral right)

copy constructor

Definition at line 415 of file NumericalDefiniteIntegral.cpp.

416  : AbsFunction ()
417  , m_function ( right.m_function->clone() )
418  , m_DIM ( right.m_DIM )
419  , m_index ( right.m_index )
420  , m_a ( right.m_a )
421  , m_b ( right.m_b )
422  , m_ia ( right.m_ia )
423  , m_ib ( right.m_ib )
424  , m_type ( right.m_type )
425  , m_category ( right.m_category )
426  , m_rule ( right.m_rule )
427  , m_points ( right.m_points )
428  , m_epsabs ( right.m_epsabs )
429  , m_epsrel ( right.m_epsrel )
430  , m_result ( GSL_NEGINF )
431  , m_error ( GSL_POSINF )
432  , m_size ( right.m_size )
433  , m_argument ( right.m_argument )
434  , m_argF ( right.m_argF )
435  {
436  if( right.m_pdata )
437  {
438  m_pdata.reset( new double[m_points.size()] );
439  std::copy( m_points.begin() , m_points.end() , m_pdata.get() );
440  }
441  }
virtual Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::~NumericalDefiniteIntegral ( )
virtualdefault

destructor

Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( )
private
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const double  b,
const GaudiMath::Integration::Type  type = GaudiMath::Integration::Adaptive,
const GaudiMath::Integration::KronrodRule  rule = GaudiMath::Integration::Default,
const double  epsabs = 1.e-10,
const double  epsrel = 1.e-7,
const size_t  size = 1000 
)

From CLHEP/GenericFunctions.

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

If function contains singularities, the type = Type::AdaptiveSingular need to be used

For faster integration of smooth function non-adaptive integration can be used: type = Type::NonAdaptive need to be used

For adaptive integration type = Type>>Adaptive one can specify the order of Gauss-Kronrad integration rule rule = KronrodRule::Gauss15 The higher-order rules give better accuracy for smooth functions, while lower-order rules save the time when the function contains local difficulties, such as discontinuites.

  • The GSL routine gsl_integration_qng is used for type = Type:NonAdaptive :

The GSL routine gsl_integration_qag is used for type = Type:Adaptive :

  • The GSL routine gsl_integration_qags is used for type = Type:AdaptiveSingular :
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bhigh integration limit
typeintegration type
ruleintegration rule (for adaptive integration)
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const double  b,
const Points points,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

where function have known singulatities

  • The GSL routine gsl_integration_qagp is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bhigh integration limit
pointnsvector of know singular points
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const double  a,
const GaudiMath::Integration::Inf  b = GaudiMath::Integration::Infinity,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{a}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagiu is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bindication for infinity
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const GaudiMath::Integration::Inf  a,
const double  b,
const double  epsabs = 1e-9,
const double  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{b} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagiu is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
alower intgeration limit
bindication for infinity
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const AbsFunction &  function,
const size_t  index,
const float  epsabs = 1e-9,
const float  epsrel = 1.e-6,
const size_t  size = 1000 
)

Standard constructor The function created with this constructor compute the following integral:

\[ {\mathcal{F}}_i \left(x_1, \dots , x_{i-1}, x_{i+1}, \dots , x_n \right) = \int\limits_{-\infty}^{+\infty} f \left(x_1, \dots , x_{i-1}, \hat{x}_i , x_{i+1}, \dots , x_n \right) \, {\mathrm{d}} \hat{x}_i \]

  • The GSL routine gsl_integration_qagi is used for integration
Parameters
functionfuntion to be integrated
indexvariable index
epsabsrequired absolute precision
epsrelrequired relative precision
sizemaximal number of bisections for adaptive integration
Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( const NumericalDefiniteIntegral )

copy constructor

virtual Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::~NumericalDefiniteIntegral ( )
virtualdefault

destructor

Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::NumericalDefiniteIntegral ( )
private

Member Function Documentation

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::a ( ) const
inline

integration limit

Definition at line 321 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::a ( ) const
inline

integration limit

Definition at line 321 of file NumericalDefiniteIntegral.h.

NumericalDefiniteIntegral::_Workspace * Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::allocate ( ) const
protected

allocate the integration workspace

Definition at line 553 of file NumericalDefiniteIntegral.cpp.

554  {
555  if ( !m_ws ) {
556  m_ws.reset( new _Workspace() );
557  m_ws->ws = gsl_integration_workspace_alloc( size () );
558  if ( !m_ws->ws ) { Exception ( "allocate()::invalid workspace" ) ; };
559  }
560  return m_ws.get() ;
561  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
_Workspace* Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::allocate ( ) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::b ( ) const
inline
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::b ( ) const
inline
GaudiMath::Integration::Category Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::category ( ) const
inline

integration category

Definition at line 343 of file NumericalDefiniteIntegral.h.

343 { return m_category ; }
GaudiMath::Integration::Category Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::category ( ) const
inline

integration category

Definition at line 343 of file NumericalDefiniteIntegral.h.

343 { return m_category ; }
virtual unsigned int Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::dimensionality ( ) const
inlinevirtual

dimensionality of the problem

Definition at line 303 of file NumericalDefiniteIntegral.h.

virtual unsigned int Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::dimensionality ( ) const
inlinevirtual

dimensionality of the problem

Definition at line 303 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::epsabs ( ) const
inline

absolute precision

Definition at line 326 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::epsabs ( ) const
inline

absolute precision

Definition at line 326 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::epsrel ( ) const
inline

relatiove precision

Definition at line 328 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::epsrel ( ) const
inline

relatiove precision

Definition at line 328 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::error ( ) const
inline

evaluate of previous error

Definition at line 333 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::error ( ) const
inline

evaluate of previous error

Definition at line 333 of file NumericalDefiniteIntegral.h.

StatusCode Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::Exception ( const std::string &  message,
const StatusCode sc = StatusCode::FAILURE 
) const
protected

Definition at line 447 of file NumericalDefiniteIntegral.cpp.

449  {
450  throw GaudiException( "NumericalDefiniteIntegral::" + message ,
451  "*GaudiMath*" , sc ) ;
452  return sc ;
453  }
Define general base for Gaudi exception.
StatusCode Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::Exception ( const std::string &  message,
const StatusCode sc = StatusCode::FAILURE 
) const
protected
const AbsFunction& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::function ( ) const
inline

accessor to the function itself

Definition at line 319 of file NumericalDefiniteIntegral.h.

319 { return *m_function ; }
const AbsFunction& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::function ( ) const
inline

accessor to the function itself

Definition at line 319 of file NumericalDefiniteIntegral.h.

319 { return *m_function ; }
virtual bool Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::hasAnalyticDerivative ( ) const
inlinevirtual

Does this function have an analytic derivative?

Definition at line 311 of file NumericalDefiniteIntegral.h.

311 { return true ;}
virtual bool Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::hasAnalyticDerivative ( ) const
inlinevirtual

Does this function have an analytic derivative?

Definition at line 311 of file NumericalDefiniteIntegral.h.

311 { return true ;}
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator() ( double  argument) const
virtual

Function value.

evaluate the function

Definition at line 460 of file NumericalDefiniteIntegral.cpp.

461  {
462  // reset the result and the error
463  m_result = GSL_NEGINF ;
464  m_error = GSL_POSINF ;
465 
466  // check the argument
467  if( 1 != m_DIM ) { Exception ( "operator(): invalid argument size " ) ; };
468 
469  m_argument[0] = argument ;
470  return (*this) ( m_argument );
471  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
virtual double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator() ( double  argument) const
virtual

Function value.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator() ( const Argument &  argument) const
virtual

Function value.

evaluate the function

Definition at line 493 of file NumericalDefiniteIntegral.cpp.

494  {
495  // reset the result and the error
496  m_result = GSL_NEGINF ;
497  m_error = GSL_POSINF ;
498 
499  // check the argument
500  if( argument.dimension() != m_DIM )
501  { Exception ( "operator(): invalid argument size " ) ; };
502 
503  // copy the argument
504 
505  for( size_t i = 0 ; i < m_DIM ; ++i )
506  {
507  m_argument [i] = argument [i] ;
508  const size_t j = i < m_index ? i : i + 1 ;
509  m_argF [j] = argument [i] ;
510  };
511 
512  // create the helper object
513  GSL_Helper helper( *m_function , m_argF , m_index );
514 
515  // use GSL to evaluate the numerical derivative
516  gsl_function F ;
517  F.function = &GSL_Adaptor ;
518  F.params = &helper ;
519  _Function F1 ;
520  F1.fn = &F ;
521 
523  { return QAGI ( &F1 ) ; } // RETURN
524 
525  if ( m_a == m_b )
526  {
527  m_result = 0 ; m_error = 0 ; // EXACT
528  return m_result ; // RETURN
529  }
530 
532  { return QAGP ( &F1 ) ; } // RETURN
533  else if ( GaudiMath::Integration::Finite == category () )
535  { return QNG ( &F1 ) ; } // RETURN
536  else if ( GaudiMath::Integration::Adaptive == type () )
537  { return QAG ( &F1 ) ; } // RETURN
539  { return QAGS ( &F1 ) ; } // RETURN
540  else
541  { Exception ( "::operator(): invalid type " ); }
542  else
543  { Exception ( "::operator(): invalid category " ); }
544 
545  return 0 ;
546  }
GaudiMath::Integration::Category category() const
integration category
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
double GSL_Adaptor(double x, void *params)
Definition: Helpers.cpp:37
GaudiMath::Integration::Type type() const
integration type
list i
Definition: ana.py:128
virtual double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator() ( const Argument &  argument) const
virtual

Function value.

NumericalDefiniteIntegral& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator= ( const NumericalDefiniteIntegral )
private
NumericalDefiniteIntegral& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::operator= ( const NumericalDefiniteIntegral )
private
Genfun::Derivative Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::partial ( unsigned int  index) const
virtual

Derivatives.

Definition at line 478 of file NumericalDefiniteIntegral.cpp.

479  {
480  if ( idx >= m_DIM )
481  { Exception ( "::partial(i): invalid variable index " ) ; };
482  //
483  const AbsFunction& aux = NumericalDerivative( *this , idx ) ;
484  return Genfun::FunctionNoop( &aux ) ;
485  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
virtual Genfun::Derivative Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::partial ( unsigned int  index) const
virtual

Derivatives.

const Points& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::points ( ) const
inline

known singularities

Definition at line 324 of file NumericalDefiniteIntegral.h.

const Points& Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::points ( ) const
inline

known singularities

Definition at line 324 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAG ( _Function fun) const
protected

Definition at line 670 of file NumericalDefiniteIntegral.cpp.

671  {
672  if( 0 == F ) { Exception("QAG::invalid function") ; }
673 
674  // allocate workspace
675  allocate () ;
676 
677  // integration limits
678  const double low = std::min ( m_a , m_b ) ;
679  const double high = std::max ( m_a , m_b ) ;
680 
681  int ierror =
682  gsl_integration_qag ( F->fn ,
683  low , high ,
684  m_epsabs , m_epsrel ,
685  size () , (int) rule() , ws ()->ws ,
686  &m_result , &m_error );
687 
688  if( ierror ) { gsl_error( "NumericalDefiniteIntegral::QAG " ,
689  __FILE__ , __LINE__ , ierror ) ; }
690 
691  // sign
692  if ( m_a > m_b ) { m_result *= -1 ; }
693 
694  return m_result ;
695  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
_Workspace * allocate() const
allocate the integration workspace
GaudiMath::Integration::KronrodRule rule() const
integration rule
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAG ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGI ( _Function fun) const
protected

Definition at line 567 of file NumericalDefiniteIntegral.cpp.

568  {
569  // check the argument
570  if ( 0 == F ) { Exception("::QAGI: invalid function"); }
571 
572  // allocate workspace
573  allocate() ;
574 
575  int ierror = 0 ;
576 
577  if ( m_ia && m_ib )
578  {
579  ierror = gsl_integration_qagi ( F->fn ,
580  m_epsabs , m_epsrel ,
581  size () , ws()->ws ,
582  &m_result , &m_error ) ;
583  }
584  else if ( m_ia )
585  {
586  ierror = gsl_integration_qagil ( F->fn , m_b ,
587  m_epsabs , m_epsrel ,
588  size () , ws()->ws ,
589  &m_result , &m_error ) ;
590  }
591  else if ( m_ib )
592  {
593  ierror = gsl_integration_qagiu ( F->fn , m_a ,
594  m_epsabs , m_epsrel ,
595  size () , ws()->ws ,
596  &m_result , &m_error ) ;
597  }
598  else
599  { Exception ( "::QAGI: invalid mode" ) ; };
600 
601  if( ierror ) { gsl_error( "NumericalDefiniteIntegral::QAGI" ,
602  __FILE__ , __LINE__ , ierror ) ;}
603 
604  return m_result ;
605  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
_Workspace * allocate() const
allocate the integration workspace
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGI ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGP ( _Function fun) const
protected

Definition at line 611 of file NumericalDefiniteIntegral.cpp.

612  {
613  if( 0 == F ) { Exception("QAGP::invalid function") ; }
614 
615  // no known singular points ?
616  if( points().empty() || !m_pdata ) { return QAGS( F ) ; }
617 
618  const size_t npts = points().size();
619 
620  // use GSL
621  int ierror =
622  gsl_integration_qagp ( F->fn ,
623  m_pdata.get() , npts ,
624  m_epsabs , m_epsrel ,
625  size () , ws()->ws ,
626  &m_result , &m_error ) ;
627 
628  if( ierror ) { gsl_error( "NumericalDefiniteIntegral::QAGI " ,
629  __FILE__ , __LINE__ , ierror ) ; }
630 
631  // the sign
632  if ( m_a > m_b ) { m_result *= -1 ; }
633 
634  return m_result ;
635  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGP ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGS ( _Function fun) const
protected

Definition at line 701 of file NumericalDefiniteIntegral.cpp.

702  {
703  if( 0 == F ) { Exception("QAG::invalid function") ; }
704 
705  if ( m_a == m_b )
706  {
707  m_result = 0 ;
708  m_error = 0 ; // EXACT !
709  return m_result ;
710  }
711 
712  // allocate workspace
713  allocate () ;
714 
715  // integration limits
716  const double low = std::min ( m_a , m_b ) ;
717  const double high = std::max ( m_a , m_b ) ;
718 
719  int ierror =
720  gsl_integration_qags ( F->fn ,
721  low , high ,
722  m_epsabs , m_epsrel ,
723  size () , ws()->ws ,
724  &m_result , &m_error );
725 
726  if( ierror ) { gsl_error( "NumericalDefiniteIntegral::QAGS " ,
727  __FILE__ , __LINE__ , ierror ) ; }
728 
729  // sign
730  if ( m_a > m_b ) { m_result *= -1 ; }
731 
732  return m_result ;
733  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
_Workspace * allocate() const
allocate the integration workspace
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QAGS ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QNG ( _Function fun) const
protected
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::QNG ( _Function fun) const
protected

Definition at line 641 of file NumericalDefiniteIntegral.cpp.

642  {
643  if( 0 == F ) { Exception("QNG::invalid function") ; }
644 
645  // integration limits
646  const double low = std::min ( m_a , m_b ) ;
647  const double high = std::max ( m_a , m_b ) ;
648 
649  size_t neval = 0 ;
650  int ierror =
651  gsl_integration_qng ( F->fn ,
652  low , high ,
653  m_epsabs , m_epsrel ,
654  &m_result , &m_error , &neval ) ;
655 
656  if( ierror ) { gsl_error( "NumericalIndefiniteIntegral::QNG " ,
657  __FILE__ , __LINE__ , ierror ) ; }
658 
659  // sign
660  if ( m_a > m_b ) { m_result *= -1 ; }
661 
662  return m_result ;
663  }
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const
double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::result ( ) const
inline

previous result

Definition at line 331 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::result ( ) const
inline

previous result

Definition at line 331 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::KronrodRule Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::rule ( ) const
inline

integration rule

Definition at line 346 of file NumericalDefiniteIntegral.h.

346 { return m_rule ; }
GaudiMath::Integration::KronrodRule Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::rule ( ) const
inline

integration rule

Definition at line 346 of file NumericalDefiniteIntegral.h.

346 { return m_rule ; }
size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::size ( ) const
inline
size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::size ( ) const
inline
GaudiMath::Integration::Type Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::type ( ) const
inline

integration type

Definition at line 340 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::Type Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::type ( ) const
inline

integration type

Definition at line 340 of file NumericalDefiniteIntegral.h.

_Workspace* Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::ws ( ) const
inlineprotected

Definition at line 364 of file NumericalDefiniteIntegral.h.

365  { return m_ws.get() ; };
_Workspace* Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::ws ( ) const
inlineprotected

Definition at line 364 of file NumericalDefiniteIntegral.h.

365  { return m_ws.get() ; };

Member Data Documentation

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_a
private

Definition at line 392 of file NumericalDefiniteIntegral.h.

Argument Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_argF
mutableprivate

Definition at line 414 of file NumericalDefiniteIntegral.h.

Argument Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_argument
mutableprivate

Definition at line 413 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_b
private

Definition at line 393 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::Category Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_category
private

Definition at line 398 of file NumericalDefiniteIntegral.h.

size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_DIM
private

Definition at line 389 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_epsabs
private

Definition at line 404 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_epsrel
private

Definition at line 405 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_error
mutableprivate

Definition at line 408 of file NumericalDefiniteIntegral.h.

std::unique_ptr< const AbsFunction > Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_function
private

Definition at line 388 of file NumericalDefiniteIntegral.h.

bool Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_ia
private

Definition at line 394 of file NumericalDefiniteIntegral.h.

bool Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_ib
private

Definition at line 395 of file NumericalDefiniteIntegral.h.

size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_index
private

Definition at line 390 of file NumericalDefiniteIntegral.h.

std::unique_ptr< double[]> Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_pdata
private

Definition at line 402 of file NumericalDefiniteIntegral.h.

Points Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_points
private

Definition at line 401 of file NumericalDefiniteIntegral.h.

double Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_result
mutableprivate

Definition at line 407 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::KronrodRule Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_rule
private

Definition at line 399 of file NumericalDefiniteIntegral.h.

size_t Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_size
private

Definition at line 410 of file NumericalDefiniteIntegral.h.

GaudiMath::Integration::Type Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_type
private

Definition at line 397 of file NumericalDefiniteIntegral.h.

std::unique_ptr< _Workspace, gsl_ws_deleter > Genfun::GaudiMathImplementation::NumericalDefiniteIntegral::m_ws
mutableprivate

Definition at line 411 of file NumericalDefiniteIntegral.h.


The documentation for this class was generated from the following files: