Average Error: 0.2 → 1.0
Time: 21.0s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
\[\left(\mathsf{fma}\left(2, \left(a \cdot b\right) \cdot \left(a \cdot b\right), {a}^{4}\right) + {b}^{4}\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1
\left(\mathsf{fma}\left(2, \left(a \cdot b\right) \cdot \left(a \cdot b\right), {a}^{4}\right) + {b}^{4}\right) - 1
double f(double a, double b) {
        double r6538395 = a;
        double r6538396 = r6538395 * r6538395;
        double r6538397 = b;
        double r6538398 = r6538397 * r6538397;
        double r6538399 = r6538396 + r6538398;
        double r6538400 = 2.0;
        double r6538401 = pow(r6538399, r6538400);
        double r6538402 = 4.0;
        double r6538403 = r6538402 * r6538398;
        double r6538404 = r6538401 + r6538403;
        double r6538405 = 1.0;
        double r6538406 = r6538404 - r6538405;
        return r6538406;
}

double f(double a, double b) {
        double r6538407 = 2.0;
        double r6538408 = a;
        double r6538409 = b;
        double r6538410 = r6538408 * r6538409;
        double r6538411 = r6538410 * r6538410;
        double r6538412 = 4.0;
        double r6538413 = pow(r6538408, r6538412);
        double r6538414 = fma(r6538407, r6538411, r6538413);
        double r6538415 = pow(r6538409, r6538412);
        double r6538416 = r6538414 + r6538415;
        double r6538417 = 1.0;
        double r6538418 = r6538416 - r6538417;
        return r6538418;
}

Error

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 0.2

    \[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(b \cdot b\right)\right) - 1\]
  2. Simplified0.2

    \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(b, b, a \cdot a\right), \mathsf{fma}\left(b, b, a \cdot a\right), \left(b \cdot b\right) \cdot 4\right) - 1}\]
  3. Taylor expanded around inf 1.0

    \[\leadsto \color{blue}{\left({b}^{4} + \left(2 \cdot \left({a}^{2} \cdot {b}^{2}\right) + {a}^{4}\right)\right)} - 1\]
  4. Simplified1.0

    \[\leadsto \color{blue}{\left({b}^{4} + \mathsf{fma}\left(2, \left(b \cdot a\right) \cdot \left(b \cdot a\right), {a}^{4}\right)\right)} - 1\]
  5. Final simplification1.0

    \[\leadsto \left(\mathsf{fma}\left(2, \left(a \cdot b\right) \cdot \left(a \cdot b\right), {a}^{4}\right) + {b}^{4}\right) - 1\]

Reproduce

herbie shell --seed 2019134 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (26)"
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (* b b))) 1))