\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(\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(3 + a\right)\right)\right) - 1double f(double a, double b) {
double r370847 = a;
double r370848 = r370847 * r370847;
double r370849 = b;
double r370850 = r370849 * r370849;
double r370851 = r370848 + r370850;
double r370852 = 2.0;
double r370853 = pow(r370851, r370852);
double r370854 = 4.0;
double r370855 = 1.0;
double r370856 = r370855 - r370847;
double r370857 = r370848 * r370856;
double r370858 = 3.0;
double r370859 = r370858 + r370847;
double r370860 = r370850 * r370859;
double r370861 = r370857 + r370860;
double r370862 = r370854 * r370861;
double r370863 = r370853 + r370862;
double r370864 = r370863 - r370855;
return r370864;
}
double f(double a, double b) {
double r370865 = a;
double r370866 = r370865 * r370865;
double r370867 = b;
double r370868 = r370867 * r370867;
double r370869 = r370866 + r370868;
double r370870 = 2.0;
double r370871 = pow(r370869, r370870);
double r370872 = sqrt(r370871);
double r370873 = 4.0;
double r370874 = 1.0;
double r370875 = r370874 - r370865;
double r370876 = r370866 * r370875;
double r370877 = 3.0;
double r370878 = r370877 + r370865;
double r370879 = r370868 * r370878;
double r370880 = r370876 + r370879;
double r370881 = r370873 * r370880;
double r370882 = fma(r370872, r370872, r370881);
double r370883 = r370882 - r370874;
return r370883;
}



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 2020057 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))