\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(1, {a}^{2}, 3 \cdot {b}^{2}\right) - {a}^{3}, 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r318693 = a;
double r318694 = r318693 * r318693;
double r318695 = b;
double r318696 = r318695 * r318695;
double r318697 = r318694 + r318696;
double r318698 = 2.0;
double r318699 = pow(r318697, r318698);
double r318700 = 4.0;
double r318701 = 1.0;
double r318702 = r318701 - r318693;
double r318703 = r318694 * r318702;
double r318704 = 3.0;
double r318705 = r318704 + r318693;
double r318706 = r318696 * r318705;
double r318707 = r318703 + r318706;
double r318708 = r318700 * r318707;
double r318709 = r318699 + r318708;
double r318710 = r318709 - r318701;
return r318710;
}
double f(double a, double b) {
double r318711 = 1.0;
double r318712 = a;
double r318713 = 2.0;
double r318714 = pow(r318712, r318713);
double r318715 = 3.0;
double r318716 = b;
double r318717 = pow(r318716, r318713);
double r318718 = r318715 * r318717;
double r318719 = fma(r318711, r318714, r318718);
double r318720 = 3.0;
double r318721 = pow(r318712, r318720);
double r318722 = r318719 - r318721;
double r318723 = 4.0;
double r318724 = r318716 * r318716;
double r318725 = fma(r318712, r318712, r318724);
double r318726 = 2.0;
double r318727 = pow(r318725, r318726);
double r318728 = fma(r318722, r318723, r318727);
double r318729 = r318728 - r318711;
return r318729;
}



Bits error versus a



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