\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + 4.0 \cdot \left(b \cdot b\right)\right) - 1.04.0 \cdot \left(b \cdot b\right) + \left({\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2.0} - 1.0\right)double f(double a, double b) {
double r9731270 = a;
double r9731271 = r9731270 * r9731270;
double r9731272 = b;
double r9731273 = r9731272 * r9731272;
double r9731274 = r9731271 + r9731273;
double r9731275 = 2.0;
double r9731276 = pow(r9731274, r9731275);
double r9731277 = 4.0;
double r9731278 = r9731277 * r9731273;
double r9731279 = r9731276 + r9731278;
double r9731280 = 1.0;
double r9731281 = r9731279 - r9731280;
return r9731281;
}
double f(double a, double b) {
double r9731282 = 4.0;
double r9731283 = b;
double r9731284 = r9731283 * r9731283;
double r9731285 = r9731282 * r9731284;
double r9731286 = a;
double r9731287 = fma(r9731286, r9731286, r9731284);
double r9731288 = 2.0;
double r9731289 = pow(r9731287, r9731288);
double r9731290 = 1.0;
double r9731291 = r9731289 - r9731290;
double r9731292 = r9731285 + r9731291;
return r9731292;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
rmApplied fma-udef0.2
Applied associate--l+0.2
Final simplification0.2
herbie shell --seed 2019165 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (26)"
(- (+ (pow (+ (* a a) (* b b)) 2.0) (* 4.0 (* b b))) 1.0))