divideByVariable(m,v) -- divide each column of the matrix 'm' by
as high a power of the variable 'v' as possible.
divideByVariable(m,v,d) -- divide each column of the matrix 'm' by
as high a power of the variable 'v' as possible, but divide by no more than v^d.
i1 : R = ZZ/101[a..d]
o1 = R
o1 : PolynomialRing
i2 : m = matrix{{a*b, a^2*c}, {a*b^2, a^4*d}}
o2 = {0} | ab a2c |
{0} | ab2 a4d |
2 2
o2 : Matrix R <--- R
i3 : divideByVariable(m,a)
o3 = {0} | b c |
{0} | b2 a2d |
2 2
o3 : Matrix R <--- R
i4 : divideByVariable(m,a,1)
o4 = {0} | b ac |
{0} | b2 a3d |
2 2
o4 : Matrix R <--- R
Caveats and limitations: you can only divide by a variable, not a monomial,
and you have little control on what power will be divided. This routine is mostly
used by the saturation commands as a fast internal way of dividing.