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 r52826 = x1;
double r52827 = 2.0;
double r52828 = r52827 * r52826;
double r52829 = 3.0;
double r52830 = r52829 * r52826;
double r52831 = r52830 * r52826;
double r52832 = x2;
double r52833 = r52827 * r52832;
double r52834 = r52831 + r52833;
double r52835 = r52834 - r52826;
double r52836 = r52826 * r52826;
double r52837 = 1.0;
double r52838 = r52836 + r52837;
double r52839 = r52835 / r52838;
double r52840 = r52828 * r52839;
double r52841 = r52839 - r52829;
double r52842 = r52840 * r52841;
double r52843 = 4.0;
double r52844 = r52843 * r52839;
double r52845 = 6.0;
double r52846 = r52844 - r52845;
double r52847 = r52836 * r52846;
double r52848 = r52842 + r52847;
double r52849 = r52848 * r52838;
double r52850 = r52831 * r52839;
double r52851 = r52849 + r52850;
double r52852 = r52836 * r52826;
double r52853 = r52851 + r52852;
double r52854 = r52853 + r52826;
double r52855 = r52831 - r52833;
double r52856 = r52855 - r52826;
double r52857 = r52856 / r52838;
double r52858 = r52829 * r52857;
double r52859 = r52854 + r52858;
double r52860 = r52826 + r52859;
return r52860;
}
double f(double x1, double x2) {
double r52861 = x1;
double r52862 = 2.0;
double r52863 = r52862 * r52861;
double r52864 = 3.0;
double r52865 = r52864 * r52861;
double r52866 = r52865 * r52861;
double r52867 = x2;
double r52868 = r52862 * r52867;
double r52869 = r52866 + r52868;
double r52870 = r52869 - r52861;
double r52871 = r52861 * r52861;
double r52872 = 1.0;
double r52873 = r52871 + r52872;
double r52874 = r52870 / r52873;
double r52875 = r52863 * r52874;
double r52876 = r52874 - r52864;
double r52877 = r52875 * r52876;
double r52878 = 4.0;
double r52879 = r52878 * r52874;
double r52880 = 6.0;
double r52881 = r52879 - r52880;
double r52882 = cbrt(r52881);
double r52883 = r52882 * r52882;
double r52884 = r52871 * r52883;
double r52885 = r52884 * r52882;
double r52886 = r52877 + r52885;
double r52887 = r52886 * r52873;
double r52888 = r52866 * r52874;
double r52889 = r52887 + r52888;
double r52890 = r52871 * r52861;
double r52891 = r52889 + r52890;
double r52892 = r52891 + r52861;
double r52893 = r52866 - r52868;
double r52894 = r52893 - r52861;
double r52895 = r52894 / r52873;
double r52896 = r52864 * r52895;
double r52897 = r52892 + r52896;
double r52898 = r52861 + r52897;
return r52898;
}



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