\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\sqrt{{\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)} \cdot \left(\sqrt{\sqrt{{\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)}} \cdot \sqrt{\sqrt{{\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 r237983 = a;
double r237984 = r237983 * r237983;
double r237985 = b;
double r237986 = r237985 * r237985;
double r237987 = r237984 + r237986;
double r237988 = 2.0;
double r237989 = pow(r237987, r237988);
double r237990 = 4.0;
double r237991 = 1.0;
double r237992 = r237991 + r237983;
double r237993 = r237984 * r237992;
double r237994 = 3.0;
double r237995 = r237994 * r237983;
double r237996 = r237991 - r237995;
double r237997 = r237986 * r237996;
double r237998 = r237993 + r237997;
double r237999 = r237990 * r237998;
double r238000 = r237989 + r237999;
double r238001 = r238000 - r237991;
return r238001;
}
double f(double a, double b) {
double r238002 = a;
double r238003 = r238002 * r238002;
double r238004 = b;
double r238005 = r238004 * r238004;
double r238006 = r238003 + r238005;
double r238007 = 2.0;
double r238008 = pow(r238006, r238007);
double r238009 = 4.0;
double r238010 = 1.0;
double r238011 = r238010 + r238002;
double r238012 = r238003 * r238011;
double r238013 = 3.0;
double r238014 = r238013 * r238002;
double r238015 = r238010 - r238014;
double r238016 = r238005 * r238015;
double r238017 = r238012 + r238016;
double r238018 = r238009 * r238017;
double r238019 = r238008 + r238018;
double r238020 = sqrt(r238019);
double r238021 = sqrt(r238020);
double r238022 = r238021 * r238021;
double r238023 = r238020 * r238022;
double r238024 = r238023 - r238010;
return r238024;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
rmApplied add-sqr-sqrt0.2
rmApplied add-sqr-sqrt0.2
Applied sqrt-prod0.2
Final simplification0.2
herbie shell --seed 2020046
(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))