\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 r332197 = a;
double r332198 = r332197 * r332197;
double r332199 = b;
double r332200 = r332199 * r332199;
double r332201 = r332198 + r332200;
double r332202 = 2.0;
double r332203 = pow(r332201, r332202);
double r332204 = 4.0;
double r332205 = 1.0;
double r332206 = r332205 + r332197;
double r332207 = r332198 * r332206;
double r332208 = 3.0;
double r332209 = r332208 * r332197;
double r332210 = r332205 - r332209;
double r332211 = r332200 * r332210;
double r332212 = r332207 + r332211;
double r332213 = r332204 * r332212;
double r332214 = r332203 + r332213;
double r332215 = r332214 - r332205;
return r332215;
}
double f(double a, double b) {
double r332216 = a;
double r332217 = r332216 * r332216;
double r332218 = b;
double r332219 = r332218 * r332218;
double r332220 = r332217 + r332219;
double r332221 = 2.0;
double r332222 = pow(r332220, r332221);
double r332223 = 4.0;
double r332224 = 1.0;
double r332225 = r332224 + r332216;
double r332226 = r332217 * r332225;
double r332227 = 3.0;
double r332228 = r332227 * r332216;
double r332229 = r332224 - r332228;
double r332230 = r332219 * r332229;
double r332231 = r332226 + r332230;
double r332232 = r332223 * r332231;
double r332233 = r332222 + r332232;
double r332234 = r332233 - r332224;
return r332234;
}



Bits error versus a



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