=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/builtin/gr.c,v retrieving revision 1.2 retrieving revision 1.4 diff -u -p -r1.2 -r1.4 --- OpenXM_contrib2/asir2018/builtin/gr.c 2018/09/28 08:20:27 1.2 +++ OpenXM_contrib2/asir2018/builtin/gr.c 2020/02/22 06:23:35 1.4 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2018/builtin/gr.c,v 1.1 2018/09/19 05:45:06 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2018/builtin/gr.c,v 1.3 2020/02/03 05:51:52 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -99,6 +99,7 @@ int GenSyz = 0; int OXCheck = -1; int OneZeroHomo = 0; int MaxDeg = 0; +int NaiveSchreyer = 0; int NoSugar = 0; static int NoCriB = 0; @@ -303,6 +304,8 @@ void dp_gr_main(LIST f,LIST v,Num homo,int modular,int int i,mindex,m,nochk; struct order_spec *ord1; Z q; + Q cont; + P pp; VL fv,vv,vc; NODE fd,fd0,fi,fi0,r,r0,t,subst,x,s,xx; NODE ind,ind0; @@ -316,6 +319,13 @@ void dp_gr_main(LIST f,LIST v,Num homo,int modular,int if ( ord->id && NVars != ord->nv ) error("dp_gr_main : invalid order specification"); initd(ord); + // clear denominators + for ( r0 = 0, t = BDY(f); t; t = NEXT(t) ) { + ptozp((P)BDY(t),1,&cont,&pp); + NEXTNODE(r0,r); BDY(r) = (pointer)pp; + } + if ( r0 ) NEXT(r) = 0; + MKLIST(f,r0); if ( homo ) { homogenize_order(ord,NVars,&ord1); for ( fd0 = fi0 = 0, t = BDY(f); t; t = NEXT(t) ) { @@ -2333,6 +2343,8 @@ void dp_set_flag(Obj name,Obj value) OneZeroHomo = v; else if ( !strcmp(n,"MaxDeg") ) MaxDeg = v; + else if ( !strcmp(n,"NaiveSchreyer") ) + NaiveSchreyer = v; } void dp_make_flaglist(LIST *list) @@ -2361,6 +2373,7 @@ void dp_make_flaglist(LIST *list) STOZ(OXCheck,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OXCheck"); MKNODE(n1,name,n); n = n1; STOZ(GenTrace,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenTrace"); MKNODE(n1,name,n); n = n1; STOZ(GenSyz,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenSyz"); MKNODE(n1,name,n); n = n1; + STOZ(NaiveSchreyer,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NaiveSchreyer"); MKNODE(n1,name,n); n = n1; STOZ(MaxDeg,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"MaxDeg"); MKNODE(n1,name,n); n = n1; STOZ(OneZeroHomo,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OneZeroHomo"); MKNODE(n1,name,n); n = n1; STOZ(PtozpRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PtozpRA"); MKNODE(n1,name,n); n = n1;