{
  a=[0,0*x,O(5^3),2,2+O(5^3),x];
  for(i=1,#a,
    for(j=1,#a,
      print(gcdext(a[i],a[j]))));
}
gcdext(-1/3*x - 5/9,-x - 5/3)
z;T;
FF=Mod((O(2^4)*T^3+O(2^4)*T^2+O(2^4)*T+O(2^4))*z^7+((2+2^3+O(2^4))*T^3+O(2^4)*T^2+(1+2+O(2^4))*T+(1+2^2+O(2^4)))*z^6+(O(2^4)*T^3+O(2^4)*T^2+O(2^4)*T+O(2^4))*z^5+((1+2+2^3+O(2^4))*T^3+(1+2+2^2+2^3+O(2^4))*T^2+(2+2^3+O(2^4))*T+(1+2^2+2^3+O(2^4)))*z^4+(O(2^4)*T^3+O(2^4)*T^2+O(2^4)*T+O(2^4))*z^3+((2+2^2+2^3+O(2^4))*T^3+(1+2^2+2^3+O(2^4))*T^2+O(2^4)*T+(1+2+2^2+2^3+O(2^4)))*z^2+(O(2^4)*T^3+O(2^4)*T^2+O(2^4)*T+O(2^4))*z+((1+2^3+O(2^4))+(1+2^2+2^3+O(2^4))*T+(2+2^2+2^3+O(2^4))*T^2+(1+2+2^3+O(2^4))*T^3+O(T^20)),(1+O(2^4))*z^8+(1+O(2^4)));
GG=Mod((O(2^4)*T^3+O(2^4)*T^2+O(2^4)*T+O(2^4))*z^7+((2+2^3+O(2^4))*T^3+O(2^4)*T^2+(1+2+O(2^4))*T+(1+2^2+O(2^4)))*z^6+(O(2^4)*T^3+O(2^4)*T^2+O(2^4)*T+O(2^4))*z^5+((1+2+2^3+O(2^4))*T^3+(1+2+2^2+2^3+O(2^4))*T^2+(2+2^3+O(2^4))*T+(1+2^2+2^3+O(2^4)))*z^4+(O(2^4)*T^3+O(2^4)*T^2+O(2^4)*T+O(2^4))*z^3+((2+2^2+2^3+O(2^4))*T^3+(1+2^2+2^3+O(2^4))*T^2+O(2^4)*T+(1+2+2^2+2^3+O(2^4)))*z^2+(O(2^4)*T^3+O(2^4)*T^2+O(2^4)*T+O(2^4))*z+((1+2^3+O(2^4))+(1+2^2+2^3+O(2^4))*T+(2+2^2+2^3+O(2^4))*T^2+(1+2+2^3+O(2^4))*T^3+O(T^20)),(1+O(2^4))*z^8+(1+O(2^4)));
AA=truncate(lift(lift(FF)));
BB=truncate(lift(lift(GG)));
gcdext(AA,BB)
gcd(x*Mod(1,7),x*Mod(1,7))
a=ffgen([3,5],'a);
gcd((x^2+a*x+1)*(x+a),(x^3+a*x^2+a*x)*(x+a))
gcdext(x^2+a*x+1,x^3+a*x^2+a*x)

gcd(2*I, 1+I)
gcd(I*1., I+1.)
gcd(1+O(2),1+O(3))
gcd(2+O(2^2),4+O(2^3))
w=quadgen(5);
gcd(w,2*w)
gcd(2*w,w)
gcd(2,Mod(2,4))
gcd(1/2,Mod(2,4))
gcd(1/3,Mod(2,4))
gcd(Mod(2,4), 2+O(2^3))
gcd(Mod(2,5), I)
gcd(Mod(2,5), w)
gcd(1/2, 1/(I+1))
gcd(1/2, 2+O(2^3))
gcd(I, 2+O(2^3))
gcd(I, w)
gcd(w, 2+O(2^3))
t = Mod(x^2,x^3);
gcd(t,y)
gcd(t,x)
gcd(t,1/y)
gcd(t,1/x)
gcd(t,1/(x+1))
gcd(Pol(0), y)
gcd(x+O(x^5), x^2+O(x^3))
gcd(x+O(x^5), 1/x^2)
v=[1,2,1.,Mod(1,2),1/2,1/3,2/3,I,quadgen(5), 1+O(2),2+O(2^2),1/2+O(2)];
{
t1=ffgen(2^3);
t0=0*t1;
t2=ffgen(3^3);
for (i=1,#v,
  print(iferr(gcd(t0,v[i]),E,E));
  print(iferr(gcd(t1,v[i]),E,E));
  print(iferr(gcd(t2,v[i]),E,E));
)
}
gcd(0,1.+I)
gcd(0,1+I)
gcd(0,Mod(1,3)+I)
gcd(1/2, 1.+I)

default(realprecision,38);
gcd(Pol(0.),x)
(k+1.)/k - (2*k+1.)/k
gcd(1/(2^64*y),Mod(x^2,2^64*x^3))

gcd(Mod(1,2)*x+Mod(1,2),Mod(0,2))
gcd(Mod(1,2)*x+Mod(1,2), 0*ffgen(2^3))
