Average Error: 1.9 → 1.9
Time: 29.6s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\frac{\frac{a}{\mathsf{fma}\left(k, 10 + k, 1\right)}}{\frac{1}{{k}^{m}}}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\frac{\frac{a}{\mathsf{fma}\left(k, 10 + k, 1\right)}}{\frac{1}{{k}^{m}}}
double f(double a, double k, double m) {
        double r150650 = a;
        double r150651 = k;
        double r150652 = m;
        double r150653 = pow(r150651, r150652);
        double r150654 = r150650 * r150653;
        double r150655 = 1.0;
        double r150656 = 10.0;
        double r150657 = r150656 * r150651;
        double r150658 = r150655 + r150657;
        double r150659 = r150651 * r150651;
        double r150660 = r150658 + r150659;
        double r150661 = r150654 / r150660;
        return r150661;
}

double f(double a, double k, double m) {
        double r150662 = a;
        double r150663 = k;
        double r150664 = 10.0;
        double r150665 = r150664 + r150663;
        double r150666 = 1.0;
        double r150667 = fma(r150663, r150665, r150666);
        double r150668 = r150662 / r150667;
        double r150669 = 1.0;
        double r150670 = m;
        double r150671 = pow(r150663, r150670);
        double r150672 = r150669 / r150671;
        double r150673 = r150668 / r150672;
        return r150673;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Initial program 1.9

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

    \[\leadsto \color{blue}{\frac{a}{\frac{\mathsf{fma}\left(k, 10 + k, 1\right)}{{k}^{m}}}}\]
  3. Using strategy rm
  4. Applied div-inv1.9

    \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right) \cdot \frac{1}{{k}^{m}}}}\]
  5. Applied associate-/r*1.9

    \[\leadsto \color{blue}{\frac{\frac{a}{\mathsf{fma}\left(k, 10 + k, 1\right)}}{\frac{1}{{k}^{m}}}}\]
  6. Final simplification1.9

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

Reproduce

herbie shell --seed 2019212 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))