\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(3 + a\right)\right)\right) - 1\mathsf{fma}\left(\mathsf{fma}\left(3, b \cdot b, a \cdot \mathsf{fma}\left(1 - a, a, b \cdot b\right)\right), 4, {\left(\mathsf{fma}\left(b, b, a \cdot a\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r6662376 = a;
double r6662377 = r6662376 * r6662376;
double r6662378 = b;
double r6662379 = r6662378 * r6662378;
double r6662380 = r6662377 + r6662379;
double r6662381 = 2.0;
double r6662382 = pow(r6662380, r6662381);
double r6662383 = 4.0;
double r6662384 = 1.0;
double r6662385 = r6662384 - r6662376;
double r6662386 = r6662377 * r6662385;
double r6662387 = 3.0;
double r6662388 = r6662387 + r6662376;
double r6662389 = r6662379 * r6662388;
double r6662390 = r6662386 + r6662389;
double r6662391 = r6662383 * r6662390;
double r6662392 = r6662382 + r6662391;
double r6662393 = r6662392 - r6662384;
return r6662393;
}
double f(double a, double b) {
double r6662394 = 3.0;
double r6662395 = b;
double r6662396 = r6662395 * r6662395;
double r6662397 = a;
double r6662398 = 1.0;
double r6662399 = r6662398 - r6662397;
double r6662400 = fma(r6662399, r6662397, r6662396);
double r6662401 = r6662397 * r6662400;
double r6662402 = fma(r6662394, r6662396, r6662401);
double r6662403 = 4.0;
double r6662404 = r6662397 * r6662397;
double r6662405 = fma(r6662395, r6662395, r6662404);
double r6662406 = 2.0;
double r6662407 = pow(r6662405, r6662406);
double r6662408 = fma(r6662402, r6662403, r6662407);
double r6662409 = r6662408 - r6662398;
return r6662409;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019170 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (- 1.0 a)) (* (* b b) (+ 3.0 a))))) 1.0))