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(1 \cdot \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)\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 r47529 = x1;
double r47530 = 2.0;
double r47531 = r47530 * r47529;
double r47532 = 3.0;
double r47533 = r47532 * r47529;
double r47534 = r47533 * r47529;
double r47535 = x2;
double r47536 = r47530 * r47535;
double r47537 = r47534 + r47536;
double r47538 = r47537 - r47529;
double r47539 = r47529 * r47529;
double r47540 = 1.0;
double r47541 = r47539 + r47540;
double r47542 = r47538 / r47541;
double r47543 = r47531 * r47542;
double r47544 = r47542 - r47532;
double r47545 = r47543 * r47544;
double r47546 = 4.0;
double r47547 = r47546 * r47542;
double r47548 = 6.0;
double r47549 = r47547 - r47548;
double r47550 = r47539 * r47549;
double r47551 = r47545 + r47550;
double r47552 = r47551 * r47541;
double r47553 = r47534 * r47542;
double r47554 = r47552 + r47553;
double r47555 = r47539 * r47529;
double r47556 = r47554 + r47555;
double r47557 = r47556 + r47529;
double r47558 = r47534 - r47536;
double r47559 = r47558 - r47529;
double r47560 = r47559 / r47541;
double r47561 = r47532 * r47560;
double r47562 = r47557 + r47561;
double r47563 = r47529 + r47562;
return r47563;
}
double f(double x1, double x2) {
double r47564 = x1;
double r47565 = 1.0;
double r47566 = 2.0;
double r47567 = r47566 * r47564;
double r47568 = 3.0;
double r47569 = r47568 * r47564;
double r47570 = r47569 * r47564;
double r47571 = x2;
double r47572 = r47566 * r47571;
double r47573 = r47570 + r47572;
double r47574 = r47573 - r47564;
double r47575 = r47564 * r47564;
double r47576 = 1.0;
double r47577 = r47575 + r47576;
double r47578 = r47574 / r47577;
double r47579 = r47567 * r47578;
double r47580 = r47578 - r47568;
double r47581 = r47579 * r47580;
double r47582 = 4.0;
double r47583 = r47582 * r47578;
double r47584 = 6.0;
double r47585 = r47583 - r47584;
double r47586 = r47575 * r47585;
double r47587 = r47581 + r47586;
double r47588 = r47565 * r47587;
double r47589 = r47588 * r47577;
double r47590 = r47570 * r47578;
double r47591 = r47589 + r47590;
double r47592 = r47575 * r47564;
double r47593 = r47591 + r47592;
double r47594 = r47593 + r47564;
double r47595 = r47570 - r47572;
double r47596 = r47595 - r47564;
double r47597 = r47596 / r47577;
double r47598 = r47568 * r47597;
double r47599 = r47594 + r47598;
double r47600 = r47564 + r47599;
return r47600;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied *-un-lft-identity0.5
Final simplification0.5
herbie shell --seed 2020001
(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))))))