\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(1 - 3 \cdot 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(1 - 3 \cdot a\right)\right)\right) - 1double f(double a, double b) {
double r190731 = a;
double r190732 = r190731 * r190731;
double r190733 = b;
double r190734 = r190733 * r190733;
double r190735 = r190732 + r190734;
double r190736 = 2.0;
double r190737 = pow(r190735, r190736);
double r190738 = 4.0;
double r190739 = 1.0;
double r190740 = r190739 + r190731;
double r190741 = r190732 * r190740;
double r190742 = 3.0;
double r190743 = r190742 * r190731;
double r190744 = r190739 - r190743;
double r190745 = r190734 * r190744;
double r190746 = r190741 + r190745;
double r190747 = r190738 * r190746;
double r190748 = r190737 + r190747;
double r190749 = r190748 - r190739;
return r190749;
}
double f(double a, double b) {
double r190750 = a;
double r190751 = r190750 * r190750;
double r190752 = b;
double r190753 = r190752 * r190752;
double r190754 = r190751 + r190753;
double r190755 = 2.0;
double r190756 = pow(r190754, r190755);
double r190757 = 4.0;
double r190758 = 1.0;
double r190759 = r190758 + r190750;
double r190760 = r190751 * r190759;
double r190761 = 3.0;
double r190762 = r190761 * r190750;
double r190763 = r190758 - r190762;
double r190764 = r190753 * r190763;
double r190765 = r190760 + r190764;
double r190766 = r190757 * r190765;
double r190767 = r190756 + r190766;
double r190768 = r190767 - r190758;
return r190768;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2020057
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))