\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 r222226 = a;
double r222227 = r222226 * r222226;
double r222228 = b;
double r222229 = r222228 * r222228;
double r222230 = r222227 + r222229;
double r222231 = 2.0;
double r222232 = pow(r222230, r222231);
double r222233 = 4.0;
double r222234 = 1.0;
double r222235 = r222234 + r222226;
double r222236 = r222227 * r222235;
double r222237 = 3.0;
double r222238 = r222237 * r222226;
double r222239 = r222234 - r222238;
double r222240 = r222229 * r222239;
double r222241 = r222236 + r222240;
double r222242 = r222233 * r222241;
double r222243 = r222232 + r222242;
double r222244 = r222243 - r222234;
return r222244;
}
double f(double a, double b) {
double r222245 = a;
double r222246 = r222245 * r222245;
double r222247 = b;
double r222248 = r222247 * r222247;
double r222249 = r222246 + r222248;
double r222250 = 2.0;
double r222251 = pow(r222249, r222250);
double r222252 = 4.0;
double r222253 = 1.0;
double r222254 = r222253 + r222245;
double r222255 = r222246 * r222254;
double r222256 = 3.0;
double r222257 = r222256 * r222245;
double r222258 = r222253 - r222257;
double r222259 = r222248 * r222258;
double r222260 = r222255 + r222259;
double r222261 = r222252 * r222260;
double r222262 = r222251 + r222261;
double r222263 = r222262 - r222253;
return r222263;
}



Bits error versus a



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