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(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 \cdot \left(x1 \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right)\right) + x1\right)\right) + x1 \cdot \left(\left(x1 \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(2 \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)\right) \cdot \left(x1 \cdot x1 + 1\right)\right)double f(double x1, double x2) {
double r169688 = x1;
double r169689 = 2.0;
double r169690 = r169689 * r169688;
double r169691 = 3.0;
double r169692 = r169691 * r169688;
double r169693 = r169692 * r169688;
double r169694 = x2;
double r169695 = r169689 * r169694;
double r169696 = r169693 + r169695;
double r169697 = r169696 - r169688;
double r169698 = r169688 * r169688;
double r169699 = 1.0;
double r169700 = r169698 + r169699;
double r169701 = r169697 / r169700;
double r169702 = r169690 * r169701;
double r169703 = r169701 - r169691;
double r169704 = r169702 * r169703;
double r169705 = 4.0;
double r169706 = r169705 * r169701;
double r169707 = 6.0;
double r169708 = r169706 - r169707;
double r169709 = r169698 * r169708;
double r169710 = r169704 + r169709;
double r169711 = r169710 * r169700;
double r169712 = r169693 * r169701;
double r169713 = r169711 + r169712;
double r169714 = r169698 * r169688;
double r169715 = r169713 + r169714;
double r169716 = r169715 + r169688;
double r169717 = r169693 - r169695;
double r169718 = r169717 - r169688;
double r169719 = r169718 / r169700;
double r169720 = r169691 * r169719;
double r169721 = r169716 + r169720;
double r169722 = r169688 + r169721;
return r169722;
}
double f(double x1, double x2) {
double r169723 = x1;
double r169724 = 3.0;
double r169725 = r169724 * r169723;
double r169726 = r169725 * r169723;
double r169727 = 2.0;
double r169728 = x2;
double r169729 = r169727 * r169728;
double r169730 = r169726 - r169729;
double r169731 = r169730 - r169723;
double r169732 = r169723 * r169723;
double r169733 = 1.0;
double r169734 = r169732 + r169733;
double r169735 = r169731 / r169734;
double r169736 = r169724 * r169735;
double r169737 = r169723 + r169736;
double r169738 = r169726 + r169729;
double r169739 = r169738 - r169723;
double r169740 = r169739 / r169734;
double r169741 = r169740 * r169724;
double r169742 = r169723 + r169741;
double r169743 = r169723 * r169742;
double r169744 = r169723 * r169743;
double r169745 = r169744 + r169723;
double r169746 = r169737 + r169745;
double r169747 = 4.0;
double r169748 = r169747 * r169740;
double r169749 = 6.0;
double r169750 = r169748 - r169749;
double r169751 = r169723 * r169750;
double r169752 = r169751 * r169734;
double r169753 = r169727 * r169740;
double r169754 = r169740 - r169724;
double r169755 = r169753 * r169754;
double r169756 = r169755 * r169734;
double r169757 = r169752 + r169756;
double r169758 = r169723 * r169757;
double r169759 = r169746 + r169758;
return r169759;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
rmApplied associate-*l*0.6
Final simplification7.8
herbie shell --seed 2019294
(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))))))