\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 r254518 = a;
double r254519 = r254518 * r254518;
double r254520 = b;
double r254521 = r254520 * r254520;
double r254522 = r254519 + r254521;
double r254523 = 2.0;
double r254524 = pow(r254522, r254523);
double r254525 = 4.0;
double r254526 = 1.0;
double r254527 = r254526 - r254518;
double r254528 = r254519 * r254527;
double r254529 = 3.0;
double r254530 = r254529 + r254518;
double r254531 = r254521 * r254530;
double r254532 = r254528 + r254531;
double r254533 = r254525 * r254532;
double r254534 = r254524 + r254533;
double r254535 = r254534 - r254526;
return r254535;
}
double f(double a, double b) {
double r254536 = a;
double r254537 = r254536 * r254536;
double r254538 = b;
double r254539 = r254538 * r254538;
double r254540 = r254537 + r254539;
double r254541 = 2.0;
double r254542 = pow(r254540, r254541);
double r254543 = 4.0;
double r254544 = 1.0;
double r254545 = r254544 - r254536;
double r254546 = r254537 * r254545;
double r254547 = 3.0;
double r254548 = r254547 + r254536;
double r254549 = r254539 * r254548;
double r254550 = r254546 + r254549;
double r254551 = r254543 * r254550;
double r254552 = r254542 + r254551;
double r254553 = r254552 - r254544;
return r254553;
}



Bits error versus a



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