Average Error: 0.2 → 0.2
Time: 26.6s
Precision: 64
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
\[\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1\]
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
\left({\left(a \cdot a + b \cdot b\right)}^{2} + 4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1
double f(double a, double b) {
        double r212461 = a;
        double r212462 = r212461 * r212461;
        double r212463 = b;
        double r212464 = r212463 * r212463;
        double r212465 = r212462 + r212464;
        double r212466 = 2.0;
        double r212467 = pow(r212465, r212466);
        double r212468 = 4.0;
        double r212469 = 1.0;
        double r212470 = r212469 + r212461;
        double r212471 = r212462 * r212470;
        double r212472 = 3.0;
        double r212473 = r212472 * r212461;
        double r212474 = r212469 - r212473;
        double r212475 = r212464 * r212474;
        double r212476 = r212471 + r212475;
        double r212477 = r212468 * r212476;
        double r212478 = r212467 + r212477;
        double r212479 = r212478 - r212469;
        return r212479;
}

double f(double a, double b) {
        double r212480 = a;
        double r212481 = r212480 * r212480;
        double r212482 = b;
        double r212483 = r212482 * r212482;
        double r212484 = r212481 + r212483;
        double r212485 = 2.0;
        double r212486 = pow(r212484, r212485);
        double r212487 = 4.0;
        double r212488 = 1.0;
        double r212489 = r212488 + r212480;
        double r212490 = r212481 * r212489;
        double r212491 = 3.0;
        double r212492 = r212491 * r212480;
        double r212493 = r212488 - r212492;
        double r212494 = r212483 * r212493;
        double r212495 = r212490 + r212494;
        double r212496 = r212487 * r212495;
        double r212497 = r212486 + r212496;
        double r212498 = r212497 - r212488;
        return r212498;
}

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.2

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

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

Reproduce

herbie shell --seed 2019306 +o rules:numerics
(FPCore (a b)
  :name "Bouland and Aaronson, Equation (25)"
  :precision binary64
  (- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))