\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 r153857 = a;
double r153858 = r153857 * r153857;
double r153859 = b;
double r153860 = r153859 * r153859;
double r153861 = r153858 + r153860;
double r153862 = 2.0;
double r153863 = pow(r153861, r153862);
double r153864 = 4.0;
double r153865 = 1.0;
double r153866 = r153865 + r153857;
double r153867 = r153858 * r153866;
double r153868 = 3.0;
double r153869 = r153868 * r153857;
double r153870 = r153865 - r153869;
double r153871 = r153860 * r153870;
double r153872 = r153867 + r153871;
double r153873 = r153864 * r153872;
double r153874 = r153863 + r153873;
double r153875 = r153874 - r153865;
return r153875;
}
double f(double a, double b) {
double r153876 = a;
double r153877 = r153876 * r153876;
double r153878 = b;
double r153879 = r153878 * r153878;
double r153880 = r153877 + r153879;
double r153881 = 2.0;
double r153882 = pow(r153880, r153881);
double r153883 = sqrt(r153882);
double r153884 = 4.0;
double r153885 = 1.0;
double r153886 = r153885 + r153876;
double r153887 = r153877 * r153886;
double r153888 = 3.0;
double r153889 = r153888 * r153876;
double r153890 = r153885 - r153889;
double r153891 = r153879 * r153890;
double r153892 = r153887 + r153891;
double r153893 = r153884 * r153892;
double r153894 = fma(r153883, r153883, r153893);
double r153895 = r153894 - r153885;
return r153895;
}



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 2020060 +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))