| #### D.4.6.6 makedistinguished Procedure from library `decomp.lib` (see decomp_lib). Usage: makedistinguished(f,vvar); f, vvar poly; where vvar is a ring variable Return: (poly, ideal): the transformed polynomial and an ideal defining the map which reverses the transformation. Purpose: let vvar = var(1). Then f is transformed by a random linear coordinate change phi = (var(1), var(2)+c_2*vvar,...,var(n)+c_n*vvar) such that phi(f) = f o phi becomes distinguished with respect to vvar. That is, the new polynomial contains the monomial vvar^d, where d is the degree of f. If already f is distinguished w.r.t. vvar, then f is left unchanged and the re-transformation is the identity. Note 1: (this proc correctly works independent of the term ordering.) to apply the reverse transformation, either define a map or use substitute (to be loaded from poly.lib). Note 2: If p=char(basering) > 0, then there exist polynomials of degree d>=p, e.g. , that cannot be transformed to a vvar-distinguished polynomial. In this case, *p random trials will be made and the proc may leave with an ERROR message. Example:
    LIB "decomp.lib";
    int randval = system("--random");  // store initial value
    system("--random",0815);
    ring r = 0,(x,y),dp;
    poly g;
    map phi;
    // -----------------------------------------------------------------------
    // Example 1:
    poly f = 3xy4 + 2xy2 + x5y3 + x + y6;    // degree 8
    // make the polynomial y-distinguished
    g, phi = makedistinguished(f,y);
    g;
    ==> x5y3+5x4y4+10x3y5+10x2y6+5xy7+y8+y6+3xy4+3y5+2xy2+2y3+x+y
    phi;
    ==> phi[1]=x-y
    ==> phi[2]=y
    // to reverse the transformation apply the map
    f == phi(g);
    ==> 1
    //  -----------------------------------------------------------------------
    // Example 2:
    // The following polynomial is already x-distinguished
    f = x6+y4+xy;
    g,phi = makedistinguished(f,x);
    g;                         // f is left unchanged
    ==> x6+y4+xy
    phi;                       // the transformation is the identity.
    ==> phi[1]=x
    ==> phi[2]=y
    system("--random",randval);      // reset random generator
    // -----------------------------------------------------------------------
    // Example 3:    // polynomials which cannot be transformed
    // If p=char(basering)>0, then (p-1)*x^p*y + x*y^p factorizes completely
    // in linear factors, since (p-1)*x^p+x equiv 0 on F_p. Hence,
    // such polynomials cannot be transformed to a distinguished polynomial.
    ring r3 = 3,(x,y),dp;
    makedistinguished(2x3y+xy3,y);
    ==>    ? it could not be transform to a y-distinguished polynomial.
    ==>    ? leaving decomp.lib::makedistinguished (0)

User manual for Singular version 4.3.2, 2023, generated by texi2html.