\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\sqrt{{\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)} \cdot \sqrt{{\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)} - 1double f(double a, double b) {
double r558 = a;
double r559 = r558 * r558;
double r560 = b;
double r561 = r560 * r560;
double r562 = r559 + r561;
double r563 = 2.0;
double r564 = pow(r562, r563);
double r565 = 4.0;
double r566 = 1.0;
double r567 = r566 + r558;
double r568 = r559 * r567;
double r569 = 3.0;
double r570 = r569 * r558;
double r571 = r566 - r570;
double r572 = r561 * r571;
double r573 = r568 + r572;
double r574 = r565 * r573;
double r575 = r564 + r574;
double r576 = r575 - r566;
return r576;
}
double 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 = r585 - r589;
double r591 = r580 * r590;
double r592 = r587 + r591;
double r593 = r584 * r592;
double r594 = r583 + r593;
double r595 = sqrt(r594);
double r596 = r595 * r595;
double r597 = r596 - r585;
return r597;
}



Bits error versus a



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