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(\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)double f(double x1, double x2) {
double r60410 = x1;
double r60411 = 2.0;
double r60412 = r60411 * r60410;
double r60413 = 3.0;
double r60414 = r60413 * r60410;
double r60415 = r60414 * r60410;
double r60416 = x2;
double r60417 = r60411 * r60416;
double r60418 = r60415 + r60417;
double r60419 = r60418 - r60410;
double r60420 = r60410 * r60410;
double r60421 = 1.0;
double r60422 = r60420 + r60421;
double r60423 = r60419 / r60422;
double r60424 = r60412 * r60423;
double r60425 = r60423 - r60413;
double r60426 = r60424 * r60425;
double r60427 = 4.0;
double r60428 = r60427 * r60423;
double r60429 = 6.0;
double r60430 = r60428 - r60429;
double r60431 = r60420 * r60430;
double r60432 = r60426 + r60431;
double r60433 = r60432 * r60422;
double r60434 = r60415 * r60423;
double r60435 = r60433 + r60434;
double r60436 = r60420 * r60410;
double r60437 = r60435 + r60436;
double r60438 = r60437 + r60410;
double r60439 = r60415 - r60417;
double r60440 = r60439 - r60410;
double r60441 = r60440 / r60422;
double r60442 = r60413 * r60441;
double r60443 = r60438 + r60442;
double r60444 = r60410 + r60443;
return r60444;
}
double f(double x1, double x2) {
double r60445 = x1;
double r60446 = 2.0;
double r60447 = r60446 * r60445;
double r60448 = 3.0;
double r60449 = r60448 * r60445;
double r60450 = r60449 * r60445;
double r60451 = x2;
double r60452 = r60446 * r60451;
double r60453 = r60450 + r60452;
double r60454 = r60453 - r60445;
double r60455 = r60445 * r60445;
double r60456 = 1.0;
double r60457 = r60455 + r60456;
double r60458 = r60454 / r60457;
double r60459 = r60447 * r60458;
double r60460 = r60458 - r60448;
double r60461 = r60459 * r60460;
double r60462 = 4.0;
double r60463 = r60462 * r60458;
double r60464 = 6.0;
double r60465 = r60463 - r60464;
double r60466 = r60455 * r60465;
double r60467 = r60461 + r60466;
double r60468 = r60467 * r60457;
double r60469 = r60450 * r60458;
double r60470 = r60468 + r60469;
double r60471 = r60455 * r60445;
double r60472 = r60470 + r60471;
double r60473 = r60472 + r60445;
double r60474 = r60450 - r60452;
double r60475 = r60474 - r60445;
double r60476 = r60475 / r60457;
double r60477 = r60448 * r60476;
double r60478 = r60473 + r60477;
double r60479 = r60445 + r60478;
return r60479;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Final simplification0.5
herbie shell --seed 2020045
(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))))))