\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(b \cdot b\right) \cdot \left(1 - a \cdot 3\right) + \left(a \cdot a\right) \cdot \left(a + 1\right)\right) + \left(\left(b \cdot b\right) \cdot \left(2 \cdot \left(a \cdot a\right) + b \cdot b\right) + {a}^{4}\right)\right) - 1double f(double a, double b) {
double r29744871 = a;
double r29744872 = r29744871 * r29744871;
double r29744873 = b;
double r29744874 = r29744873 * r29744873;
double r29744875 = r29744872 + r29744874;
double r29744876 = 2.0;
double r29744877 = pow(r29744875, r29744876);
double r29744878 = 4.0;
double r29744879 = 1.0;
double r29744880 = r29744879 + r29744871;
double r29744881 = r29744872 * r29744880;
double r29744882 = 3.0;
double r29744883 = r29744882 * r29744871;
double r29744884 = r29744879 - r29744883;
double r29744885 = r29744874 * r29744884;
double r29744886 = r29744881 + r29744885;
double r29744887 = r29744878 * r29744886;
double r29744888 = r29744877 + r29744887;
double r29744889 = r29744888 - r29744879;
return r29744889;
}
double f(double a, double b) {
double r29744890 = 4.0;
double r29744891 = b;
double r29744892 = r29744891 * r29744891;
double r29744893 = 1.0;
double r29744894 = a;
double r29744895 = 3.0;
double r29744896 = r29744894 * r29744895;
double r29744897 = r29744893 - r29744896;
double r29744898 = r29744892 * r29744897;
double r29744899 = r29744894 * r29744894;
double r29744900 = r29744894 + r29744893;
double r29744901 = r29744899 * r29744900;
double r29744902 = r29744898 + r29744901;
double r29744903 = r29744890 * r29744902;
double r29744904 = 2.0;
double r29744905 = r29744904 * r29744899;
double r29744906 = r29744905 + r29744892;
double r29744907 = r29744892 * r29744906;
double r29744908 = pow(r29744894, r29744890);
double r29744909 = r29744907 + r29744908;
double r29744910 = r29744903 + r29744909;
double r29744911 = r29744910 - r29744893;
return r29744911;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow-sqr0.2
Applied pow10.2
Applied pow10.2
Applied pow-sqr0.2
Applied pow-sqr0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019120
(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))