\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\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(1 - 3 \cdot a\right)\right)\right) - 1double f(double a, double b) {
double r144286 = a;
double r144287 = r144286 * r144286;
double r144288 = b;
double r144289 = r144288 * r144288;
double r144290 = r144287 + r144289;
double r144291 = 2.0;
double r144292 = pow(r144290, r144291);
double r144293 = 4.0;
double r144294 = 1.0;
double r144295 = r144294 + r144286;
double r144296 = r144287 * r144295;
double r144297 = 3.0;
double r144298 = r144297 * r144286;
double r144299 = r144294 - r144298;
double r144300 = r144289 * r144299;
double r144301 = r144296 + r144300;
double r144302 = r144293 * r144301;
double r144303 = r144292 + r144302;
double r144304 = r144303 - r144294;
return r144304;
}
double f(double a, double b) {
double r144305 = a;
double r144306 = r144305 * r144305;
double r144307 = b;
double r144308 = r144307 * r144307;
double r144309 = r144306 + r144308;
double r144310 = 2.0;
double r144311 = 2.0;
double r144312 = r144310 / r144311;
double r144313 = pow(r144309, r144312);
double r144314 = 4.0;
double r144315 = 1.0;
double r144316 = r144315 + r144305;
double r144317 = r144306 * r144316;
double r144318 = 3.0;
double r144319 = r144318 * r144305;
double r144320 = r144315 - r144319;
double r144321 = r144308 * r144320;
double r144322 = r144317 + r144321;
double r144323 = r144314 * r144322;
double r144324 = fma(r144313, r144313, r144323);
double r144325 = r144324 - r144315;
return r144325;
}



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 2020020 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))