\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 r167588 = a;
double r167589 = r167588 * r167588;
double r167590 = b;
double r167591 = r167590 * r167590;
double r167592 = r167589 + r167591;
double r167593 = 2.0;
double r167594 = pow(r167592, r167593);
double r167595 = 4.0;
double r167596 = 1.0;
double r167597 = r167596 + r167588;
double r167598 = r167589 * r167597;
double r167599 = 3.0;
double r167600 = r167599 * r167588;
double r167601 = r167596 - r167600;
double r167602 = r167591 * r167601;
double r167603 = r167598 + r167602;
double r167604 = r167595 * r167603;
double r167605 = r167594 + r167604;
double r167606 = r167605 - r167596;
return r167606;
}
double f(double a, double b) {
double r167607 = a;
double r167608 = r167607 * r167607;
double r167609 = b;
double r167610 = r167609 * r167609;
double r167611 = r167608 + r167610;
double r167612 = 2.0;
double r167613 = pow(r167611, r167612);
double r167614 = 4.0;
double r167615 = 1.0;
double r167616 = r167615 + r167607;
double r167617 = r167608 * r167616;
double r167618 = 3.0;
double r167619 = r167618 * r167607;
double r167620 = r167615 - r167619;
double r167621 = r167610 * r167620;
double r167622 = r167617 + r167621;
double r167623 = r167614 * r167622;
double r167624 = r167613 + r167623;
double r167625 = r167624 - r167615;
return r167625;
}



Bits error versus a



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