\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({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 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 r344946 = a;
double r344947 = r344946 * r344946;
double r344948 = b;
double r344949 = r344948 * r344948;
double r344950 = r344947 + r344949;
double r344951 = 2.0;
double r344952 = pow(r344950, r344951);
double r344953 = 4.0;
double r344954 = 1.0;
double r344955 = r344954 + r344946;
double r344956 = r344947 * r344955;
double r344957 = 3.0;
double r344958 = r344957 * r344946;
double r344959 = r344954 - r344958;
double r344960 = r344949 * r344959;
double r344961 = r344956 + r344960;
double r344962 = r344953 * r344961;
double r344963 = r344952 + r344962;
double r344964 = r344963 - r344954;
return r344964;
}
double f(double a, double b) {
double r344965 = a;
double r344966 = r344965 * r344965;
double r344967 = b;
double r344968 = r344967 * r344967;
double r344969 = r344966 + r344968;
double r344970 = 2.0;
double r344971 = 2.0;
double r344972 = r344970 / r344971;
double r344973 = pow(r344969, r344972);
double r344974 = 4.0;
double r344975 = 1.0;
double r344976 = r344975 + r344965;
double r344977 = r344966 * r344976;
double r344978 = 3.0;
double r344979 = r344978 * r344965;
double r344980 = r344975 - r344979;
double r344981 = r344968 * r344980;
double r344982 = r344977 + r344981;
double r344983 = r344974 * r344982;
double r344984 = fma(r344973, r344973, r344983);
double r344985 = r344984 - r344975;
return r344985;
}



Bits error versus a



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