\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(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r11192484 = a;
double r11192485 = r11192484 * r11192484;
double r11192486 = b;
double r11192487 = r11192486 * r11192486;
double r11192488 = r11192485 + r11192487;
double r11192489 = 2.0;
double r11192490 = pow(r11192488, r11192489);
double r11192491 = 4.0;
double r11192492 = 1.0;
double r11192493 = r11192492 - r11192484;
double r11192494 = r11192485 * r11192493;
double r11192495 = 3.0;
double r11192496 = r11192495 + r11192484;
double r11192497 = r11192487 * r11192496;
double r11192498 = r11192494 + r11192497;
double r11192499 = r11192491 * r11192498;
double r11192500 = r11192490 + r11192499;
double r11192501 = r11192500 - r11192492;
return r11192501;
}
double f(double a, double b) {
double r11192502 = a;
double r11192503 = r11192502 * r11192502;
double r11192504 = 1.0;
double r11192505 = r11192504 - r11192502;
double r11192506 = b;
double r11192507 = r11192506 * r11192506;
double r11192508 = 3.0;
double r11192509 = r11192508 + r11192502;
double r11192510 = r11192507 * r11192509;
double r11192511 = fma(r11192503, r11192505, r11192510);
double r11192512 = 4.0;
double r11192513 = fma(r11192502, r11192502, r11192507);
double r11192514 = 2.0;
double r11192515 = pow(r11192513, r11192514);
double r11192516 = fma(r11192511, r11192512, r11192515);
double r11192517 = r11192516 - r11192504;
return r11192517;
}



Bits error versus a



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