\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} + \left(\left(a + 3\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(1 - a\right)\right) \cdot 4\right) - 1double f(double a, double b) {
double r15827423 = a;
double r15827424 = r15827423 * r15827423;
double r15827425 = b;
double r15827426 = r15827425 * r15827425;
double r15827427 = r15827424 + r15827426;
double r15827428 = 2.0;
double r15827429 = pow(r15827427, r15827428);
double r15827430 = 4.0;
double r15827431 = 1.0;
double r15827432 = r15827431 - r15827423;
double r15827433 = r15827424 * r15827432;
double r15827434 = 3.0;
double r15827435 = r15827434 + r15827423;
double r15827436 = r15827426 * r15827435;
double r15827437 = r15827433 + r15827436;
double r15827438 = r15827430 * r15827437;
double r15827439 = r15827429 + r15827438;
double r15827440 = r15827439 - r15827431;
return r15827440;
}
double f(double a, double b) {
double r15827441 = a;
double r15827442 = r15827441 * r15827441;
double r15827443 = b;
double r15827444 = r15827443 * r15827443;
double r15827445 = r15827442 + r15827444;
double r15827446 = 2.0;
double r15827447 = pow(r15827445, r15827446);
double r15827448 = 3.0;
double r15827449 = r15827441 + r15827448;
double r15827450 = r15827449 * r15827444;
double r15827451 = 1.0;
double r15827452 = r15827451 - r15827441;
double r15827453 = r15827442 * r15827452;
double r15827454 = r15827450 + r15827453;
double r15827455 = 4.0;
double r15827456 = r15827454 * r15827455;
double r15827457 = r15827447 + r15827456;
double r15827458 = r15827457 - r15827451;
return r15827458;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019158 +o rules:numerics
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))