\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, a \cdot a - \left(a \cdot a\right) \cdot a, \mathsf{fma}\left(\mathsf{fma}\left(a, 4, 12\right), b \cdot b, \mathsf{fma}\left(\mathsf{fma}\left(a, a, b \cdot b\right), \mathsf{fma}\left(a, a, b \cdot b\right), -1\right)\right)\right)double f(double a, double b) {
double r9209281 = a;
double r9209282 = r9209281 * r9209281;
double r9209283 = b;
double r9209284 = r9209283 * r9209283;
double r9209285 = r9209282 + r9209284;
double r9209286 = 2.0;
double r9209287 = pow(r9209285, r9209286);
double r9209288 = 4.0;
double r9209289 = 1.0;
double r9209290 = r9209289 - r9209281;
double r9209291 = r9209282 * r9209290;
double r9209292 = 3.0;
double r9209293 = r9209292 + r9209281;
double r9209294 = r9209284 * r9209293;
double r9209295 = r9209291 + r9209294;
double r9209296 = r9209288 * r9209295;
double r9209297 = r9209287 + r9209296;
double r9209298 = r9209297 - r9209289;
return r9209298;
}
double f(double a, double b) {
double r9209299 = 4.0;
double r9209300 = a;
double r9209301 = r9209300 * r9209300;
double r9209302 = r9209301 * r9209300;
double r9209303 = r9209301 - r9209302;
double r9209304 = 12.0;
double r9209305 = fma(r9209300, r9209299, r9209304);
double r9209306 = b;
double r9209307 = r9209306 * r9209306;
double r9209308 = fma(r9209300, r9209300, r9209307);
double r9209309 = -1.0;
double r9209310 = fma(r9209308, r9209308, r9209309);
double r9209311 = fma(r9209305, r9209307, r9209310);
double r9209312 = fma(r9209299, r9209303, r9209311);
return r9209312;
}



Bits error versus a



Bits error versus b
Initial program 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019168 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))