| 164 | |
| 165 | template<typename T> |
| 166 | inline static double Pow(T base, int power) { |
| 167 | if (power < 0) { |
| 168 | return 1.0 / Pow(base, -power); |
| 169 | } else if (power == 0) { |
| 170 | return 1; |
| 171 | } else if (power % 2 == 0) { |
| 172 | return Pow(base*base, power / 2); |
| 173 | } else if (power % 3 == 0) { |
| 174 | return Pow(base*base*base, power / 3); |
| 175 | } else { |
| 176 | return base * Pow(base, power - 1); |
| 177 | } |
| 178 | } |
| 179 | |
| 180 | inline static const char* Atof(const char* p, double* out) { |
| 181 | int frac; |