\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 r107925 = a;
double r107926 = r107925 * r107925;
double r107927 = b;
double r107928 = r107927 * r107927;
double r107929 = r107926 + r107928;
double r107930 = 2.0;
double r107931 = pow(r107929, r107930);
double r107932 = 4.0;
double r107933 = 1.0;
double r107934 = r107933 + r107925;
double r107935 = r107926 * r107934;
double r107936 = 3.0;
double r107937 = r107936 * r107925;
double r107938 = r107933 - r107937;
double r107939 = r107928 * r107938;
double r107940 = r107935 + r107939;
double r107941 = r107932 * r107940;
double r107942 = r107931 + r107941;
double r107943 = r107942 - r107933;
return r107943;
}
double f(double a, double b) {
double r107944 = a;
double r107945 = r107944 * r107944;
double r107946 = b;
double r107947 = r107946 * r107946;
double r107948 = r107945 + r107947;
double r107949 = 2.0;
double r107950 = pow(r107948, r107949);
double r107951 = 4.0;
double r107952 = 1.0;
double r107953 = r107952 + r107944;
double r107954 = r107945 * r107953;
double r107955 = 3.0;
double r107956 = r107955 * r107944;
double r107957 = r107952 - r107956;
double r107958 = r107947 * r107957;
double r107959 = r107954 + r107958;
double r107960 = r107951 * r107959;
double r107961 = r107950 + r107960;
double r107962 = r107961 - r107952;
return r107962;
}



Bits error versus a



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