\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 r96611 = a;
double r96612 = r96611 * r96611;
double r96613 = b;
double r96614 = r96613 * r96613;
double r96615 = r96612 + r96614;
double r96616 = 2.0;
double r96617 = pow(r96615, r96616);
double r96618 = 4.0;
double r96619 = 1.0;
double r96620 = r96619 + r96611;
double r96621 = r96612 * r96620;
double r96622 = 3.0;
double r96623 = r96622 * r96611;
double r96624 = r96619 - r96623;
double r96625 = r96614 * r96624;
double r96626 = r96621 + r96625;
double r96627 = r96618 * r96626;
double r96628 = r96617 + r96627;
double r96629 = r96628 - r96619;
return r96629;
}
double f(double a, double b) {
double r96630 = a;
double r96631 = r96630 * r96630;
double r96632 = b;
double r96633 = r96632 * r96632;
double r96634 = r96631 + r96633;
double r96635 = 2.0;
double r96636 = pow(r96634, r96635);
double r96637 = 4.0;
double r96638 = 1.0;
double r96639 = r96638 + r96630;
double r96640 = r96631 * r96639;
double r96641 = 3.0;
double r96642 = r96641 * r96630;
double r96643 = r96638 - r96642;
double r96644 = r96633 * r96643;
double r96645 = r96640 + r96644;
double r96646 = r96637 * r96645;
double r96647 = r96636 + r96646;
double r96648 = r96647 - r96638;
return r96648;
}



Bits error versus a



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