X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Ffactor.cpp;h=f53642a2bb7e88504073b14d1bd9e33cecc88f78;hp=bb20589b4b9cf890945107cbf7143b497aa4e920;hb=cdddbc6dcdabef73aeb20bb9b81e08dba92a235c;hpb=c2ef6cb074a85957bd684337552fe9d84451d307 diff --git a/ginac/factor.cpp b/ginac/factor.cpp index bb20589b..f53642a2 100644 --- a/ginac/factor.cpp +++ b/ginac/factor.cpp @@ -1491,6 +1491,9 @@ static ex factor_univariate(const ex& poly, const ex& x, unsigned int& prime) poly.unitcontprim(x, unit, cont, prim_ex); upoly prim; upoly_from_ex(prim, prim_ex, x); + if (prim_ex.is_equal(1)) { + return poly; + } // determine proper prime and minimize number of modular factors prime = 3; @@ -2454,9 +2457,9 @@ static ex factor_sqrfree(const ex& poly) if ( findsymbols.syms.size() == 1 ) { // univariate case const ex& x = *(findsymbols.syms.begin()); - if ( poly.ldegree(x) > 0 ) { + int ld = poly.ldegree(x); + if ( ld > 0 ) { // pull out direct factors - int ld = poly.ldegree(x); ex res = factor_univariate(expand(poly/pow(x, ld)), x); return res * pow(x,ld); } else {