\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 r251707 = a;
double r251708 = r251707 * r251707;
double r251709 = b;
double r251710 = r251709 * r251709;
double r251711 = r251708 + r251710;
double r251712 = 2.0;
double r251713 = pow(r251711, r251712);
double r251714 = 4.0;
double r251715 = 1.0;
double r251716 = r251715 - r251707;
double r251717 = r251708 * r251716;
double r251718 = 3.0;
double r251719 = r251718 + r251707;
double r251720 = r251710 * r251719;
double r251721 = r251717 + r251720;
double r251722 = r251714 * r251721;
double r251723 = r251713 + r251722;
double r251724 = r251723 - r251715;
return r251724;
}
double f(double a, double b) {
double r251725 = a;
double r251726 = r251725 * r251725;
double r251727 = b;
double r251728 = r251727 * r251727;
double r251729 = r251726 + r251728;
double r251730 = 2.0;
double r251731 = pow(r251729, r251730);
double r251732 = 4.0;
double r251733 = 1.0;
double r251734 = r251733 - r251725;
double r251735 = r251726 * r251734;
double r251736 = 3.0;
double r251737 = r251736 + r251725;
double r251738 = r251728 * r251737;
double r251739 = r251735 + r251738;
double r251740 = r251732 * r251739;
double r251741 = r251731 + r251740;
double r251742 = r251741 - r251733;
return r251742;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019306 +o rules:numerics
(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))