=================================================================== RCS file: /home/cvs/OpenXM/src/k097/lib/restriction/demo.k,v retrieving revision 1.6 retrieving revision 1.8 diff -u -p -r1.6 -r1.8 --- OpenXM/src/k097/lib/restriction/demo.k 2001/01/05 11:14:29 1.6 +++ OpenXM/src/k097/lib/restriction/demo.k 2001/09/20 00:48:17 1.8 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/k097/lib/restriction/demo.k,v 1.5 2000/12/28 00:08:14 takayama Exp $ */ +/* $OpenXM: OpenXM/src/k097/lib/restriction/demo.k,v 1.7 2001/01/26 12:24:57 takayama Exp $ */ load["restriction.k"];; load("../ox/ox.k");; @@ -11,7 +11,12 @@ def demoSendAsirCommand(a) { a.executeString(" def mygeneric_bfct(F,VV,DD,WW) { print([F,VV,DD,WW]); return(generic_bfct(F,VV,DD,WW));}; "); } -as = startAsir(); +if (Boundp("NoX")) { + as = Asir.generate(false); +}else{ + as = Asir.generate(); +} + asssssir = as; demoSendAsirCommand(as); RingD("x,y,z,s"); @@ -73,6 +78,16 @@ def asir_BfRoots3(G) { return([ans, bb]); } +def asir_BfRoots4(G) { + local bb,ans,ss; + sm1(" G flatten {dehomogenize} map /G set "); + ChangeRing(G); + ss = asir_generic_bfct(asssssir,G,[x,y,z,vv],[Dx,Dy,Dz,Dvv],[0,0,0,1]); + bb = [ss]; + sm1(" bb 0 get findIntegralRoots { (universalNumber) dc } map /ans set "); + return([ans, bb]); +} + def findMinSol(f) { sm1(" f (string) dc findIntegralRoots 0 get (universalNumber) dc /FunctionValue set "); } @@ -94,6 +109,10 @@ def asirAnnXYZ(a,f) { def nonquasi2(p,q) { local s,ans,f; + + sm1("0 set_timer "); sm1(" oxNoX "); + asssssir.OnTimer(); + f = x^p+y^q+x*y^(q-1); Print("f=");Println(f); s = ToString(f); @@ -114,6 +133,10 @@ def nonquasi2(p,q) { Print("Roots and b-function are "); Println(R); R0 = R[0]; Ans=Srestall(Res0, ["x", "y"], ["x", "y"], R0[Length(R0)-1]); + + Println("Timing data: sm1 "); sm1(" 1 set_timer "); + Print(" ox_asir [CPU,GC]: ");Println(asssssir.OffTimer()); + Print("Answer is "); Println(Ans[0]); return(Ans); } @@ -129,6 +152,10 @@ def asirAnn0XYZ(a,f) { def DeRham2WithAsir(f) { local s; + + sm1("0 set_timer "); sm1(" oxNoX "); + asssssir.OnTimer(); + s = ToString(f); II = asirAnn0XYZ(asssssir,f); Print("Step 1: Annhilating ideal (II)"); Println(II); @@ -144,11 +171,19 @@ def DeRham2WithAsir(f) { Print("Roots and b-function are "); Println(R); R0 = R[0]; Ans=Srestall(Res0, ["x", "y"], ["x", "y"],R0[Length(R0)-1] ); + + Println("Timing data: sm1 "); sm1(" 1 set_timer "); + Print(" ox_asir [CPU,GC]: ");Println(asssssir.OffTimer()); + Print("Answer is ");Println(Ans[0]); return(Ans); } def DeRham3WithAsir(f) { local s; + + sm1("0 set_timer "); sm1(" oxNoX "); + asssssir.OnTimer(); + s = ToString(f); II = asirAnn0XYZ(asssssir,f); Print("Step 1: Annhilating ideal (II)"); Println(II); @@ -164,6 +199,108 @@ def DeRham3WithAsir(f) { Print("Roots and b-function are "); Println(R); R0 = R[0]; Ans=Srestall(Res0, ["x", "y", "z"], ["x", "y", "z"],R0[Length(R0)-1] ); + + Println("Timing data: sm1 "); sm1(" 1 set_timer "); + Print(" ox_asir [CPU,GC]: ");Println(asssssir.OffTimer()); + Print("Answer is ");Println(Ans[0]); return(Ans); +} + +/* test data + + NoX=true; + nonquasi2(4,5); + nonquasi2(4,6); + nonquasi2(4,7); + nonquasi2(4,8); + nonquasi2(4,9); + nonquasi2(4,10); + + nonquasi2(5,6); + nonquasi2(6,7); + nonquasi2(7,8); + nonquasi2(8,9); + nonquasi2(9,10); +*/ + + P2 = [ + "x^3-y^2", + "y^2-x^3-x-1", + "y^2-x^5-x-1", + "y^2-x^7-x-1", + "y^2-x^9-x-1", + "y^2-x^11-x-1" + ]; + + P3 = [ + "x^3-y^2*z^2", + "x^2*z+y^3+y^2*z+z^3", + "y*z^2+x^3+x^2*y^2+y^6", + "x*z^2+x^2*y+x*y^3+y^5" + ]; + + +def diff_tmp(ff,xx) { + local g; + g = xx*ff; + return( Replace(g,[[xx,Poly("0")],[h,Poly("1")]])); +} + +def Localize3WithAsir(I,f) { + local s; + + sm1("0 set_timer "); sm1(" oxNoX "); + asssssir.OnTimer(); + + RingD("x,y,z,vv"); + /* BUG: use of RingD("x,y,z,v") causes an expected error. + [x2,x3,x4,x4] in mygeneric_bfct. (should be [x2,x3,x4,x5]). + */ + f = ReParse(f); + I = ReParse(I); + /* Test data. */ + /* + f = x^3-y^2*z^2; + I = [f^2*Dx-3*x^2, f^2*Dy-2*y*z^2, f^2*Dz-2*y^2*z]; + + f = x^3-y^2; + I = [f^2*Dx-diff_tmp(f,Dx), f^2*Dy-diff_tmp(f,Dy), Dz]; + */ + + r1 = Dx-vv^2*diff_tmp(f,Dx)*Dvv; + r2 = Dy-vv^2*diff_tmp(f,Dy)*Dvv; + r3 = Dz-vv^2*diff_tmp(f,Dz)*Dvv; + II = ReParse(I); + sm1(" II { [[(Dx). r1] [(Dy). r2] [(Dz). r3]] replace } map dehomogenize /II set "); + + Print("Step 1: phi(J)"); Println(II); + II = Join(II,[vv*f-1]); + Print("Step 2: "); Println(II); + + Println("Step3: computing the integral."); + sm1(" II { [(x) (y) (z) (vv) (Dx) (Dy) (Dz) (Dvv)] laplace0 } map /JJ set "); + Sweyl("x,y,z,vv",[["vv",-1,"Dvv",1]]); + pp = Map(JJ,"Spoly"); + R = asir_BfRoots4(pp); + Print("Roots and b-function are "); Println(R); + + R0 = R[0]; + k1 = R0[Length(R0)-1]; + sm1(" [(parse) (intw.sm1) pushfile] extension /intw.verbose 1 def "); + sm1(" [II [(vv) (x) (y) (z)] [(vv) -1 (Dvv) 1] k1 (integer) dc] integral-k1 /Ans set "); + + Println("Timing data: sm1 "); sm1(" 1 set_timer "); + Print(" ox_asir [CPU,GC]: ");Println(asssssir.OffTimer()); + + Print("Answer is ");Println(Ans); + return(Ans); +} + + +def Ltest2() { + RingD("x,y,z"); + f = x^3-y^2; + I = [f^2*Dx-diff_tmp(f,Dx), f^2*Dy-diff_tmp(f,Dy), Dz]; + return( Localize3WithAsir(I,f) ); }