\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\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) - 1double f(double a, double b) {
double r226915 = a;
double r226916 = r226915 * r226915;
double r226917 = b;
double r226918 = r226917 * r226917;
double r226919 = r226916 + r226918;
double r226920 = 2.0;
double r226921 = pow(r226919, r226920);
double r226922 = 4.0;
double r226923 = 1.0;
double r226924 = r226923 - r226915;
double r226925 = r226916 * r226924;
double r226926 = 3.0;
double r226927 = r226926 + r226915;
double r226928 = r226918 * r226927;
double r226929 = r226925 + r226928;
double r226930 = r226922 * r226929;
double r226931 = r226921 + r226930;
double r226932 = r226931 - r226923;
return r226932;
}
double f(double a, double b) {
double r226933 = a;
double r226934 = r226933 * r226933;
double r226935 = b;
double r226936 = r226935 * r226935;
double r226937 = r226934 + r226936;
double r226938 = 2.0;
double r226939 = pow(r226937, r226938);
double r226940 = 4.0;
double r226941 = 1.0;
double r226942 = r226941 - r226933;
double r226943 = r226934 * r226942;
double r226944 = 3.0;
double r226945 = r226944 + r226933;
double r226946 = r226936 * r226945;
double r226947 = r226943 + r226946;
double r226948 = r226940 * r226947;
double r226949 = r226939 + r226948;
double r226950 = r226949 - r226941;
return r226950;
}



Bits error versus a



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