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(4 \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 \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 r58950 = x1;
double r58951 = 2.0;
double r58952 = r58951 * r58950;
double r58953 = 3.0;
double r58954 = r58953 * r58950;
double r58955 = r58954 * r58950;
double r58956 = x2;
double r58957 = r58951 * r58956;
double r58958 = r58955 + r58957;
double r58959 = r58958 - r58950;
double r58960 = r58950 * r58950;
double r58961 = 1.0;
double r58962 = r58960 + r58961;
double r58963 = r58959 / r58962;
double r58964 = r58952 * r58963;
double r58965 = r58963 - r58953;
double r58966 = r58964 * r58965;
double r58967 = 4.0;
double r58968 = r58967 * r58963;
double r58969 = 6.0;
double r58970 = r58968 - r58969;
double r58971 = r58960 * r58970;
double r58972 = r58966 + r58971;
double r58973 = r58972 * r58962;
double r58974 = r58955 * r58963;
double r58975 = r58973 + r58974;
double r58976 = r58960 * r58950;
double r58977 = r58975 + r58976;
double r58978 = r58977 + r58950;
double r58979 = r58955 - r58957;
double r58980 = r58979 - r58950;
double r58981 = r58980 / r58962;
double r58982 = r58953 * r58981;
double r58983 = r58978 + r58982;
double r58984 = r58950 + r58983;
return r58984;
}
double f(double x1, double x2) {
double r58985 = x1;
double r58986 = 2.0;
double r58987 = r58986 * r58985;
double r58988 = 3.0;
double r58989 = r58988 * r58985;
double r58990 = r58989 * r58985;
double r58991 = x2;
double r58992 = r58986 * r58991;
double r58993 = r58990 + r58992;
double r58994 = r58993 - r58985;
double r58995 = r58985 * r58985;
double r58996 = 1.0;
double r58997 = r58995 + r58996;
double r58998 = r58994 / r58997;
double r58999 = r58987 * r58998;
double r59000 = r58998 - r58988;
double r59001 = r58999 * r59000;
double r59002 = 4.0;
double r59003 = r59002 * r58998;
double r59004 = r58995 * r59003;
double r59005 = 6.0;
double r59006 = -r59005;
double r59007 = r58995 * r59006;
double r59008 = r59004 + r59007;
double r59009 = r59001 + r59008;
double r59010 = r59009 * r58997;
double r59011 = r58990 * r58998;
double r59012 = r59010 + r59011;
double r59013 = r58995 * r58985;
double r59014 = r59012 + r59013;
double r59015 = r59014 + r58985;
double r59016 = r58990 - r58992;
double r59017 = r59016 - r58985;
double r59018 = r59017 / r58997;
double r59019 = r58988 * r59018;
double r59020 = r59015 + r59019;
double r59021 = r58985 + r59020;
return r59021;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Final simplification0.5
herbie shell --seed 2019198
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))