\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({\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) - 1double f(double a, double b) {
double r212646 = a;
double r212647 = r212646 * r212646;
double r212648 = b;
double r212649 = r212648 * r212648;
double r212650 = r212647 + r212649;
double r212651 = 2.0;
double r212652 = pow(r212650, r212651);
double r212653 = 4.0;
double r212654 = 1.0;
double r212655 = r212654 - r212646;
double r212656 = r212647 * r212655;
double r212657 = 3.0;
double r212658 = r212657 + r212646;
double r212659 = r212649 * r212658;
double r212660 = r212656 + r212659;
double r212661 = r212653 * r212660;
double r212662 = r212652 + r212661;
double r212663 = r212662 - r212654;
return r212663;
}
double f(double a, double b) {
double r212664 = a;
double r212665 = r212664 * r212664;
double r212666 = b;
double r212667 = r212666 * r212666;
double r212668 = r212665 + r212667;
double r212669 = 2.0;
double r212670 = pow(r212668, r212669);
double r212671 = 4.0;
double r212672 = 1.0;
double r212673 = r212672 - r212664;
double r212674 = r212665 * r212673;
double r212675 = 3.0;
double r212676 = r212675 + r212664;
double r212677 = r212667 * r212676;
double r212678 = r212674 + r212677;
double r212679 = r212671 * r212678;
double r212680 = r212670 + r212679;
double r212681 = r212680 - r212672;
return r212681;
}



Bits error versus a



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