\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(\left(\left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(a + 1\right)\right) \cdot 4 + \left({a}^{4} + \left(b \cdot \left(b \cdot b + \left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right)\right) - 1double f(double a, double b) {
double r7966012 = a;
double r7966013 = r7966012 * r7966012;
double r7966014 = b;
double r7966015 = r7966014 * r7966014;
double r7966016 = r7966013 + r7966015;
double r7966017 = 2.0;
double r7966018 = pow(r7966016, r7966017);
double r7966019 = 4.0;
double r7966020 = 1.0;
double r7966021 = r7966020 + r7966012;
double r7966022 = r7966013 * r7966021;
double r7966023 = 3.0;
double r7966024 = r7966023 * r7966012;
double r7966025 = r7966020 - r7966024;
double r7966026 = r7966015 * r7966025;
double r7966027 = r7966022 + r7966026;
double r7966028 = r7966019 * r7966027;
double r7966029 = r7966018 + r7966028;
double r7966030 = r7966029 - r7966020;
return r7966030;
}
double f(double a, double b) {
double r7966031 = 1.0;
double r7966032 = 3.0;
double r7966033 = a;
double r7966034 = r7966032 * r7966033;
double r7966035 = r7966031 - r7966034;
double r7966036 = b;
double r7966037 = r7966036 * r7966036;
double r7966038 = r7966035 * r7966037;
double r7966039 = r7966033 * r7966033;
double r7966040 = r7966033 + r7966031;
double r7966041 = r7966039 * r7966040;
double r7966042 = r7966038 + r7966041;
double r7966043 = 4.0;
double r7966044 = r7966042 * r7966043;
double r7966045 = pow(r7966033, r7966043);
double r7966046 = 2.0;
double r7966047 = r7966039 * r7966046;
double r7966048 = r7966037 + r7966047;
double r7966049 = r7966036 * r7966048;
double r7966050 = r7966049 * r7966036;
double r7966051 = r7966045 + r7966050;
double r7966052 = r7966044 + r7966051;
double r7966053 = r7966052 - r7966031;
return r7966053;
}



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 pow-plus0.2
Applied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow-prod-up0.1
Simplified0.1
rmApplied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019132
(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))