X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Ffactor.cpp;h=4f11e5621e64475e286790a455fce2271504a3a2;hp=2f98f9db5d0ee442ad54ad03fe6b8b18bf503bd6;hb=9e80b0d339d1ce83f51e0eb5fb101c41f23f6a71;hpb=286b0d93528e35957a50c51343e0b4a9bc623bce diff --git a/ginac/factor.cpp b/ginac/factor.cpp index 2f98f9db..4f11e562 100644 --- a/ginac/factor.cpp +++ b/ginac/factor.cpp @@ -737,7 +737,6 @@ public: } bool is_col_zero(size_t col) const { - mvec::const_iterator i = m.begin() + col; for ( size_t rr=0; rr(ex_to(cont).to_cl_N()); + + const numeric& cont_n = ex_to(cont); + cl_I i_cont; + if (cont_n.is_integer()) { + i_cont = the(cont_n.to_cl_N()); + } else { + // poly \in Q[x] => poly = q ipoly, ipoly \in Z[x], q \in Q + // factor(poly) \equiv q factor(ipoly) + i_cont = cl_I(1); + } + cl_I lc = lcoeff(prim)*i_cont; upvec factors; while ( trials < 2 ) { umodpoly modpoly; @@ -2109,8 +2118,9 @@ static ex put_factors_into_lst(const ex& e) return result; } if ( is_a(e) || is_a(e) ) { - result.append(1); - result.append(e); + ex icont(e.integer_content()); + result.append(icont); + result.append(e/icont); return result; } if ( is_a(e) ) {