Average Error: 1.7 → 1.7
Time: 13.7s
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 r3668055 = a;
        double r3668056 = k;
        double r3668057 = m;
        double r3668058 = pow(r3668056, r3668057);
        double r3668059 = r3668055 * r3668058;
        double r3668060 = 1.0;
        double r3668061 = 10.0;
        double r3668062 = r3668061 * r3668056;
        double r3668063 = r3668060 + r3668062;
        double r3668064 = r3668056 * r3668056;
        double r3668065 = r3668063 + r3668064;
        double r3668066 = r3668059 / r3668065;
        return r3668066;
}

double f(double a, double k, double m) {
        double r3668067 = k;
        double r3668068 = m;
        double r3668069 = pow(r3668067, r3668068);
        double r3668070 = a;
        double r3668071 = r3668069 * r3668070;
        double r3668072 = 1.0;
        double r3668073 = 10.0;
        double r3668074 = r3668067 + r3668073;
        double r3668075 = fma(r3668074, r3668067, r3668072);
        double r3668076 = r3668072 / r3668075;
        double r3668077 = r3668071 * r3668076;
        return r3668077;
}

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))))