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 r53497 = x1;
double r53498 = 2.0;
double r53499 = r53498 * r53497;
double r53500 = 3.0;
double r53501 = r53500 * r53497;
double r53502 = r53501 * r53497;
double r53503 = x2;
double r53504 = r53498 * r53503;
double r53505 = r53502 + r53504;
double r53506 = r53505 - r53497;
double r53507 = r53497 * r53497;
double r53508 = 1.0;
double r53509 = r53507 + r53508;
double r53510 = r53506 / r53509;
double r53511 = r53499 * r53510;
double r53512 = r53510 - r53500;
double r53513 = r53511 * r53512;
double r53514 = 4.0;
double r53515 = r53514 * r53510;
double r53516 = 6.0;
double r53517 = r53515 - r53516;
double r53518 = r53507 * r53517;
double r53519 = r53513 + r53518;
double r53520 = r53519 * r53509;
double r53521 = r53502 * r53510;
double r53522 = r53520 + r53521;
double r53523 = r53507 * r53497;
double r53524 = r53522 + r53523;
double r53525 = r53524 + r53497;
double r53526 = r53502 - r53504;
double r53527 = r53526 - r53497;
double r53528 = r53527 / r53509;
double r53529 = r53500 * r53528;
double r53530 = r53525 + r53529;
double r53531 = r53497 + r53530;
return r53531;
}
double f(double x1, double x2) {
double r53532 = x1;
double r53533 = 2.0;
double r53534 = r53533 * r53532;
double r53535 = 3.0;
double r53536 = r53535 * r53532;
double r53537 = r53536 * r53532;
double r53538 = x2;
double r53539 = r53533 * r53538;
double r53540 = r53537 + r53539;
double r53541 = r53540 - r53532;
double r53542 = r53532 * r53532;
double r53543 = 1.0;
double r53544 = r53542 + r53543;
double r53545 = r53541 / r53544;
double r53546 = r53534 * r53545;
double r53547 = r53545 - r53535;
double r53548 = r53546 * r53547;
double r53549 = 4.0;
double r53550 = r53549 * r53545;
double r53551 = 6.0;
double r53552 = r53550 - r53551;
double r53553 = r53542 * r53552;
double r53554 = r53548 + r53553;
double r53555 = r53554 * r53544;
double r53556 = r53537 * r53545;
double r53557 = r53555 + r53556;
double r53558 = r53542 * r53532;
double r53559 = r53557 + r53558;
double r53560 = r53559 + r53532;
double r53561 = r53537 - r53539;
double r53562 = r53561 - r53532;
double r53563 = r53562 / r53544;
double r53564 = r53535 * r53563;
double r53565 = r53560 + r53564;
double r53566 = r53532 + r53565;
return r53566;
}



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))))))