\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 r219408 = a;
double r219409 = r219408 * r219408;
double r219410 = b;
double r219411 = r219410 * r219410;
double r219412 = r219409 + r219411;
double r219413 = 2.0;
double r219414 = pow(r219412, r219413);
double r219415 = 4.0;
double r219416 = 1.0;
double r219417 = r219416 + r219408;
double r219418 = r219409 * r219417;
double r219419 = 3.0;
double r219420 = r219419 * r219408;
double r219421 = r219416 - r219420;
double r219422 = r219411 * r219421;
double r219423 = r219418 + r219422;
double r219424 = r219415 * r219423;
double r219425 = r219414 + r219424;
double r219426 = r219425 - r219416;
return r219426;
}
double f(double a, double b) {
double r219427 = a;
double r219428 = r219427 * r219427;
double r219429 = b;
double r219430 = r219429 * r219429;
double r219431 = r219428 + r219430;
double r219432 = 2.0;
double r219433 = pow(r219431, r219432);
double r219434 = 4.0;
double r219435 = 1.0;
double r219436 = r219435 + r219427;
double r219437 = r219428 * r219436;
double r219438 = 3.0;
double r219439 = r219438 * r219427;
double r219440 = r219435 - r219439;
double r219441 = r219430 * r219440;
double r219442 = r219437 + r219441;
double r219443 = r219434 * r219442;
double r219444 = r219433 + r219443;
double r219445 = r219444 - r219435;
return r219445;
}



Bits error versus a



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