\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 r215425 = a;
double r215426 = r215425 * r215425;
double r215427 = b;
double r215428 = r215427 * r215427;
double r215429 = r215426 + r215428;
double r215430 = 2.0;
double r215431 = pow(r215429, r215430);
double r215432 = 4.0;
double r215433 = 1.0;
double r215434 = r215433 + r215425;
double r215435 = r215426 * r215434;
double r215436 = 3.0;
double r215437 = r215436 * r215425;
double r215438 = r215433 - r215437;
double r215439 = r215428 * r215438;
double r215440 = r215435 + r215439;
double r215441 = r215432 * r215440;
double r215442 = r215431 + r215441;
double r215443 = r215442 - r215433;
return r215443;
}
double f(double a, double b) {
double r215444 = a;
double r215445 = r215444 * r215444;
double r215446 = b;
double r215447 = r215446 * r215446;
double r215448 = r215445 + r215447;
double r215449 = 2.0;
double r215450 = pow(r215448, r215449);
double r215451 = 4.0;
double r215452 = 1.0;
double r215453 = r215452 + r215444;
double r215454 = r215445 * r215453;
double r215455 = 3.0;
double r215456 = r215455 * r215444;
double r215457 = r215452 - r215456;
double r215458 = r215447 * r215457;
double r215459 = r215454 + r215458;
double r215460 = r215451 * r215459;
double r215461 = r215450 + r215460;
double r215462 = r215461 - r215452;
return r215462;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019353 +o rules:numerics
(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))