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(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot \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) + \left(\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) - 3 \cdot \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)\right)\right) \cdot \left(x1 \cdot x1 + 1\right)\right)\right) + \left(x1 \cdot x1\right) \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right)double f(double x1, double x2) {
double r53387 = x1;
double r53388 = 2.0;
double r53389 = r53388 * r53387;
double r53390 = 3.0;
double r53391 = r53390 * r53387;
double r53392 = r53391 * r53387;
double r53393 = x2;
double r53394 = r53388 * r53393;
double r53395 = r53392 + r53394;
double r53396 = r53395 - r53387;
double r53397 = r53387 * r53387;
double r53398 = 1.0;
double r53399 = r53397 + r53398;
double r53400 = r53396 / r53399;
double r53401 = r53389 * r53400;
double r53402 = r53400 - r53390;
double r53403 = r53401 * r53402;
double r53404 = 4.0;
double r53405 = r53404 * r53400;
double r53406 = 6.0;
double r53407 = r53405 - r53406;
double r53408 = r53397 * r53407;
double r53409 = r53403 + r53408;
double r53410 = r53409 * r53399;
double r53411 = r53392 * r53400;
double r53412 = r53410 + r53411;
double r53413 = r53397 * r53387;
double r53414 = r53412 + r53413;
double r53415 = r53414 + r53387;
double r53416 = r53392 - r53394;
double r53417 = r53416 - r53387;
double r53418 = r53417 / r53399;
double r53419 = r53390 * r53418;
double r53420 = r53415 + r53419;
double r53421 = r53387 + r53420;
return r53421;
}
double f(double x1, double x2) {
double r53422 = x1;
double r53423 = 3.0;
double r53424 = r53423 * r53422;
double r53425 = r53424 * r53422;
double r53426 = 2.0;
double r53427 = x2;
double r53428 = r53426 * r53427;
double r53429 = r53425 - r53428;
double r53430 = r53429 - r53422;
double r53431 = r53422 * r53422;
double r53432 = 1.0;
double r53433 = r53431 + r53432;
double r53434 = r53430 / r53433;
double r53435 = r53423 * r53434;
double r53436 = r53422 + r53435;
double r53437 = r53425 + r53428;
double r53438 = r53437 - r53422;
double r53439 = r53438 / r53433;
double r53440 = r53426 * r53422;
double r53441 = r53440 * r53439;
double r53442 = r53439 * r53441;
double r53443 = 4.0;
double r53444 = r53443 * r53439;
double r53445 = 6.0;
double r53446 = r53444 - r53445;
double r53447 = r53431 * r53446;
double r53448 = r53423 * r53441;
double r53449 = r53447 - r53448;
double r53450 = r53442 + r53449;
double r53451 = r53450 * r53433;
double r53452 = r53422 + r53451;
double r53453 = r53436 + r53452;
double r53454 = r53439 * r53423;
double r53455 = r53422 + r53454;
double r53456 = r53431 * r53455;
double r53457 = r53453 + r53456;
return r53457;
}



Bits error versus x1



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