\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 r16962463 = a;
double r16962464 = r16962463 * r16962463;
double r16962465 = b;
double r16962466 = r16962465 * r16962465;
double r16962467 = r16962464 + r16962466;
double r16962468 = 2.0;
double r16962469 = pow(r16962467, r16962468);
double r16962470 = 4.0;
double r16962471 = 1.0;
double r16962472 = r16962471 - r16962463;
double r16962473 = r16962464 * r16962472;
double r16962474 = 3.0;
double r16962475 = r16962474 + r16962463;
double r16962476 = r16962466 * r16962475;
double r16962477 = r16962473 + r16962476;
double r16962478 = r16962470 * r16962477;
double r16962479 = r16962469 + r16962478;
double r16962480 = r16962479 - r16962471;
return r16962480;
}
double f(double a, double b) {
double r16962481 = 3.0;
double r16962482 = b;
double r16962483 = r16962482 * r16962482;
double r16962484 = a;
double r16962485 = 1.0;
double r16962486 = r16962485 - r16962484;
double r16962487 = fma(r16962486, r16962484, r16962483);
double r16962488 = r16962484 * r16962487;
double r16962489 = fma(r16962481, r16962483, r16962488);
double r16962490 = 4.0;
double r16962491 = r16962484 * r16962484;
double r16962492 = fma(r16962482, r16962482, r16962491);
double r16962493 = 2.0;
double r16962494 = pow(r16962492, r16962493);
double r16962495 = fma(r16962489, r16962490, r16962494);
double r16962496 = r16962495 - r16962485;
return r16962496;
}



Bits error versus a



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