\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 r218778 = a;
double r218779 = r218778 * r218778;
double r218780 = b;
double r218781 = r218780 * r218780;
double r218782 = r218779 + r218781;
double r218783 = 2.0;
double r218784 = pow(r218782, r218783);
double r218785 = 4.0;
double r218786 = 1.0;
double r218787 = r218786 - r218778;
double r218788 = r218779 * r218787;
double r218789 = 3.0;
double r218790 = r218789 + r218778;
double r218791 = r218781 * r218790;
double r218792 = r218788 + r218791;
double r218793 = r218785 * r218792;
double r218794 = r218784 + r218793;
double r218795 = r218794 - r218786;
return r218795;
}
double f(double a, double b) {
double r218796 = 4.0;
double r218797 = a;
double r218798 = r218797 * r218797;
double r218799 = 1.0;
double r218800 = r218799 - r218797;
double r218801 = b;
double r218802 = r218801 * r218801;
double r218803 = 3.0;
double r218804 = r218803 + r218797;
double r218805 = r218802 * r218804;
double r218806 = fma(r218798, r218800, r218805);
double r218807 = r218798 + r218802;
double r218808 = 2.0;
double r218809 = pow(r218807, r218808);
double r218810 = r218809 - r218799;
double r218811 = fma(r218796, r218806, r218810);
return r218811;
}



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))