00001 #ifndef gridripper_math_O5Interpolation_h 00002 #define gridripper_math_O5Interpolation_h 00003 00004 #include <gridripper/config.h> 00005 #include <gridripper/tvector.h> 00006 #include <gridripper/math/Matrix.h> 00007 #include <gridripper/lang/IllegalArgumentException.h> 00008 00009 namespace gridripper { namespace math { 00010 00018 class O5Interpolation 00019 { 00020 private: 00021 tvector<GReal_t> xarr; 00022 tvector<GReal_t> yarr; 00023 Matrix<GReal_t> P; 00024 MVector<GReal_t> dL; 00025 MVector<GReal_t> dR; 00026 tvector<GReal_t> coeff; 00027 int numComponents; 00028 00029 public: 00037 O5Interpolation(const tvector<GReal_t>& xarr, 00038 const tvector<GReal_t>& yarr) 00039 throw(IllegalArgumentException&); 00040 00047 GReal_t interpolate(GReal_t x, int componentIndex) const; 00048 00057 GReal_t integrateSection(int k, int componentIndex) const; 00058 00059 private: 00060 void calcCoeff(int k, int componentIndex); 00061 00070 void derive(const int* iarr, int i, MVector<GReal_t>& d, int componentIndex); 00071 }; 00072 00073 } } // namespace gridripper::math 00074 00075 #endif /* gridripper_math_O5Interpolation_h */