\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 r305212 = a;
double r305213 = r305212 * r305212;
double r305214 = b;
double r305215 = r305214 * r305214;
double r305216 = r305213 + r305215;
double r305217 = 2.0;
double r305218 = pow(r305216, r305217);
double r305219 = 4.0;
double r305220 = 1.0;
double r305221 = r305220 - r305212;
double r305222 = r305213 * r305221;
double r305223 = 3.0;
double r305224 = r305223 + r305212;
double r305225 = r305215 * r305224;
double r305226 = r305222 + r305225;
double r305227 = r305219 * r305226;
double r305228 = r305218 + r305227;
double r305229 = r305228 - r305220;
return r305229;
}
double f(double a, double b) {
double r305230 = a;
double r305231 = r305230 * r305230;
double r305232 = b;
double r305233 = r305232 * r305232;
double r305234 = r305231 + r305233;
double r305235 = 2.0;
double r305236 = pow(r305234, r305235);
double r305237 = 4.0;
double r305238 = 1.0;
double r305239 = r305238 - r305230;
double r305240 = r305231 * r305239;
double r305241 = 3.0;
double r305242 = r305241 + r305230;
double r305243 = r305233 * r305242;
double r305244 = r305240 + r305243;
double r305245 = r305237 * r305244;
double r305246 = r305236 + r305245;
double r305247 = r305246 - r305238;
return r305247;
}



Bits error versus a



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