\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 r229912 = a;
double r229913 = r229912 * r229912;
double r229914 = b;
double r229915 = r229914 * r229914;
double r229916 = r229913 + r229915;
double r229917 = 2.0;
double r229918 = pow(r229916, r229917);
double r229919 = 4.0;
double r229920 = 1.0;
double r229921 = r229920 + r229912;
double r229922 = r229913 * r229921;
double r229923 = 3.0;
double r229924 = r229923 * r229912;
double r229925 = r229920 - r229924;
double r229926 = r229915 * r229925;
double r229927 = r229922 + r229926;
double r229928 = r229919 * r229927;
double r229929 = r229918 + r229928;
double r229930 = r229929 - r229920;
return r229930;
}
double f(double a, double b) {
double r229931 = a;
double r229932 = r229931 * r229931;
double r229933 = b;
double r229934 = r229933 * r229933;
double r229935 = r229932 + r229934;
double r229936 = 2.0;
double r229937 = pow(r229935, r229936);
double r229938 = 4.0;
double r229939 = 1.0;
double r229940 = r229939 + r229931;
double r229941 = r229932 * r229940;
double r229942 = 3.0;
double r229943 = r229942 * r229931;
double r229944 = r229939 - r229943;
double r229945 = r229934 * r229944;
double r229946 = r229941 + r229945;
double r229947 = r229938 * r229946;
double r229948 = r229937 + r229947;
double r229949 = r229948 - r229939;
return r229949;
}



Bits error versus a



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