\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\mathsf{fma}\left(4, \mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right), {\left(a \cdot a + b \cdot b\right)}^{2} - 1\right)double f(double a, double b) {
double r383734 = a;
double r383735 = r383734 * r383734;
double r383736 = b;
double r383737 = r383736 * r383736;
double r383738 = r383735 + r383737;
double r383739 = 2.0;
double r383740 = pow(r383738, r383739);
double r383741 = 4.0;
double r383742 = 1.0;
double r383743 = r383742 - r383734;
double r383744 = r383735 * r383743;
double r383745 = 3.0;
double r383746 = r383745 + r383734;
double r383747 = r383737 * r383746;
double r383748 = r383744 + r383747;
double r383749 = r383741 * r383748;
double r383750 = r383740 + r383749;
double r383751 = r383750 - r383742;
return r383751;
}
double f(double a, double b) {
double r383752 = 4.0;
double r383753 = a;
double r383754 = r383753 * r383753;
double r383755 = 1.0;
double r383756 = r383755 - r383753;
double r383757 = b;
double r383758 = r383757 * r383757;
double r383759 = 3.0;
double r383760 = r383759 + r383753;
double r383761 = r383758 * r383760;
double r383762 = fma(r383754, r383756, r383761);
double r383763 = r383754 + r383758;
double r383764 = 2.0;
double r383765 = pow(r383763, r383764);
double r383766 = r383765 - r383755;
double r383767 = fma(r383752, r383762, r383766);
return r383767;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020001 +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))