\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 r144308 = a;
double r144309 = r144308 * r144308;
double r144310 = b;
double r144311 = r144310 * r144310;
double r144312 = r144309 + r144311;
double r144313 = 2.0;
double r144314 = pow(r144312, r144313);
double r144315 = 4.0;
double r144316 = 1.0;
double r144317 = r144316 + r144308;
double r144318 = r144309 * r144317;
double r144319 = 3.0;
double r144320 = r144319 * r144308;
double r144321 = r144316 - r144320;
double r144322 = r144311 * r144321;
double r144323 = r144318 + r144322;
double r144324 = r144315 * r144323;
double r144325 = r144314 + r144324;
double r144326 = r144325 - r144316;
return r144326;
}
double f(double a, double b) {
double r144327 = a;
double r144328 = r144327 * r144327;
double r144329 = b;
double r144330 = r144329 * r144329;
double r144331 = r144328 + r144330;
double r144332 = 2.0;
double r144333 = pow(r144331, r144332);
double r144334 = 4.0;
double r144335 = 1.0;
double r144336 = r144335 + r144327;
double r144337 = r144328 * r144336;
double r144338 = 3.0;
double r144339 = r144338 * r144327;
double r144340 = r144335 - r144339;
double r144341 = r144330 * r144340;
double r144342 = r144337 + r144341;
double r144343 = r144334 * r144342;
double r144344 = r144333 + r144343;
double r144345 = r144344 - r144335;
return r144345;
}



Bits error versus a



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