=================================================================== RCS file: /home/cvs/OpenXM/src/k097/lib/restriction/demo.k,v retrieving revision 1.2 retrieving revision 1.7 diff -u -p -r1.2 -r1.7 --- OpenXM/src/k097/lib/restriction/demo.k 2000/12/15 02:44:32 1.2 +++ OpenXM/src/k097/lib/restriction/demo.k 2001/01/26 12:24:57 1.7 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/k097/lib/restriction/demo.k,v 1.1 2000/12/14 13:18:41 takayama Exp $ */ +/* $OpenXM: OpenXM/src/k097/lib/restriction/demo.k,v 1.6 2001/01/05 11:14:29 takayama Exp $ */ load["restriction.k"];; load("../ox/ox.k");; @@ -8,9 +8,15 @@ def demoSendAsirCommand(a) { a.executeString(" def myann(F) { B=ann(eval_str(F)); print(B); return(map(dp_ptod,B,[hoge,x,y,z,s,hh,ee,dx,dy,dz,ds,dhh])); }; "); a.executeString(" def myann0(F) { B=ann0(eval_str(F)); print(B); return(map(dp_ptod,B[1],[hoge,x,y,z,s,hh,ee,dx,dy,dz,ds,dhh])); }; "); a.executeString(" def mybfct(F) { return(rtostr(bfct(eval_str(F)))); }; "); + 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"); @@ -32,6 +38,46 @@ def asirAnnfsXYZ(a,f) { return(b); } + +def asir_generic_bfct(a,ii,vv,dd,ww) { + local ans; + ans = a.rpc_str("mygeneric_bfct",[ii,vv,dd,ww]); + return(ans); +} +/* a=startAsir(); + asir_generic_bfct(a,[Dx^2+Dy^2-1,Dx*Dy-4],[x,y],[Dx,Dy],[1,1]): */ + +/* usage: misc/tmp/complex-ja.texi */ +def ChangeRing(f) { + local r; + r = GetRing(f); + if (Tag(r) == 14) { + SetRing(r); + return(true); + }else{ + return(false); + } +} + +def asir_BfRoots2(G) { + local bb,ans,ss; + sm1(" G flatten {dehomogenize} map /G set "); + ChangeRing(G); + ss = asir_generic_bfct(asssssir,G,[x,y],[Dx,Dy],[1,1]); + bb = [ss]; + sm1(" bb 0 get findIntegralRoots { (universalNumber) dc } map /ans set "); + return([ans, bb]); +} +def asir_BfRoots3(G) { + local bb,ans,ss; + sm1(" G flatten {dehomogenize} map /G set "); + ChangeRing(G); + ss = asir_generic_bfct(asssssir,G,[x,y,z],[Dx,Dy,Dz],[1,1,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 "); } @@ -53,6 +99,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); @@ -67,11 +117,16 @@ def nonquasi2(p,q) { Res = Sminimal(pp); Res0 = Res[0]; Println("Step2: (-1,1)-minimal resolution (Res0) "); sm1_pmat(Res0); - R = BfRoots1(Res0[0],"x,y"); +/* R = BfRoots1(Res0[0],"x,y"); */ + R = asir_BfRoots2(Res0[0]); Println("Step3: computing the cohomology of the truncated complex."); 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); } @@ -87,6 +142,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); @@ -96,16 +155,25 @@ def DeRham2WithAsir(f) { Res = Sminimal(pp); Res0 = Res[0]; Print("Step2: (-1,1)-minimal resolution (Res0) "); sm1_pmat(Res0); - R = BfRoots1(Res0[0],"x,y"); + /* R = BfRoots1(Res0[0],"x,y"); */ + R = asir_BfRoots2(Res0[0]); Println("Step3: computing the cohomology of the truncated complex."); 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); @@ -115,11 +183,52 @@ def DeRham3WithAsir(f) { Res = Sminimal(pp); Res0 = Res[0]; Print("Step2: (-1,1)-minimal resolution (Res0) "); sm1_pmat(Res0); - R = BfRoots1(Res0[0],"x,y,z"); + /* R = BfRoots1(Res0[0],"x,y,z"); */ + R = asir_BfRoots3(Res0[0]); Println("Step3: computing the cohomology of the truncated complex."); 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" + ]; + + +