\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(\left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}\right), \left({\left(\sqrt{a \cdot a + b \cdot b}\right)}^{2}\right), \left(4 \cdot \left(\left(a + 1\right) \cdot \left(a \cdot a\right) + \left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right)\right)\right)\right) - 1double f(double a, double b) {
double r89360444 = a;
double r89360445 = r89360444 * r89360444;
double r89360446 = b;
double r89360447 = r89360446 * r89360446;
double r89360448 = r89360445 + r89360447;
double r89360449 = 2.0;
double r89360450 = pow(r89360448, r89360449);
double r89360451 = 4.0;
double r89360452 = 1.0;
double r89360453 = r89360452 + r89360444;
double r89360454 = r89360445 * r89360453;
double r89360455 = 3.0;
double r89360456 = r89360455 * r89360444;
double r89360457 = r89360452 - r89360456;
double r89360458 = r89360447 * r89360457;
double r89360459 = r89360454 + r89360458;
double r89360460 = r89360451 * r89360459;
double r89360461 = r89360450 + r89360460;
double r89360462 = r89360461 - r89360452;
return r89360462;
}
double f(double a, double b) {
double r89360463 = a;
double r89360464 = r89360463 * r89360463;
double r89360465 = b;
double r89360466 = r89360465 * r89360465;
double r89360467 = r89360464 + r89360466;
double r89360468 = sqrt(r89360467);
double r89360469 = 2.0;
double r89360470 = pow(r89360468, r89360469);
double r89360471 = 4.0;
double r89360472 = 1.0;
double r89360473 = r89360463 + r89360472;
double r89360474 = r89360473 * r89360464;
double r89360475 = 3.0;
double r89360476 = r89360475 * r89360463;
double r89360477 = r89360472 - r89360476;
double r89360478 = r89360477 * r89360466;
double r89360479 = r89360474 + r89360478;
double r89360480 = r89360471 * r89360479;
double r89360481 = fma(r89360470, r89360470, r89360480);
double r89360482 = r89360481 - r89360472;
return r89360482;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied unpow-prod-down0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2019125 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))