11 #include "gsl/gsl_errno.h"    12 #include "gsl/gsl_integration.h"    31 #pragma warning( disable : 1572 )    37 #pragma warning( disable : 4996 )    42   namespace GaudiMathImplementation
   103                                                           const double a, 
const double b,
   122         Exception( 
"::constructor: invalid dimensionality " );
   125         Exception( 
"::constructor: invalid variable index" );
   128       m_DIM      = 
function.dimensionality() - 1;
   143                                                           const double a, 
const double b,
   159         Exception( 
"::constructor: invalid dimensionality " );
   162         Exception( 
"::constructor: invalid variable index" );
   165       m_DIM      = 
function.dimensionality() - 1;
   173                                  [&]( 
double x ) { 
return x < lim.first || lim.second < x; } );
   218         Exception( 
"::constructor: invalid dimensionality " );
   221         Exception( 
"::constructor: invalid variable index" );
   224       m_DIM      = 
function.dimensionality() - 1;
   270         Exception( 
"::constructor: invalid dimensionality " );
   273         Exception( 
"::constructor: invalid variable index" );
   276       m_DIM      = 
function.dimensionality() - 1;
   317         Exception( 
"::constructor: invalid dimensionality " );
   320         Exception( 
"::constructor: invalid variable index" );
   323       m_DIM      = 
function.dimensionality() - 1;
   353       throw GaudiException( 
"NumericalDefiniteIntegral::" + message, 
"*GaudiMath*", sc );
   369         Exception( 
"operator(): invalid argument size " );
   382       if ( idx >= 
m_DIM ) {
   383         Exception( 
"::partial(i): invalid variable index " );
   387       return Genfun::FunctionNoop( &aux );
   401       if ( argument.dimension() != 
m_DIM ) {
   402         Exception( 
"operator(): invalid argument size " );
   407       for ( 
size_t i = 0; i < 
m_DIM; ++i ) {
   409         const size_t j = i < 
m_index ? i : i + 1;
   445           Exception( 
"::operator(): invalid type " );
   449         Exception( 
"::operator(): invalid category " );
   463         m_ws->ws = gsl_integration_workspace_alloc( 
size() );
   465           Exception( 
"allocate()::invalid workspace" );
   498         gsl_error( 
"NumericalDefiniteIntegral::QAGI", __FILE__, __LINE__, ierror );
   524         gsl_error( 
"NumericalDefiniteIntegral::QAGI ", __FILE__, __LINE__, ierror );
   550         gsl_error( 
"NumericalIndefiniteIntegral::QNG ", __FILE__, __LINE__, ierror );
   578         gsl_error( 
"NumericalDefiniteIntegral::QAG ", __FILE__, __LINE__, ierror );
   612         gsl_error( 
"NumericalDefiniteIntegral::QAGS ", __FILE__, __LINE__, ierror );
 
GaudiMath::Integration::Category category() const 
integration category 
StatusCode Exception(const std::string &message, const StatusCode &sc=StatusCode::FAILURE) const 
Define general base for Gaudi exception. 
GaudiMath::Integration::Category m_category
double operator()(double argument) const  override
Function value. 
Genfun::Derivative partial(unsigned int index) const  override
Derivatives. 
NumericalDefiniteIntegral()
Genfun::GaudiMathImplementation::NumericalDerivative Derivative
unsigned int dimensionality() const  override
dimensionality of the problem 
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 QAG(_Function *fun) const 
auto end(reverse_wrapper< T > &w)
double GSL_Adaptor(double x, void *params)
double epsrel() const 
relatiove precision 
Numerical derivative (using GSL adaptive numerical differentiation) 
_Workspace * allocate() const 
allocate the integration workspace 
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
const Points & points() const 
known singularities 
double QAGP(_Function *fun) const 
GaudiMath.h GaudiMath/GaudiMath.h. 
KronrodRule
integration rule 
double QNG(_Function *fun) const 
double QAGI(_Function *fun) const 
const AbsFunction & function() const 
accessor to the function itself 
the simple structure to be used for adaption interface Genfun::AbsFunction to gsl_function structure ...
GaudiMath::Integration::KronrodRule rule() const 
integration rule 
double a() const 
integration limit 
collection of common types for classes NumericalIndefiniteIntegral and NumericalDefiniteIntegral ...
double QAGS(_Function *fun) const 
This class allows the numerical evaluation of the following functions: