\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\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) - 1double f(double a, double b) {
double r319856 = a;
double r319857 = r319856 * r319856;
double r319858 = b;
double r319859 = r319858 * r319858;
double r319860 = r319857 + r319859;
double r319861 = 2.0;
double r319862 = pow(r319860, r319861);
double r319863 = 4.0;
double r319864 = 1.0;
double r319865 = r319864 + r319856;
double r319866 = r319857 * r319865;
double r319867 = 3.0;
double r319868 = r319867 * r319856;
double r319869 = r319864 - r319868;
double r319870 = r319859 * r319869;
double r319871 = r319866 + r319870;
double r319872 = r319863 * r319871;
double r319873 = r319862 + r319872;
double r319874 = r319873 - r319864;
return r319874;
}
double f(double a, double b) {
double r319875 = a;
double r319876 = r319875 * r319875;
double r319877 = b;
double r319878 = r319877 * r319877;
double r319879 = r319876 + r319878;
double r319880 = 2.0;
double r319881 = pow(r319879, r319880);
double r319882 = 4.0;
double r319883 = 1.0;
double r319884 = r319883 + r319875;
double r319885 = r319876 * r319884;
double r319886 = 3.0;
double r319887 = r319886 * r319875;
double r319888 = r319883 - r319887;
double r319889 = r319878 * r319888;
double r319890 = r319885 + r319889;
double r319891 = r319882 * r319890;
double r319892 = r319881 + r319891;
double r319893 = r319892 - r319883;
return r319893;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2020018 +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))