\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({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 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) - 1double f(double a, double b) {
double r145746 = a;
double r145747 = r145746 * r145746;
double r145748 = b;
double r145749 = r145748 * r145748;
double r145750 = r145747 + r145749;
double r145751 = 2.0;
double r145752 = pow(r145750, r145751);
double r145753 = 4.0;
double r145754 = 1.0;
double r145755 = r145754 + r145746;
double r145756 = r145747 * r145755;
double r145757 = 3.0;
double r145758 = r145757 * r145746;
double r145759 = r145754 - r145758;
double r145760 = r145749 * r145759;
double r145761 = r145756 + r145760;
double r145762 = r145753 * r145761;
double r145763 = r145752 + r145762;
double r145764 = r145763 - r145754;
return r145764;
}
double f(double a, double b) {
double r145765 = a;
double r145766 = r145765 * r145765;
double r145767 = b;
double r145768 = r145767 * r145767;
double r145769 = r145766 + r145768;
double r145770 = 2.0;
double r145771 = 2.0;
double r145772 = r145770 / r145771;
double r145773 = pow(r145769, r145772);
double r145774 = 4.0;
double r145775 = 1.0;
double r145776 = r145775 + r145765;
double r145777 = r145766 * r145776;
double r145778 = 3.0;
double r145779 = r145778 * r145765;
double r145780 = r145775 - r145779;
double r145781 = r145768 * r145780;
double r145782 = r145777 + r145781;
double r145783 = r145774 * r145782;
double r145784 = fma(r145773, r145773, r145783);
double r145785 = r145784 - r145775;
return r145785;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied sqr-pow0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020025 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))