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(\frac{x2 \cdot -2 + \left(\left(x1 \cdot x1\right) \cdot 3 - x1\right)}{1 + x1 \cdot x1} \cdot 3 + x1\right) + \left(\left(1 + x1 \cdot x1\right) \cdot \left(x1 + \left(\left(2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)\right) \cdot \frac{4}{1 + x1 \cdot x1} + -6\right) \cdot \left(x1 \cdot x1\right)\right) + \left(\left(x1 \cdot x1\right) \cdot 3 + \left(x1 \cdot \left(\frac{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}{1 + x1 \cdot x1} - 3\right)\right) \cdot \left(2 \cdot \left(1 + x1 \cdot x1\right)\right)\right) \cdot \frac{2 \cdot x2 - \left(x1 - \left(x1 \cdot x1\right) \cdot 3\right)}{1 + x1 \cdot x1}\right)double f(double x1, double x2) {
double r3160494 = x1;
double r3160495 = 2.0;
double r3160496 = r3160495 * r3160494;
double r3160497 = 3.0;
double r3160498 = r3160497 * r3160494;
double r3160499 = r3160498 * r3160494;
double r3160500 = x2;
double r3160501 = r3160495 * r3160500;
double r3160502 = r3160499 + r3160501;
double r3160503 = r3160502 - r3160494;
double r3160504 = r3160494 * r3160494;
double r3160505 = 1.0;
double r3160506 = r3160504 + r3160505;
double r3160507 = r3160503 / r3160506;
double r3160508 = r3160496 * r3160507;
double r3160509 = r3160507 - r3160497;
double r3160510 = r3160508 * r3160509;
double r3160511 = 4.0;
double r3160512 = r3160511 * r3160507;
double r3160513 = 6.0;
double r3160514 = r3160512 - r3160513;
double r3160515 = r3160504 * r3160514;
double r3160516 = r3160510 + r3160515;
double r3160517 = r3160516 * r3160506;
double r3160518 = r3160499 * r3160507;
double r3160519 = r3160517 + r3160518;
double r3160520 = r3160504 * r3160494;
double r3160521 = r3160519 + r3160520;
double r3160522 = r3160521 + r3160494;
double r3160523 = r3160499 - r3160501;
double r3160524 = r3160523 - r3160494;
double r3160525 = r3160524 / r3160506;
double r3160526 = r3160497 * r3160525;
double r3160527 = r3160522 + r3160526;
double r3160528 = r3160494 + r3160527;
return r3160528;
}
double f(double x1, double x2) {
double r3160529 = x2;
double r3160530 = -2.0;
double r3160531 = r3160529 * r3160530;
double r3160532 = x1;
double r3160533 = r3160532 * r3160532;
double r3160534 = 3.0;
double r3160535 = r3160533 * r3160534;
double r3160536 = r3160535 - r3160532;
double r3160537 = r3160531 + r3160536;
double r3160538 = 1.0;
double r3160539 = r3160538 + r3160533;
double r3160540 = r3160537 / r3160539;
double r3160541 = r3160540 * r3160534;
double r3160542 = r3160541 + r3160532;
double r3160543 = 2.0;
double r3160544 = r3160543 * r3160529;
double r3160545 = r3160532 - r3160535;
double r3160546 = r3160544 - r3160545;
double r3160547 = 4.0;
double r3160548 = r3160547 / r3160539;
double r3160549 = r3160546 * r3160548;
double r3160550 = -6.0;
double r3160551 = r3160549 + r3160550;
double r3160552 = r3160551 * r3160533;
double r3160553 = r3160532 + r3160552;
double r3160554 = r3160539 * r3160553;
double r3160555 = r3160546 / r3160539;
double r3160556 = r3160555 - r3160534;
double r3160557 = r3160532 * r3160556;
double r3160558 = r3160543 * r3160539;
double r3160559 = r3160557 * r3160558;
double r3160560 = r3160535 + r3160559;
double r3160561 = r3160560 * r3160555;
double r3160562 = r3160554 + r3160561;
double r3160563 = r3160542 + r3160562;
return r3160563;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019151
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ 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))))))