\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 r316901 = a;
double r316902 = r316901 * r316901;
double r316903 = b;
double r316904 = r316903 * r316903;
double r316905 = r316902 + r316904;
double r316906 = 2.0;
double r316907 = pow(r316905, r316906);
double r316908 = 4.0;
double r316909 = 1.0;
double r316910 = r316909 - r316901;
double r316911 = r316902 * r316910;
double r316912 = 3.0;
double r316913 = r316912 + r316901;
double r316914 = r316904 * r316913;
double r316915 = r316911 + r316914;
double r316916 = r316908 * r316915;
double r316917 = r316907 + r316916;
double r316918 = r316917 - r316909;
return r316918;
}
double f(double a, double b) {
double r316919 = 4.0;
double r316920 = a;
double r316921 = r316920 * r316920;
double r316922 = 1.0;
double r316923 = r316922 - r316920;
double r316924 = b;
double r316925 = r316924 * r316924;
double r316926 = 3.0;
double r316927 = r316926 + r316920;
double r316928 = r316925 * r316927;
double r316929 = fma(r316921, r316923, r316928);
double r316930 = r316921 + r316925;
double r316931 = 2.0;
double r316932 = pow(r316930, r316931);
double r316933 = r316932 - r316922;
double r316934 = fma(r316919, r316929, r316933);
return r316934;
}



Bits error versus a



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