\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\sqrt{{\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)} \cdot \sqrt{{\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)} - 1double f(double a, double b) {
double r438 = a;
double r439 = r438 * r438;
double r440 = b;
double r441 = r440 * r440;
double r442 = r439 + r441;
double r443 = 2.0;
double r444 = pow(r442, r443);
double r445 = 4.0;
double r446 = 1.0;
double r447 = r446 + r438;
double r448 = r439 * r447;
double r449 = 3.0;
double r450 = r449 * r438;
double r451 = r446 - r450;
double r452 = r441 * r451;
double r453 = r448 + r452;
double r454 = r445 * r453;
double r455 = r444 + r454;
double r456 = r455 - r446;
return r456;
}
double f(double a, double b) {
double r457 = a;
double r458 = r457 * r457;
double r459 = b;
double r460 = r459 * r459;
double r461 = r458 + r460;
double r462 = 2.0;
double r463 = pow(r461, r462);
double r464 = 4.0;
double r465 = 1.0;
double r466 = r465 + r457;
double r467 = r458 * r466;
double r468 = 3.0;
double r469 = r468 * r457;
double r470 = r465 - r469;
double r471 = r460 * r470;
double r472 = r467 + r471;
double r473 = r464 * r472;
double r474 = r463 + r473;
double r475 = sqrt(r474);
double r476 = r475 * r475;
double r477 = r476 - r465;
return r477;
}



Bits error versus a



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