\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(4 \cdot \left(\left(a \cdot a\right) \cdot \left(1 + a\right) + \left(b \cdot b\right) \cdot \left(1 - a \cdot 3\right)\right) + (b \cdot \left((b \cdot b + \left(\left(a \cdot a\right) \cdot 2\right))_* \cdot b\right) + \left({a}^{4}\right))_*\right) - 1double f(double a, double b) {
double r7583861 = a;
double r7583862 = r7583861 * r7583861;
double r7583863 = b;
double r7583864 = r7583863 * r7583863;
double r7583865 = r7583862 + r7583864;
double r7583866 = 2.0;
double r7583867 = pow(r7583865, r7583866);
double r7583868 = 4.0;
double r7583869 = 1.0;
double r7583870 = r7583869 + r7583861;
double r7583871 = r7583862 * r7583870;
double r7583872 = 3.0;
double r7583873 = r7583872 * r7583861;
double r7583874 = r7583869 - r7583873;
double r7583875 = r7583864 * r7583874;
double r7583876 = r7583871 + r7583875;
double r7583877 = r7583868 * r7583876;
double r7583878 = r7583867 + r7583877;
double r7583879 = r7583878 - r7583869;
return r7583879;
}
double f(double a, double b) {
double r7583880 = 4.0;
double r7583881 = a;
double r7583882 = r7583881 * r7583881;
double r7583883 = 1.0;
double r7583884 = r7583883 + r7583881;
double r7583885 = r7583882 * r7583884;
double r7583886 = b;
double r7583887 = r7583886 * r7583886;
double r7583888 = 3.0;
double r7583889 = r7583881 * r7583888;
double r7583890 = r7583883 - r7583889;
double r7583891 = r7583887 * r7583890;
double r7583892 = r7583885 + r7583891;
double r7583893 = r7583880 * r7583892;
double r7583894 = 2.0;
double r7583895 = r7583882 * r7583894;
double r7583896 = fma(r7583886, r7583886, r7583895);
double r7583897 = r7583896 * r7583886;
double r7583898 = pow(r7583881, r7583880);
double r7583899 = fma(r7583886, r7583897, r7583898);
double r7583900 = r7583893 + r7583899;
double r7583901 = r7583900 - r7583883;
return r7583901;
}



Bits error versus a



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