\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\left(\mathsf{fma}\left({a}^{2}, \left(1 + a\right) \cdot 4, {\left(a \cdot a + b \cdot b\right)}^{2}\right) + 4 \cdot \left(\left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right)\right) - 1double f(double a, double b) {
double r202912 = a;
double r202913 = r202912 * r202912;
double r202914 = b;
double r202915 = r202914 * r202914;
double r202916 = r202913 + r202915;
double r202917 = 2.0;
double r202918 = pow(r202916, r202917);
double r202919 = 4.0;
double r202920 = 1.0;
double r202921 = r202920 + r202912;
double r202922 = r202913 * r202921;
double r202923 = 3.0;
double r202924 = r202923 * r202912;
double r202925 = r202920 - r202924;
double r202926 = r202915 * r202925;
double r202927 = r202922 + r202926;
double r202928 = r202919 * r202927;
double r202929 = r202918 + r202928;
double r202930 = r202929 - r202920;
return r202930;
}
double f(double a, double b) {
double r202931 = a;
double r202932 = 2.0;
double r202933 = pow(r202931, r202932);
double r202934 = 1.0;
double r202935 = r202934 + r202931;
double r202936 = 4.0;
double r202937 = r202935 * r202936;
double r202938 = r202931 * r202931;
double r202939 = b;
double r202940 = r202939 * r202939;
double r202941 = r202938 + r202940;
double r202942 = 2.0;
double r202943 = pow(r202941, r202942);
double r202944 = fma(r202933, r202937, r202943);
double r202945 = 3.0;
double r202946 = r202945 * r202931;
double r202947 = r202934 - r202946;
double r202948 = r202940 * r202947;
double r202949 = r202936 * r202948;
double r202950 = r202944 + r202949;
double r202951 = r202950 - r202934;
return r202951;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied distribute-lft-in0.2
Applied associate-+r+0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020064 +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))