Average Error: 1.7 → 1.7
Time: 19.6s
Precision: 64
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\left({k}^{m} \cdot a\right) \cdot \frac{1}{\mathsf{fma}\left(k + 10, k, 1\right)}\]
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\left({k}^{m} \cdot a\right) \cdot \frac{1}{\mathsf{fma}\left(k + 10, k, 1\right)}
double f(double a, double k, double m) {
        double r3342858 = a;
        double r3342859 = k;
        double r3342860 = m;
        double r3342861 = pow(r3342859, r3342860);
        double r3342862 = r3342858 * r3342861;
        double r3342863 = 1.0;
        double r3342864 = 10.0;
        double r3342865 = r3342864 * r3342859;
        double r3342866 = r3342863 + r3342865;
        double r3342867 = r3342859 * r3342859;
        double r3342868 = r3342866 + r3342867;
        double r3342869 = r3342862 / r3342868;
        return r3342869;
}

double f(double a, double k, double m) {
        double r3342870 = k;
        double r3342871 = m;
        double r3342872 = pow(r3342870, r3342871);
        double r3342873 = a;
        double r3342874 = r3342872 * r3342873;
        double r3342875 = 1.0;
        double r3342876 = 10.0;
        double r3342877 = r3342870 + r3342876;
        double r3342878 = fma(r3342877, r3342870, r3342875);
        double r3342879 = r3342875 / r3342878;
        double r3342880 = r3342874 * r3342879;
        return r3342880;
}

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Initial program 1.7

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

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

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

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

Reproduce

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