\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(\sqrt{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt{{\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 r242757 = a;
double r242758 = r242757 * r242757;
double r242759 = b;
double r242760 = r242759 * r242759;
double r242761 = r242758 + r242760;
double r242762 = 2.0;
double r242763 = pow(r242761, r242762);
double r242764 = 4.0;
double r242765 = 1.0;
double r242766 = r242765 + r242757;
double r242767 = r242758 * r242766;
double r242768 = 3.0;
double r242769 = r242768 * r242757;
double r242770 = r242765 - r242769;
double r242771 = r242760 * r242770;
double r242772 = r242767 + r242771;
double r242773 = r242764 * r242772;
double r242774 = r242763 + r242773;
double r242775 = r242774 - r242765;
return r242775;
}
double f(double a, double b) {
double r242776 = a;
double r242777 = r242776 * r242776;
double r242778 = b;
double r242779 = r242778 * r242778;
double r242780 = r242777 + r242779;
double r242781 = 2.0;
double r242782 = pow(r242780, r242781);
double r242783 = sqrt(r242782);
double r242784 = 4.0;
double r242785 = 1.0;
double r242786 = r242785 + r242776;
double r242787 = r242777 * r242786;
double r242788 = 3.0;
double r242789 = r242788 * r242776;
double r242790 = r242785 - r242789;
double r242791 = r242779 * r242790;
double r242792 = r242787 + r242791;
double r242793 = r242784 * r242792;
double r242794 = fma(r242783, r242783, r242793);
double r242795 = r242794 - r242785;
return r242795;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020083 +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))