\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 r194532 = a;
double r194533 = r194532 * r194532;
double r194534 = b;
double r194535 = r194534 * r194534;
double r194536 = r194533 + r194535;
double r194537 = 2.0;
double r194538 = pow(r194536, r194537);
double r194539 = 4.0;
double r194540 = 1.0;
double r194541 = r194540 - r194532;
double r194542 = r194533 * r194541;
double r194543 = 3.0;
double r194544 = r194543 + r194532;
double r194545 = r194535 * r194544;
double r194546 = r194542 + r194545;
double r194547 = r194539 * r194546;
double r194548 = r194538 + r194547;
double r194549 = r194548 - r194540;
return r194549;
}
double f(double a, double b) {
double r194550 = a;
double r194551 = r194550 * r194550;
double r194552 = 1.0;
double r194553 = r194552 - r194550;
double r194554 = b;
double r194555 = r194554 * r194554;
double r194556 = 3.0;
double r194557 = r194556 + r194550;
double r194558 = r194555 * r194557;
double r194559 = fma(r194551, r194553, r194558);
double r194560 = 4.0;
double r194561 = fma(r194550, r194550, r194555);
double r194562 = 2.0;
double r194563 = pow(r194561, r194562);
double r194564 = fma(r194559, r194560, r194563);
double r194565 = r194564 - r194552;
return r194565;
}



Bits error versus a



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