\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 \left(1 - 3 \cdot a\right)\right) \cdot b\right)\right) - 1double f(double a, double b) {
double r215682 = a;
double r215683 = r215682 * r215682;
double r215684 = b;
double r215685 = r215684 * r215684;
double r215686 = r215683 + r215685;
double r215687 = 2.0;
double r215688 = pow(r215686, r215687);
double r215689 = 4.0;
double r215690 = 1.0;
double r215691 = r215690 + r215682;
double r215692 = r215683 * r215691;
double r215693 = 3.0;
double r215694 = r215693 * r215682;
double r215695 = r215690 - r215694;
double r215696 = r215685 * r215695;
double r215697 = r215692 + r215696;
double r215698 = r215689 * r215697;
double r215699 = r215688 + r215698;
double r215700 = r215699 - r215690;
return r215700;
}
double f(double a, double b) {
double r215701 = a;
double r215702 = r215701 * r215701;
double r215703 = b;
double r215704 = r215703 * r215703;
double r215705 = r215702 + r215704;
double r215706 = 2.0;
double r215707 = pow(r215705, r215706);
double r215708 = 4.0;
double r215709 = 1.0;
double r215710 = r215709 + r215701;
double r215711 = r215702 * r215710;
double r215712 = 3.0;
double r215713 = r215712 * r215701;
double r215714 = r215709 - r215713;
double r215715 = r215703 * r215714;
double r215716 = r215715 * r215703;
double r215717 = r215711 + r215716;
double r215718 = r215708 * r215717;
double r215719 = r215707 + r215718;
double r215720 = r215719 - r215709;
return r215720;
}



Bits error versus a



Bits error versus b
Results
Initial program 0.2
Taylor expanded around 0 0.2
Simplified0.2
Final simplification0.2
herbie shell --seed 2019304
(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))