\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 r353296 = a;
double r353297 = r353296 * r353296;
double r353298 = b;
double r353299 = r353298 * r353298;
double r353300 = r353297 + r353299;
double r353301 = 2.0;
double r353302 = pow(r353300, r353301);
double r353303 = 4.0;
double r353304 = 1.0;
double r353305 = r353304 + r353296;
double r353306 = r353297 * r353305;
double r353307 = 3.0;
double r353308 = r353307 * r353296;
double r353309 = r353304 - r353308;
double r353310 = r353299 * r353309;
double r353311 = r353306 + r353310;
double r353312 = r353303 * r353311;
double r353313 = r353302 + r353312;
double r353314 = r353313 - r353304;
return r353314;
}
double f(double a, double b) {
double r353315 = a;
double r353316 = r353315 * r353315;
double r353317 = b;
double r353318 = r353317 * r353317;
double r353319 = r353316 + r353318;
double r353320 = 2.0;
double r353321 = pow(r353319, r353320);
double r353322 = 4.0;
double r353323 = 1.0;
double r353324 = r353323 + r353315;
double r353325 = r353316 * r353324;
double r353326 = 3.0;
double r353327 = r353326 * r353315;
double r353328 = r353323 - r353327;
double r353329 = r353318 * r353328;
double r353330 = r353325 + r353329;
double r353331 = r353322 * r353330;
double r353332 = r353321 + r353331;
double r353333 = r353332 - r353323;
return r353333;
}



Bits error versus a



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