\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 r140761 = a;
double r140762 = r140761 * r140761;
double r140763 = b;
double r140764 = r140763 * r140763;
double r140765 = r140762 + r140764;
double r140766 = 2.0;
double r140767 = pow(r140765, r140766);
double r140768 = 4.0;
double r140769 = 1.0;
double r140770 = r140769 + r140761;
double r140771 = r140762 * r140770;
double r140772 = 3.0;
double r140773 = r140772 * r140761;
double r140774 = r140769 - r140773;
double r140775 = r140764 * r140774;
double r140776 = r140771 + r140775;
double r140777 = r140768 * r140776;
double r140778 = r140767 + r140777;
double r140779 = r140778 - r140769;
return r140779;
}
double f(double a, double b) {
double r140780 = a;
double r140781 = r140780 * r140780;
double r140782 = b;
double r140783 = r140782 * r140782;
double r140784 = r140781 + r140783;
double r140785 = 2.0;
double r140786 = pow(r140784, r140785);
double r140787 = 4.0;
double r140788 = 1.0;
double r140789 = r140788 + r140780;
double r140790 = r140781 * r140789;
double r140791 = 3.0;
double r140792 = r140791 * r140780;
double r140793 = r140788 - r140792;
double r140794 = r140783 * r140793;
double r140795 = r140790 + r140794;
double r140796 = r140787 * r140795;
double r140797 = r140786 + r140796;
double r140798 = r140797 - r140788;
return r140798;
}



Bits error versus a



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