\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\begin{array}{l}
\mathbf{if}\;k \le 4.372453420225965504107282237030197699145 \cdot 10^{54}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, 10 + k, 1\right)} \cdot \left({k}^{m} \cdot a\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{k}, \frac{a}{k}, \frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{{k}^{2}}{a}} \cdot \left(\frac{99}{{k}^{2}} - \frac{10}{k}\right)\right)\\
\end{array}double f(double a, double k, double m) {
double r193725 = a;
double r193726 = k;
double r193727 = m;
double r193728 = pow(r193726, r193727);
double r193729 = r193725 * r193728;
double r193730 = 1.0;
double r193731 = 10.0;
double r193732 = r193731 * r193726;
double r193733 = r193730 + r193732;
double r193734 = r193726 * r193726;
double r193735 = r193733 + r193734;
double r193736 = r193729 / r193735;
return r193736;
}
double f(double a, double k, double m) {
double r193737 = k;
double r193738 = 4.3724534202259655e+54;
bool r193739 = r193737 <= r193738;
double r193740 = 1.0;
double r193741 = 10.0;
double r193742 = r193741 + r193737;
double r193743 = 1.0;
double r193744 = fma(r193737, r193742, r193743);
double r193745 = r193740 / r193744;
double r193746 = m;
double r193747 = pow(r193737, r193746);
double r193748 = a;
double r193749 = r193747 * r193748;
double r193750 = r193745 * r193749;
double r193751 = exp(r193746);
double r193752 = log(r193737);
double r193753 = pow(r193751, r193752);
double r193754 = r193753 / r193737;
double r193755 = r193748 / r193737;
double r193756 = 2.0;
double r193757 = pow(r193737, r193756);
double r193758 = r193757 / r193748;
double r193759 = r193753 / r193758;
double r193760 = 99.0;
double r193761 = r193760 / r193757;
double r193762 = r193741 / r193737;
double r193763 = r193761 - r193762;
double r193764 = r193759 * r193763;
double r193765 = fma(r193754, r193755, r193764);
double r193766 = r193739 ? r193750 : r193765;
return r193766;
}



Bits error versus a



Bits error versus k



Bits error versus m
if k < 4.3724534202259655e+54Initial program 0.1
Simplified0.1
rmApplied div-inv0.1
Applied *-un-lft-identity0.1
Applied times-frac0.1
Simplified0.1
if 4.3724534202259655e+54 < k Initial program 6.6
Simplified6.6
Taylor expanded around -inf 64.0
Simplified0.2
Final simplification0.1
herbie shell --seed 2019350 +o rules:numerics
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))