\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 r118774 = a;
double r118775 = r118774 * r118774;
double r118776 = b;
double r118777 = r118776 * r118776;
double r118778 = r118775 + r118777;
double r118779 = 2.0;
double r118780 = pow(r118778, r118779);
double r118781 = 4.0;
double r118782 = 1.0;
double r118783 = r118782 + r118774;
double r118784 = r118775 * r118783;
double r118785 = 3.0;
double r118786 = r118785 * r118774;
double r118787 = r118782 - r118786;
double r118788 = r118777 * r118787;
double r118789 = r118784 + r118788;
double r118790 = r118781 * r118789;
double r118791 = r118780 + r118790;
double r118792 = r118791 - r118782;
return r118792;
}
double f(double a, double b) {
double r118793 = a;
double r118794 = r118793 * r118793;
double r118795 = b;
double r118796 = r118795 * r118795;
double r118797 = r118794 + r118796;
double r118798 = 2.0;
double r118799 = pow(r118797, r118798);
double r118800 = 4.0;
double r118801 = 1.0;
double r118802 = r118801 + r118793;
double r118803 = r118794 * r118802;
double r118804 = 3.0;
double r118805 = r118804 * r118793;
double r118806 = r118801 - r118805;
double r118807 = r118796 * r118806;
double r118808 = r118803 + r118807;
double r118809 = r118800 * r118808;
double r118810 = r118799 + r118809;
double r118811 = r118810 - r118801;
return r118811;
}



Bits error versus a



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