\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 r8364262 = a;
double r8364263 = r8364262 * r8364262;
double r8364264 = b;
double r8364265 = r8364264 * r8364264;
double r8364266 = r8364263 + r8364265;
double r8364267 = 2.0;
double r8364268 = pow(r8364266, r8364267);
double r8364269 = 4.0;
double r8364270 = 1.0;
double r8364271 = r8364270 + r8364262;
double r8364272 = r8364263 * r8364271;
double r8364273 = 3.0;
double r8364274 = r8364273 * r8364262;
double r8364275 = r8364270 - r8364274;
double r8364276 = r8364265 * r8364275;
double r8364277 = r8364272 + r8364276;
double r8364278 = r8364269 * r8364277;
double r8364279 = r8364268 + r8364278;
double r8364280 = r8364279 - r8364270;
return r8364280;
}
double f(double a, double b) {
double r8364281 = 1.0;
double r8364282 = 3.0;
double r8364283 = a;
double r8364284 = r8364282 * r8364283;
double r8364285 = r8364281 - r8364284;
double r8364286 = b;
double r8364287 = r8364286 * r8364286;
double r8364288 = r8364285 * r8364287;
double r8364289 = r8364283 * r8364283;
double r8364290 = r8364283 + r8364281;
double r8364291 = r8364289 * r8364290;
double r8364292 = r8364288 + r8364291;
double r8364293 = 4.0;
double r8364294 = r8364292 * r8364293;
double r8364295 = pow(r8364283, r8364293);
double r8364296 = 2.0;
double r8364297 = r8364289 * r8364296;
double r8364298 = r8364287 + r8364297;
double r8364299 = r8364286 * r8364298;
double r8364300 = r8364299 * r8364286;
double r8364301 = r8364295 + r8364300;
double r8364302 = r8364294 + r8364301;
double r8364303 = r8364302 - r8364281;
return r8364303;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Taylor expanded around -inf 0.0
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow-sqr0.2
Applied pow20.2
Applied pow-prod-up0.1
Simplified0.1
rmApplied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019130
(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))