\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(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(1 + a\right) \cdot \left(a \cdot a\right)\right) \cdot 4 - \left(1 - {\left(b \cdot b + a \cdot a\right)}^{2}\right)double f(double a, double b) {
double r931449 = a;
double r931450 = r931449 * r931449;
double r931451 = b;
double r931452 = r931451 * r931451;
double r931453 = r931450 + r931452;
double r931454 = 2.0;
double r931455 = pow(r931453, r931454);
double r931456 = 4.0;
double r931457 = 1.0;
double r931458 = r931457 + r931449;
double r931459 = r931450 * r931458;
double r931460 = 3.0;
double r931461 = r931460 * r931449;
double r931462 = r931457 - r931461;
double r931463 = r931452 * r931462;
double r931464 = r931459 + r931463;
double r931465 = r931456 * r931464;
double r931466 = r931455 + r931465;
double r931467 = r931466 - r931457;
return r931467;
}
double f(double a, double b) {
double r931468 = 1.0;
double r931469 = 3.0;
double r931470 = a;
double r931471 = r931469 * r931470;
double r931472 = r931468 - r931471;
double r931473 = b;
double r931474 = r931473 * r931473;
double r931475 = r931472 * r931474;
double r931476 = r931468 + r931470;
double r931477 = r931470 * r931470;
double r931478 = r931476 * r931477;
double r931479 = r931475 + r931478;
double r931480 = 4.0;
double r931481 = r931479 * r931480;
double r931482 = r931474 + r931477;
double r931483 = 2.0;
double r931484 = pow(r931482, r931483);
double r931485 = r931468 - r931484;
double r931486 = r931481 - r931485;
return r931486;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019179
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))