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)\mathsf{fma}\left(\frac{3}{\mathsf{fma}\left(x1, x1, 1\right)}, \mathsf{fma}\left(3, x1 \cdot x1, -\mathsf{fma}\left(x2, 2, x1\right)\right), \left(x1 + \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot \left(\left(3 \cdot x1\right) \cdot x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(\mathsf{fma}\left(\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) \cdot 2, \frac{x1 \cdot \mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \mathsf{fma}\left(x1, \frac{\mathsf{fma}\left(3, x1 \cdot x1, 2 \cdot x2 - x1\right) \cdot 4}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \left(-6\right)\right)\right), \mathsf{fma}\left(x1, x1, 1\right), \mathsf{fma}\left(x1, x1 \cdot x1, x1\right)\right)\right)double f(double x1, double x2) {
double r44672 = x1;
double r44673 = 2.0;
double r44674 = r44673 * r44672;
double r44675 = 3.0;
double r44676 = r44675 * r44672;
double r44677 = r44676 * r44672;
double r44678 = x2;
double r44679 = r44673 * r44678;
double r44680 = r44677 + r44679;
double r44681 = r44680 - r44672;
double r44682 = r44672 * r44672;
double r44683 = 1.0;
double r44684 = r44682 + r44683;
double r44685 = r44681 / r44684;
double r44686 = r44674 * r44685;
double r44687 = r44685 - r44675;
double r44688 = r44686 * r44687;
double r44689 = 4.0;
double r44690 = r44689 * r44685;
double r44691 = 6.0;
double r44692 = r44690 - r44691;
double r44693 = r44682 * r44692;
double r44694 = r44688 + r44693;
double r44695 = r44694 * r44684;
double r44696 = r44677 * r44685;
double r44697 = r44695 + r44696;
double r44698 = r44682 * r44672;
double r44699 = r44697 + r44698;
double r44700 = r44699 + r44672;
double r44701 = r44677 - r44679;
double r44702 = r44701 - r44672;
double r44703 = r44702 / r44684;
double r44704 = r44675 * r44703;
double r44705 = r44700 + r44704;
double r44706 = r44672 + r44705;
return r44706;
}
double f(double x1, double x2) {
double r44707 = 3.0;
double r44708 = x1;
double r44709 = 1.0;
double r44710 = fma(r44708, r44708, r44709);
double r44711 = r44707 / r44710;
double r44712 = r44708 * r44708;
double r44713 = x2;
double r44714 = 2.0;
double r44715 = fma(r44713, r44714, r44708);
double r44716 = -r44715;
double r44717 = fma(r44707, r44712, r44716);
double r44718 = r44714 * r44713;
double r44719 = r44718 - r44708;
double r44720 = fma(r44707, r44712, r44719);
double r44721 = r44707 * r44708;
double r44722 = r44721 * r44708;
double r44723 = r44720 * r44722;
double r44724 = r44723 / r44710;
double r44725 = r44708 + r44724;
double r44726 = r44722 + r44718;
double r44727 = r44726 - r44708;
double r44728 = r44712 + r44709;
double r44729 = r44727 / r44728;
double r44730 = r44729 - r44707;
double r44731 = cbrt(r44730);
double r44732 = r44731 * r44731;
double r44733 = r44732 * r44731;
double r44734 = r44733 * r44714;
double r44735 = r44708 * r44720;
double r44736 = r44735 / r44710;
double r44737 = 4.0;
double r44738 = r44720 * r44737;
double r44739 = r44738 / r44710;
double r44740 = 6.0;
double r44741 = -r44740;
double r44742 = r44708 * r44741;
double r44743 = fma(r44708, r44739, r44742);
double r44744 = r44708 * r44743;
double r44745 = fma(r44734, r44736, r44744);
double r44746 = fma(r44708, r44712, r44708);
double r44747 = fma(r44745, r44710, r44746);
double r44748 = r44725 + r44747;
double r44749 = fma(r44711, r44717, r44748);
return r44749;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
Simplified0.3
rmApplied associate-*l*0.3
Simplified0.3
rmApplied add-cube-cbrt0.4
Final simplification0.4
herbie shell --seed 2020024 +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))))))