\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 r436966 = a;
double r436967 = r436966 * r436966;
double r436968 = b;
double r436969 = r436968 * r436968;
double r436970 = r436967 + r436969;
double r436971 = 2.0;
double r436972 = pow(r436970, r436971);
double r436973 = 4.0;
double r436974 = 1.0;
double r436975 = r436974 + r436966;
double r436976 = r436967 * r436975;
double r436977 = 3.0;
double r436978 = r436977 * r436966;
double r436979 = r436974 - r436978;
double r436980 = r436969 * r436979;
double r436981 = r436976 + r436980;
double r436982 = r436973 * r436981;
double r436983 = r436972 + r436982;
double r436984 = r436983 - r436974;
return r436984;
}
double f(double a, double b) {
double r436985 = a;
double r436986 = r436985 * r436985;
double r436987 = b;
double r436988 = r436987 * r436987;
double r436989 = r436986 + r436988;
double r436990 = 2.0;
double r436991 = pow(r436989, r436990);
double r436992 = 4.0;
double r436993 = 1.0;
double r436994 = r436993 + r436985;
double r436995 = r436986 * r436994;
double r436996 = 3.0;
double r436997 = r436996 * r436985;
double r436998 = r436993 - r436997;
double r436999 = r436988 * r436998;
double r437000 = r436995 + r436999;
double r437001 = r436992 * r437000;
double r437002 = r436991 + r437001;
double r437003 = r437002 - r436993;
return r437003;
}



Bits error versus a



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