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(\sqrt[3]{\left(\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot x1\right) \cdot x1} \cdot \sqrt[3]{\left(\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot x1\right) \cdot x1}\right) \cdot \sqrt[3]{\left(\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)} - 6\right) \cdot x1\right) \cdot x1}\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 r67927 = x1;
double r67928 = 2.0;
double r67929 = r67928 * r67927;
double r67930 = 3.0;
double r67931 = r67930 * r67927;
double r67932 = r67931 * r67927;
double r67933 = x2;
double r67934 = r67928 * r67933;
double r67935 = r67932 + r67934;
double r67936 = r67935 - r67927;
double r67937 = r67927 * r67927;
double r67938 = 1.0;
double r67939 = r67937 + r67938;
double r67940 = r67936 / r67939;
double r67941 = r67929 * r67940;
double r67942 = r67940 - r67930;
double r67943 = r67941 * r67942;
double r67944 = 4.0;
double r67945 = r67944 * r67940;
double r67946 = 6.0;
double r67947 = r67945 - r67946;
double r67948 = r67937 * r67947;
double r67949 = r67943 + r67948;
double r67950 = r67949 * r67939;
double r67951 = r67932 * r67940;
double r67952 = r67950 + r67951;
double r67953 = r67937 * r67927;
double r67954 = r67952 + r67953;
double r67955 = r67954 + r67927;
double r67956 = r67932 - r67934;
double r67957 = r67956 - r67927;
double r67958 = r67957 / r67939;
double r67959 = r67930 * r67958;
double r67960 = r67955 + r67959;
double r67961 = r67927 + r67960;
return r67961;
}
double f(double x1, double x2) {
double r67962 = x1;
double r67963 = 2.0;
double r67964 = r67963 * r67962;
double r67965 = 3.0;
double r67966 = r67965 * r67962;
double r67967 = r67966 * r67962;
double r67968 = x2;
double r67969 = r67963 * r67968;
double r67970 = r67967 + r67969;
double r67971 = r67970 - r67962;
double r67972 = r67962 * r67962;
double r67973 = 1.0;
double r67974 = r67972 + r67973;
double r67975 = r67971 / r67974;
double r67976 = r67964 * r67975;
double r67977 = r67975 - r67965;
double r67978 = r67976 * r67977;
double r67979 = 4.0;
double r67980 = fma(r67966, r67962, r67969);
double r67981 = r67980 - r67962;
double r67982 = fma(r67962, r67962, r67973);
double r67983 = r67981 / r67982;
double r67984 = r67979 * r67983;
double r67985 = 6.0;
double r67986 = r67984 - r67985;
double r67987 = r67986 * r67962;
double r67988 = r67987 * r67962;
double r67989 = cbrt(r67988);
double r67990 = r67989 * r67989;
double r67991 = r67990 * r67989;
double r67992 = r67978 + r67991;
double r67993 = r67992 * r67974;
double r67994 = r67967 * r67975;
double r67995 = r67993 + r67994;
double r67996 = r67972 * r67962;
double r67997 = r67995 + r67996;
double r67998 = r67997 + r67962;
double r67999 = r67967 - r67969;
double r68000 = r67999 - r67962;
double r68001 = r68000 / r67974;
double r68002 = r67965 * r68001;
double r68003 = r67998 + r68002;
double r68004 = r67962 + r68003;
return r68004;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-cube-cbrt0.6
Simplified0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019350 +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))))))