\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 r352592 = a;
double r352593 = r352592 * r352592;
double r352594 = b;
double r352595 = r352594 * r352594;
double r352596 = r352593 + r352595;
double r352597 = 2.0;
double r352598 = pow(r352596, r352597);
double r352599 = 4.0;
double r352600 = 1.0;
double r352601 = r352600 - r352592;
double r352602 = r352593 * r352601;
double r352603 = 3.0;
double r352604 = r352603 + r352592;
double r352605 = r352595 * r352604;
double r352606 = r352602 + r352605;
double r352607 = r352599 * r352606;
double r352608 = r352598 + r352607;
double r352609 = r352608 - r352600;
return r352609;
}
double f(double a, double b) {
double r352610 = a;
double r352611 = r352610 * r352610;
double r352612 = b;
double r352613 = r352612 * r352612;
double r352614 = r352611 + r352613;
double r352615 = 2.0;
double r352616 = pow(r352614, r352615);
double r352617 = 4.0;
double r352618 = 1.0;
double r352619 = r352618 - r352610;
double r352620 = r352611 * r352619;
double r352621 = 3.0;
double r352622 = r352621 + r352610;
double r352623 = r352613 * r352622;
double r352624 = r352620 + r352623;
double r352625 = r352617 * r352624;
double r352626 = r352616 + r352625;
double r352627 = r352626 - r352618;
return r352627;
}



Bits error versus a



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