\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\begin{array}{l}
\mathbf{if}\;k \le 5.51767791817717477 \cdot 10^{56}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{k}, \frac{a}{k}, 99 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{4}} - 10 \cdot \frac{a \cdot e^{-1 \cdot \left(m \cdot \log \left(\frac{1}{k}\right)\right)}}{{k}^{3}}\right)\\
\end{array}double f(double a, double k, double m) {
double r262326 = a;
double r262327 = k;
double r262328 = m;
double r262329 = pow(r262327, r262328);
double r262330 = r262326 * r262329;
double r262331 = 1.0;
double r262332 = 10.0;
double r262333 = r262332 * r262327;
double r262334 = r262331 + r262333;
double r262335 = r262327 * r262327;
double r262336 = r262334 + r262335;
double r262337 = r262330 / r262336;
return r262337;
}
double f(double a, double k, double m) {
double r262338 = k;
double r262339 = 5.517677918177175e+56;
bool r262340 = r262338 <= r262339;
double r262341 = a;
double r262342 = m;
double r262343 = pow(r262338, r262342);
double r262344 = r262341 * r262343;
double r262345 = 10.0;
double r262346 = 1.0;
double r262347 = fma(r262338, r262345, r262346);
double r262348 = fma(r262338, r262338, r262347);
double r262349 = r262344 / r262348;
double r262350 = -1.0;
double r262351 = 1.0;
double r262352 = r262351 / r262338;
double r262353 = log(r262352);
double r262354 = r262342 * r262353;
double r262355 = r262350 * r262354;
double r262356 = exp(r262355);
double r262357 = r262356 / r262338;
double r262358 = r262341 / r262338;
double r262359 = 99.0;
double r262360 = r262341 * r262356;
double r262361 = 4.0;
double r262362 = pow(r262338, r262361);
double r262363 = r262360 / r262362;
double r262364 = r262359 * r262363;
double r262365 = 3.0;
double r262366 = pow(r262338, r262365);
double r262367 = r262360 / r262366;
double r262368 = r262345 * r262367;
double r262369 = r262364 - r262368;
double r262370 = fma(r262357, r262358, r262369);
double r262371 = r262340 ? r262349 : r262370;
return r262371;
}



Bits error versus a



Bits error versus k



Bits error versus m
if k < 5.517677918177175e+56Initial program 0.1
Taylor expanded around 0 0.1
Simplified0.0
if 5.517677918177175e+56 < k Initial program 7.2
Taylor expanded around inf 7.2
Simplified0.2
Final simplification0.1
herbie shell --seed 2020065 +o rules:numerics
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))