\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\left(\mathsf{fma}\left(b, \left(\mathsf{fma}\left(b, b, \left(\left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right), \left({a}^{4}\right)\right) + \left(\left(b \cdot b\right) \cdot \left(3 + a\right) + \left(a \cdot a\right) \cdot \left(1 - a\right)\right) \cdot 4\right) - 1double f(double a, double b) {
double r72708945 = a;
double r72708946 = r72708945 * r72708945;
double r72708947 = b;
double r72708948 = r72708947 * r72708947;
double r72708949 = r72708946 + r72708948;
double r72708950 = 2.0;
double r72708951 = pow(r72708949, r72708950);
double r72708952 = 4.0;
double r72708953 = 1.0;
double r72708954 = r72708953 - r72708945;
double r72708955 = r72708946 * r72708954;
double r72708956 = 3.0;
double r72708957 = r72708956 + r72708945;
double r72708958 = r72708948 * r72708957;
double r72708959 = r72708955 + r72708958;
double r72708960 = r72708952 * r72708959;
double r72708961 = r72708951 + r72708960;
double r72708962 = r72708961 - r72708953;
return r72708962;
}
double f(double a, double b) {
double r72708963 = b;
double r72708964 = a;
double r72708965 = r72708964 * r72708964;
double r72708966 = 2.0;
double r72708967 = r72708965 * r72708966;
double r72708968 = fma(r72708963, r72708963, r72708967);
double r72708969 = r72708968 * r72708963;
double r72708970 = 4.0;
double r72708971 = pow(r72708964, r72708970);
double r72708972 = fma(r72708963, r72708969, r72708971);
double r72708973 = r72708963 * r72708963;
double r72708974 = 3.0;
double r72708975 = r72708974 + r72708964;
double r72708976 = r72708973 * r72708975;
double r72708977 = 1.0;
double r72708978 = r72708977 - r72708964;
double r72708979 = r72708965 * r72708978;
double r72708980 = r72708976 + r72708979;
double r72708981 = r72708980 * r72708970;
double r72708982 = r72708972 + r72708981;
double r72708983 = r72708982 - r72708977;
return r72708983;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow-sqr0.2
Applied pow20.2
Applied pow-prod-up0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019121 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))