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 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} + \left(1 + x1 \cdot x1\right) \cdot \left(\left(\sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right) + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)} \cdot \sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right) + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)}\right) \cdot \sqrt[3]{\left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right) + \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}\right)}\right)\right)\right)\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right) + x1double f(double x1, double x2) {
double r3419772 = x1;
double r3419773 = 2.0;
double r3419774 = r3419773 * r3419772;
double r3419775 = 3.0;
double r3419776 = r3419775 * r3419772;
double r3419777 = r3419776 * r3419772;
double r3419778 = x2;
double r3419779 = r3419773 * r3419778;
double r3419780 = r3419777 + r3419779;
double r3419781 = r3419780 - r3419772;
double r3419782 = r3419772 * r3419772;
double r3419783 = 1.0;
double r3419784 = r3419782 + r3419783;
double r3419785 = r3419781 / r3419784;
double r3419786 = r3419774 * r3419785;
double r3419787 = r3419785 - r3419775;
double r3419788 = r3419786 * r3419787;
double r3419789 = 4.0;
double r3419790 = r3419789 * r3419785;
double r3419791 = 6.0;
double r3419792 = r3419790 - r3419791;
double r3419793 = r3419782 * r3419792;
double r3419794 = r3419788 + r3419793;
double r3419795 = r3419794 * r3419784;
double r3419796 = r3419777 * r3419785;
double r3419797 = r3419795 + r3419796;
double r3419798 = r3419782 * r3419772;
double r3419799 = r3419797 + r3419798;
double r3419800 = r3419799 + r3419772;
double r3419801 = r3419777 - r3419779;
double r3419802 = r3419801 - r3419772;
double r3419803 = r3419802 / r3419784;
double r3419804 = r3419775 * r3419803;
double r3419805 = r3419800 + r3419804;
double r3419806 = r3419772 + r3419805;
return r3419806;
}
double f(double x1, double x2) {
double r3419807 = x1;
double r3419808 = r3419807 * r3419807;
double r3419809 = r3419807 * r3419808;
double r3419810 = 3.0;
double r3419811 = r3419810 * r3419807;
double r3419812 = r3419811 * r3419807;
double r3419813 = x2;
double r3419814 = 2.0;
double r3419815 = r3419813 * r3419814;
double r3419816 = r3419812 + r3419815;
double r3419817 = r3419816 - r3419807;
double r3419818 = 1.0;
double r3419819 = r3419818 + r3419808;
double r3419820 = r3419817 / r3419819;
double r3419821 = r3419812 * r3419820;
double r3419822 = 4.0;
double r3419823 = r3419822 * r3419820;
double r3419824 = 6.0;
double r3419825 = r3419823 - r3419824;
double r3419826 = r3419825 * r3419808;
double r3419827 = r3419820 - r3419810;
double r3419828 = r3419807 * r3419814;
double r3419829 = r3419828 * r3419820;
double r3419830 = r3419827 * r3419829;
double r3419831 = r3419826 + r3419830;
double r3419832 = cbrt(r3419831);
double r3419833 = r3419832 * r3419832;
double r3419834 = r3419833 * r3419832;
double r3419835 = r3419819 * r3419834;
double r3419836 = r3419821 + r3419835;
double r3419837 = r3419809 + r3419836;
double r3419838 = r3419807 + r3419837;
double r3419839 = r3419812 - r3419815;
double r3419840 = r3419839 - r3419807;
double r3419841 = r3419840 / r3419819;
double r3419842 = r3419841 * r3419810;
double r3419843 = r3419838 + r3419842;
double r3419844 = r3419843 + r3419807;
return r3419844;
}



Bits error versus x1



Bits error versus x2
Results
Initial program 0.5
rmApplied add-cube-cbrt0.7
Final simplification0.7
herbie shell --seed 2019169
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))