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(\frac{\left(\left(2 \cdot x1\right) \cdot \left(\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1\right)\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right)}{x1 \cdot x1 + 1} + x1 \cdot \left(\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot x1\right)\right) + \left(\left(-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 r44011 = x1;
double r44012 = 2.0;
double r44013 = r44012 * r44011;
double r44014 = 3.0;
double r44015 = r44014 * r44011;
double r44016 = r44015 * r44011;
double r44017 = x2;
double r44018 = r44012 * r44017;
double r44019 = r44016 + r44018;
double r44020 = r44019 - r44011;
double r44021 = r44011 * r44011;
double r44022 = 1.0;
double r44023 = r44021 + r44022;
double r44024 = r44020 / r44023;
double r44025 = r44013 * r44024;
double r44026 = r44024 - r44014;
double r44027 = r44025 * r44026;
double r44028 = 4.0;
double r44029 = r44028 * r44024;
double r44030 = 6.0;
double r44031 = r44029 - r44030;
double r44032 = r44021 * r44031;
double r44033 = r44027 + r44032;
double r44034 = r44033 * r44023;
double r44035 = r44016 * r44024;
double r44036 = r44034 + r44035;
double r44037 = r44021 * r44011;
double r44038 = r44036 + r44037;
double r44039 = r44038 + r44011;
double r44040 = r44016 - r44018;
double r44041 = r44040 - r44011;
double r44042 = r44041 / r44023;
double r44043 = r44014 * r44042;
double r44044 = r44039 + r44043;
double r44045 = r44011 + r44044;
return r44045;
}
double f(double x1, double x2) {
double r44046 = x1;
double r44047 = 2.0;
double r44048 = r44047 * r44046;
double r44049 = 3.0;
double r44050 = r44049 * r44046;
double r44051 = r44050 * r44046;
double r44052 = x2;
double r44053 = r44047 * r44052;
double r44054 = r44051 + r44053;
double r44055 = r44054 - r44046;
double r44056 = r44048 * r44055;
double r44057 = r44046 * r44046;
double r44058 = 1.0;
double r44059 = r44057 + r44058;
double r44060 = r44055 / r44059;
double r44061 = r44060 - r44049;
double r44062 = r44056 * r44061;
double r44063 = r44062 / r44059;
double r44064 = 4.0;
double r44065 = r44064 * r44060;
double r44066 = r44065 * r44046;
double r44067 = r44046 * r44066;
double r44068 = r44063 + r44067;
double r44069 = 6.0;
double r44070 = -r44069;
double r44071 = r44070 * r44046;
double r44072 = r44071 * r44046;
double r44073 = r44068 + r44072;
double r44074 = r44073 * r44059;
double r44075 = r44051 * r44060;
double r44076 = r44074 + r44075;
double r44077 = r44057 * r44046;
double r44078 = r44076 + r44077;
double r44079 = r44078 + r44046;
double r44080 = r44051 - r44053;
double r44081 = r44080 - r44046;
double r44082 = r44081 / r44059;
double r44083 = r44049 * r44082;
double r44084 = r44079 + r44083;
double r44085 = r44046 + r44084;
return r44085;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied associate-*l*0.5
rmApplied associate-*r/0.5
Applied associate-*l/0.5
rmApplied sub-neg0.5
Applied distribute-rgt-in0.5
Applied distribute-rgt-in0.5
Applied associate-+r+0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2020034
(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))))))