Daily bugfix in the polynomial factorization (code didn't catch polynomial "x"
[ginac.git] / ginac / factor.cpp
index 5489b4ceb79eb87a99ba36ef9e17e5dac96b3005..9b06e6e1ce99f08649dbaf612b35a3bd000557fe 100644 (file)
@@ -888,7 +888,7 @@ static ex hensel_univar(const ex& a_, const ex& x, unsigned int p, const UniPoly
        for ( int i=a.degree(x); i>=a.ldegree(x); --i ) {
                maxcoeff += pow(abs(a.coeff(x, i)),2);
        }
-       cl_I normmc = ceiling1(the<cl_F>(cln::sqrt(ex_to<numeric>(maxcoeff).to_cl_N())));
+       cl_I normmc = ceiling1(the<cl_R>(cln::sqrt(ex_to<numeric>(maxcoeff).to_cl_N())));
        unsigned int maxdegree = (u1_.degree() > w1_.degree()) ? u1_.degree() : w1_.degree();
        unsigned int B = cl_I_to_uint(normmc * expt_pos(cl_I(2), maxdegree));
 
@@ -1233,6 +1233,9 @@ ex factor(const ex& poly)
                }
                return res;
        }
+       if ( is_a<symbol>(sfpoly) ) {
+               return poly;
+       }
        // case: (polynomial)
        ex f = factor_sqrfree(sfpoly);
        return f;