\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(3 + 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(3 + a\right)\right)\right) - 1double f(double a, double b) {
double r355410 = a;
double r355411 = r355410 * r355410;
double r355412 = b;
double r355413 = r355412 * r355412;
double r355414 = r355411 + r355413;
double r355415 = 2.0;
double r355416 = pow(r355414, r355415);
double r355417 = 4.0;
double r355418 = 1.0;
double r355419 = r355418 - r355410;
double r355420 = r355411 * r355419;
double r355421 = 3.0;
double r355422 = r355421 + r355410;
double r355423 = r355413 * r355422;
double r355424 = r355420 + r355423;
double r355425 = r355417 * r355424;
double r355426 = r355416 + r355425;
double r355427 = r355426 - r355418;
return r355427;
}
double f(double a, double b) {
double r355428 = a;
double r355429 = r355428 * r355428;
double r355430 = b;
double r355431 = r355430 * r355430;
double r355432 = r355429 + r355431;
double r355433 = 2.0;
double r355434 = pow(r355432, r355433);
double r355435 = 4.0;
double r355436 = 1.0;
double r355437 = r355436 - r355428;
double r355438 = r355429 * r355437;
double r355439 = 3.0;
double r355440 = r355439 + r355428;
double r355441 = r355431 * r355440;
double r355442 = r355438 + r355441;
double r355443 = r355435 * r355442;
double r355444 = r355434 + r355443;
double r355445 = r355444 - r355436;
return r355445;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2020020 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))