\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\sqrt{\mathsf{fma}\left(\mathsf{fma}\left({a}^{2}, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} \cdot \sqrt{\mathsf{fma}\left(\mathsf{fma}\left({a}^{2}, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), 4, {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} - 1double f(double a, double b) {
double r325819 = a;
double r325820 = r325819 * r325819;
double r325821 = b;
double r325822 = r325821 * r325821;
double r325823 = r325820 + r325822;
double r325824 = 2.0;
double r325825 = pow(r325823, r325824);
double r325826 = 4.0;
double r325827 = 1.0;
double r325828 = r325827 + r325819;
double r325829 = r325820 * r325828;
double r325830 = 3.0;
double r325831 = r325830 * r325819;
double r325832 = r325827 - r325831;
double r325833 = r325822 * r325832;
double r325834 = r325829 + r325833;
double r325835 = r325826 * r325834;
double r325836 = r325825 + r325835;
double r325837 = r325836 - r325827;
return r325837;
}
double f(double a, double b) {
double r325838 = a;
double r325839 = 2.0;
double r325840 = pow(r325838, r325839);
double r325841 = 1.0;
double r325842 = r325841 + r325838;
double r325843 = b;
double r325844 = r325843 * r325843;
double r325845 = 3.0;
double r325846 = r325845 * r325838;
double r325847 = r325841 - r325846;
double r325848 = r325844 * r325847;
double r325849 = fma(r325840, r325842, r325848);
double r325850 = 4.0;
double r325851 = fma(r325838, r325838, r325844);
double r325852 = 2.0;
double r325853 = pow(r325851, r325852);
double r325854 = fma(r325849, r325850, r325853);
double r325855 = sqrt(r325854);
double r325856 = r325855 * r325855;
double r325857 = r325856 - r325841;
return r325857;
}



Bits error versus a



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