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 r3433015 = x1;
double r3433016 = 2.0;
double r3433017 = r3433016 * r3433015;
double r3433018 = 3.0;
double r3433019 = r3433018 * r3433015;
double r3433020 = r3433019 * r3433015;
double r3433021 = x2;
double r3433022 = r3433016 * r3433021;
double r3433023 = r3433020 + r3433022;
double r3433024 = r3433023 - r3433015;
double r3433025 = r3433015 * r3433015;
double r3433026 = 1.0;
double r3433027 = r3433025 + r3433026;
double r3433028 = r3433024 / r3433027;
double r3433029 = r3433017 * r3433028;
double r3433030 = r3433028 - r3433018;
double r3433031 = r3433029 * r3433030;
double r3433032 = 4.0;
double r3433033 = r3433032 * r3433028;
double r3433034 = 6.0;
double r3433035 = r3433033 - r3433034;
double r3433036 = r3433025 * r3433035;
double r3433037 = r3433031 + r3433036;
double r3433038 = r3433037 * r3433027;
double r3433039 = r3433020 * r3433028;
double r3433040 = r3433038 + r3433039;
double r3433041 = r3433025 * r3433015;
double r3433042 = r3433040 + r3433041;
double r3433043 = r3433042 + r3433015;
double r3433044 = r3433020 - r3433022;
double r3433045 = r3433044 - r3433015;
double r3433046 = r3433045 / r3433027;
double r3433047 = r3433018 * r3433046;
double r3433048 = r3433043 + r3433047;
double r3433049 = r3433015 + r3433048;
return r3433049;
}
double f(double x1, double x2) {
double r3433050 = x1;
double r3433051 = 3.0;
double r3433052 = r3433051 * r3433050;
double r3433053 = r3433052 * r3433050;
double r3433054 = x2;
double r3433055 = 2.0;
double r3433056 = r3433054 * r3433055;
double r3433057 = r3433053 - r3433056;
double r3433058 = r3433057 - r3433050;
double r3433059 = 1.0;
double r3433060 = r3433050 * r3433050;
double r3433061 = r3433059 + r3433060;
double r3433062 = r3433058 / r3433061;
double r3433063 = r3433051 * r3433062;
double r3433064 = r3433050 * r3433060;
double r3433065 = r3433053 + r3433056;
double r3433066 = r3433065 - r3433050;
double r3433067 = r3433066 / r3433061;
double r3433068 = r3433053 * r3433067;
double r3433069 = r3433067 - r3433051;
double r3433070 = r3433050 * r3433055;
double r3433071 = r3433070 * r3433067;
double r3433072 = r3433069 * r3433071;
double r3433073 = -6.0;
double r3433074 = r3433073 * r3433060;
double r3433075 = 4.0;
double r3433076 = r3433075 * r3433067;
double r3433077 = r3433076 * r3433060;
double r3433078 = r3433074 + r3433077;
double r3433079 = r3433072 + r3433078;
double r3433080 = r3433061 * r3433079;
double r3433081 = r3433068 + r3433080;
double r3433082 = r3433064 + r3433081;
double r3433083 = r3433050 + r3433082;
double r3433084 = r3433063 + r3433083;
double r3433085 = r3433050 + r3433084;
return r3433085;
}



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 2019164
(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))))))