x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6\right)\right) \cdot \left(x1 \cdot x1 + 1\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right)x1 + \left(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(1 + x1 \cdot x1\right) \cdot \left(\left(\sqrt[3]{\left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3} \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3}\right)\right) + \left(x1 \cdot x1\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4 - 6\right)} \cdot \sqrt[3]{\left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3} \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3}\right)\right) + \left(x1 \cdot x1\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4 - 6\right)}\right) \cdot \sqrt[3]{\left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3} \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3}\right)\right) + \left(x1 \cdot x1\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4 - 6\right)}\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)\right)\right)\right)double f(double x1, double x2) {
double r1974865 = x1;
double r1974866 = 2.0;
double r1974867 = r1974866 * r1974865;
double r1974868 = 3.0;
double r1974869 = r1974868 * r1974865;
double r1974870 = r1974869 * r1974865;
double r1974871 = x2;
double r1974872 = r1974866 * r1974871;
double r1974873 = r1974870 + r1974872;
double r1974874 = r1974873 - r1974865;
double r1974875 = r1974865 * r1974865;
double r1974876 = 1.0;
double r1974877 = r1974875 + r1974876;
double r1974878 = r1974874 / r1974877;
double r1974879 = r1974867 * r1974878;
double r1974880 = r1974878 - r1974868;
double r1974881 = r1974879 * r1974880;
double r1974882 = 4.0;
double r1974883 = r1974882 * r1974878;
double r1974884 = 6.0;
double r1974885 = r1974883 - r1974884;
double r1974886 = r1974875 * r1974885;
double r1974887 = r1974881 + r1974886;
double r1974888 = r1974887 * r1974877;
double r1974889 = r1974870 * r1974878;
double r1974890 = r1974888 + r1974889;
double r1974891 = r1974875 * r1974865;
double r1974892 = r1974890 + r1974891;
double r1974893 = r1974892 + r1974865;
double r1974894 = r1974870 - r1974872;
double r1974895 = r1974894 - r1974865;
double r1974896 = r1974895 / r1974877;
double r1974897 = r1974868 * r1974896;
double r1974898 = r1974893 + r1974897;
double r1974899 = r1974865 + r1974898;
return r1974899;
}
double f(double x1, double x2) {
double r1974900 = x1;
double r1974901 = 3.0;
double r1974902 = r1974901 * r1974900;
double r1974903 = r1974902 * r1974900;
double r1974904 = x2;
double r1974905 = 2.0;
double r1974906 = r1974904 * r1974905;
double r1974907 = r1974903 - r1974906;
double r1974908 = r1974907 - r1974900;
double r1974909 = 1.0;
double r1974910 = r1974900 * r1974900;
double r1974911 = r1974909 + r1974910;
double r1974912 = r1974908 / r1974911;
double r1974913 = r1974901 * r1974912;
double r1974914 = r1974900 * r1974910;
double r1974915 = r1974900 * r1974905;
double r1974916 = r1974903 + r1974906;
double r1974917 = r1974916 - r1974900;
double r1974918 = r1974917 / r1974911;
double r1974919 = r1974915 * r1974918;
double r1974920 = r1974918 - r1974901;
double r1974921 = cbrt(r1974920);
double r1974922 = r1974921 * r1974921;
double r1974923 = r1974921 * r1974922;
double r1974924 = r1974919 * r1974923;
double r1974925 = 4.0;
double r1974926 = r1974918 * r1974925;
double r1974927 = 6.0;
double r1974928 = r1974926 - r1974927;
double r1974929 = r1974910 * r1974928;
double r1974930 = r1974924 + r1974929;
double r1974931 = cbrt(r1974930);
double r1974932 = r1974931 * r1974931;
double r1974933 = r1974932 * r1974931;
double r1974934 = r1974911 * r1974933;
double r1974935 = r1974903 * r1974918;
double r1974936 = r1974934 + r1974935;
double r1974937 = r1974914 + r1974936;
double r1974938 = r1974900 + r1974937;
double r1974939 = r1974913 + r1974938;
double r1974940 = r1974900 + r1974939;
return r1974940;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
rmApplied add-cube-cbrt0.8
Final simplification0.8
herbie shell --seed 2019152
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2 x1) (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))) (- (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1)) 3)) (* (* x1 x1) (- (* 4 (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))) 6))) (+ (* x1 x1) 1)) (* (* (* 3 x1) x1) (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1)))) (* (* x1 x1) x1)) x1) (* 3 (/ (- (- (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))))))