\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(\sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}} \cdot \sqrt[3]{{\left(a \cdot a + b \cdot b\right)}^{2}}, \sqrt[3]{{\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) - 1double f(double a, double b) {
double r328361 = a;
double r328362 = r328361 * r328361;
double r328363 = b;
double r328364 = r328363 * r328363;
double r328365 = r328362 + r328364;
double r328366 = 2.0;
double r328367 = pow(r328365, r328366);
double r328368 = 4.0;
double r328369 = 1.0;
double r328370 = r328369 - r328361;
double r328371 = r328362 * r328370;
double r328372 = 3.0;
double r328373 = r328372 + r328361;
double r328374 = r328364 * r328373;
double r328375 = r328371 + r328374;
double r328376 = r328368 * r328375;
double r328377 = r328367 + r328376;
double r328378 = r328377 - r328369;
return r328378;
}
double f(double a, double b) {
double r328379 = a;
double r328380 = r328379 * r328379;
double r328381 = b;
double r328382 = r328381 * r328381;
double r328383 = r328380 + r328382;
double r328384 = 2.0;
double r328385 = pow(r328383, r328384);
double r328386 = cbrt(r328385);
double r328387 = r328386 * r328386;
double r328388 = 4.0;
double r328389 = 1.0;
double r328390 = r328389 - r328379;
double r328391 = r328380 * r328390;
double r328392 = 3.0;
double r328393 = r328392 + r328379;
double r328394 = r328382 * r328393;
double r328395 = r328391 + r328394;
double r328396 = r328388 * r328395;
double r328397 = fma(r328387, r328386, r328396);
double r328398 = r328397 - r328389;
return r328398;
}



Bits error versus a



Bits error versus b
Initial program 0.2
rmApplied add-cube-cbrt0.5
Applied fma-def0.5
Final simplification0.5
herbie shell --seed 2020027 +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))