\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 r178037 = a;
double r178038 = r178037 * r178037;
double r178039 = b;
double r178040 = r178039 * r178039;
double r178041 = r178038 + r178040;
double r178042 = 2.0;
double r178043 = pow(r178041, r178042);
double r178044 = 4.0;
double r178045 = 1.0;
double r178046 = r178045 - r178037;
double r178047 = r178038 * r178046;
double r178048 = 3.0;
double r178049 = r178048 + r178037;
double r178050 = r178040 * r178049;
double r178051 = r178047 + r178050;
double r178052 = r178044 * r178051;
double r178053 = r178043 + r178052;
double r178054 = r178053 - r178045;
return r178054;
}
double f(double a, double b) {
double r178055 = a;
double r178056 = r178055 * r178055;
double r178057 = b;
double r178058 = r178057 * r178057;
double r178059 = r178056 + r178058;
double r178060 = 2.0;
double r178061 = pow(r178059, r178060);
double r178062 = 4.0;
double r178063 = 1.0;
double r178064 = r178063 - r178055;
double r178065 = r178056 * r178064;
double r178066 = 3.0;
double r178067 = r178066 + r178055;
double r178068 = r178058 * r178067;
double r178069 = r178065 + r178068;
double r178070 = r178062 * r178069;
double r178071 = r178061 + r178070;
double r178072 = r178071 - r178063;
return r178072;
}



Bits error versus a



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