\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(1 - 3 \cdot a\right)\right)\right) - 1\mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r118566 = a;
double r118567 = r118566 * r118566;
double r118568 = b;
double r118569 = r118568 * r118568;
double r118570 = r118567 + r118569;
double r118571 = 2.0;
double r118572 = pow(r118570, r118571);
double r118573 = 4.0;
double r118574 = 1.0;
double r118575 = r118574 + r118566;
double r118576 = r118567 * r118575;
double r118577 = 3.0;
double r118578 = r118577 * r118566;
double r118579 = r118574 - r118578;
double r118580 = r118569 * r118579;
double r118581 = r118576 + r118580;
double r118582 = r118573 * r118581;
double r118583 = r118572 + r118582;
double r118584 = r118583 - r118574;
return r118584;
}
double f(double a, double b) {
double r118585 = 4.0;
double r118586 = a;
double r118587 = r118586 * r118586;
double r118588 = 1.0;
double r118589 = r118588 + r118586;
double r118590 = b;
double r118591 = r118590 * r118590;
double r118592 = 3.0;
double r118593 = r118592 * r118586;
double r118594 = r118588 - r118593;
double r118595 = r118591 * r118594;
double r118596 = fma(r118587, r118589, r118595);
double r118597 = fma(r118586, r118586, r118591);
double r118598 = 2.0;
double r118599 = pow(r118597, r118598);
double r118600 = fma(r118585, r118596, r118599);
double r118601 = r118600 - r118588;
return r118601;
}



Bits error versus a



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