\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(4, \mathsf{fma}\left(a \cdot a, 1 + a, \left(b \cdot b\right) \cdot \left(1 - 3 \cdot a\right)\right), {\left(\mathsf{fma}\left(a, a, b \cdot b\right)\right)}^{2}\right) - 1double f(double a, double b) {
double r158235 = a;
double r158236 = r158235 * r158235;
double r158237 = b;
double r158238 = r158237 * r158237;
double r158239 = r158236 + r158238;
double r158240 = 2.0;
double r158241 = pow(r158239, r158240);
double r158242 = 4.0;
double r158243 = 1.0;
double r158244 = r158243 + r158235;
double r158245 = r158236 * r158244;
double r158246 = 3.0;
double r158247 = r158246 * r158235;
double r158248 = r158243 - r158247;
double r158249 = r158238 * r158248;
double r158250 = r158245 + r158249;
double r158251 = r158242 * r158250;
double r158252 = r158241 + r158251;
double r158253 = r158252 - r158243;
return r158253;
}
double f(double a, double b) {
double r158254 = 4.0;
double r158255 = a;
double r158256 = r158255 * r158255;
double r158257 = 1.0;
double r158258 = r158257 + r158255;
double r158259 = b;
double r158260 = r158259 * r158259;
double r158261 = 3.0;
double r158262 = r158261 * r158255;
double r158263 = r158257 - r158262;
double r158264 = r158260 * r158263;
double r158265 = fma(r158256, r158258, r158264);
double r158266 = fma(r158255, r158255, r158260);
double r158267 = 2.0;
double r158268 = pow(r158266, r158267);
double r158269 = fma(r158254, r158265, r158268);
double r158270 = r158269 - r158257;
return r158270;
}



Bits error versus a



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