All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Integral1Test.cpp
Go to the documentation of this file.
1 // ============================================================================
2 // Include files
3 // ============================================================================
4 // STD & STL
5 // ============================================================================
6 #include <math.h>
7 #include <stdio.h>
8 // ============================================================================
9 // GaudiMath
10 // ============================================================================
11 #include "GaudiMath/Integral.h"
12 #include "GaudiMath/GaudiMath.h"
14 // ============================================================================
15 // CLHEP
16 // ============================================================================
17 #include "CLHEP/GenericFunctions/Sin.hh"
18 #include "CLHEP/GenericFunctions/Cos.hh"
19 #include "CLHEP/GenericFunctions/Gaussian.hh"
20 // ============================================================================
21 // Handle CLHEP 2.0.x move to CLHEP namespace
22 namespace CLHEP { }
23 using namespace CLHEP;
24 
25 // ============================================================================
33 // ============================================================================
34 
35 int main()
36 {
37 
38  std::cout <<
39  " Test for numerical integration of Genfun::Sin(x) " << std::endl ;
40 
41  const GaudiMath::Function& mysin = Genfun::Sin();
42 
43 
44  for( double x = 0 * Gaudi::Units::degree ;
45  x <= 360 * Gaudi::Units::degree ;
46  x += 15 * Gaudi::Units::degree ) {
47  double value = GaudiMath::Integral ( mysin , 0. , x ) ;
48  printf( "x=%8.3f deg; I(Sin)=%+.19f; ActErr=%+.19f;\n",
49  x / Gaudi::Units::degree , value , value-(1-cos(x)) );
50  }
51 
52 
53  const GaudiMath::Function& myfun = Genfun::Gaussian();
54 
55  std::cout
56  << " integral from gauss1 = "
58  << std::endl << " integral from gauss2 = "
60  << std::endl << " integral from gauss3 = "
61  << GaudiMath::Integral( myfun ,
64  << std::endl << " integral from gauss4 = "
66  << std::endl << " integral from gauss5 = "
68  << std::endl << " integral from gauss6 = "
70  << std::endl << " integral from gauss7 = "
72  << std::endl << " integral from gauss8 = "
74  << std::endl ;
75 
76 
77  exit(0);
78 }
79 
80 // ============================================================================
81 // The END
82 // ============================================================================
constexpr double degree
T endl(T...args)
Genfun::AbsFunction Function
Definition: GaudiMath.h:24
int main()
GAUDI_API double Integral(const Genfun::AbsFunction &function, 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)
Definition: Integral.cpp:27