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(\left(\left(\left(\left(\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 \mathsf{fma}\left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{\left(x1 \cdot x1\right) \cdot \left(x1 \cdot x1\right) - 1}, x1 \cdot x1 - 1, -3\right) + \left(x1 \cdot x1\right) \cdot \mathsf{fma}\left(4, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}, \left(-\sqrt{6}\right) \cdot \sqrt{6}\right)\right) \cdot \left(1 + x1 \cdot x1\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) + x1 \cdot \left(x1 \cdot x1\right)\right) + x1\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right) + x1double f(double x1, double x2) {
double r2248865 = x1;
double r2248866 = 2.0;
double r2248867 = r2248866 * r2248865;
double r2248868 = 3.0;
double r2248869 = r2248868 * r2248865;
double r2248870 = r2248869 * r2248865;
double r2248871 = x2;
double r2248872 = r2248866 * r2248871;
double r2248873 = r2248870 + r2248872;
double r2248874 = r2248873 - r2248865;
double r2248875 = r2248865 * r2248865;
double r2248876 = 1.0;
double r2248877 = r2248875 + r2248876;
double r2248878 = r2248874 / r2248877;
double r2248879 = r2248867 * r2248878;
double r2248880 = r2248878 - r2248868;
double r2248881 = r2248879 * r2248880;
double r2248882 = 4.0;
double r2248883 = r2248882 * r2248878;
double r2248884 = 6.0;
double r2248885 = r2248883 - r2248884;
double r2248886 = r2248875 * r2248885;
double r2248887 = r2248881 + r2248886;
double r2248888 = r2248887 * r2248877;
double r2248889 = r2248870 * r2248878;
double r2248890 = r2248888 + r2248889;
double r2248891 = r2248875 * r2248865;
double r2248892 = r2248890 + r2248891;
double r2248893 = r2248892 + r2248865;
double r2248894 = r2248870 - r2248872;
double r2248895 = r2248894 - r2248865;
double r2248896 = r2248895 / r2248877;
double r2248897 = r2248868 * r2248896;
double r2248898 = r2248893 + r2248897;
double r2248899 = r2248865 + r2248898;
return r2248899;
}
double f(double x1, double x2) {
double r2248900 = x1;
double r2248901 = 2.0;
double r2248902 = r2248900 * r2248901;
double r2248903 = 3.0;
double r2248904 = r2248903 * r2248900;
double r2248905 = r2248904 * r2248900;
double r2248906 = x2;
double r2248907 = r2248906 * r2248901;
double r2248908 = r2248905 + r2248907;
double r2248909 = r2248908 - r2248900;
double r2248910 = 1.0;
double r2248911 = r2248900 * r2248900;
double r2248912 = r2248910 + r2248911;
double r2248913 = r2248909 / r2248912;
double r2248914 = r2248902 * r2248913;
double r2248915 = r2248911 * r2248911;
double r2248916 = r2248915 - r2248910;
double r2248917 = r2248909 / r2248916;
double r2248918 = r2248911 - r2248910;
double r2248919 = -3.0;
double r2248920 = fma(r2248917, r2248918, r2248919);
double r2248921 = r2248914 * r2248920;
double r2248922 = 4.0;
double r2248923 = 6.0;
double r2248924 = sqrt(r2248923);
double r2248925 = -r2248924;
double r2248926 = r2248925 * r2248924;
double r2248927 = fma(r2248922, r2248913, r2248926);
double r2248928 = r2248911 * r2248927;
double r2248929 = r2248921 + r2248928;
double r2248930 = r2248929 * r2248912;
double r2248931 = r2248905 * r2248913;
double r2248932 = r2248930 + r2248931;
double r2248933 = r2248900 * r2248911;
double r2248934 = r2248932 + r2248933;
double r2248935 = r2248934 + r2248900;
double r2248936 = r2248905 - r2248907;
double r2248937 = r2248936 - r2248900;
double r2248938 = r2248937 / r2248912;
double r2248939 = r2248938 * r2248903;
double r2248940 = r2248935 + r2248939;
double r2248941 = r2248940 + r2248900;
return r2248941;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied flip-+0.5
Applied associate-/r/0.5
Applied fma-neg0.5
Simplified0.5
rmApplied add-sqr-sqrt0.5
Applied prod-diff0.5
Applied distribute-rgt-in0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019168 +o rules:numerics
(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))))))