\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 r301251 = a;
double r301252 = r301251 * r301251;
double r301253 = b;
double r301254 = r301253 * r301253;
double r301255 = r301252 + r301254;
double r301256 = 2.0;
double r301257 = pow(r301255, r301256);
double r301258 = 4.0;
double r301259 = 1.0;
double r301260 = r301259 + r301251;
double r301261 = r301252 * r301260;
double r301262 = 3.0;
double r301263 = r301262 * r301251;
double r301264 = r301259 - r301263;
double r301265 = r301254 * r301264;
double r301266 = r301261 + r301265;
double r301267 = r301258 * r301266;
double r301268 = r301257 + r301267;
double r301269 = r301268 - r301259;
return r301269;
}
double f(double a, double b) {
double r301270 = a;
double r301271 = r301270 * r301270;
double r301272 = b;
double r301273 = r301272 * r301272;
double r301274 = r301271 + r301273;
double r301275 = 2.0;
double r301276 = pow(r301274, r301275);
double r301277 = 4.0;
double r301278 = 1.0;
double r301279 = r301278 + r301270;
double r301280 = r301271 * r301279;
double r301281 = 3.0;
double r301282 = r301281 * r301270;
double r301283 = r301278 - r301282;
double r301284 = r301273 * r301283;
double r301285 = r301280 + r301284;
double r301286 = r301277 * r301285;
double r301287 = r301276 + r301286;
double r301288 = r301287 - r301278;
return r301288;
}



Bits error versus a



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