\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 r245876 = a;
double r245877 = r245876 * r245876;
double r245878 = b;
double r245879 = r245878 * r245878;
double r245880 = r245877 + r245879;
double r245881 = 2.0;
double r245882 = pow(r245880, r245881);
double r245883 = 4.0;
double r245884 = 1.0;
double r245885 = r245884 + r245876;
double r245886 = r245877 * r245885;
double r245887 = 3.0;
double r245888 = r245887 * r245876;
double r245889 = r245884 - r245888;
double r245890 = r245879 * r245889;
double r245891 = r245886 + r245890;
double r245892 = r245883 * r245891;
double r245893 = r245882 + r245892;
double r245894 = r245893 - r245884;
return r245894;
}
double f(double a, double b) {
double r245895 = a;
double r245896 = r245895 * r245895;
double r245897 = b;
double r245898 = r245897 * r245897;
double r245899 = r245896 + r245898;
double r245900 = 2.0;
double r245901 = pow(r245899, r245900);
double r245902 = 4.0;
double r245903 = 1.0;
double r245904 = r245903 + r245895;
double r245905 = r245896 * r245904;
double r245906 = 3.0;
double r245907 = r245906 * r245895;
double r245908 = r245903 - r245907;
double r245909 = r245898 * r245908;
double r245910 = r245905 + r245909;
double r245911 = r245902 * r245910;
double r245912 = r245901 + r245911;
double r245913 = r245912 - r245903;
return r245913;
}



Bits error versus a



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