\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 r119582 = a;
double r119583 = r119582 * r119582;
double r119584 = b;
double r119585 = r119584 * r119584;
double r119586 = r119583 + r119585;
double r119587 = 2.0;
double r119588 = pow(r119586, r119587);
double r119589 = 4.0;
double r119590 = 1.0;
double r119591 = r119590 + r119582;
double r119592 = r119583 * r119591;
double r119593 = 3.0;
double r119594 = r119593 * r119582;
double r119595 = r119590 - r119594;
double r119596 = r119585 * r119595;
double r119597 = r119592 + r119596;
double r119598 = r119589 * r119597;
double r119599 = r119588 + r119598;
double r119600 = r119599 - r119590;
return r119600;
}
double f(double a, double b) {
double r119601 = a;
double r119602 = r119601 * r119601;
double r119603 = b;
double r119604 = r119603 * r119603;
double r119605 = r119602 + r119604;
double r119606 = 2.0;
double r119607 = pow(r119605, r119606);
double r119608 = 4.0;
double r119609 = 1.0;
double r119610 = r119609 + r119601;
double r119611 = r119602 * r119610;
double r119612 = 3.0;
double r119613 = r119612 * r119601;
double r119614 = r119609 - r119613;
double r119615 = r119604 * r119614;
double r119616 = r119611 + r119615;
double r119617 = r119608 * r119616;
double r119618 = r119607 + r119617;
double r119619 = r119618 - r119609;
return r119619;
}



Bits error versus a



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