\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 r123554 = a;
double r123555 = r123554 * r123554;
double r123556 = b;
double r123557 = r123556 * r123556;
double r123558 = r123555 + r123557;
double r123559 = 2.0;
double r123560 = pow(r123558, r123559);
double r123561 = 4.0;
double r123562 = 1.0;
double r123563 = r123562 + r123554;
double r123564 = r123555 * r123563;
double r123565 = 3.0;
double r123566 = r123565 * r123554;
double r123567 = r123562 - r123566;
double r123568 = r123557 * r123567;
double r123569 = r123564 + r123568;
double r123570 = r123561 * r123569;
double r123571 = r123560 + r123570;
double r123572 = r123571 - r123562;
return r123572;
}
double f(double a, double b) {
double r123573 = a;
double r123574 = r123573 * r123573;
double r123575 = b;
double r123576 = r123575 * r123575;
double r123577 = r123574 + r123576;
double r123578 = 2.0;
double r123579 = pow(r123577, r123578);
double r123580 = 4.0;
double r123581 = 1.0;
double r123582 = r123581 + r123573;
double r123583 = r123574 * r123582;
double r123584 = 3.0;
double r123585 = r123584 * r123573;
double r123586 = r123581 - r123585;
double r123587 = r123576 * r123586;
double r123588 = r123583 + r123587;
double r123589 = r123580 * r123588;
double r123590 = r123579 + r123589;
double r123591 = r123590 - r123581;
return r123591;
}



Bits error versus a



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