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(\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(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right)\right) \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\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)double f(double x1, double x2) {
double r521828 = x1;
double r521829 = 2.0;
double r521830 = r521829 * r521828;
double r521831 = 3.0;
double r521832 = r521831 * r521828;
double r521833 = r521832 * r521828;
double r521834 = x2;
double r521835 = r521829 * r521834;
double r521836 = r521833 + r521835;
double r521837 = r521836 - r521828;
double r521838 = r521828 * r521828;
double r521839 = 1.0;
double r521840 = r521838 + r521839;
double r521841 = r521837 / r521840;
double r521842 = r521830 * r521841;
double r521843 = r521841 - r521831;
double r521844 = r521842 * r521843;
double r521845 = 4.0;
double r521846 = r521845 * r521841;
double r521847 = 6.0;
double r521848 = r521846 - r521847;
double r521849 = r521838 * r521848;
double r521850 = r521844 + r521849;
double r521851 = r521850 * r521840;
double r521852 = r521833 * r521841;
double r521853 = r521851 + r521852;
double r521854 = r521838 * r521828;
double r521855 = r521853 + r521854;
double r521856 = r521855 + r521828;
double r521857 = r521833 - r521835;
double r521858 = r521857 - r521828;
double r521859 = r521858 / r521840;
double r521860 = r521831 * r521859;
double r521861 = r521856 + r521860;
double r521862 = r521828 + r521861;
return r521862;
}
double f(double x1, double x2) {
double r521863 = x1;
double r521864 = 2.0;
double r521865 = r521864 * r521863;
double r521866 = 3.0;
double r521867 = r521866 * r521863;
double r521868 = r521867 * r521863;
double r521869 = x2;
double r521870 = r521864 * r521869;
double r521871 = r521868 + r521870;
double r521872 = r521871 - r521863;
double r521873 = r521863 * r521863;
double r521874 = 1.0;
double r521875 = r521873 + r521874;
double r521876 = r521872 / r521875;
double r521877 = r521865 * r521876;
double r521878 = r521876 - r521866;
double r521879 = r521877 * r521878;
double r521880 = 4.0;
double r521881 = r521880 * r521876;
double r521882 = 6.0;
double r521883 = r521881 - r521882;
double r521884 = cbrt(r521883);
double r521885 = r521884 * r521884;
double r521886 = r521873 * r521885;
double r521887 = r521886 * r521884;
double r521888 = r521879 + r521887;
double r521889 = r521888 * r521875;
double r521890 = r521868 * r521876;
double r521891 = r521889 + r521890;
double r521892 = r521873 * r521863;
double r521893 = r521891 + r521892;
double r521894 = r521893 + r521863;
double r521895 = r521868 - r521870;
double r521896 = r521895 - r521863;
double r521897 = r521896 / r521875;
double r521898 = r521866 * r521897;
double r521899 = r521894 + r521898;
double r521900 = r521863 + r521899;
return r521900;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2020062
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
:precision binary64
(+ 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))))))