a = [0, 1, 1/3, 1.0, Mod(1,2), Mod(1,3), ffgen(Mod(1,3)*(x^2+1)), 2*I, 3 + O(3^2), Mod(x,x^2+1), 2*x + 2, 3*(x +O(x^2)) ];
b = [2, 3, x, x^2+1 ];
{
for (i = 1, #a,
  for(j = 1, #b,
    v = iferr(valuation(a[i],b[j]), E, "ERROR");
    print1(v, " ")
  );
  print()
)
}
valuation(0,1)
valuation(0,-1)
valuation(0,0)
valuation(0,I)

z=1+'x;
valuation(Mod(z^2,z^3), z)
valuation(y+O(y^2),x)

\\ #1319
s=Mod(1,3)*(1+x); valuation((s+O(x^2)) - s,x)
\\ #1336
1./(x+1)+O(x^2)
\\ #1345
valuation(0*x,3) == oo

1+O(x)-1
poldegree(0)
poldegree(Pol(Mod(0,3)))
poldegree(0./x)

valuation(x^2)
valuation(x^2+O(x^3))
valuation(2^2+O(2^3))

\\ #2381
valuation(x*(y^2-1), y+1)
valuation(y*(x^2-1), x+1)
valuation(Pol(0), x)
valuation(Pol(0), x^2)
valuation(Pol(0), x+1)

\\ ERRORS
valuation(Pi)
