20#ifndef quantlib_math_multidimintegrator_hpp
21#define quantlib_math_multidimintegrator_hpp
23#include <ql/types.hpp>
24#include <ql/errors.hpp>
25#include <ql/math/integrals/integral.hpp>
26#include <ql/functional.hpp>
42 const std::vector<ext::shared_ptr<Integrator> >& integrators);
49 const ext::function<
Real (
const std::vector<Real>&)>& f,
50 const std::vector<Real>& a,
51 const std::vector<Real>& b)
const
53 QL_REQUIRE((a.size()==b.size())&&(b.size()==
integrators_.size()),
54 "Incompatible integration problem dimensions");
74 const ext::function<
Real (
const std::vector<Real>&)>& f,
76 const std::vector<Real>& a,
77 const std::vector<Real>& b)
const ;
81 const ext::function<
Real (
const std::vector<Real>&)>& f,
82 const std::vector<Real>& a,
83 const std::vector<Real>& b)
const;
99 mutable std::vector<ext::function<
Real (
101 const ext::function<
Real (
const std::vector<Real>&)>&,
102 const std::vector<Real>&,
103 const std::vector<Real>&)
116 Real inline MultidimIntegral::vectorBinder<0> (
117 const ext::function<
Real (
const std::vector<Real>&)>& f,
119 const std::vector<Real>& a,
120 const std::vector<Real>& b)
const
127 void inline MultidimIntegral::spawnFcts<1>()
const {
129 return this->integrate<0>(f, a, b);
135 const ext::function<
Real (
const std::vector<Real>&)>& f,
136 const std::vector<Real>& a,
137 const std::vector<Real>& b)
const
141 return this->vectorBinder<nT>(f, z, a, b);
147 const ext::function<
Real (
const std::vector<Real>&)>& f,
149 const std::vector<Real>& a,
150 const std::vector<Real>& b)
const
159 return this->
integrate<depth-1>(f, a, b);
Integrates a vector or scalar function of vector domain.
Real vectorBinder(const ext::function< Real(const std::vector< Real > &)> &f, Real z, const std::vector< Real > &a, const std::vector< Real > &b) const
std::vector< Real > varBuffer_
Real operator()(const ext::function< Real(const std::vector< Real > &)> &f, const std::vector< Real > &a, const std::vector< Real > &b) const
std::vector< ext::function< Real(const ext::function< Real(const std::vector< Real > &)> &, const std::vector< Real > &, const std::vector< Real > &) > > integrationLevelEntries_
Real integrate(const ext::function< Real(const std::vector< Real > &)> &f, const std::vector< Real > &a, const std::vector< Real > &b) const
static const Size maxDimensions_
const std::vector< ext::shared_ptr< Integrator > > integrators_
std::size_t Size
size of a container