| 78 | // }; |
| 79 | |
| 80 | struct pow { |
| 81 | double power = 1.0; |
| 82 | |
| 83 | pow() = default; |
| 84 | pow(double p) : power(p) {} |
| 85 | template <typename T> |
| 86 | T forward(T v) const { |
| 87 | return std::pow(v, power); |
| 88 | } |
| 89 | template <typename T> |
| 90 | T inverse(T v) const { |
| 91 | return std::pow(v, 1.0 / power); |
| 92 | } |
| 93 | bool operator==(const pow& other) const noexcept { return power == other.power; } |
| 94 | |
| 95 | private: |
| 96 | friend ::boost::serialization::access; |
| 97 | template <class Archive> |
| 98 | void serialize(Archive&, unsigned); |
| 99 | }; |
| 100 | } // namespace transform |
| 101 | |
| 102 | /** Axis for equidistant intervals on the real line. |