\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\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) - 1double f(double a, double b) {
double r101268 = a;
double r101269 = r101268 * r101268;
double r101270 = b;
double r101271 = r101270 * r101270;
double r101272 = r101269 + r101271;
double r101273 = 2.0;
double r101274 = pow(r101272, r101273);
double r101275 = 4.0;
double r101276 = 1.0;
double r101277 = r101276 + r101268;
double r101278 = r101269 * r101277;
double r101279 = 3.0;
double r101280 = r101279 * r101268;
double r101281 = r101276 - r101280;
double r101282 = r101271 * r101281;
double r101283 = r101278 + r101282;
double r101284 = r101275 * r101283;
double r101285 = r101274 + r101284;
double r101286 = r101285 - r101276;
return r101286;
}
double f(double a, double b) {
double r101287 = a;
double r101288 = r101287 * r101287;
double r101289 = b;
double r101290 = r101289 * r101289;
double r101291 = r101288 + r101290;
double r101292 = 2.0;
double r101293 = pow(r101291, r101292);
double r101294 = 4.0;
double r101295 = 1.0;
double r101296 = r101295 + r101287;
double r101297 = r101288 * r101296;
double r101298 = 3.0;
double r101299 = r101298 * r101287;
double r101300 = r101295 - r101299;
double r101301 = r101290 * r101300;
double r101302 = r101297 + r101301;
double r101303 = r101294 * r101302;
double r101304 = r101293 + r101303;
double r101305 = r101304 - r101295;
return r101305;
}



Bits error versus a



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