### A.3.8 Factorization

The factorization of polynomials is implemented in the C++ libraries Factory (written mainly by Ruediger Stobbe) and libfac (written by Michael Messollen) which are part of the SINGULAR system. For the factorization of univariate polynomials these libraries make use of the library NTL written by Victor Shoup.

      ring r = 0,(x,y),dp;
      poly f = 9x16-18x13y2-9x12y3+9x10y4-18x11y2+36x8y4
             +18x7y5-18x5y6+9x6y4-18x3y6-9x2y7+9y8;
      // = 9 * (x5-1y2)^2 * (x6-2x3y2-1x2y3+y4)
      factorize(f);
    ==> [1]:
    ==>    _[1]=9
    ==>    _[2]=x6-2x3y2-x2y3+y4
    ==>    _[3]=-x5+y2
    ==> [2]:
    ==>    1,1,2
      // returns factors and multiplicities,
      // first factor is a constant.
      poly g = (y4+x8)*(x2+y2);
      factorize(g);
    ==> [1]:
    ==>    _[1]=1
    ==>    _[2]=x8+y4
    ==>    _[3]=x2+y2
    ==> [2]:
    ==>    1,1,1
      // The same in characteristic 2:
      ring s = 2,(x,y),dp;
      poly g = (y4+x8)*(x2+y2);
      factorize(g);
    ==> [1]:
    ==>    _[1]=1
    ==>    _[2]=x+y
    ==>    _[3]=x2+y
    ==> [2]:
    ==>    1,2,4
      // factorization over algebraic extension fields
      ring rext = (0,i),(x,y),dp;
      minpoly = i2+1;
      poly g = (y4+x8)*(x2+y2);
      factorize(g);
    ==> [1]:
    ==>    _[1]=1
    ==>    _[2]=x4+(-i)*y2
    ==>    _[3]=x4+(i)*y2
    ==>    _[4]=x+(i)*y
    ==>    _[5]=x+(-i)*y
    ==> [2]:
    ==>    1,1,1,1,1

User manual for Singular version 4-0-3, 2016, generated by texi2html.