\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\begin{array}{l}
\mathbf{if}\;\frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k} \leq -3.3554869830284104 \cdot 10^{-254}:\\
\;\;\;\;\frac{{\left(\sqrt{k}\right)}^{m} \cdot \left(a \cdot {\left(\sqrt{k}\right)}^{m}\right)}{1 + k \cdot \left(k + 10\right)}\\
\mathbf{elif}\;\frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k} \leq 0:\\
\;\;\;\;\frac{1}{\frac{k}{e^{\log \left({k}^{m}\right)}} \cdot \left(\frac{k}{a} + \frac{10}{a}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{a}{\frac{1 + k \cdot \left(k + 10\right)}{{k}^{m}}}\\
\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 (<=
(/ (* a (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k)))
-3.3554869830284104e-254)
(/ (* (pow (sqrt k) m) (* a (pow (sqrt k) m))) (+ 1.0 (* k (+ k 10.0))))
(if (<= (/ (* a (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k))) 0.0)
(/ 1.0 (* (/ k (exp (log (pow k m)))) (+ (/ k a) (/ 10.0 a))))
(/ a (/ (+ 1.0 (* k (+ k 10.0))) (pow k m))))))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 (((a * pow(k, m)) / ((1.0 + (k * 10.0)) + (k * k))) <= -3.3554869830284104e-254) {
tmp = (pow(sqrt(k), m) * (a * pow(sqrt(k), m))) / (1.0 + (k * (k + 10.0)));
} else if (((a * pow(k, m)) / ((1.0 + (k * 10.0)) + (k * k))) <= 0.0) {
tmp = 1.0 / ((k / exp(log(pow(k, m)))) * ((k / a) + (10.0 / a)));
} else {
tmp = a / ((1.0 + (k * (k + 10.0))) / pow(k, m));
}
return tmp;
}



Bits error versus a



Bits error versus k



Bits error versus m
Results
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 1 (*.f64 10 k)) (*.f64 k k))) < -3.3554869830284104e-254Initial program 0.1
Simplified0.1
rmApplied add-sqr-sqrt_binary64_14640.1
Applied unpow-prod-down_binary64_15210.1
Applied associate-*r*_binary64_13820.1
if -3.3554869830284104e-254 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 1 (*.f64 10 k)) (*.f64 k k))) < -0.0Initial program 3.1
Simplified3.1
rmApplied clear-num_binary64_14413.2
Taylor expanded around inf 33.2
Simplified1.3
if -0.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 1 (*.f64 10 k)) (*.f64 k k))) Initial program 0.4
Simplified0.2
rmApplied associate-/l*_binary64_13870.2
Final simplification0.9
herbie shell --seed 2021024
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))