\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\begin{array}{l}
\mathbf{if}\;k \le 4.152474476509974173800690476584261895466 \cdot 10^{93}:\\
\;\;\;\;\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 r345657 = a;
double r345658 = k;
double r345659 = m;
double r345660 = pow(r345658, r345659);
double r345661 = r345657 * r345660;
double r345662 = 1.0;
double r345663 = 10.0;
double r345664 = r345663 * r345658;
double r345665 = r345662 + r345664;
double r345666 = r345658 * r345658;
double r345667 = r345665 + r345666;
double r345668 = r345661 / r345667;
return r345668;
}
double f(double a, double k, double m) {
double r345669 = k;
double r345670 = 4.152474476509974e+93;
bool r345671 = r345669 <= r345670;
double r345672 = a;
double r345673 = m;
double r345674 = pow(r345669, r345673);
double r345675 = r345672 * r345674;
double r345676 = 10.0;
double r345677 = 1.0;
double r345678 = fma(r345669, r345676, r345677);
double r345679 = fma(r345669, r345669, r345678);
double r345680 = r345675 / r345679;
double r345681 = -1.0;
double r345682 = 1.0;
double r345683 = r345682 / r345669;
double r345684 = log(r345683);
double r345685 = r345673 * r345684;
double r345686 = r345681 * r345685;
double r345687 = exp(r345686);
double r345688 = r345687 / r345669;
double r345689 = r345672 / r345669;
double r345690 = 99.0;
double r345691 = r345672 * r345687;
double r345692 = 4.0;
double r345693 = pow(r345669, r345692);
double r345694 = r345691 / r345693;
double r345695 = r345690 * r345694;
double r345696 = 3.0;
double r345697 = pow(r345669, r345696);
double r345698 = r345691 / r345697;
double r345699 = r345676 * r345698;
double r345700 = r345695 - r345699;
double r345701 = fma(r345688, r345689, r345700);
double r345702 = r345671 ? r345680 : r345701;
return r345702;
}



Bits error versus a



Bits error versus k



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