\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(4, \left(\sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot a, 1 - a, \left(b \cdot b\right) \cdot \left(3 + a\right)\right)}, {\left(a \cdot a + b \cdot b\right)}^{2} - 1\right)double f(double a, double b) {
double r324276 = a;
double r324277 = r324276 * r324276;
double r324278 = b;
double r324279 = r324278 * r324278;
double r324280 = r324277 + r324279;
double r324281 = 2.0;
double r324282 = pow(r324280, r324281);
double r324283 = 4.0;
double r324284 = 1.0;
double r324285 = r324284 - r324276;
double r324286 = r324277 * r324285;
double r324287 = 3.0;
double r324288 = r324287 + r324276;
double r324289 = r324279 * r324288;
double r324290 = r324286 + r324289;
double r324291 = r324283 * r324290;
double r324292 = r324282 + r324291;
double r324293 = r324292 - r324284;
return r324293;
}
double f(double a, double b) {
double r324294 = 4.0;
double r324295 = a;
double r324296 = r324295 * r324295;
double r324297 = 1.0;
double r324298 = r324297 - r324295;
double r324299 = b;
double r324300 = r324299 * r324299;
double r324301 = 3.0;
double r324302 = r324301 + r324295;
double r324303 = r324300 * r324302;
double r324304 = fma(r324296, r324298, r324303);
double r324305 = cbrt(r324304);
double r324306 = r324305 * r324305;
double r324307 = r324306 * r324305;
double r324308 = r324296 + r324300;
double r324309 = 2.0;
double r324310 = pow(r324308, r324309);
double r324311 = r324310 - r324297;
double r324312 = fma(r324294, r324307, r324311);
return r324312;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Final simplification0.2
herbie shell --seed 2020036 +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))