\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(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt{{\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) - 1double f(double a, double b) {
double r136787 = a;
double r136788 = r136787 * r136787;
double r136789 = b;
double r136790 = r136789 * r136789;
double r136791 = r136788 + r136790;
double r136792 = 2.0;
double r136793 = pow(r136791, r136792);
double r136794 = 4.0;
double r136795 = 1.0;
double r136796 = r136795 + r136787;
double r136797 = r136788 * r136796;
double r136798 = 3.0;
double r136799 = r136798 * r136787;
double r136800 = r136795 - r136799;
double r136801 = r136790 * r136800;
double r136802 = r136797 + r136801;
double r136803 = r136794 * r136802;
double r136804 = r136793 + r136803;
double r136805 = r136804 - r136795;
return r136805;
}
double f(double a, double b) {
double r136806 = a;
double r136807 = r136806 * r136806;
double r136808 = b;
double r136809 = r136808 * r136808;
double r136810 = r136807 + r136809;
double r136811 = 2.0;
double r136812 = pow(r136810, r136811);
double r136813 = sqrt(r136812);
double r136814 = 4.0;
double r136815 = 1.0;
double r136816 = r136815 + r136806;
double r136817 = r136807 * r136816;
double r136818 = 3.0;
double r136819 = r136818 * r136806;
double r136820 = r136815 - r136819;
double r136821 = r136809 * r136820;
double r136822 = r136817 + r136821;
double r136823 = r136814 * r136822;
double r136824 = fma(r136813, r136813, r136823);
double r136825 = r136824 - r136815;
return r136825;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020001 +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))