(FPCore (a k m) :precision binary64 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
(FPCore (a k m) :precision binary64 (* a (log1p (expm1 (/ (pow k m) (fma k (+ k 10.0) 1.0))))))
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) {
return a * log1p(expm1((pow(k, m) / fma(k, (k + 10.0), 1.0))));
}
function code(a, k, m) return Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(10.0 * k)) + Float64(k * k))) end
function code(a, k, m) return Float64(a * log1p(expm1(Float64((k ^ m) / fma(k, Float64(k + 10.0), 1.0))))) end
code[a_, k_, m_] := N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(10.0 * k), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[a_, k_, m_] := N[(a * N[Log[1 + N[(Exp[N[(N[Power[k, m], $MachinePrecision] / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]] - 1), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
a \cdot \mathsf{log1p}\left(\mathsf{expm1}\left(\frac{{k}^{m}}{\mathsf{fma}\left(k, k + 10, 1\right)}\right)\right)



Bits error versus a



Bits error versus k



Bits error versus m
Initial program 2.1
Simplified2.1
Applied egg-rr2.1
Applied egg-rr2.2
Final simplification2.2
herbie shell --seed 2022131
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))