Ilya Zakharevich on Mon, 1 Jul 2002 11:06:10 -0400


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

polcoeff() mystery


How polcoeff() is supposed to work?  I try to understand why the
coeff() example of the manual works, and fail...  I try this:

   coeffs(P, nbvar) =
   {
     local(v);

     if (type(P) != "t_POL",
       for (i=0, nbvar-1, P = [P]);
       return (P)
     );
     v = vector(poldegree(P)+1, i, polcoeff(P,i-1));
     vector(length(v), i, coeffs(v[i], nbvar-1))
   }

   c(P) = coeffs(P,2)

   PP = x^2 + x*y + z;
   temp  = polcoeff(PP,0);
   temp1 = polcoeff(PP,1);
   print("z     -> "z", c(z)        -> "c(z));
   print("temp  -> "z", c(temp)     -> "c(temp));
   print("y     -> "y", c(y)        -> "c(y));
   print("temp1 -> "temp1", c(temp)     -> "c(temp1));

This gives

  z     -> z, c(z)        -> [[0], [1]]
  temp  -> z, c(temp)     -> [[0, 1]]
  y     -> y, c(y)        -> [[0], [1]]
  temp1 -> y, c(temp)     -> [[0], [1]]

As one can see, z and temp have the same value, but the results of c()
are different!  Moreover, x and temp give the same \x...

Puzzled,
Ilya