\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({\left(a \cdot a + b \cdot b\right)}^{2} + \left(\left(4 \cdot {a}^{2} + 12 \cdot {b}^{2}\right) - 4 \cdot {a}^{3}\right)\right) - 1double f(double a, double b) {
double r212348 = a;
double r212349 = r212348 * r212348;
double r212350 = b;
double r212351 = r212350 * r212350;
double r212352 = r212349 + r212351;
double r212353 = 2.0;
double r212354 = pow(r212352, r212353);
double r212355 = 4.0;
double r212356 = 1.0;
double r212357 = r212356 - r212348;
double r212358 = r212349 * r212357;
double r212359 = 3.0;
double r212360 = r212359 + r212348;
double r212361 = r212351 * r212360;
double r212362 = r212358 + r212361;
double r212363 = r212355 * r212362;
double r212364 = r212354 + r212363;
double r212365 = r212364 - r212356;
return r212365;
}
double f(double a, double b) {
double r212366 = a;
double r212367 = r212366 * r212366;
double r212368 = b;
double r212369 = r212368 * r212368;
double r212370 = r212367 + r212369;
double r212371 = 2.0;
double r212372 = pow(r212370, r212371);
double r212373 = 4.0;
double r212374 = 2.0;
double r212375 = pow(r212366, r212374);
double r212376 = r212373 * r212375;
double r212377 = 12.0;
double r212378 = pow(r212368, r212374);
double r212379 = r212377 * r212378;
double r212380 = r212376 + r212379;
double r212381 = 3.0;
double r212382 = pow(r212366, r212381);
double r212383 = r212373 * r212382;
double r212384 = r212380 - r212383;
double r212385 = r212372 + r212384;
double r212386 = 1.0;
double r212387 = r212385 - r212386;
return r212387;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Taylor expanded around 0 0.2
Final simplification0.2
herbie shell --seed 2019347
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))