\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\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 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 r229740 = a;
double r229741 = r229740 * r229740;
double r229742 = b;
double r229743 = r229742 * r229742;
double r229744 = r229741 + r229743;
double r229745 = 2.0;
double r229746 = pow(r229744, r229745);
double r229747 = 4.0;
double r229748 = 1.0;
double r229749 = r229748 + r229740;
double r229750 = r229741 * r229749;
double r229751 = 3.0;
double r229752 = r229751 * r229740;
double r229753 = r229748 - r229752;
double r229754 = r229743 * r229753;
double r229755 = r229750 + r229754;
double r229756 = r229747 * r229755;
double r229757 = r229746 + r229756;
double r229758 = r229757 - r229748;
return r229758;
}
double f(double a, double b) {
double r229759 = a;
double r229760 = r229759 * r229759;
double r229761 = b;
double r229762 = r229761 * r229761;
double r229763 = r229760 + r229762;
double r229764 = 2.0;
double r229765 = 2.0;
double r229766 = r229764 / r229765;
double r229767 = pow(r229763, r229766);
double r229768 = 4.0;
double r229769 = 1.0;
double r229770 = r229769 + r229759;
double r229771 = r229760 * r229770;
double r229772 = 3.0;
double r229773 = r229772 * r229759;
double r229774 = r229769 - r229773;
double r229775 = r229762 * r229774;
double r229776 = r229771 + r229775;
double r229777 = r229768 * r229776;
double r229778 = fma(r229767, r229767, r229777);
double r229779 = r229778 - r229769;
return r229779;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied sqr-pow0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2019304 +o rules:numerics
(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))