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(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) + \left(\left(x1 \cdot x1\right) \cdot \left(\sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right)\right) \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\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 r51911 = x1;
double r51912 = 2.0;
double r51913 = r51912 * r51911;
double r51914 = 3.0;
double r51915 = r51914 * r51911;
double r51916 = r51915 * r51911;
double r51917 = x2;
double r51918 = r51912 * r51917;
double r51919 = r51916 + r51918;
double r51920 = r51919 - r51911;
double r51921 = r51911 * r51911;
double r51922 = 1.0;
double r51923 = r51921 + r51922;
double r51924 = r51920 / r51923;
double r51925 = r51913 * r51924;
double r51926 = r51924 - r51914;
double r51927 = r51925 * r51926;
double r51928 = 4.0;
double r51929 = r51928 * r51924;
double r51930 = 6.0;
double r51931 = r51929 - r51930;
double r51932 = r51921 * r51931;
double r51933 = r51927 + r51932;
double r51934 = r51933 * r51923;
double r51935 = r51916 * r51924;
double r51936 = r51934 + r51935;
double r51937 = r51921 * r51911;
double r51938 = r51936 + r51937;
double r51939 = r51938 + r51911;
double r51940 = r51916 - r51918;
double r51941 = r51940 - r51911;
double r51942 = r51941 / r51923;
double r51943 = r51914 * r51942;
double r51944 = r51939 + r51943;
double r51945 = r51911 + r51944;
return r51945;
}
double f(double x1, double x2) {
double r51946 = x1;
double r51947 = 2.0;
double r51948 = r51947 * r51946;
double r51949 = 3.0;
double r51950 = r51949 * r51946;
double r51951 = r51950 * r51946;
double r51952 = x2;
double r51953 = r51947 * r51952;
double r51954 = r51951 + r51953;
double r51955 = r51954 - r51946;
double r51956 = r51946 * r51946;
double r51957 = 1.0;
double r51958 = r51956 + r51957;
double r51959 = r51955 / r51958;
double r51960 = r51948 * r51959;
double r51961 = r51959 - r51949;
double r51962 = r51960 * r51961;
double r51963 = 4.0;
double r51964 = r51963 * r51959;
double r51965 = 6.0;
double r51966 = r51964 - r51965;
double r51967 = cbrt(r51966);
double r51968 = r51967 * r51967;
double r51969 = r51956 * r51968;
double r51970 = r51969 * r51967;
double r51971 = r51962 + r51970;
double r51972 = r51971 * r51958;
double r51973 = r51951 * r51959;
double r51974 = r51972 + r51973;
double r51975 = r51956 * r51946;
double r51976 = r51974 + r51975;
double r51977 = r51976 + r51946;
double r51978 = r51951 - r51953;
double r51979 = r51978 - r51946;
double r51980 = r51979 / r51958;
double r51981 = r51949 * r51980;
double r51982 = r51977 + r51981;
double r51983 = r51946 + r51982;
return r51983;
}



Bits error versus x1



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