\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\mathsf{fma}\left(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \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)\right) - 1double f(double a, double b) {
double r136554 = a;
double r136555 = r136554 * r136554;
double r136556 = b;
double r136557 = r136556 * r136556;
double r136558 = r136555 + r136557;
double r136559 = 2.0;
double r136560 = pow(r136558, r136559);
double r136561 = 4.0;
double r136562 = 1.0;
double r136563 = r136562 + r136554;
double r136564 = r136555 * r136563;
double r136565 = 3.0;
double r136566 = r136565 * r136554;
double r136567 = r136562 - r136566;
double r136568 = r136557 * r136567;
double r136569 = r136564 + r136568;
double r136570 = r136561 * r136569;
double r136571 = r136560 + r136570;
double r136572 = r136571 - r136562;
return r136572;
}
double f(double a, double b) {
double r136573 = a;
double r136574 = r136573 * r136573;
double r136575 = b;
double r136576 = r136575 * r136575;
double r136577 = r136574 + r136576;
double r136578 = 2.0;
double r136579 = pow(r136577, r136578);
double r136580 = sqrt(r136579);
double r136581 = 4.0;
double r136582 = 1.0;
double r136583 = r136582 + r136573;
double r136584 = r136574 * r136583;
double r136585 = 3.0;
double r136586 = r136585 * r136573;
double r136587 = r136582 - r136586;
double r136588 = r136576 * r136587;
double r136589 = r136584 + r136588;
double r136590 = r136581 * r136589;
double r136591 = fma(r136580, r136580, r136590);
double r136592 = r136591 - r136582;
return r136592;
}



Bits error versus a



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