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(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\left(1 - x1 \cdot x1\right) + \left(x1 \cdot x1\right) \cdot \left(x1 \cdot x1\right)\right) \cdot \frac{\left(\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}{\left(x1 \cdot \left(x1 \cdot x1\right)\right) \cdot \left(x1 \cdot \left(x1 \cdot x1\right)\right) + 1} + \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 \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3} \cdot \left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3}\right)\right) + \left(-6 \cdot \left(x1 \cdot x1\right) + \left(x1 \cdot x1\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 4\right)\right)\right) \cdot \left(1 + x1 \cdot x1\right)\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 r2292967 = x1;
double r2292968 = 2.0;
double r2292969 = r2292968 * r2292967;
double r2292970 = 3.0;
double r2292971 = r2292970 * r2292967;
double r2292972 = r2292971 * r2292967;
double r2292973 = x2;
double r2292974 = r2292968 * r2292973;
double r2292975 = r2292972 + r2292974;
double r2292976 = r2292975 - r2292967;
double r2292977 = r2292967 * r2292967;
double r2292978 = 1.0;
double r2292979 = r2292977 + r2292978;
double r2292980 = r2292976 / r2292979;
double r2292981 = r2292969 * r2292980;
double r2292982 = r2292980 - r2292970;
double r2292983 = r2292981 * r2292982;
double r2292984 = 4.0;
double r2292985 = r2292984 * r2292980;
double r2292986 = 6.0;
double r2292987 = r2292985 - r2292986;
double r2292988 = r2292977 * r2292987;
double r2292989 = r2292983 + r2292988;
double r2292990 = r2292989 * r2292979;
double r2292991 = r2292972 * r2292980;
double r2292992 = r2292990 + r2292991;
double r2292993 = r2292977 * r2292967;
double r2292994 = r2292992 + r2292993;
double r2292995 = r2292994 + r2292967;
double r2292996 = r2292972 - r2292974;
double r2292997 = r2292996 - r2292967;
double r2292998 = r2292997 / r2292979;
double r2292999 = r2292970 * r2292998;
double r2293000 = r2292995 + r2292999;
double r2293001 = r2292967 + r2293000;
return r2293001;
}
double f(double x1, double x2) {
double r2293002 = x1;
double r2293003 = r2293002 * r2293002;
double r2293004 = r2293002 * r2293003;
double r2293005 = 1.0;
double r2293006 = r2293005 - r2293003;
double r2293007 = r2293003 * r2293003;
double r2293008 = r2293006 + r2293007;
double r2293009 = 3.0;
double r2293010 = r2293009 * r2293002;
double r2293011 = r2293010 * r2293002;
double r2293012 = x2;
double r2293013 = 2.0;
double r2293014 = r2293012 * r2293013;
double r2293015 = r2293011 + r2293014;
double r2293016 = r2293015 - r2293002;
double r2293017 = r2293016 * r2293011;
double r2293018 = r2293004 * r2293004;
double r2293019 = r2293018 + r2293005;
double r2293020 = r2293017 / r2293019;
double r2293021 = r2293008 * r2293020;
double r2293022 = r2293002 * r2293013;
double r2293023 = r2293005 + r2293003;
double r2293024 = r2293016 / r2293023;
double r2293025 = r2293022 * r2293024;
double r2293026 = r2293024 - r2293009;
double r2293027 = cbrt(r2293026);
double r2293028 = r2293027 * r2293027;
double r2293029 = r2293027 * r2293028;
double r2293030 = r2293025 * r2293029;
double r2293031 = -6.0;
double r2293032 = r2293031 * r2293003;
double r2293033 = 4.0;
double r2293034 = r2293024 * r2293033;
double r2293035 = r2293003 * r2293034;
double r2293036 = r2293032 + r2293035;
double r2293037 = r2293030 + r2293036;
double r2293038 = r2293037 * r2293023;
double r2293039 = r2293021 + r2293038;
double r2293040 = r2293004 + r2293039;
double r2293041 = r2293040 + r2293002;
double r2293042 = r2293011 - r2293014;
double r2293043 = r2293042 - r2293002;
double r2293044 = r2293043 / r2293023;
double r2293045 = r2293044 * r2293009;
double r2293046 = r2293041 + r2293045;
double r2293047 = r2293046 + r2293002;
return r2293047;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-rgt-in0.5
rmApplied flip3-+0.5
Applied associate-/r/0.5
Applied associate-*r*0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2019165
(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))))))