24#ifndef quantlib_kernel_interpolation2D_hpp
25#define quantlib_kernel_interpolation2D_hpp
27#include <ql/math/interpolations/interpolation2d.hpp>
28#include <ql/math/matrixutilities/qrdecomposition.hpp>
55 template <
class I1,
class I2,
class M,
class Kernel>
71 "Z value matrix has wrong number of rows");
73 "Z value matrix has wrong number of columns");
135 Size rowCnt=0,colCnt=0;
168 for (
Real i : diffVec) {
169 QL_REQUIRE(i <
invPrec_,
"inversion failed in 2d kernel interpolation");
200 template <
class I1,
class I2,
class M,
class Kernel>
202 const I2& yBegin,
const I2& yEnd,
204 const Kernel& kernel) {
206 impl_ = ext::shared_ptr<Interpolation2D::Impl>(
new
1-D array used in linear algebra.
Size size() const
dimension of the array
basic template implementation
const Matrix & zData() const override
templateImpl(const I1 &xBegin, const I1 &xEnd, const I2 &yBegin, const I2 &yEnd, const M &zData)
base class for 2-D interpolations.
const Matrix & zData() const
ext::shared_ptr< Impl > impl_
KernelInterpolation2D(const I1 &xBegin, const I1 &xEnd, const I2 &yBegin, const I2 &yEnd, const M &zData, const Kernel &kernel)
Matrix used in linear algebra.
Real kernelAbs(const Array &X, const Array &Y) const
void setInverseResultPrecision(Real invPrec)
Real value(Real x1, Real x2) const override
Real gammaFunc(const Array &X) const
void calculate() override
KernelInterpolation2DImpl(const I1 &xBegin, const I1 &xEnd, const I2 &yBegin, const I2 &yEnd, const M &zData, Kernel kernel)
std::size_t Size
size of a container
Array qrSolve(const Matrix &a, const Array &b, bool pivot, const Array &d)
QR Solve.
Array Abs(const Array &v)
Real Norm2(const Array &v)