Vec(qfbred(Qfb([6,6,-1]),1))
Qfb(5*x^2+7*x+9)
Qfb(Mat([3,1;1,3]))
q=Qfb(7, 30, -14)^2;
qfbpowraw(q,-1)
q*q^2
q^0
q^1
q^-1
q^-(2^64+1)
q=Qfb(2, 1, 3); q2=q*q;
q3=qfbcompraw(q,q2)
qfbpowraw(q,3)
qfbred(q3,1)
q=Qfb(1009, 60, 99108027750247771)
qfbnupow(q, 8839368315)
L = sqrtnint(abs(poldisc(q)), 4);
qfbnupow(q, 8839368315,L)
f=Qfb(2,2,2); g=Qfb(3,3,3); [f * g, qfbcompraw(f, g)]
f=Qfb(3,2,8); g=Qfb(2,1,3); [f * g, qfbcompraw(f, g)]
f=Qfb(7,18,-18); g=Qfb(11,52,-41); [f * g, qfbcompraw(f, g)]
q=Qfb(22000957029,25035917443,7122385192);
qfbred(q)
qfbredsl2(q)
q=Qfb(33947,-39899,11650);
qfbred(q)
qfbredsl2(q)
q=Qfb(1099511627776,1879224363605,802966544317);
[qr,U]=qfbredsl2(q)
qfeval(q,U)
qfeval(q,U[,1])
qfeval(q,U[,2])
qfeval(q,U[,1],U[,2])
D=poldisc(q);
qfbredsl2(q,sqrtint(D))
qfbredsl2(q);
p=2^64+13;
qfbprimeform(-4,p)
qfbprimeform(5,p)
D=10^7+1;
u=[qfbprimeform(D,1),0.]; f=qfbred(u,1);
f^0
qfbpow(f,0)
f^1
qfbpow(f,1)
f^-1
qfbpow(f,-1)
f^6
qfbpow(f,6)
f*f
f*f/f

egcd(x,y)=
{
  my(k=2*y,Q=qfbred(Qfb(k^2*x^2+1,2*k^2*x*y,k^2*y^2)));
  my([a,b,c]=Vec(Q),p,q,u,v,g);
  if(!issquare(a,&p),error("gcd"));
  g=y/p; q = -x/g;
  issquare(c-k^2*g^2,&u);
  if ((1+q*u)%p!=0,u=-u);
  v=(1+q*u)/p;
  [u,v,g];
}
print("test qfbred, large coefs");
my([p,q] = [random(2^100000), random(2^100000)],[u,v,g] = egcd(p,q)); u*p+q*v==g

egcdsl2(x,y)=
{
  my(k=2*y,[Q,U]=qfbredsl2(Qfb(k^2*x^2+1,2*k^2*x*y,k^2*y^2)));
  my([a,b,c]=Vec(Q),p,q,u,v,g);
  if(!issquare(a,&p),error("gcd"));
  if (sign(U[1,1])!=sign(p),p=-p);
  g=y/p; q = -x/g;
  issquare(c-k^2*g^2,&u);
  if ((1+q*u)%p!=0,u=-u);
  v=(1+q*u)/p;
  [p,u;q,v]==U;
}
print("test qfbredsl2, large coefs");
my([p,q] = [random(2^100000), random(2^100000)]);egcdsl2(p,q)


\\ Errors, keep at end of file
qfbredsl2(q,1.);
r=Qfb(5,7,1); i=Qfb(5,1,1); R=[r,0.];
[1,2]*[1,2,4]
R*[1,2]
[1,2]*R
[i,0.]*[1,2]
[1,2]*[i,0.]
[i,0.]*[i,0.]

f=Qfb(12,5,3);g=Qfb(5,5,2);
f*g
f/g
f=Qfb(8,14,1);g=Qfb(4,12,6);
f*g \\ should fail
f/g
Qfb(1,,2)
Qfb(1)
Qfb(1,2)
Qfb(['x,2,3])
f=Qfb(7,18,-18); g=Qfb(11,52,-41); qfbcomp([f,1.],g)
