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(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(1 + x1 \cdot x1\right) \cdot \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(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 - 6\right)\right)\right)\right)\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 r3064937 = x1;
double r3064938 = 2.0;
double r3064939 = r3064938 * r3064937;
double r3064940 = 3.0;
double r3064941 = r3064940 * r3064937;
double r3064942 = r3064941 * r3064937;
double r3064943 = x2;
double r3064944 = r3064938 * r3064943;
double r3064945 = r3064942 + r3064944;
double r3064946 = r3064945 - r3064937;
double r3064947 = r3064937 * r3064937;
double r3064948 = 1.0;
double r3064949 = r3064947 + r3064948;
double r3064950 = r3064946 / r3064949;
double r3064951 = r3064939 * r3064950;
double r3064952 = r3064950 - r3064940;
double r3064953 = r3064951 * r3064952;
double r3064954 = 4.0;
double r3064955 = r3064954 * r3064950;
double r3064956 = 6.0;
double r3064957 = r3064955 - r3064956;
double r3064958 = r3064947 * r3064957;
double r3064959 = r3064953 + r3064958;
double r3064960 = r3064959 * r3064949;
double r3064961 = r3064942 * r3064950;
double r3064962 = r3064960 + r3064961;
double r3064963 = r3064947 * r3064937;
double r3064964 = r3064962 + r3064963;
double r3064965 = r3064964 + r3064937;
double r3064966 = r3064942 - r3064944;
double r3064967 = r3064966 - r3064937;
double r3064968 = r3064967 / r3064949;
double r3064969 = r3064940 * r3064968;
double r3064970 = r3064965 + r3064969;
double r3064971 = r3064937 + r3064970;
return r3064971;
}
double f(double x1, double x2) {
double r3064972 = x1;
double r3064973 = r3064972 * r3064972;
double r3064974 = r3064972 * r3064973;
double r3064975 = 3.0;
double r3064976 = r3064975 * r3064972;
double r3064977 = r3064976 * r3064972;
double r3064978 = x2;
double r3064979 = 2.0;
double r3064980 = r3064978 * r3064979;
double r3064981 = r3064977 + r3064980;
double r3064982 = r3064981 - r3064972;
double r3064983 = 1.0;
double r3064984 = r3064983 + r3064973;
double r3064985 = r3064982 / r3064984;
double r3064986 = r3064977 * r3064985;
double r3064987 = r3064972 * r3064979;
double r3064988 = r3064987 * r3064985;
double r3064989 = r3064985 - r3064975;
double r3064990 = cbrt(r3064989);
double r3064991 = r3064990 * r3064990;
double r3064992 = r3064990 * r3064991;
double r3064993 = r3064988 * r3064992;
double r3064994 = 4.0;
double r3064995 = r3064985 * r3064994;
double r3064996 = 6.0;
double r3064997 = r3064995 - r3064996;
double r3064998 = r3064973 * r3064997;
double r3064999 = r3064993 + r3064998;
double r3065000 = r3064984 * r3064999;
double r3065001 = r3064986 + r3065000;
double r3065002 = r3064974 + r3065001;
double r3065003 = r3064972 + r3065002;
double r3065004 = r3064977 - r3064980;
double r3065005 = r3065004 - r3064972;
double r3065006 = r3065005 / r3064984;
double r3065007 = r3065006 * r3064975;
double r3065008 = r3065003 + r3065007;
double r3065009 = r3065008 + r3064972;
return r3065009;
}



Bits error versus x1



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