\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({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 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) - 1double f(double a, double b) {
double r369407 = a;
double r369408 = r369407 * r369407;
double r369409 = b;
double r369410 = r369409 * r369409;
double r369411 = r369408 + r369410;
double r369412 = 2.0;
double r369413 = pow(r369411, r369412);
double r369414 = 4.0;
double r369415 = 1.0;
double r369416 = r369415 - r369407;
double r369417 = r369408 * r369416;
double r369418 = 3.0;
double r369419 = r369418 + r369407;
double r369420 = r369410 * r369419;
double r369421 = r369417 + r369420;
double r369422 = r369414 * r369421;
double r369423 = r369413 + r369422;
double r369424 = r369423 - r369415;
return r369424;
}
double f(double a, double b) {
double r369425 = a;
double r369426 = r369425 * r369425;
double r369427 = b;
double r369428 = r369427 * r369427;
double r369429 = r369426 + r369428;
double r369430 = 2.0;
double r369431 = 2.0;
double r369432 = r369430 / r369431;
double r369433 = pow(r369429, r369432);
double r369434 = 4.0;
double r369435 = 1.0;
double r369436 = r369435 - r369425;
double r369437 = r369426 * r369436;
double r369438 = 3.0;
double r369439 = r369438 + r369425;
double r369440 = r369428 * r369439;
double r369441 = r369437 + r369440;
double r369442 = r369434 * r369441;
double r369443 = fma(r369433, r369433, r369442);
double r369444 = r369443 - r369435;
return r369444;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied sqr-pow0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2019344 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))