\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(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} \cdot \sqrt{\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(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right)} - 1double f(double a, double b) {
double r148965 = a;
double r148966 = r148965 * r148965;
double r148967 = b;
double r148968 = r148967 * r148967;
double r148969 = r148966 + r148968;
double r148970 = 2.0;
double r148971 = pow(r148969, r148970);
double r148972 = 4.0;
double r148973 = 1.0;
double r148974 = r148973 + r148965;
double r148975 = r148966 * r148974;
double r148976 = 3.0;
double r148977 = r148976 * r148965;
double r148978 = r148973 - r148977;
double r148979 = r148968 * r148978;
double r148980 = r148975 + r148979;
double r148981 = r148972 * r148980;
double r148982 = r148971 + r148981;
double r148983 = r148982 - r148973;
return r148983;
}
double f(double a, double b) {
double r148984 = 4.0;
double r148985 = a;
double r148986 = r148985 * r148985;
double r148987 = 1.0;
double r148988 = r148987 + r148985;
double r148989 = b;
double r148990 = r148989 * r148989;
double r148991 = 3.0;
double r148992 = r148991 * r148985;
double r148993 = r148987 - r148992;
double r148994 = r148990 * r148993;
double r148995 = fma(r148986, r148988, r148994);
double r148996 = fma(r148985, r148985, r148990);
double r148997 = 2.0;
double r148998 = pow(r148996, r148997);
double r148999 = fma(r148984, r148995, r148998);
double r149000 = sqrt(r148999);
double r149001 = r149000 * r149000;
double r149002 = r149001 - r148987;
return r149002;
}



Bits error versus a



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