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(\left(4 \cdot \frac{\mathsf{fma}\left(3 \cdot x1, x1, 2 \cdot x2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right) \cdot \left(x1 \cdot x1\right) + \left(-6\right) \cdot \left(x1 \cdot x1\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 r71592 = x1;
double r71593 = 2.0;
double r71594 = r71593 * r71592;
double r71595 = 3.0;
double r71596 = r71595 * r71592;
double r71597 = r71596 * r71592;
double r71598 = x2;
double r71599 = r71593 * r71598;
double r71600 = r71597 + r71599;
double r71601 = r71600 - r71592;
double r71602 = r71592 * r71592;
double r71603 = 1.0;
double r71604 = r71602 + r71603;
double r71605 = r71601 / r71604;
double r71606 = r71594 * r71605;
double r71607 = r71605 - r71595;
double r71608 = r71606 * r71607;
double r71609 = 4.0;
double r71610 = r71609 * r71605;
double r71611 = 6.0;
double r71612 = r71610 - r71611;
double r71613 = r71602 * r71612;
double r71614 = r71608 + r71613;
double r71615 = r71614 * r71604;
double r71616 = r71597 * r71605;
double r71617 = r71615 + r71616;
double r71618 = r71602 * r71592;
double r71619 = r71617 + r71618;
double r71620 = r71619 + r71592;
double r71621 = r71597 - r71599;
double r71622 = r71621 - r71592;
double r71623 = r71622 / r71604;
double r71624 = r71595 * r71623;
double r71625 = r71620 + r71624;
double r71626 = r71592 + r71625;
return r71626;
}
double f(double x1, double x2) {
double r71627 = x1;
double r71628 = 2.0;
double r71629 = r71628 * r71627;
double r71630 = 3.0;
double r71631 = r71630 * r71627;
double r71632 = r71631 * r71627;
double r71633 = x2;
double r71634 = r71628 * r71633;
double r71635 = r71632 + r71634;
double r71636 = r71635 - r71627;
double r71637 = r71627 * r71627;
double r71638 = 1.0;
double r71639 = r71637 + r71638;
double r71640 = r71636 / r71639;
double r71641 = r71629 * r71640;
double r71642 = r71640 - r71630;
double r71643 = r71641 * r71642;
double r71644 = 4.0;
double r71645 = fma(r71631, r71627, r71634);
double r71646 = r71645 - r71627;
double r71647 = fma(r71627, r71627, r71638);
double r71648 = r71646 / r71647;
double r71649 = r71644 * r71648;
double r71650 = r71649 * r71637;
double r71651 = 6.0;
double r71652 = -r71651;
double r71653 = r71652 * r71637;
double r71654 = r71650 + r71653;
double r71655 = r71643 + r71654;
double r71656 = r71655 * r71639;
double r71657 = r71632 * r71640;
double r71658 = r71656 + r71657;
double r71659 = r71637 * r71627;
double r71660 = r71658 + r71659;
double r71661 = r71660 + r71627;
double r71662 = r71632 - r71634;
double r71663 = r71662 - r71627;
double r71664 = r71663 / r71639;
double r71665 = r71630 * r71664;
double r71666 = r71661 + r71665;
double r71667 = r71627 + r71666;
return r71667;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied sub-neg0.5
Applied distribute-lft-in0.5
Simplified0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019351 +o rules:numerics
(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))))))