Gobelijn API documentation  - generated for commit a0cbea7
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
Integral.h
Go to the documentation of this file.
1 #pragma once
2 
8 #include <functional>
9 
10 namespace UA_CoMP {
11 namespace Num {
12 
18 template <typename QuadAlgorithm, typename Integrand>
19 class Integral : public std::binary_function<typename Integrand::argument_type, typename Integrand::argument_type,
20  typename Integrand::result_type>
21 {
22 public:
28  Integral(QuadAlgorithm const& quad, Integrand const& ftor) : fQuadAlgorithm(quad), fIntegrand(ftor) {}
29 
36  typename Integral::result_type operator()(typename Integral::first_argument_type l,
37  typename Integral::first_argument_type r) const
38  {
39  return fQuadAlgorithm(l, r, fIntegrand);
40  }
41 
42 private:
43  QuadAlgorithm fQuadAlgorithm;
44  Integrand fIntegrand;
45 };
46 
51 template <typename QuadAlgorithm, typename Integrand>
52 inline Integral<QuadAlgorithm, Integrand> make_integral(QuadAlgorithm const& quad, Integrand const& ftor)
53 {
54  return Integral<QuadAlgorithm, Integrand>(quad, ftor);
55 }
56 
57 } // namespace Num
58 } // namespace UA_CoMP
Integral< QuadAlgorithm, Integrand > make_integral(QuadAlgorithm const &quad, Integrand const &ftor)
Helper function that returns an Integral for a quadrature algorithm and a functor.
Definition: Integral.h:52
Wrap a quadrature algoritm and a functor to produce an integral.
Definition: Integral.h:19
Integrand fIntegrand
Definition: Integral.h:44
Integral::result_type operator()(typename Integral::first_argument_type l, typename Integral::first_argument_type r) const
Evaluates integral from l to r.
Definition: Integral.h:36
QuadAlgorithm fQuadAlgorithm
Definition: Integral.h:43
Integral(QuadAlgorithm const &quad, Integrand const &ftor)
Constructor initializes all datamembers.
Definition: Integral.h:28