\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\begin{array}{l}
\mathbf{if}\;k \le 1.901191420895440964340106397016886993799 \cdot 10^{53}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{1 + \mathsf{fma}\left(10, k, k \cdot k\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 r348724 = a;
double r348725 = k;
double r348726 = m;
double r348727 = pow(r348725, r348726);
double r348728 = r348724 * r348727;
double r348729 = 1.0;
double r348730 = 10.0;
double r348731 = r348730 * r348725;
double r348732 = r348729 + r348731;
double r348733 = r348725 * r348725;
double r348734 = r348732 + r348733;
double r348735 = r348728 / r348734;
return r348735;
}
double f(double a, double k, double m) {
double r348736 = k;
double r348737 = 1.901191420895441e+53;
bool r348738 = r348736 <= r348737;
double r348739 = a;
double r348740 = m;
double r348741 = pow(r348736, r348740);
double r348742 = r348739 * r348741;
double r348743 = 1.0;
double r348744 = 10.0;
double r348745 = r348736 * r348736;
double r348746 = fma(r348744, r348736, r348745);
double r348747 = r348743 + r348746;
double r348748 = r348742 / r348747;
double r348749 = -1.0;
double r348750 = 1.0;
double r348751 = r348750 / r348736;
double r348752 = log(r348751);
double r348753 = r348740 * r348752;
double r348754 = r348749 * r348753;
double r348755 = exp(r348754);
double r348756 = r348755 / r348736;
double r348757 = r348739 / r348736;
double r348758 = 99.0;
double r348759 = r348739 * r348755;
double r348760 = 4.0;
double r348761 = pow(r348736, r348760);
double r348762 = r348759 / r348761;
double r348763 = r348758 * r348762;
double r348764 = 3.0;
double r348765 = pow(r348736, r348764);
double r348766 = r348759 / r348765;
double r348767 = r348744 * r348766;
double r348768 = r348763 - r348767;
double r348769 = fma(r348756, r348757, r348768);
double r348770 = r348738 ? r348748 : r348769;
return r348770;
}



Bits error versus a



Bits error versus k



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