\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + 4.0 \cdot \left(\left(a \cdot a\right) \cdot \left(1.0 + a\right) + \left(b \cdot b\right) \cdot \left(1.0 - 3.0 \cdot a\right)\right)\right) - 1.0\left({\left(a \cdot a + b \cdot b\right)}^{2.0} + \left(\left(a \cdot a\right) \cdot \left(a + 1.0\right) + \left(b \cdot b\right) \cdot \left(1.0 - 3.0 \cdot a\right)\right) \cdot 4.0\right) - 1.0double f(double a, double b) {
double r9161247 = a;
double r9161248 = r9161247 * r9161247;
double r9161249 = b;
double r9161250 = r9161249 * r9161249;
double r9161251 = r9161248 + r9161250;
double r9161252 = 2.0;
double r9161253 = pow(r9161251, r9161252);
double r9161254 = 4.0;
double r9161255 = 1.0;
double r9161256 = r9161255 + r9161247;
double r9161257 = r9161248 * r9161256;
double r9161258 = 3.0;
double r9161259 = r9161258 * r9161247;
double r9161260 = r9161255 - r9161259;
double r9161261 = r9161250 * r9161260;
double r9161262 = r9161257 + r9161261;
double r9161263 = r9161254 * r9161262;
double r9161264 = r9161253 + r9161263;
double r9161265 = r9161264 - r9161255;
return r9161265;
}
double f(double a, double b) {
double r9161266 = a;
double r9161267 = r9161266 * r9161266;
double r9161268 = b;
double r9161269 = r9161268 * r9161268;
double r9161270 = r9161267 + r9161269;
double r9161271 = 2.0;
double r9161272 = pow(r9161270, r9161271);
double r9161273 = 1.0;
double r9161274 = r9161266 + r9161273;
double r9161275 = r9161267 * r9161274;
double r9161276 = 3.0;
double r9161277 = r9161276 * r9161266;
double r9161278 = r9161273 - r9161277;
double r9161279 = r9161269 * r9161278;
double r9161280 = r9161275 + r9161279;
double r9161281 = 4.0;
double r9161282 = r9161280 * r9161281;
double r9161283 = r9161272 + r9161282;
double r9161284 = r9161283 - r9161273;
return r9161284;
}



Bits error versus a



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