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(3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \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(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \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) + \left(-6 \cdot \left(x1 \cdot x1\right) + \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right) \cdot \left(x1 \cdot x1\right)\right)\right)\right)\right)\right)\right)double f(double x1, double x2) {
double r2862955 = x1;
double r2862956 = 2.0;
double r2862957 = r2862956 * r2862955;
double r2862958 = 3.0;
double r2862959 = r2862958 * r2862955;
double r2862960 = r2862959 * r2862955;
double r2862961 = x2;
double r2862962 = r2862956 * r2862961;
double r2862963 = r2862960 + r2862962;
double r2862964 = r2862963 - r2862955;
double r2862965 = r2862955 * r2862955;
double r2862966 = 1.0;
double r2862967 = r2862965 + r2862966;
double r2862968 = r2862964 / r2862967;
double r2862969 = r2862957 * r2862968;
double r2862970 = r2862968 - r2862958;
double r2862971 = r2862969 * r2862970;
double r2862972 = 4.0;
double r2862973 = r2862972 * r2862968;
double r2862974 = 6.0;
double r2862975 = r2862973 - r2862974;
double r2862976 = r2862965 * r2862975;
double r2862977 = r2862971 + r2862976;
double r2862978 = r2862977 * r2862967;
double r2862979 = r2862960 * r2862968;
double r2862980 = r2862978 + r2862979;
double r2862981 = r2862965 * r2862955;
double r2862982 = r2862980 + r2862981;
double r2862983 = r2862982 + r2862955;
double r2862984 = r2862960 - r2862962;
double r2862985 = r2862984 - r2862955;
double r2862986 = r2862985 / r2862967;
double r2862987 = r2862958 * r2862986;
double r2862988 = r2862983 + r2862987;
double r2862989 = r2862955 + r2862988;
return r2862989;
}
double f(double x1, double x2) {
double r2862990 = x1;
double r2862991 = 3.0;
double r2862992 = r2862991 * r2862990;
double r2862993 = r2862992 * r2862990;
double r2862994 = x2;
double r2862995 = 2.0;
double r2862996 = r2862994 * r2862995;
double r2862997 = r2862993 - r2862996;
double r2862998 = r2862997 - r2862990;
double r2862999 = 1.0;
double r2863000 = r2862990 * r2862990;
double r2863001 = r2862999 + r2863000;
double r2863002 = r2862998 / r2863001;
double r2863003 = r2862991 * r2863002;
double r2863004 = r2862990 * r2863000;
double r2863005 = r2862993 + r2862996;
double r2863006 = r2863005 - r2862990;
double r2863007 = r2863006 / r2863001;
double r2863008 = r2862993 * r2863007;
double r2863009 = r2863007 - r2862991;
double r2863010 = r2862990 * r2862995;
double r2863011 = r2863010 * r2863007;
double r2863012 = r2863009 * r2863011;
double r2863013 = -6.0;
double r2863014 = r2863013 * r2863000;
double r2863015 = 4.0;
double r2863016 = r2863015 * r2863007;
double r2863017 = r2863016 * r2863000;
double r2863018 = r2863014 + r2863017;
double r2863019 = r2863012 + r2863018;
double r2863020 = r2863001 * r2863019;
double r2863021 = r2863008 + r2863020;
double r2863022 = r2863004 + r2863021;
double r2863023 = r2862990 + r2863022;
double r2863024 = r2863003 + r2863023;
double r2863025 = r2862990 + r2863024;
return r2863025;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019162
(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))))))