Update of /cvsroot/quantlibaddin/QuantLibAddin/qlo
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv10095/qlo
Modified Files:
complextyperegistry.cpp interpolation2D.cpp
interpolation2D.hpp typefactory.hpp
Log Message:
implement Extrapolator as complex type
Index: interpolation2D.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/interpolation2D.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** interpolation2D.hpp 23 Jun 2006 17:18:14 -0000 1.1
--- interpolation2D.hpp 29 Jun 2006 10:14:44 -0000 1.2
***************
*** 25,37 ****
namespace QuantLibAddin {
- enum Interpolation2DType {
- BiLinear,
- BiCubic
- };
-
class Interpolation2D : public Extrapolator
{
public:
! Interpolation2D(const Interpolation2DType t,
const std::vector<double>& x,
const std::vector<double>& y,
--- 25,32 ----
namespace QuantLibAddin {
class Interpolation2D : public Extrapolator
{
public:
! Interpolation2D(const std::string &interpolation2DType,
const std::vector<double>& x,
const std::vector<double>& y,
Index: interpolation2D.cpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/interpolation2D.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** interpolation2D.cpp 23 Jun 2006 17:18:14 -0000 1.1
--- interpolation2D.cpp 29 Jun 2006 10:14:44 -0000 1.2
***************
*** 22,30 ****
#include <ql/Math/bilinearinterpolation.hpp>
#include <ql/Math/bicubicsplineinterpolation.hpp>
namespace QuantLibAddin {
Interpolation2D::Interpolation2D(
! const Interpolation2DType t,
const std::vector<double>& x,
const std::vector<double>& y,
--- 22,31 ----
#include <ql/Math/bilinearinterpolation.hpp>
#include <ql/Math/bicubicsplineinterpolation.hpp>
+ #include <qlo/typefactory.hpp>
namespace QuantLibAddin {
Interpolation2D::Interpolation2D(
! const std::string &interpolation2DType,
const std::vector<double>& x,
const std::vector<double>& y,
***************
*** 41,60 ****
<< dataMatrix_.columns() << ")");
! switch (t) {
! case BiLinear:
! libraryObject_ = boost::shared_ptr<QuantLib::Extrapolator>(
! new QuantLib::BilinearInterpolation(x_.begin(), x_.end(),
! y_.begin(), y_.end(),
! dataMatrix_));
! break;
! case BiCubic:
! libraryObject_ = boost::shared_ptr<QuantLib::Extrapolator>(
! new QuantLib::BicubicSpline(x_.begin(), x_.end(),
! y_.begin(), y_.end(),
! dataMatrix_));
! break;
! default:
! QL_FAIL("Unknown Interpolation2DType");
! }
}
--- 42,48 ----
<< dataMatrix_.columns() << ")");
! libraryObject_ = Create<boost::shared_ptr<QuantLib::Extrapolator> >()
! (interpolation2DType, x_.begin(), x_.end(), y_.begin(), y_.end(), dataMatrix_);
!
}
Index: complextyperegistry.cpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/complextyperegistry.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** complextyperegistry.cpp 19 May 2006 16:56:16 -0000 1.1
--- complextyperegistry.cpp 29 Jun 2006 10:14:44 -0000 1.2
***************
*** 2,5 ****
--- 2,6 ----
/*
Copyright (C) 2005 Plamen Neykov
+ Copyright (C) 2006 Eric Ehlers
This file is part of QuantLib, a free-software/open-source library
***************
*** 22,25 ****
--- 23,28 ----
#include <ql/Instruments/quantoforwardvanillaoption.hpp>
#include <ql/PricingEngines/all.hpp>
+ #include <ql/Math/bilinearinterpolation.hpp>
+ #include <ql/Math/bicubicsplineinterpolation.hpp>
#define REG_ENUM(Type, Body) \
***************
*** 207,210 ****
--- 210,238 ----
}
+ /* *** Extrapolator *** */
+
+ boost::shared_ptr<QuantLib::Extrapolator> BilinearInterpolation_Extrapolator(
+ const std::vector<double>::const_iterator& xBegin,
+ const std::vector<double>::const_iterator& xEnd,
+ const std::vector<double>::const_iterator& yBegin,
+ const std::vector<double>::const_iterator& yEnd,
+ const QuantLib::Matrix& zData) {
+ return boost::shared_ptr<QuantLib::Extrapolator>(
+ new QuantLib::BilinearInterpolation(
+ xBegin, xEnd, yBegin, yEnd, zData));
+ }
+ boost::shared_ptr<QuantLib::Extrapolator> BicubicSpline_Extrapolator(
+ const std::vector<double>::const_iterator& xBegin,
+ const std::vector<double>::const_iterator& xEnd,
+ const std::vector<double>::const_iterator& yBegin,
+ const std::vector<double>::const_iterator& yEnd,
+ const QuantLib::Matrix& zData) {
+ return boost::shared_ptr<QuantLib::Extrapolator>(
+ new QuantLib::BicubicSpline(
+ xBegin, xEnd, yBegin, yEnd, zData));
+ }
+
+ /* *** Initialization *** */
+
ComplexTypeRegistry::ComplexTypeRegistry() {
REG_ENUM(QuantLib::StrikedTypePayoff,
***************
*** 245,248 ****
--- 273,281 ----
MAP("QFE", QFE_Engine);
);
+
+ REG_ENUM(QuantLib::Extrapolator,
+ MAP("BiLinear", BilinearInterpolation_Extrapolator);
+ MAP("BiCubic", BicubicSpline_Extrapolator);
+ );
}
}
Index: typefactory.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/typefactory.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** typefactory.hpp 20 Jun 2006 09:48:24 -0000 1.5
--- typefactory.hpp 29 Jun 2006 10:14:44 -0000 1.6
***************
*** 23,26 ****
--- 23,27 ----
#include <ql/Instruments/payoffs.hpp>
#include <ql/Utilities/strings.hpp>
+ #include <ql/Math/matrix.hpp>
#include <oh/exception.hpp>
***************
*** 102,105 ****
--- 103,133 ----
};
+ template<>
+ class Create<boost::shared_ptr<QuantLib::Extrapolator> > :
+ private RegistryManager<QuantLib::Extrapolator, ComplexTypeRegistry> {
+ public:
+ boost::shared_ptr<QuantLib::Extrapolator> operator() (
+ const std::string& extrapolatorID,
+ const std::vector<double>::const_iterator& xBegin,
+ const std::vector<double>::const_iterator& xEnd,
+ const std::vector<double>::const_iterator& yBegin,
+ const std::vector<double>::const_iterator& yEnd,
+ const QuantLib::Matrix& zData) {
+ boost::shared_ptr<QuantLib::Extrapolator>(*ctor)(
+ const std::vector<double>::const_iterator&,
+ const std::vector<double>::const_iterator&,
+ const std::vector<double>::const_iterator&,
+ const std::vector<double>::const_iterator&,
+ const QuantLib::Matrix&) =
+ (boost::shared_ptr<QuantLib::Extrapolator>(*)(
+ const std::vector<double>::const_iterator&,
+ const std::vector<double>::const_iterator&,
+ const std::vector<double>::const_iterator&,
+ const std::vector<double>::const_iterator&,
+ const QuantLib::Matrix&)) getType(extrapolatorID);
+ return ctor(xBegin, xEnd, yBegin, yEnd, zData);
+ }
+ };
+
}
|