\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 r408360 = a;
double r408361 = k;
double r408362 = m;
double r408363 = pow(r408361, r408362);
double r408364 = r408360 * r408363;
double r408365 = 1.0;
double r408366 = 10.0;
double r408367 = r408366 * r408361;
double r408368 = r408365 + r408367;
double r408369 = r408361 * r408361;
double r408370 = r408368 + r408369;
double r408371 = r408364 / r408370;
return r408371;
}
double f(double a, double k, double m) {
double r408372 = k;
double r408373 = 1.3745438843881196e+99;
bool r408374 = r408372 <= r408373;
double r408375 = m;
double r408376 = pow(r408372, r408375);
double r408377 = 10.0;
double r408378 = 1.0;
double r408379 = fma(r408372, r408377, r408378);
double r408380 = fma(r408372, r408372, r408379);
double r408381 = a;
double r408382 = r408380 / r408381;
double r408383 = r408376 / r408382;
double r408384 = -1.0;
double r408385 = 1.0;
double r408386 = r408385 / r408372;
double r408387 = log(r408386);
double r408388 = r408375 * r408387;
double r408389 = r408384 * r408388;
double r408390 = exp(r408389);
double r408391 = r408390 / r408372;
double r408392 = r408381 / r408372;
double r408393 = 99.0;
double r408394 = r408381 * r408390;
double r408395 = 4.0;
double r408396 = pow(r408372, r408395);
double r408397 = r408394 / r408396;
double r408398 = r408393 * r408397;
double r408399 = 3.0;
double r408400 = pow(r408372, r408399);
double r408401 = r408394 / r408400;
double r408402 = r408377 * r408401;
double r408403 = r408398 - r408402;
double r408404 = fma(r408391, r408392, r408403);
double r408405 = r408374 ? r408383 : r408404;
return r408405;
}



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))))