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(\left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3}\right) \cdot \sqrt[3]{\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)double f(double x1, double x2) {
double r5426968 = x1;
double r5426969 = 2.0;
double r5426970 = r5426969 * r5426968;
double r5426971 = 3.0;
double r5426972 = r5426971 * r5426968;
double r5426973 = r5426972 * r5426968;
double r5426974 = x2;
double r5426975 = r5426969 * r5426974;
double r5426976 = r5426973 + r5426975;
double r5426977 = r5426976 - r5426968;
double r5426978 = r5426968 * r5426968;
double r5426979 = 1.0;
double r5426980 = r5426978 + r5426979;
double r5426981 = r5426977 / r5426980;
double r5426982 = r5426970 * r5426981;
double r5426983 = r5426981 - r5426971;
double r5426984 = r5426982 * r5426983;
double r5426985 = 4.0;
double r5426986 = r5426985 * r5426981;
double r5426987 = 6.0;
double r5426988 = r5426986 - r5426987;
double r5426989 = r5426978 * r5426988;
double r5426990 = r5426984 + r5426989;
double r5426991 = r5426990 * r5426980;
double r5426992 = r5426973 * r5426981;
double r5426993 = r5426991 + r5426992;
double r5426994 = r5426978 * r5426968;
double r5426995 = r5426993 + r5426994;
double r5426996 = r5426995 + r5426968;
double r5426997 = r5426973 - r5426975;
double r5426998 = r5426997 - r5426968;
double r5426999 = r5426998 / r5426980;
double r5427000 = r5426971 * r5426999;
double r5427001 = r5426996 + r5427000;
double r5427002 = r5426968 + r5427001;
return r5427002;
}
double f(double x1, double x2) {
double r5427003 = x1;
double r5427004 = 2.0;
double r5427005 = r5427004 * r5427003;
double r5427006 = 3.0;
double r5427007 = r5427006 * r5427003;
double r5427008 = r5427007 * r5427003;
double r5427009 = x2;
double r5427010 = r5427004 * r5427009;
double r5427011 = r5427008 + r5427010;
double r5427012 = r5427011 - r5427003;
double r5427013 = r5427003 * r5427003;
double r5427014 = 1.0;
double r5427015 = r5427013 + r5427014;
double r5427016 = r5427012 / r5427015;
double r5427017 = r5427005 * r5427016;
double r5427018 = r5427016 - r5427006;
double r5427019 = cbrt(r5427018);
double r5427020 = r5427019 * r5427019;
double r5427021 = r5427020 * r5427019;
double r5427022 = r5427017 * r5427021;
double r5427023 = 4.0;
double r5427024 = r5427023 * r5427016;
double r5427025 = 6.0;
double r5427026 = r5427024 - r5427025;
double r5427027 = r5427013 * r5427026;
double r5427028 = r5427022 + r5427027;
double r5427029 = r5427028 * r5427015;
double r5427030 = r5427008 * r5427016;
double r5427031 = r5427029 + r5427030;
double r5427032 = r5427013 * r5427003;
double r5427033 = r5427031 + r5427032;
double r5427034 = r5427033 + r5427003;
double r5427035 = r5427008 - r5427010;
double r5427036 = r5427035 - r5427003;
double r5427037 = r5427036 / r5427015;
double r5427038 = r5427006 * r5427037;
double r5427039 = r5427034 + r5427038;
double r5427040 = r5427003 + r5427039;
return r5427040;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019173
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))