\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\begin{array}{l}
\mathbf{if}\;k \leq 4.9377061128398556 \cdot 10^{+58}:\\
\;\;\;\;\frac{a}{\frac{\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}\\
\mathbf{else}:\\
\;\;\;\;\begin{array}{l}
t_0 := a \cdot {k}^{m}\\
\mathsf{fma}\left(99, \frac{t_0}{{k}^{4}}, \mathsf{fma}\left(\frac{t_0}{{k}^{3}}, -10, \frac{{k}^{m}}{k \cdot \frac{k}{a}}\right)\right)
\end{array}\\
\end{array}
(FPCore (a k m) :precision binary64 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
(FPCore (a k m)
:precision binary64
(if (<= k 4.9377061128398556e+58)
(/ a (/ (fma k (+ k 10.0) 1.0) (pow k m)))
(let* ((t_0 (* a (pow k m))))
(fma
99.0
(/ t_0 (pow k 4.0))
(fma (/ t_0 (pow k 3.0)) -10.0 (/ (pow k m) (* k (/ k a))))))))double code(double a, double k, double m) {
return (a * pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
double code(double a, double k, double m) {
double tmp;
if (k <= 4.9377061128398556e+58) {
tmp = a / (fma(k, (k + 10.0), 1.0) / pow(k, m));
} else {
double t_0 = a * pow(k, m);
tmp = fma(99.0, (t_0 / pow(k, 4.0)), fma((t_0 / pow(k, 3.0)), -10.0, (pow(k, m) / (k * (k / a)))));
}
return tmp;
}



Bits error versus a



Bits error versus k



Bits error versus m
if k < 4.9377061128398556e58Initial program 0.1
Simplified0.0
Applied clear-num_binary640.2
Applied *-un-lft-identity_binary640.2
Applied times-frac_binary640.2
Applied associate-/r*_binary640.1
Applied *-un-lft-identity_binary640.1
Applied *-un-lft-identity_binary640.1
Applied times-frac_binary640.1
Applied associate-/r/_binary640.0
Applied times-frac_binary640.0
if 4.9377061128398556e58 < k Initial program 7.0
Simplified7.0
Applied clear-num_binary647.2
Taylor expanded in k around inf 7.0
Simplified0.5
Final simplification0.2
herbie shell --seed 2022103
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))