\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\begin{array}{l}
\mathbf{if}\;k \le 1.374543884388119608632379581766201536409 \cdot 10^{99}:\\
\;\;\;\;\frac{{k}^{m}}{\frac{\mathsf{fma}\left(k, k, \mathsf{fma}\left(k, 10, 1\right)\right)}{a}}\\
\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 r408452 = a;
double r408453 = k;
double r408454 = m;
double r408455 = pow(r408453, r408454);
double r408456 = r408452 * r408455;
double r408457 = 1.0;
double r408458 = 10.0;
double r408459 = r408458 * r408453;
double r408460 = r408457 + r408459;
double r408461 = r408453 * r408453;
double r408462 = r408460 + r408461;
double r408463 = r408456 / r408462;
return r408463;
}
double f(double a, double k, double m) {
double r408464 = k;
double r408465 = 1.3745438843881196e+99;
bool r408466 = r408464 <= r408465;
double r408467 = m;
double r408468 = pow(r408464, r408467);
double r408469 = 10.0;
double r408470 = 1.0;
double r408471 = fma(r408464, r408469, r408470);
double r408472 = fma(r408464, r408464, r408471);
double r408473 = a;
double r408474 = r408472 / r408473;
double r408475 = r408468 / r408474;
double r408476 = -1.0;
double r408477 = 1.0;
double r408478 = r408477 / r408464;
double r408479 = log(r408478);
double r408480 = r408467 * r408479;
double r408481 = r408476 * r408480;
double r408482 = exp(r408481);
double r408483 = r408482 / r408464;
double r408484 = r408473 / r408464;
double r408485 = 99.0;
double r408486 = r408473 * r408482;
double r408487 = 4.0;
double r408488 = pow(r408464, r408487);
double r408489 = r408486 / r408488;
double r408490 = r408485 * r408489;
double r408491 = 3.0;
double r408492 = pow(r408464, r408491);
double r408493 = r408486 / r408492;
double r408494 = r408469 * r408493;
double r408495 = r408490 - r408494;
double r408496 = fma(r408483, r408484, r408495);
double r408497 = r408466 ? r408475 : r408496;
return r408497;
}



Bits error versus a



Bits error versus k



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