Average Error: 2.0 → 2.0
Time: 7.9s
Precision: binary64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
\[\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(k, k + 10, 1\right)} \]
(FPCore (a k m)
 :precision binary64
 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
(FPCore (a k m) :precision binary64 (/ (* a (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 * 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(Float64(a * (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[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(k, k + 10, 1\right)}

Error

Derivation

  1. Initial program 2.0

    \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
  2. Simplified2.0

    \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{\mathsf{fma}\left(k, k + 10, 1\right)}} \]
  3. Final simplification2.0

    \[\leadsto \frac{a \cdot {k}^{m}}{\mathsf{fma}\left(k, k + 10, 1\right)} \]

Reproduce

herbie shell --seed 2022210 
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))