\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 r150158 = a;
double r150159 = r150158 * r150158;
double r150160 = b;
double r150161 = r150160 * r150160;
double r150162 = r150159 + r150161;
double r150163 = 2.0;
double r150164 = pow(r150162, r150163);
double r150165 = 4.0;
double r150166 = 1.0;
double r150167 = r150166 + r150158;
double r150168 = r150159 * r150167;
double r150169 = 3.0;
double r150170 = r150169 * r150158;
double r150171 = r150166 - r150170;
double r150172 = r150161 * r150171;
double r150173 = r150168 + r150172;
double r150174 = r150165 * r150173;
double r150175 = r150164 + r150174;
double r150176 = r150175 - r150166;
return r150176;
}
double f(double a, double b) {
double r150177 = a;
double r150178 = r150177 * r150177;
double r150179 = b;
double r150180 = r150179 * r150179;
double r150181 = r150178 + r150180;
double r150182 = 2.0;
double r150183 = pow(r150181, r150182);
double r150184 = 4.0;
double r150185 = 1.0;
double r150186 = r150185 + r150177;
double r150187 = r150178 * r150186;
double r150188 = 3.0;
double r150189 = r150188 * r150177;
double r150190 = r150185 - r150189;
double r150191 = r150180 * r150190;
double r150192 = r150187 + r150191;
double r150193 = r150184 * r150192;
double r150194 = r150183 + r150193;
double r150195 = r150194 - r150185;
return r150195;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019306 +o rules:numerics
(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))