\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} + 4 \cdot \left(\left(\left(a \cdot a\right) \cdot 1 + \left(-{a}^{3}\right)\right) + \left(b \cdot b\right) \cdot \left(3 + a\right)\right)\right) - 1double f(double a, double b) {
double r383617 = a;
double r383618 = r383617 * r383617;
double r383619 = b;
double r383620 = r383619 * r383619;
double r383621 = r383618 + r383620;
double r383622 = 2.0;
double r383623 = pow(r383621, r383622);
double r383624 = 4.0;
double r383625 = 1.0;
double r383626 = r383625 - r383617;
double r383627 = r383618 * r383626;
double r383628 = 3.0;
double r383629 = r383628 + r383617;
double r383630 = r383620 * r383629;
double r383631 = r383627 + r383630;
double r383632 = r383624 * r383631;
double r383633 = r383623 + r383632;
double r383634 = r383633 - r383625;
return r383634;
}
double f(double a, double b) {
double r383635 = a;
double r383636 = r383635 * r383635;
double r383637 = b;
double r383638 = r383637 * r383637;
double r383639 = r383636 + r383638;
double r383640 = 2.0;
double r383641 = pow(r383639, r383640);
double r383642 = 4.0;
double r383643 = 1.0;
double r383644 = r383636 * r383643;
double r383645 = 3.0;
double r383646 = pow(r383635, r383645);
double r383647 = -r383646;
double r383648 = r383644 + r383647;
double r383649 = 3.0;
double r383650 = r383649 + r383635;
double r383651 = r383638 * r383650;
double r383652 = r383648 + r383651;
double r383653 = r383642 * r383652;
double r383654 = r383641 + r383653;
double r383655 = r383654 - r383643;
return r383655;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
rmApplied sub-neg0.2
Applied distribute-lft-in0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2020059
(FPCore (a b)
:name "Bouland and Aaronson, Equation (24)"
:precision binary64
(- (+ (pow (+ (* a a) (* b b)) 2) (* 4 (+ (* (* a a) (- 1 a)) (* (* b b) (+ 3 a))))) 1))