\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 r251613 = a;
double r251614 = r251613 * r251613;
double r251615 = b;
double r251616 = r251615 * r251615;
double r251617 = r251614 + r251616;
double r251618 = 2.0;
double r251619 = pow(r251617, r251618);
double r251620 = 4.0;
double r251621 = 1.0;
double r251622 = r251621 - r251613;
double r251623 = r251614 * r251622;
double r251624 = 3.0;
double r251625 = r251624 + r251613;
double r251626 = r251616 * r251625;
double r251627 = r251623 + r251626;
double r251628 = r251620 * r251627;
double r251629 = r251619 + r251628;
double r251630 = r251629 - r251621;
return r251630;
}
double f(double a, double b) {
double r251631 = a;
double r251632 = r251631 * r251631;
double r251633 = b;
double r251634 = r251633 * r251633;
double r251635 = r251632 + r251634;
double r251636 = 2.0;
double r251637 = pow(r251635, r251636);
double r251638 = 4.0;
double r251639 = 1.0;
double r251640 = r251639 - r251631;
double r251641 = r251632 * r251640;
double r251642 = 3.0;
double r251643 = r251642 + r251631;
double r251644 = r251634 * r251643;
double r251645 = r251641 + r251644;
double r251646 = r251638 * r251645;
double r251647 = r251637 + r251646;
double r251648 = r251647 - r251639;
return r251648;
}



Bits error versus a



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