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(\mathsf{fma}\left(\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1, \frac{1}{x1 \cdot x1 + 1}, -\sqrt[3]{3} \cdot \left(\sqrt[3]{3} \cdot \sqrt[3]{3}\right)\right) \cdot \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) + \mathsf{fma}\left(\left(-3\right) + 3, \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} \cdot \left(2 \cdot x1\right), \left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \left(x1 \cdot x1\right) \cdot \left(-6\right)\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 r75967 = x1;
double r75968 = 2.0;
double r75969 = r75968 * r75967;
double r75970 = 3.0;
double r75971 = r75970 * r75967;
double r75972 = r75971 * r75967;
double r75973 = x2;
double r75974 = r75968 * r75973;
double r75975 = r75972 + r75974;
double r75976 = r75975 - r75967;
double r75977 = r75967 * r75967;
double r75978 = 1.0;
double r75979 = r75977 + r75978;
double r75980 = r75976 / r75979;
double r75981 = r75969 * r75980;
double r75982 = r75980 - r75970;
double r75983 = r75981 * r75982;
double r75984 = 4.0;
double r75985 = r75984 * r75980;
double r75986 = 6.0;
double r75987 = r75985 - r75986;
double r75988 = r75977 * r75987;
double r75989 = r75983 + r75988;
double r75990 = r75989 * r75979;
double r75991 = r75972 * r75980;
double r75992 = r75990 + r75991;
double r75993 = r75977 * r75967;
double r75994 = r75992 + r75993;
double r75995 = r75994 + r75967;
double r75996 = r75972 - r75974;
double r75997 = r75996 - r75967;
double r75998 = r75997 / r75979;
double r75999 = r75970 * r75998;
double r76000 = r75995 + r75999;
double r76001 = r75967 + r76000;
return r76001;
}
double f(double x1, double x2) {
double r76002 = x1;
double r76003 = 3.0;
double r76004 = r76003 * r76002;
double r76005 = r76004 * r76002;
double r76006 = 2.0;
double r76007 = x2;
double r76008 = r76006 * r76007;
double r76009 = r76005 + r76008;
double r76010 = r76009 - r76002;
double r76011 = 1.0;
double r76012 = r76002 * r76002;
double r76013 = 1.0;
double r76014 = r76012 + r76013;
double r76015 = r76011 / r76014;
double r76016 = cbrt(r76003);
double r76017 = r76016 * r76016;
double r76018 = r76016 * r76017;
double r76019 = -r76018;
double r76020 = fma(r76010, r76015, r76019);
double r76021 = r76006 * r76002;
double r76022 = r76010 / r76014;
double r76023 = r76021 * r76022;
double r76024 = r76020 * r76023;
double r76025 = -r76003;
double r76026 = r76025 + r76003;
double r76027 = fma(r76004, r76002, r76008);
double r76028 = r76027 - r76002;
double r76029 = fma(r76002, r76002, r76013);
double r76030 = r76028 / r76029;
double r76031 = r76030 * r76021;
double r76032 = 4.0;
double r76033 = r76032 * r76030;
double r76034 = r76012 * r76033;
double r76035 = 6.0;
double r76036 = -r76035;
double r76037 = r76012 * r76036;
double r76038 = r76034 + r76037;
double r76039 = fma(r76026, r76031, r76038);
double r76040 = r76024 + r76039;
double r76041 = r76040 * r76014;
double r76042 = r76005 * r76022;
double r76043 = r76041 + r76042;
double r76044 = r76012 * r76002;
double r76045 = r76043 + r76044;
double r76046 = r76045 + r76002;
double r76047 = r76005 - r76008;
double r76048 = r76047 - r76002;
double r76049 = r76048 / r76014;
double r76050 = r76003 * r76049;
double r76051 = r76046 + r76050;
double r76052 = r76002 + r76051;
return r76052;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-cube-cbrt0.5
Applied div-inv0.5
Applied prod-diff0.5
Applied distribute-rgt-in0.5
Applied associate-+l+0.5
Simplified0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Final simplification0.5
herbie shell --seed 2019305 +o rules:numerics
(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))))))