\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 r98490 = a;
double r98491 = r98490 * r98490;
double r98492 = b;
double r98493 = r98492 * r98492;
double r98494 = r98491 + r98493;
double r98495 = 2.0;
double r98496 = pow(r98494, r98495);
double r98497 = 4.0;
double r98498 = 1.0;
double r98499 = r98498 + r98490;
double r98500 = r98491 * r98499;
double r98501 = 3.0;
double r98502 = r98501 * r98490;
double r98503 = r98498 - r98502;
double r98504 = r98493 * r98503;
double r98505 = r98500 + r98504;
double r98506 = r98497 * r98505;
double r98507 = r98496 + r98506;
double r98508 = r98507 - r98498;
return r98508;
}
double f(double a, double b) {
double r98509 = a;
double r98510 = r98509 * r98509;
double r98511 = b;
double r98512 = r98511 * r98511;
double r98513 = r98510 + r98512;
double r98514 = 2.0;
double r98515 = pow(r98513, r98514);
double r98516 = 4.0;
double r98517 = 1.0;
double r98518 = r98517 + r98509;
double r98519 = r98510 * r98518;
double r98520 = 3.0;
double r98521 = r98520 * r98509;
double r98522 = r98517 - r98521;
double r98523 = r98512 * r98522;
double r98524 = r98519 + r98523;
double r98525 = r98516 * r98524;
double r98526 = r98515 + r98525;
double r98527 = r98526 - r98517;
return r98527;
}



Bits error versus a



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