36 ext::shared_ptr<HestonProcess> process,
39 : l0_(l0),
mesher_(
std::move(mesher)), process_(
std::move(process)), trafoType_(trafoType_) {}
56 for (
const auto& iter : *
mesher_->layout()) {
60 : std::exp(
mesher_->location(iter, 1));
68 * std::exp(-0.5*
squared((x - x0)/sd_x));
84 *std::exp(-(
squared((x-x0)/sd_x)
86 - 2*
rho*(x-x0)*(
v-z0)/(sd_x*sd_v))
104 QL_FAIL(
"unknown transformation type");
107 p[iter.index()] = retVal;
1-D array used in linear algebra.
const ext::shared_ptr< FdmMesher > mesher_
const FdmSquareRootFwdOp::TransformationType trafoType_
FdmHestonGreensFct(ext::shared_ptr< FdmMesher > mesher, ext::shared_ptr< HestonProcess > process, FdmSquareRootFwdOp::TransformationType trafoType_, Real l0=1.0)
const ext::shared_ptr< HestonProcess > process_
Array get(Time t, Algorithm algorithm) const
Real pdf(Real v, Time t) const override
#define QL_FAIL(message)
throw an error (possibly with file and line information)
Heston Fokker-Planck Green's function.
iterator for a linear fdm operator
memory layout of a fdm linear operator
const ext::shared_ptr< FdmMesher > mesher_
Real Time
continuous quantity with 1-year units
Heston stochastic process.
functionals and combinators not included in the STL
ext::shared_ptr< YieldTermStructure > q
ext::shared_ptr< YieldTermStructure > r
ext::shared_ptr< BlackVolTermStructure > v
risk neutral terminal density calculator for the square root process