\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 r133068 = a;
double r133069 = r133068 * r133068;
double r133070 = b;
double r133071 = r133070 * r133070;
double r133072 = r133069 + r133071;
double r133073 = 2.0;
double r133074 = pow(r133072, r133073);
double r133075 = 4.0;
double r133076 = 1.0;
double r133077 = r133076 + r133068;
double r133078 = r133069 * r133077;
double r133079 = 3.0;
double r133080 = r133079 * r133068;
double r133081 = r133076 - r133080;
double r133082 = r133071 * r133081;
double r133083 = r133078 + r133082;
double r133084 = r133075 * r133083;
double r133085 = r133074 + r133084;
double r133086 = r133085 - r133076;
return r133086;
}
double f(double a, double b) {
double r133087 = a;
double r133088 = r133087 * r133087;
double r133089 = b;
double r133090 = r133089 * r133089;
double r133091 = r133088 + r133090;
double r133092 = 2.0;
double r133093 = pow(r133091, r133092);
double r133094 = 4.0;
double r133095 = 1.0;
double r133096 = r133095 + r133087;
double r133097 = r133088 * r133096;
double r133098 = 3.0;
double r133099 = r133098 * r133087;
double r133100 = r133095 - r133099;
double r133101 = r133090 * r133100;
double r133102 = r133097 + r133101;
double r133103 = r133094 * r133102;
double r133104 = r133093 + r133103;
double r133105 = r133104 - r133095;
return r133105;
}



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 (25)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))