\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 r310847 = a;
double r310848 = r310847 * r310847;
double r310849 = b;
double r310850 = r310849 * r310849;
double r310851 = r310848 + r310850;
double r310852 = 2.0;
double r310853 = pow(r310851, r310852);
double r310854 = 4.0;
double r310855 = 1.0;
double r310856 = r310855 + r310847;
double r310857 = r310848 * r310856;
double r310858 = 3.0;
double r310859 = r310858 * r310847;
double r310860 = r310855 - r310859;
double r310861 = r310850 * r310860;
double r310862 = r310857 + r310861;
double r310863 = r310854 * r310862;
double r310864 = r310853 + r310863;
double r310865 = r310864 - r310855;
return r310865;
}
double f(double a, double b) {
double r310866 = a;
double r310867 = r310866 * r310866;
double r310868 = b;
double r310869 = r310868 * r310868;
double r310870 = r310867 + r310869;
double r310871 = 2.0;
double r310872 = pow(r310870, r310871);
double r310873 = sqrt(r310872);
double r310874 = 4.0;
double r310875 = 1.0;
double r310876 = r310875 + r310866;
double r310877 = r310867 * r310876;
double r310878 = 3.0;
double r310879 = r310878 * r310866;
double r310880 = r310875 - r310879;
double r310881 = r310869 * r310880;
double r310882 = r310877 + r310881;
double r310883 = r310874 * r310882;
double r310884 = fma(r310873, r310873, r310883);
double r310885 = r310884 - r310875;
return r310885;
}



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