\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{\mathsf{fma}\left(\mathsf{fma}\left({a}^{2}, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} \cdot \sqrt{\mathsf{fma}\left(\mathsf{fma}\left({a}^{2}, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} - 1double f(double a, double b) {
double r151601 = a;
double r151602 = r151601 * r151601;
double r151603 = b;
double r151604 = r151603 * r151603;
double r151605 = r151602 + r151604;
double r151606 = 2.0;
double r151607 = pow(r151605, r151606);
double r151608 = 4.0;
double r151609 = 1.0;
double r151610 = r151609 + r151601;
double r151611 = r151602 * r151610;
double r151612 = 3.0;
double r151613 = r151612 * r151601;
double r151614 = r151609 - r151613;
double r151615 = r151604 * r151614;
double r151616 = r151611 + r151615;
double r151617 = r151608 * r151616;
double r151618 = r151607 + r151617;
double r151619 = r151618 - r151609;
return r151619;
}
double f(double a, double b) {
double r151620 = a;
double r151621 = 2.0;
double r151622 = pow(r151620, r151621);
double r151623 = 1.0;
double r151624 = r151623 + r151620;
double r151625 = b;
double r151626 = r151625 * r151625;
double r151627 = 3.0;
double r151628 = r151627 * r151620;
double r151629 = r151623 - r151628;
double r151630 = r151626 * r151629;
double r151631 = fma(r151622, r151624, r151630);
double r151632 = 4.0;
double r151633 = fma(r151620, r151620, r151626);
double r151634 = 2.0;
double r151635 = pow(r151633, r151634);
double r151636 = fma(r151631, r151632, r151635);
double r151637 = sqrt(r151636);
double r151638 = r151637 * r151637;
double r151639 = r151638 - r151623;
return r151639;
}



Bits error versus a



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