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)\left(\left(\left(\left(\left({\left(x1 \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6}\right)}^{2} \cdot \sqrt[3]{4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6} + \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)\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) + x1double f(double x1, double x2) {
double r49240 = x1;
double r49241 = 2.0;
double r49242 = r49241 * r49240;
double r49243 = 3.0;
double r49244 = r49243 * r49240;
double r49245 = r49244 * r49240;
double r49246 = x2;
double r49247 = r49241 * r49246;
double r49248 = r49245 + r49247;
double r49249 = r49248 - r49240;
double r49250 = r49240 * r49240;
double r49251 = 1.0;
double r49252 = r49250 + r49251;
double r49253 = r49249 / r49252;
double r49254 = r49242 * r49253;
double r49255 = r49253 - r49243;
double r49256 = r49254 * r49255;
double r49257 = 4.0;
double r49258 = r49257 * r49253;
double r49259 = 6.0;
double r49260 = r49258 - r49259;
double r49261 = r49250 * r49260;
double r49262 = r49256 + r49261;
double r49263 = r49262 * r49252;
double r49264 = r49245 * r49253;
double r49265 = r49263 + r49264;
double r49266 = r49250 * r49240;
double r49267 = r49265 + r49266;
double r49268 = r49267 + r49240;
double r49269 = r49245 - r49247;
double r49270 = r49269 - r49240;
double r49271 = r49270 / r49252;
double r49272 = r49243 * r49271;
double r49273 = r49268 + r49272;
double r49274 = r49240 + r49273;
return r49274;
}
double f(double x1, double x2) {
double r49275 = x1;
double r49276 = 4.0;
double r49277 = 3.0;
double r49278 = r49277 * r49275;
double r49279 = r49278 * r49275;
double r49280 = 2.0;
double r49281 = x2;
double r49282 = r49280 * r49281;
double r49283 = r49279 + r49282;
double r49284 = r49283 - r49275;
double r49285 = r49275 * r49275;
double r49286 = 1.0;
double r49287 = r49285 + r49286;
double r49288 = r49284 / r49287;
double r49289 = r49276 * r49288;
double r49290 = 6.0;
double r49291 = r49289 - r49290;
double r49292 = cbrt(r49291);
double r49293 = r49275 * r49292;
double r49294 = 2.0;
double r49295 = pow(r49293, r49294);
double r49296 = r49295 * r49292;
double r49297 = r49280 * r49275;
double r49298 = r49297 * r49288;
double r49299 = r49288 - r49277;
double r49300 = r49298 * r49299;
double r49301 = r49296 + r49300;
double r49302 = r49301 * r49287;
double r49303 = r49279 * r49288;
double r49304 = r49302 + r49303;
double r49305 = r49285 * r49275;
double r49306 = r49304 + r49305;
double r49307 = r49306 + r49275;
double r49308 = r49279 - r49282;
double r49309 = r49308 - r49275;
double r49310 = r49309 / r49287;
double r49311 = r49277 * r49310;
double r49312 = r49307 + r49311;
double r49313 = r49312 + r49275;
return r49313;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.6
Applied associate-*r*0.7
rmApplied *-un-lft-identity0.7
rmApplied pow20.7
Applied pow20.7
Applied pow-prod-down0.6
Final simplification0.6
herbie shell --seed 2020046
(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))))))