\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(3 + 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(3 + a\right)\right)\right) - 1double f(double a, double b) {
double r181226 = a;
double r181227 = r181226 * r181226;
double r181228 = b;
double r181229 = r181228 * r181228;
double r181230 = r181227 + r181229;
double r181231 = 2.0;
double r181232 = pow(r181230, r181231);
double r181233 = 4.0;
double r181234 = 1.0;
double r181235 = r181234 - r181226;
double r181236 = r181227 * r181235;
double r181237 = 3.0;
double r181238 = r181237 + r181226;
double r181239 = r181229 * r181238;
double r181240 = r181236 + r181239;
double r181241 = r181233 * r181240;
double r181242 = r181232 + r181241;
double r181243 = r181242 - r181234;
return r181243;
}
double f(double a, double b) {
double r181244 = a;
double r181245 = r181244 * r181244;
double r181246 = b;
double r181247 = r181246 * r181246;
double r181248 = r181245 + r181247;
double r181249 = 2.0;
double r181250 = pow(r181248, r181249);
double r181251 = 4.0;
double r181252 = 1.0;
double r181253 = r181252 - r181244;
double r181254 = r181245 * r181253;
double r181255 = 3.0;
double r181256 = r181255 + r181244;
double r181257 = r181247 * r181256;
double r181258 = r181254 + r181257;
double r181259 = r181251 * r181258;
double r181260 = r181250 + r181259;
double r181261 = r181260 - r181252;
return r181261;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019308
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))