| 57 |  | void addPoint(const RealType xp, const RealType yp); | 
| 58 |  | void addPoints(const vector<RealType>& xps, const vector<RealType>& yps); | 
| 59 |  | RealType getValueAt(const RealType& t); | 
| 60 | – | pair<RealType, RealType> getValueAndDerivativeAt(const RealType& t); | 
| 60 |  | pair<RealType, RealType> getLimits(); | 
| 61 |  | void getValueAt(const RealType& t, RealType& v); | 
| 62 |  | void getValueAndDerivativeAt(const RealType& t, RealType& v, RealType& d); | 
| 63 |  |  | 
| 64 |  | private: | 
| 65 |  | void generate(); | 
| 66 | + | std::vector<int> sort_permutation(std::vector<RealType>& v); | 
| 67 | + | std::vector<RealType> apply_permutation(std::vector<RealType> const& v, | 
| 68 | + | std::vector<int> const& p); | 
| 69 | + |  | 
| 70 |  | bool isUniform; | 
| 71 |  | bool generated; | 
| 72 |  | RealType dx, dt, yval, dydx; | 
| 73 |  | int n, j; | 
| 74 | < | vector<pair<RealType, RealType> > data_; | 
| 74 | > | vector<RealType> x_; | 
| 75 | > | vector<RealType> y_; | 
| 76 |  | vector<RealType> b; | 
| 77 |  | vector<RealType> c; | 
| 78 |  | vector<RealType> d; | 
| 79 |  | }; | 
| 80 | + |  | 
| 81 | + | class Comparator{ | 
| 82 | + | std::vector<RealType>& _v; | 
| 83 | + | public: | 
| 84 | + | Comparator(std::vector<RealType>& v) : _v(v) {} | 
| 85 | + | bool operator()(size_t i, size_t j){ | 
| 86 | + | return _v[i] < _v[j]; | 
| 87 | + | } | 
| 88 | + | }; | 
| 89 |  | } | 
| 90 |  |  | 
| 91 |  | #endif |