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)\left(x1 + \left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right)\right) + \left(\left(\left(x1 \cdot x1\right) \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right) + \left(x1 \cdot x1 + 1\right) \cdot {\left(\sqrt[3]{\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)}^{3}\right) + \left(x1 \cdot x1 + 1\right) \cdot \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)\right)\right)double f(double x1, double x2) {
double r53851 = x1;
double r53852 = 2.0;
double r53853 = r53852 * r53851;
double r53854 = 3.0;
double r53855 = r53854 * r53851;
double r53856 = r53855 * r53851;
double r53857 = x2;
double r53858 = r53852 * r53857;
double r53859 = r53856 + r53858;
double r53860 = r53859 - r53851;
double r53861 = r53851 * r53851;
double r53862 = 1.0;
double r53863 = r53861 + r53862;
double r53864 = r53860 / r53863;
double r53865 = r53853 * r53864;
double r53866 = r53864 - r53854;
double r53867 = r53865 * r53866;
double r53868 = 4.0;
double r53869 = r53868 * r53864;
double r53870 = 6.0;
double r53871 = r53869 - r53870;
double r53872 = r53861 * r53871;
double r53873 = r53867 + r53872;
double r53874 = r53873 * r53863;
double r53875 = r53856 * r53864;
double r53876 = r53874 + r53875;
double r53877 = r53861 * r53851;
double r53878 = r53876 + r53877;
double r53879 = r53878 + r53851;
double r53880 = r53856 - r53858;
double r53881 = r53880 - r53851;
double r53882 = r53881 / r53863;
double r53883 = r53854 * r53882;
double r53884 = r53879 + r53883;
double r53885 = r53851 + r53884;
return r53885;
}
double f(double x1, double x2) {
double r53886 = x1;
double r53887 = 3.0;
double r53888 = r53887 * r53886;
double r53889 = r53888 * r53886;
double r53890 = 2.0;
double r53891 = x2;
double r53892 = r53890 * r53891;
double r53893 = r53889 - r53892;
double r53894 = r53893 - r53886;
double r53895 = r53886 * r53886;
double r53896 = 1.0;
double r53897 = r53895 + r53896;
double r53898 = r53894 / r53897;
double r53899 = r53887 * r53898;
double r53900 = r53886 + r53899;
double r53901 = r53886 + r53900;
double r53902 = r53889 + r53892;
double r53903 = r53902 - r53886;
double r53904 = r53903 / r53897;
double r53905 = r53904 * r53887;
double r53906 = r53886 + r53905;
double r53907 = r53895 * r53906;
double r53908 = 4.0;
double r53909 = r53908 * r53904;
double r53910 = 6.0;
double r53911 = r53909 - r53910;
double r53912 = r53895 * r53911;
double r53913 = cbrt(r53912);
double r53914 = 3.0;
double r53915 = pow(r53913, r53914);
double r53916 = r53897 * r53915;
double r53917 = r53907 + r53916;
double r53918 = r53890 * r53886;
double r53919 = r53918 * r53904;
double r53920 = r53904 - r53887;
double r53921 = r53919 * r53920;
double r53922 = r53897 * r53921;
double r53923 = r53917 + r53922;
double r53924 = r53901 + r53923;
return r53924;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019304
(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))))))