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(\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} + \left(x1 \cdot \left(x1 \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right)\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 r52148 = x1;
double r52149 = 2.0;
double r52150 = r52149 * r52148;
double r52151 = 3.0;
double r52152 = r52151 * r52148;
double r52153 = r52152 * r52148;
double r52154 = x2;
double r52155 = r52149 * r52154;
double r52156 = r52153 + r52155;
double r52157 = r52156 - r52148;
double r52158 = r52148 * r52148;
double r52159 = 1.0;
double r52160 = r52158 + r52159;
double r52161 = r52157 / r52160;
double r52162 = r52150 * r52161;
double r52163 = r52161 - r52151;
double r52164 = r52162 * r52163;
double r52165 = 4.0;
double r52166 = r52165 * r52161;
double r52167 = 6.0;
double r52168 = r52166 - r52167;
double r52169 = r52158 * r52168;
double r52170 = r52164 + r52169;
double r52171 = r52170 * r52160;
double r52172 = r52153 * r52161;
double r52173 = r52171 + r52172;
double r52174 = r52158 * r52148;
double r52175 = r52173 + r52174;
double r52176 = r52175 + r52148;
double r52177 = r52153 - r52155;
double r52178 = r52177 - r52148;
double r52179 = r52178 / r52160;
double r52180 = r52151 * r52179;
double r52181 = r52176 + r52180;
double r52182 = r52148 + r52181;
return r52182;
}
double f(double x1, double x2) {
double r52183 = x1;
double r52184 = 2.0;
double r52185 = r52184 * r52183;
double r52186 = 3.0;
double r52187 = r52186 * r52183;
double r52188 = r52187 * r52183;
double r52189 = x2;
double r52190 = r52184 * r52189;
double r52191 = r52188 + r52190;
double r52192 = r52191 - r52183;
double r52193 = r52185 * r52192;
double r52194 = r52183 * r52183;
double r52195 = 1.0;
double r52196 = r52194 + r52195;
double r52197 = r52192 / r52196;
double r52198 = r52197 - r52186;
double r52199 = r52193 * r52198;
double r52200 = r52199 / r52196;
double r52201 = 4.0;
double r52202 = r52201 * r52197;
double r52203 = r52183 * r52202;
double r52204 = r52183 * r52203;
double r52205 = 6.0;
double r52206 = -r52205;
double r52207 = r52194 * r52206;
double r52208 = r52204 + r52207;
double r52209 = r52200 + r52208;
double r52210 = r52209 * r52196;
double r52211 = r52188 * r52197;
double r52212 = r52210 + r52211;
double r52213 = r52194 * r52183;
double r52214 = r52212 + r52213;
double r52215 = r52214 + r52183;
double r52216 = r52188 - r52190;
double r52217 = r52216 - r52183;
double r52218 = r52217 / r52196;
double r52219 = r52186 * r52218;
double r52220 = r52215 + r52219;
double r52221 = r52183 + r52220;
return r52221;
}



Bits error versus x1



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