\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 r118993 = a;
double r118994 = r118993 * r118993;
double r118995 = b;
double r118996 = r118995 * r118995;
double r118997 = r118994 + r118996;
double r118998 = 2.0;
double r118999 = pow(r118997, r118998);
double r119000 = 4.0;
double r119001 = 1.0;
double r119002 = r119001 + r118993;
double r119003 = r118994 * r119002;
double r119004 = 3.0;
double r119005 = r119004 * r118993;
double r119006 = r119001 - r119005;
double r119007 = r118996 * r119006;
double r119008 = r119003 + r119007;
double r119009 = r119000 * r119008;
double r119010 = r118999 + r119009;
double r119011 = r119010 - r119001;
return r119011;
}
double f(double a, double b) {
double r119012 = a;
double r119013 = r119012 * r119012;
double r119014 = b;
double r119015 = r119014 * r119014;
double r119016 = r119013 + r119015;
double r119017 = 2.0;
double r119018 = pow(r119016, r119017);
double r119019 = 4.0;
double r119020 = 1.0;
double r119021 = r119020 + r119012;
double r119022 = r119013 * r119021;
double r119023 = 3.0;
double r119024 = r119023 * r119012;
double r119025 = r119020 - r119024;
double r119026 = r119015 * r119025;
double r119027 = r119022 + r119026;
double r119028 = r119019 * r119027;
double r119029 = r119018 + r119028;
double r119030 = r119029 - r119020;
return r119030;
}



Bits error versus a



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