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(x1 + \left(\left(\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) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + x1\right)\right) + \left(\left(x1 \cdot x1 + 1\right) \cdot \left(\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) + \left(x1 \cdot x1 + 1\right) \cdot \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)\right)\right)double f(double x1, double x2) {
double r77762 = x1;
double r77763 = 2.0;
double r77764 = r77763 * r77762;
double r77765 = 3.0;
double r77766 = r77765 * r77762;
double r77767 = r77766 * r77762;
double r77768 = x2;
double r77769 = r77763 * r77768;
double r77770 = r77767 + r77769;
double r77771 = r77770 - r77762;
double r77772 = r77762 * r77762;
double r77773 = 1.0;
double r77774 = r77772 + r77773;
double r77775 = r77771 / r77774;
double r77776 = r77764 * r77775;
double r77777 = r77775 - r77765;
double r77778 = r77776 * r77777;
double r77779 = 4.0;
double r77780 = r77779 * r77775;
double r77781 = 6.0;
double r77782 = r77780 - r77781;
double r77783 = r77772 * r77782;
double r77784 = r77778 + r77783;
double r77785 = r77784 * r77774;
double r77786 = r77767 * r77775;
double r77787 = r77785 + r77786;
double r77788 = r77772 * r77762;
double r77789 = r77787 + r77788;
double r77790 = r77789 + r77762;
double r77791 = r77767 - r77769;
double r77792 = r77791 - r77762;
double r77793 = r77792 / r77774;
double r77794 = r77765 * r77793;
double r77795 = r77790 + r77794;
double r77796 = r77762 + r77795;
return r77796;
}
double f(double x1, double x2) {
double r77797 = x1;
double r77798 = r77797 * r77797;
double r77799 = 3.0;
double r77800 = r77799 * r77797;
double r77801 = r77800 * r77797;
double r77802 = 2.0;
double r77803 = x2;
double r77804 = r77802 * r77803;
double r77805 = r77801 + r77804;
double r77806 = r77805 - r77797;
double r77807 = 1.0;
double r77808 = r77798 + r77807;
double r77809 = r77806 / r77808;
double r77810 = r77809 * r77799;
double r77811 = r77797 + r77810;
double r77812 = r77798 * r77811;
double r77813 = r77801 - r77804;
double r77814 = r77813 - r77797;
double r77815 = r77814 / r77808;
double r77816 = r77799 * r77815;
double r77817 = r77812 + r77816;
double r77818 = r77817 + r77797;
double r77819 = r77797 + r77818;
double r77820 = 4.0;
double r77821 = r77820 * r77809;
double r77822 = 6.0;
double r77823 = r77821 - r77822;
double r77824 = r77798 * r77823;
double r77825 = r77808 * r77824;
double r77826 = r77802 * r77797;
double r77827 = r77826 * r77809;
double r77828 = r77809 - r77799;
double r77829 = r77827 * r77828;
double r77830 = r77808 * r77829;
double r77831 = r77825 + r77830;
double r77832 = r77819 + r77831;
return r77832;
}



Bits error versus x1



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