Skip to content

Commit af0263f

Browse files
committed
Add cubic interpolation
1 parent 645a2ab commit af0263f

1 file changed

Lines changed: 88 additions & 0 deletions

File tree

ql/math/interpolations/cubicinterpolation.hpp

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,94 @@ namespace QuantLib {
818818

819819
}
820820

821+
class Cubic__FritschButland_nonMonotonic : public Cubic {
822+
public:
823+
Cubic__FritschButland_nonMonotonic()
824+
: Cubic(CubicInterpolation::FritschButland, false,
825+
CubicInterpolation::SecondDerivative, 0.0,
826+
CubicInterpolation::SecondDerivative, 0.0) {}
827+
};
828+
829+
class Cubic__FritschButland_monotonic : public Cubic {
830+
public:
831+
Cubic__FritschButland_monotonic()
832+
: Cubic(CubicInterpolation::FritschButland, true,
833+
CubicInterpolation::SecondDerivative, 0.0,
834+
CubicInterpolation::SecondDerivative, 0.0) {}
835+
};
836+
837+
class Cubic__NaturalSpline : public Cubic {
838+
public:
839+
Cubic__NaturalSpline()
840+
: Cubic(CubicInterpolation::Spline, false,
841+
CubicInterpolation::SecondDerivative, 0.0,
842+
CubicInterpolation::SecondDerivative, 0.0) {}
843+
};
844+
845+
class Cubic__Monotonic_NaturalSpline : public Cubic {
846+
public:
847+
Cubic__Monotonic_NaturalSpline()
848+
: Cubic(CubicInterpolation::Spline, true,
849+
CubicInterpolation::SecondDerivative, 0.0,
850+
CubicInterpolation::SecondDerivative, 0.0) {}
851+
};
852+
853+
class Cubic__SplineOvershootingMinimization1 : public Cubic {
854+
public:
855+
Cubic__SplineOvershootingMinimization1()
856+
: Cubic(CubicInterpolation::SplineOM1, false,
857+
CubicInterpolation::SecondDerivative, 0.0,
858+
CubicInterpolation::SecondDerivative, 0.0) {}
859+
};
860+
861+
class Cubic__SplineOvershootingMinimization2 : public Cubic {
862+
public:
863+
Cubic__SplineOvershootingMinimization2()
864+
: Cubic(CubicInterpolation::SplineOM2, false,
865+
CubicInterpolation::SecondDerivative, 0.0,
866+
CubicInterpolation::SecondDerivative, 0.0) {}
867+
};
868+
869+
class Cubic__Akima : public Cubic {
870+
public:
871+
Cubic__Akima()
872+
: Cubic(CubicInterpolation::Akima, false,
873+
CubicInterpolation::SecondDerivative, 0.0,
874+
CubicInterpolation::SecondDerivative, 0.0) {}
875+
};
876+
877+
class Cubic__Parabolic : public Cubic {
878+
public:
879+
Cubic__Parabolic()
880+
: Cubic(CubicInterpolation::Parabolic, false,
881+
CubicInterpolation::SecondDerivative, 0.0,
882+
CubicInterpolation::SecondDerivative, 0.0) {}
883+
};
884+
885+
class Cubic__MonotonicParabolic : public Cubic {
886+
public:
887+
Cubic__MonotonicParabolic()
888+
: Cubic(CubicInterpolation::Parabolic, true,
889+
CubicInterpolation::SecondDerivative, 0.0,
890+
CubicInterpolation::SecondDerivative, 0.0) {}
891+
};
892+
893+
class Cubic__Kruger : public Cubic {
894+
public:
895+
Cubic__Kruger()
896+
: Cubic(CubicInterpolation::Kruger, false,
897+
CubicInterpolation::SecondDerivative, 0.0,
898+
CubicInterpolation::SecondDerivative, 0.0) {}
899+
};
900+
901+
class Cubic__MonotonicKruger : public Cubic {
902+
public:
903+
Cubic__MonotonicKruger()
904+
: Cubic(CubicInterpolation::Kruger, true,
905+
CubicInterpolation::SecondDerivative, 0.0,
906+
CubicInterpolation::SecondDerivative, 0.0) {}
907+
};
908+
821909
}
822910

823911
#endif

0 commit comments

Comments
 (0)