\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 r2419595 = a;
double r2419596 = r2419595 * r2419595;
double r2419597 = b;
double r2419598 = r2419597 * r2419597;
double r2419599 = r2419596 + r2419598;
double r2419600 = 2.0;
double r2419601 = pow(r2419599, r2419600);
double r2419602 = 4.0;
double r2419603 = 1.0;
double r2419604 = r2419603 + r2419595;
double r2419605 = r2419596 * r2419604;
double r2419606 = 3.0;
double r2419607 = r2419606 * r2419595;
double r2419608 = r2419603 - r2419607;
double r2419609 = r2419598 * r2419608;
double r2419610 = r2419605 + r2419609;
double r2419611 = r2419602 * r2419610;
double r2419612 = r2419601 + r2419611;
double r2419613 = r2419612 - r2419603;
return r2419613;
}
double f(double a, double b) {
double r2419614 = 1.0;
double r2419615 = 3.0;
double r2419616 = a;
double r2419617 = r2419615 * r2419616;
double r2419618 = r2419614 - r2419617;
double r2419619 = b;
double r2419620 = r2419619 * r2419619;
double r2419621 = r2419618 * r2419620;
double r2419622 = r2419616 * r2419616;
double r2419623 = r2419616 + r2419614;
double r2419624 = r2419622 * r2419623;
double r2419625 = r2419621 + r2419624;
double r2419626 = 4.0;
double r2419627 = r2419625 * r2419626;
double r2419628 = pow(r2419616, r2419626);
double r2419629 = 2.0;
double r2419630 = r2419622 * r2419629;
double r2419631 = r2419620 + r2419630;
double r2419632 = r2419619 * r2419631;
double r2419633 = r2419632 * r2419619;
double r2419634 = r2419628 + r2419633;
double r2419635 = r2419627 + r2419634;
double r2419636 = r2419635 - r2419614;
return r2419636;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Taylor expanded around 0 0.0
Simplified0.2
rmApplied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow10.2
Applied pow10.2
Applied pow-prod-up0.2
Applied pow-prod-up0.1
Simplified0.1
rmApplied associate-*l*0.1
Final simplification0.1
herbie shell --seed 2019156
(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))