\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 r219737 = a;
double r219738 = r219737 * r219737;
double r219739 = b;
double r219740 = r219739 * r219739;
double r219741 = r219738 + r219740;
double r219742 = 2.0;
double r219743 = pow(r219741, r219742);
double r219744 = 4.0;
double r219745 = 1.0;
double r219746 = r219745 - r219737;
double r219747 = r219738 * r219746;
double r219748 = 3.0;
double r219749 = r219748 + r219737;
double r219750 = r219740 * r219749;
double r219751 = r219747 + r219750;
double r219752 = r219744 * r219751;
double r219753 = r219743 + r219752;
double r219754 = r219753 - r219745;
return r219754;
}
double f(double a, double b) {
double r219755 = a;
double r219756 = r219755 * r219755;
double r219757 = b;
double r219758 = r219757 * r219757;
double r219759 = r219756 + r219758;
double r219760 = 2.0;
double r219761 = pow(r219759, r219760);
double r219762 = 4.0;
double r219763 = 1.0;
double r219764 = r219763 - r219755;
double r219765 = r219756 * r219764;
double r219766 = 3.0;
double r219767 = r219766 + r219755;
double r219768 = r219758 * r219767;
double r219769 = r219765 + r219768;
double r219770 = r219762 * r219769;
double r219771 = r219761 + r219770;
double r219772 = r219771 - r219763;
return r219772;
}



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 (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))