\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 r252385 = a;
double r252386 = r252385 * r252385;
double r252387 = b;
double r252388 = r252387 * r252387;
double r252389 = r252386 + r252388;
double r252390 = 2.0;
double r252391 = pow(r252389, r252390);
double r252392 = 4.0;
double r252393 = 1.0;
double r252394 = r252393 + r252385;
double r252395 = r252386 * r252394;
double r252396 = 3.0;
double r252397 = r252396 * r252385;
double r252398 = r252393 - r252397;
double r252399 = r252388 * r252398;
double r252400 = r252395 + r252399;
double r252401 = r252392 * r252400;
double r252402 = r252391 + r252401;
double r252403 = r252402 - r252393;
return r252403;
}
double f(double a, double b) {
double r252404 = a;
double r252405 = r252404 * r252404;
double r252406 = b;
double r252407 = r252406 * r252406;
double r252408 = r252405 + r252407;
double r252409 = 2.0;
double r252410 = pow(r252408, r252409);
double r252411 = 4.0;
double r252412 = 1.0;
double r252413 = r252412 + r252404;
double r252414 = r252405 * r252413;
double r252415 = 3.0;
double r252416 = r252415 * r252404;
double r252417 = r252412 - r252416;
double r252418 = r252407 * r252417;
double r252419 = r252414 + r252418;
double r252420 = r252411 * r252419;
double r252421 = r252410 + r252420;
double r252422 = r252421 - r252412;
return r252422;
}



Bits error versus a



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