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



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))))))