Opened 15 years ago

Closed 14 years ago

#126 closed task (duplicate)

char 32003 (fast) vs. char 0 (slow); e.g. for std(jac)

Reported by: seelisch Owned by: greuel@…
Priority: major Milestone: 3-1-1
Component: dontKnow Version:
Keywords: Cc: characteristic

Description

Gert-Martin on March 29: Die folgende Anfrage aus dem Forum sollten wir ernst nehmen.

"... Ich habe festgestellt, dass std(jac) in char 0 grosse ganze Zahlen produziert. Die Rechnung in char 32003 geht schnell.

Also waere das Problem bei uns ebenfalls ohne Probleme zu loesen, wenn

  • wir modulares std fuer lift verwenden koennten,
  • slimgb bei lift anwenden koennten.

Frage,

  • sollten wir zunaechst fuer wichtige Kernfunktionen wie lift, die relativ

einfach in einer Bibliothek mit all diesen Optionen zu realisieren waeren, LIBS schreiben?

  • Sollen wir be einer Weiterentwicklung von Singular eine solche

Moeglichkeit auch im Kern vorsehen?

  • Liegt das Problem beim Beipiel aus dem Forum wirklich an den langen Zahlen?

Wer kann das profilen?

Gert-Martin

I am trying to do some computations using polynomials over Q(t). But already the following hangs my machine:

ring R = (0,t), (w,x,y,z), dp; poly f = w3 + x3 + y3 + z3 + t*((w+x)*(w+2*y)*(w+3*z) + 3*x*y*(w+x+z)); ideal jac = jacob(f); print(lift(jac, x4));

By contrast, Magma does this with no trouble. Is this a known issue?

Similarly: Wieder ist Singular in char 32003 sehr schnell, in char 0 aber sehr langsam:

proc ImD(poly p) { return( ReD((-j)*p) ); } proc KonjMat?(matrix v) { return( subst(v,j,-j) ); } proc HermTr?(matrix v) { return( transpose(KonjMat?(v)) ); } proc UnInv?(matrix X) { def Y=HermTr?(X); ideal i=trace(X*X)/2,trace(X*Y),trace(X*X*X)/3,trace(X*X*Y), trace(X*X*Y*Y),trace(X*Y*X*X*Y*Y); ideal L=ReD(i[1]),ImD(i[1]),i[2],ReD(i[3]),ImD(i[3]), ReD(i[4]),ImD(i[4]),i[5],i[6]; return(L); } ring R=(0,j),(x,r,y,z,u,p,v,q),lp; minpoly=j2+1; matrix A[3][3]=2+3j,6,0, 0,1-3j,1, 4,0,-3; pmat(A); matrix B[3][3]=u+j*p,z,0, 0,v+j*q,x+j*r, y,0; B[3,3]=-trace(B); pmat(B); ideal iA=UnInv?(A); ideal iB=UnInv?(B); int m=size(iA); m; ideal jed=iB[1]-iA[1]; for(int i=2; i<=m ; i++ ) { jed=jed,iB[i]-iA[i]; } def s="ideal jed="+string(jed); size(s); ring S=0,(x,r,y,z,u,p,v,q),lp; ring S=32003,(x,r,y,z,u,p,v,q),lp; execute(s); size(jed); vdim(jed); option(prot); timer = 1; int tt=timer; ideal gb=groebner(jed); in char 32003 ca 8 sec timer -tt;

Change History (1)

comment:1 Changed 14 years ago by seelisch

Resolution: duplicate
Status: newclosed
Note: See TracTickets for help on using tickets.