\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 r166391 = a;
double r166392 = r166391 * r166391;
double r166393 = b;
double r166394 = r166393 * r166393;
double r166395 = r166392 + r166394;
double r166396 = 2.0;
double r166397 = pow(r166395, r166396);
double r166398 = 4.0;
double r166399 = 1.0;
double r166400 = r166399 + r166391;
double r166401 = r166392 * r166400;
double r166402 = 3.0;
double r166403 = r166402 * r166391;
double r166404 = r166399 - r166403;
double r166405 = r166394 * r166404;
double r166406 = r166401 + r166405;
double r166407 = r166398 * r166406;
double r166408 = r166397 + r166407;
double r166409 = r166408 - r166399;
return r166409;
}
double f(double a, double b) {
double r166410 = a;
double r166411 = r166410 * r166410;
double r166412 = b;
double r166413 = r166412 * r166412;
double r166414 = r166411 + r166413;
double r166415 = 2.0;
double r166416 = pow(r166414, r166415);
double r166417 = 4.0;
double r166418 = 1.0;
double r166419 = r166418 + r166410;
double r166420 = r166411 * r166419;
double r166421 = 3.0;
double r166422 = r166421 * r166410;
double r166423 = r166418 - r166422;
double r166424 = r166413 * r166423;
double r166425 = r166420 + r166424;
double r166426 = r166417 * r166425;
double r166427 = r166416 + r166426;
double r166428 = r166427 - r166418;
return r166428;
}



Bits error versus a



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