\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(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), \left({\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{\left(\frac{2}{2}\right)} \cdot {\left(\mathsf{hypot}\left(a, b\right)\right)}^{\left(2 \cdot \frac{2}{4}\right)}\right) \cdot {\left(\sqrt{\mathsf{fma}\left(a, a, b \cdot b\right)}\right)}^{\left(\frac{2}{2}\right)} - 1\right)double f(double a, double b) {
double r214901 = a;
double r214902 = r214901 * r214901;
double r214903 = b;
double r214904 = r214903 * r214903;
double r214905 = r214902 + r214904;
double r214906 = 2.0;
double r214907 = pow(r214905, r214906);
double r214908 = 4.0;
double r214909 = 1.0;
double r214910 = r214909 + r214901;
double r214911 = r214902 * r214910;
double r214912 = 3.0;
double r214913 = r214912 * r214901;
double r214914 = r214909 - r214913;
double r214915 = r214904 * r214914;
double r214916 = r214911 + r214915;
double r214917 = r214908 * r214916;
double r214918 = r214907 + r214917;
double r214919 = r214918 - r214909;
return r214919;
}
double f(double a, double b) {
double r214920 = 4.0;
double r214921 = a;
double r214922 = r214921 * r214921;
double r214923 = 1.0;
double r214924 = r214923 + r214921;
double r214925 = b;
double r214926 = r214925 * r214925;
double r214927 = 3.0;
double r214928 = r214927 * r214921;
double r214929 = r214923 - r214928;
double r214930 = r214926 * r214929;
double r214931 = fma(r214922, r214924, r214930);
double r214932 = fma(r214921, r214921, r214926);
double r214933 = 2.0;
double r214934 = 2.0;
double r214935 = r214933 / r214934;
double r214936 = pow(r214932, r214935);
double r214937 = hypot(r214921, r214925);
double r214938 = 4.0;
double r214939 = r214933 / r214938;
double r214940 = r214934 * r214939;
double r214941 = pow(r214937, r214940);
double r214942 = r214936 * r214941;
double r214943 = sqrt(r214932);
double r214944 = pow(r214943, r214935);
double r214945 = r214942 * r214944;
double r214946 = r214945 - r214923;
double r214947 = fma(r214920, r214931, r214946);
return r214947;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
rmApplied sqr-pow0.2
Simplified0.2
Simplified0.2
rmApplied add-sqr-sqrt0.2
Applied unpow-prod-down0.2
Applied associate-*r*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019344 +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))