\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\mathsf{fma}\left({\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, {\left(a \cdot a + b \cdot b\right)}^{\left(\frac{2}{2}\right)}, 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) - 1double f(double a, double b) {
double r235385 = a;
double r235386 = r235385 * r235385;
double r235387 = b;
double r235388 = r235387 * r235387;
double r235389 = r235386 + r235388;
double r235390 = 2.0;
double r235391 = pow(r235389, r235390);
double r235392 = 4.0;
double r235393 = 1.0;
double r235394 = r235393 - r235385;
double r235395 = r235386 * r235394;
double r235396 = 3.0;
double r235397 = r235396 + r235385;
double r235398 = r235388 * r235397;
double r235399 = r235395 + r235398;
double r235400 = r235392 * r235399;
double r235401 = r235391 + r235400;
double r235402 = r235401 - r235393;
return r235402;
}
double f(double a, double b) {
double r235403 = a;
double r235404 = r235403 * r235403;
double r235405 = b;
double r235406 = r235405 * r235405;
double r235407 = r235404 + r235406;
double r235408 = 2.0;
double r235409 = 2.0;
double r235410 = r235408 / r235409;
double r235411 = pow(r235407, r235410);
double r235412 = 4.0;
double r235413 = 1.0;
double r235414 = r235413 - r235403;
double r235415 = r235404 * r235414;
double r235416 = 3.0;
double r235417 = r235416 + r235403;
double r235418 = r235406 * r235417;
double r235419 = r235415 + r235418;
double r235420 = r235412 * r235419;
double r235421 = fma(r235411, r235411, r235420);
double r235422 = r235421 - r235413;
return r235422;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied sqr-pow0.2
Applied fma-def0.2
Final simplification0.2
herbie shell --seed 2020001 +o rules:numerics
(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))