\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 r240843 = a;
double r240844 = r240843 * r240843;
double r240845 = b;
double r240846 = r240845 * r240845;
double r240847 = r240844 + r240846;
double r240848 = 2.0;
double r240849 = pow(r240847, r240848);
double r240850 = 4.0;
double r240851 = 1.0;
double r240852 = r240851 + r240843;
double r240853 = r240844 * r240852;
double r240854 = 3.0;
double r240855 = r240854 * r240843;
double r240856 = r240851 - r240855;
double r240857 = r240846 * r240856;
double r240858 = r240853 + r240857;
double r240859 = r240850 * r240858;
double r240860 = r240849 + r240859;
double r240861 = r240860 - r240851;
return r240861;
}
double f(double a, double b) {
double r240862 = a;
double r240863 = r240862 * r240862;
double r240864 = b;
double r240865 = r240864 * r240864;
double r240866 = r240863 + r240865;
double r240867 = 2.0;
double r240868 = pow(r240866, r240867);
double r240869 = 4.0;
double r240870 = 1.0;
double r240871 = r240870 + r240862;
double r240872 = r240863 * r240871;
double r240873 = 3.0;
double r240874 = r240873 * r240862;
double r240875 = r240870 - r240874;
double r240876 = r240865 * r240875;
double r240877 = r240872 + r240876;
double r240878 = r240869 * r240877;
double r240879 = r240868 + r240878;
double r240880 = r240879 - r240870;
return r240880;
}



Bits error versus a



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