\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 r184854 = a;
double r184855 = r184854 * r184854;
double r184856 = b;
double r184857 = r184856 * r184856;
double r184858 = r184855 + r184857;
double r184859 = 2.0;
double r184860 = pow(r184858, r184859);
double r184861 = 4.0;
double r184862 = 1.0;
double r184863 = r184862 + r184854;
double r184864 = r184855 * r184863;
double r184865 = 3.0;
double r184866 = r184865 * r184854;
double r184867 = r184862 - r184866;
double r184868 = r184857 * r184867;
double r184869 = r184864 + r184868;
double r184870 = r184861 * r184869;
double r184871 = r184860 + r184870;
double r184872 = r184871 - r184862;
return r184872;
}
double f(double a, double b) {
double r184873 = a;
double r184874 = r184873 * r184873;
double r184875 = b;
double r184876 = r184875 * r184875;
double r184877 = r184874 + r184876;
double r184878 = 2.0;
double r184879 = pow(r184877, r184878);
double r184880 = 4.0;
double r184881 = 1.0;
double r184882 = r184881 + r184873;
double r184883 = r184874 * r184882;
double r184884 = 3.0;
double r184885 = r184884 * r184873;
double r184886 = r184881 - r184885;
double r184887 = r184876 * r184886;
double r184888 = r184883 + r184887;
double r184889 = r184880 * r184888;
double r184890 = r184879 + r184889;
double r184891 = r184890 - r184881;
return r184891;
}



Bits error versus a



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