\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(\left(1 - 3 \cdot a\right) \cdot \left(b \cdot b\right) + \left(a \cdot a\right) \cdot \left(a + 1\right)\right) \cdot 4 + \left({a}^{4} + \left(b \cdot \left(b \cdot b + \left(a \cdot a\right) \cdot 2\right)\right) \cdot b\right)\right) - 1double f(double a, double b) {
double r5908521 = a;
double r5908522 = r5908521 * r5908521;
double r5908523 = b;
double r5908524 = r5908523 * r5908523;
double r5908525 = r5908522 + r5908524;
double r5908526 = 2.0;
double r5908527 = pow(r5908525, r5908526);
double r5908528 = 4.0;
double r5908529 = 1.0;
double r5908530 = r5908529 + r5908521;
double r5908531 = r5908522 * r5908530;
double r5908532 = 3.0;
double r5908533 = r5908532 * r5908521;
double r5908534 = r5908529 - r5908533;
double r5908535 = r5908524 * r5908534;
double r5908536 = r5908531 + r5908535;
double r5908537 = r5908528 * r5908536;
double r5908538 = r5908527 + r5908537;
double r5908539 = r5908538 - r5908529;
return r5908539;
}
double f(double a, double b) {
double r5908540 = 1.0;
double r5908541 = 3.0;
double r5908542 = a;
double r5908543 = r5908541 * r5908542;
double r5908544 = r5908540 - r5908543;
double r5908545 = b;
double r5908546 = r5908545 * r5908545;
double r5908547 = r5908544 * r5908546;
double r5908548 = r5908542 * r5908542;
double r5908549 = r5908542 + r5908540;
double r5908550 = r5908548 * r5908549;
double r5908551 = r5908547 + r5908550;
double r5908552 = 4.0;
double r5908553 = r5908551 * r5908552;
double r5908554 = pow(r5908542, r5908552);
double r5908555 = 2.0;
double r5908556 = r5908548 * r5908555;
double r5908557 = r5908546 + r5908556;
double r5908558 = r5908545 * r5908557;
double r5908559 = r5908558 * r5908545;
double r5908560 = r5908554 + r5908559;
double r5908561 = r5908553 + r5908560;
double r5908562 = r5908561 - r5908540;
return r5908562;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
rmApplied pow20.2
Applied pow10.2
Applied pow10.2
Applied pow-sqr0.2
Applied pow-prod-up0.1
Simplified0.1
rmApplied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019130
(FPCore (a b)
:name "Bouland and Aaronson, Equation (25)"
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (+ 1 a)) (* (* b b) (- 1 (* 3 a)))))) 1))