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 + \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(\left(\sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3} \cdot \sqrt[3]{\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3}\right) \cdot \sqrt[3]{\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)\right)\right) + \left(x1 \cdot x1\right) \cdot \left(x1 + \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} \cdot 3\right)double f(double x1, double x2) {
double r41694 = x1;
double r41695 = 2.0;
double r41696 = r41695 * r41694;
double r41697 = 3.0;
double r41698 = r41697 * r41694;
double r41699 = r41698 * r41694;
double r41700 = x2;
double r41701 = r41695 * r41700;
double r41702 = r41699 + r41701;
double r41703 = r41702 - r41694;
double r41704 = r41694 * r41694;
double r41705 = 1.0;
double r41706 = r41704 + r41705;
double r41707 = r41703 / r41706;
double r41708 = r41696 * r41707;
double r41709 = r41707 - r41697;
double r41710 = r41708 * r41709;
double r41711 = 4.0;
double r41712 = r41711 * r41707;
double r41713 = 6.0;
double r41714 = r41712 - r41713;
double r41715 = r41704 * r41714;
double r41716 = r41710 + r41715;
double r41717 = r41716 * r41706;
double r41718 = r41699 * r41707;
double r41719 = r41717 + r41718;
double r41720 = r41704 * r41694;
double r41721 = r41719 + r41720;
double r41722 = r41721 + r41694;
double r41723 = r41699 - r41701;
double r41724 = r41723 - r41694;
double r41725 = r41724 / r41706;
double r41726 = r41697 * r41725;
double r41727 = r41722 + r41726;
double r41728 = r41694 + r41727;
return r41728;
}
double f(double x1, double x2) {
double r41729 = x1;
double r41730 = 3.0;
double r41731 = r41730 * r41729;
double r41732 = r41731 * r41729;
double r41733 = 2.0;
double r41734 = x2;
double r41735 = r41733 * r41734;
double r41736 = r41732 - r41735;
double r41737 = r41736 - r41729;
double r41738 = r41729 * r41729;
double r41739 = 1.0;
double r41740 = r41738 + r41739;
double r41741 = r41737 / r41740;
double r41742 = r41730 * r41741;
double r41743 = r41729 + r41742;
double r41744 = r41733 * r41729;
double r41745 = r41732 + r41735;
double r41746 = r41745 - r41729;
double r41747 = r41746 / r41740;
double r41748 = r41744 * r41747;
double r41749 = r41747 - r41730;
double r41750 = cbrt(r41749);
double r41751 = r41750 * r41750;
double r41752 = r41751 * r41750;
double r41753 = r41748 * r41752;
double r41754 = 4.0;
double r41755 = r41754 * r41747;
double r41756 = 6.0;
double r41757 = r41755 - r41756;
double r41758 = r41738 * r41757;
double r41759 = r41753 + r41758;
double r41760 = r41759 * r41740;
double r41761 = r41729 + r41760;
double r41762 = r41743 + r41761;
double r41763 = r41747 * r41730;
double r41764 = r41729 + r41763;
double r41765 = r41738 * r41764;
double r41766 = r41762 + r41765;
return r41766;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
Simplified0.5
rmApplied add-cube-cbrt0.6
Final simplification0.6
herbie shell --seed 2020024
(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))))))