Opened 14 years ago

Closed 9 years ago

#154 closed bug (fixed)

Rational Function Field Computations

Reported by: malb Owned by: hannes
Priority: major Milestone: 3-1-1
Component: singular-kernel Version: 3-1-0
Keywords: Cc:

Description

Kiran Kedlaya wrote on [sage-devel]

One pet complaint that you might bring up with the Singular team: I
have had trouble using Singular for Groebner basis computations over
the rational function field Q(t). Certain computations that Magma
handles easily cause Singular to choke up. I posted an example
upstream:

http://www.singular.uni-kl.de/forum/viewtopic.php?f=10&t=1683&sid=a8f16c64febeaa83ca01675a38070c36

but got no reply. (By contrast, I haven't had any problems working in F_p(t).)

How to reproduce:

ring R = (0,t), (w,x,y,z), dp;
poly f = w^3 + x^3 + y^3 + z^3 + t*((w+x)*(w+2*y)*(w+3*z) + 3*x*y*(w+x+z));
ideal jac = jacob(f);
print(lift(jac, x^4));

Change History (3)

comment:1 Changed 14 years ago by seelisch

Milestone: Releases 3-1-1 and higher

Please always also assign a milestone!

comment:2 Changed 13 years ago by seelisch

here's the input from old ticket #126: 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;

comment:3 Changed 9 years ago by hannes

Resolution: fixed
Status: newclosed

fixed in spielwiese (4-0-0), timing improved by a factor >4

Note: See TracTickets for help on using tickets.