\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(3 + a\right)\right)\right) - 1\left(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 - a\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right) + {\left(a \cdot a + b \cdot b\right)}^{2}\right) - 1double f(double a, double b) {
double r577 = a;
double r578 = r577 * r577;
double r579 = b;
double r580 = r579 * r579;
double r581 = r578 + r580;
double r582 = 2.0;
double r583 = pow(r581, r582);
double r584 = 4.0;
double r585 = 1.0;
double r586 = r585 - r577;
double r587 = r578 * r586;
double r588 = 3.0;
double r589 = r588 + r577;
double r590 = r580 * r589;
double r591 = r587 + r590;
double r592 = r584 * r591;
double r593 = r583 + r592;
double r594 = r593 - r585;
return r594;
}
double f(double a, double b) {
double r595 = 4.0;
double r596 = a;
double r597 = r596 * r596;
double r598 = 1.0;
double r599 = r598 - r596;
double r600 = r597 * r599;
double r601 = b;
double r602 = r601 * r601;
double r603 = 3.0;
double r604 = r603 + r596;
double r605 = r602 * r604;
double r606 = r600 + r605;
double r607 = r595 * r606;
double r608 = r597 + r602;
double r609 = 2.0;
double r610 = pow(r608, r609);
double r611 = r607 + r610;
double r612 = r611 - r598;
return r612;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
rmApplied +-commutative0.2
Final simplification0.2
herbie shell --seed 2020025 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))