\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)}, \left(\left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a + 1\right) \cdot \left(a \cdot a\right)\right) \cdot 4\right) - 1double f(double a, double b) {
double r150458 = a;
double r150459 = r150458 * r150458;
double r150460 = b;
double r150461 = r150460 * r150460;
double r150462 = r150459 + r150461;
double r150463 = 2.0;
double r150464 = pow(r150462, r150463);
double r150465 = 4.0;
double r150466 = 1.0;
double r150467 = r150466 + r150458;
double r150468 = r150459 * r150467;
double r150469 = 3.0;
double r150470 = r150469 * r150458;
double r150471 = r150466 - r150470;
double r150472 = r150461 * r150471;
double r150473 = r150468 + r150472;
double r150474 = r150465 * r150473;
double r150475 = r150464 + r150474;
double r150476 = r150475 - r150466;
return r150476;
}
double f(double a, double b) {
double r150477 = a;
double r150478 = r150477 * r150477;
double r150479 = b;
double r150480 = r150479 * r150479;
double r150481 = r150478 + r150480;
double r150482 = 2.0;
double r150483 = 2.0;
double r150484 = r150482 / r150483;
double r150485 = pow(r150481, r150484);
double r150486 = 1.0;
double r150487 = 3.0;
double r150488 = r150487 * r150477;
double r150489 = r150486 - r150488;
double r150490 = r150489 * r150480;
double r150491 = r150477 + r150486;
double r150492 = r150491 * r150478;
double r150493 = r150490 + r150492;
double r150494 = 4.0;
double r150495 = r150493 * r150494;
double r150496 = fma(r150485, r150485, r150495);
double r150497 = r150496 - r150486;
return r150497;
}



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 2019195 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (+ (* (* a a) (+ 1.0 a)) (* (* b b) (- 1.0 (* 3.0 a)))))) 1.0))