\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) - 1double 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;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
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))