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)x1 + \left(\left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(\left(\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) + \left(x1 \cdot \left(x1 \cdot 0\right) + \left(x1 \cdot \mathsf{fma}\left(4, \frac{\left(\left(3 \cdot x1\right) \cdot x1 + x2 \cdot 2\right) - x1}{1 + x1 \cdot x1}, \sqrt{6} \cdot \left(-\sqrt{6}\right)\right)\right) \cdot x1\right)\right) \cdot \left(1 + x1 \cdot x1\right) + \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}\right)\right)\right) + \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x2 \cdot 2\right) - x1}{1 + x1 \cdot x1} \cdot 3\right)double f(double x1, double x2) {
double r2993803 = x1;
double r2993804 = 2.0;
double r2993805 = r2993804 * r2993803;
double r2993806 = 3.0;
double r2993807 = r2993806 * r2993803;
double r2993808 = r2993807 * r2993803;
double r2993809 = x2;
double r2993810 = r2993804 * r2993809;
double r2993811 = r2993808 + r2993810;
double r2993812 = r2993811 - r2993803;
double r2993813 = r2993803 * r2993803;
double r2993814 = 1.0;
double r2993815 = r2993813 + r2993814;
double r2993816 = r2993812 / r2993815;
double r2993817 = r2993805 * r2993816;
double r2993818 = r2993816 - r2993806;
double r2993819 = r2993817 * r2993818;
double r2993820 = 4.0;
double r2993821 = r2993820 * r2993816;
double r2993822 = 6.0;
double r2993823 = r2993821 - r2993822;
double r2993824 = r2993813 * r2993823;
double r2993825 = r2993819 + r2993824;
double r2993826 = r2993825 * r2993815;
double r2993827 = r2993808 * r2993816;
double r2993828 = r2993826 + r2993827;
double r2993829 = r2993813 * r2993803;
double r2993830 = r2993828 + r2993829;
double r2993831 = r2993830 + r2993803;
double r2993832 = r2993808 - r2993810;
double r2993833 = r2993832 - r2993803;
double r2993834 = r2993833 / r2993815;
double r2993835 = r2993806 * r2993834;
double r2993836 = r2993831 + r2993835;
double r2993837 = r2993803 + r2993836;
return r2993837;
}
double f(double x1, double x2) {
double r2993838 = x1;
double r2993839 = r2993838 * r2993838;
double r2993840 = r2993838 * r2993839;
double r2993841 = 3.0;
double r2993842 = r2993841 * r2993838;
double r2993843 = r2993842 * r2993838;
double r2993844 = x2;
double r2993845 = 2.0;
double r2993846 = r2993844 * r2993845;
double r2993847 = r2993843 + r2993846;
double r2993848 = r2993847 - r2993838;
double r2993849 = 1.0;
double r2993850 = r2993849 + r2993839;
double r2993851 = r2993848 / r2993850;
double r2993852 = r2993851 - r2993841;
double r2993853 = r2993838 * r2993845;
double r2993854 = r2993853 * r2993851;
double r2993855 = r2993852 * r2993854;
double r2993856 = 0.0;
double r2993857 = r2993838 * r2993856;
double r2993858 = r2993838 * r2993857;
double r2993859 = 4.0;
double r2993860 = 6.0;
double r2993861 = sqrt(r2993860);
double r2993862 = -r2993861;
double r2993863 = r2993861 * r2993862;
double r2993864 = fma(r2993859, r2993851, r2993863);
double r2993865 = r2993838 * r2993864;
double r2993866 = r2993865 * r2993838;
double r2993867 = r2993858 + r2993866;
double r2993868 = r2993855 + r2993867;
double r2993869 = r2993868 * r2993850;
double r2993870 = r2993843 * r2993851;
double r2993871 = r2993869 + r2993870;
double r2993872 = r2993840 + r2993871;
double r2993873 = r2993838 + r2993872;
double r2993874 = r2993843 - r2993846;
double r2993875 = r2993874 - r2993838;
double r2993876 = r2993875 / r2993850;
double r2993877 = r2993876 * r2993841;
double r2993878 = r2993873 + r2993877;
double r2993879 = r2993838 + r2993878;
return r2993879;
}



Bits error versus x1



Bits error versus x2
Initial program 0.5
rmApplied add-sqr-sqrt0.6
Applied prod-diff0.6
Applied distribute-rgt-in0.6
Simplified0.6
rmApplied associate-*r*0.6
Final simplification0.6
herbie shell --seed 2019138 +o rules:numerics
(FPCore (x1 x2)
:name "Rosa's FloatVsDoubleBenchmark"
(+ 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))))))