version 1.1, 2018/09/19 05:45:06 |
version 1.9, 2022/09/10 04:04:51 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM$ |
* $OpenXM: OpenXM_contrib2/asir2018/builtin/gr.c,v 1.8 2021/02/17 22:18:39 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
|
|
|
|
static int *pss; |
static int *pss; |
static int psn,pslen; |
static int psn,pslen; |
static int NVars,CNVars; |
static int NVars; |
|
int CNVars; |
static VL VC; |
static VL VC; |
|
|
int PCoeffs; |
int PCoeffs; |
|
|
int OXCheck = -1; |
int OXCheck = -1; |
int OneZeroHomo = 0; |
int OneZeroHomo = 0; |
int MaxDeg = 0; |
int MaxDeg = 0; |
|
int NaiveSchreyer = 0; |
|
|
int NoSugar = 0; |
int NoSugar = 0; |
static int NoCriB = 0; |
static int NoCriB = 0; |
Line 114 static int Max_mag = 0; |
|
Line 116 static int Max_mag = 0; |
|
static int Max_coef = 0; |
static int Max_coef = 0; |
char *Demand = 0; |
char *Demand = 0; |
static int PtozpRA = 0; |
static int PtozpRA = 0; |
|
int ReversePOT = 0; |
|
|
int doing_f4; |
int doing_f4; |
NODE TraceList; |
NODE TraceList; |
Line 303 void dp_gr_main(LIST f,LIST v,Num homo,int modular,int |
|
Line 306 void dp_gr_main(LIST f,LIST v,Num homo,int modular,int |
|
int i,mindex,m,nochk; |
int i,mindex,m,nochk; |
struct order_spec *ord1; |
struct order_spec *ord1; |
Z q; |
Z q; |
|
Q cont; |
|
P pp; |
VL fv,vv,vc; |
VL fv,vv,vc; |
NODE fd,fd0,fi,fi0,r,r0,t,subst,x,s,xx; |
NODE fd,fd0,fi,fi0,r,r0,t,subst,x,s,xx; |
NODE ind,ind0; |
NODE ind,ind0; |
Line 316 void dp_gr_main(LIST f,LIST v,Num homo,int modular,int |
|
Line 321 void dp_gr_main(LIST f,LIST v,Num homo,int modular,int |
|
if ( ord->id && NVars != ord->nv ) |
if ( ord->id && NVars != ord->nv ) |
error("dp_gr_main : invalid order specification"); |
error("dp_gr_main : invalid order specification"); |
initd(ord); |
initd(ord); |
|
// clear denominators if the ground field is Q |
|
if ( field == 0 ) { |
|
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 ) { |
if ( homo ) { |
homogenize_order(ord,NVars,&ord1); |
homogenize_order(ord,NVars,&ord1); |
for ( fd0 = fi0 = 0, t = BDY(f); t; t = NEXT(t) ) { |
for ( fd0 = fi0 = 0, t = BDY(f); t; t = NEXT(t) ) { |
Line 370 void dp_gr_main(LIST f,LIST v,Num homo,int modular,int |
|
Line 384 void dp_gr_main(LIST f,LIST v,Num homo,int modular,int |
|
} else |
} else |
break; |
break; |
} |
} |
if ( modular ) |
if ( modular ) { |
if ( modular > 1 ) { |
if ( modular > 1 ) { |
*rp = 0; return; |
*rp = 0; return; |
} else |
} else |
m = get_lprime(++mindex); |
m = get_lprime(++mindex); |
|
} |
makesubst(vc,&subst); |
makesubst(vc,&subst); |
psn = length(s); |
psn = length(s); |
for ( i = psn; i < pslen; i++ ) { |
for ( i = psn; i < pslen; i++ ) { |
Line 388 void dp_gr_main(LIST f,LIST v,Num homo,int modular,int |
|
Line 403 void dp_gr_main(LIST f,LIST v,Num homo,int modular,int |
|
else |
else |
dtop(CO,vv,ps[(long)BDY(x)],(Obj *)&BDY(r)); |
dtop(CO,vv,ps[(long)BDY(x)],(Obj *)&BDY(r)); |
NEXTNODE(ind0,ind); |
NEXTNODE(ind0,ind); |
STOQ((long)BDY(x),q); BDY(ind) = q; |
STOZ((long)BDY(x),q); BDY(ind) = q; |
} |
} |
if ( r0 ) NEXT(r) = 0; |
if ( r0 ) NEXT(r) = 0; |
if ( ind0 ) NEXT(ind) = 0; |
if ( ind0 ) NEXT(ind) = 0; |
Line 448 void dp_interreduce(LIST f,LIST v,int field,struct ord |
|
Line 463 void dp_interreduce(LIST f,LIST v,int field,struct ord |
|
else |
else |
dtop(CO,vv,ps[(long)BDY(x)],(Obj *)&BDY(r)); |
dtop(CO,vv,ps[(long)BDY(x)],(Obj *)&BDY(r)); |
NEXTNODE(ind0,ind); |
NEXTNODE(ind0,ind); |
STOQ((long)BDY(x),q); BDY(ind) = q; |
STOZ((long)BDY(x),q); BDY(ind) = q; |
} |
} |
if ( r0 ) NEXT(r) = 0; |
if ( r0 ) NEXT(r) = 0; |
if ( ind0 ) NEXT(ind) = 0; |
if ( ind0 ) NEXT(ind) = 0; |
Line 711 NODE gb_f4(NODE f) |
|
Line 726 NODE gb_f4(NODE f) |
|
rank = generic_gauss_elim(mat,&nm,&dn,&rind,&cind); |
rank = generic_gauss_elim(mat,&nm,&dn,&rind,&cind); |
#endif |
#endif |
if ( DP_Print ) |
if ( DP_Print ) |
fprintf(asir_out,"done rank = %d\n",rank,row,col); |
fprintf(asir_out,"done rank = %d\n",rank); |
for ( i = 0; i < rank; i++ ) { |
for ( i = 0; i < rank; i++ ) { |
for ( k = 0; k < nred; k++ ) |
for ( k = 0; k < nred; k++ ) |
if ( !cmpdl(nv,at[rind[i]],ht[k]) ) |
if ( !cmpdl(nv,at[rind[i]],ht[k]) ) |
Line 936 NODE gb_f4_mod(NODE f,int m) |
|
Line 951 NODE gb_f4_mod(NODE f,int m) |
|
init_eg(&eg_split_elim2); add_eg(&eg_split_elim2,&tmp0,&tmp1); |
init_eg(&eg_split_elim2); add_eg(&eg_split_elim2,&tmp0,&tmp1); |
|
|
if ( DP_Print ) { |
if ( DP_Print ) { |
fprintf(asir_out,"done rank = %d\n",rank,row,col); |
fprintf(asir_out,"done rank = %d\n",rank); |
print_eg("Symb",&eg_split_symb); |
print_eg("Symb",&eg_split_symb); |
print_eg("Conv",&eg_split_conv); |
print_eg("Conv",&eg_split_conv); |
print_eg("Elim1",&eg_split_elim1); |
print_eg("Elim1",&eg_split_elim1); |
Line 1124 NODE gb_f4_mod_old(NODE f,int m) |
|
Line 1139 NODE gb_f4_mod_old(NODE f,int m) |
|
init_eg(&eg_split_elim2); add_eg(&eg_split_elim2,&tmp0,&tmp1); |
init_eg(&eg_split_elim2); add_eg(&eg_split_elim2,&tmp0,&tmp1); |
|
|
if ( DP_Print ) { |
if ( DP_Print ) { |
fprintf(asir_out,"done rank = %d\n",rank,row,col); |
fprintf(asir_out,"done rank = %d\n",rank); |
print_eg("Symb",&eg_split_symb); |
print_eg("Symb",&eg_split_symb); |
print_eg("Elim1",&eg_split_elim1); |
print_eg("Elim1",&eg_split_elim1); |
print_eg("Elim2",&eg_split_elim2); |
print_eg("Elim2",&eg_split_elim2); |
Line 1211 void makesubst(VL v,NODE *s) |
|
Line 1226 void makesubst(VL v,NODE *s) |
|
for ( r0 = 0; v; v = NEXT(v) ) { |
for ( r0 = 0; v; v = NEXT(v) ) { |
NEXTNODE(r0,r); BDY(r) = (pointer)v->v; |
NEXTNODE(r0,r); BDY(r) = (pointer)v->v; |
#if defined(_PA_RISC1_1) |
#if defined(_PA_RISC1_1) |
n = mrand48()&BMASK; UTOQ(n,q); |
n = mrand48()&BMASK; UTOZ(n,q); |
#else |
#else |
n = random(); UTOQ(n,q); |
n = random(); UTOZ(n,q); |
#endif |
#endif |
NEXTNODE(r0,r); BDY(r) = (pointer)q; |
NEXTNODE(r0,r); BDY(r) = (pointer)q; |
} |
} |
Line 1226 void printsubst(NODE s) |
|
Line 1241 void printsubst(NODE s) |
|
fputc('[',asir_out); |
fputc('[',asir_out); |
while ( s ) { |
while ( s ) { |
printv(CO,(V)BDY(s)); s = NEXT(s); |
printv(CO,(V)BDY(s)); s = NEXT(s); |
fprintf(asir_out,"->%d",QTOS((Q)BDY(s))); |
fprintf(asir_out,"->%ld",ZTOS((Q)BDY(s))); |
if ( NEXT(s) ) { |
if ( NEXT(s) ) { |
fputc(',',asir_out); s = NEXT(s); |
fputc(',',asir_out); s = NEXT(s); |
} else |
} else |
Line 1318 void setup_arrays(NODE f,int m,NODE *r) |
|
Line 1333 void setup_arrays(NODE f,int m,NODE *r) |
|
MKLIST(input,t); |
MKLIST(input,t); |
|
|
if ( OXCheck >= 0 ) { |
if ( OXCheck >= 0 ) { |
STOQ(OXCheck,q); |
STOZ(OXCheck,q); |
MKSTR(fname,"register_input"); |
MKSTR(fname,"register_input"); |
arg = mknode(3,q,fname,input); |
arg = mknode(3,q,fname,input); |
Pox_cmo_rpc(arg,&obj); |
Pox_cmo_rpc(arg,&obj); |
Line 1369 NODE /* of DP */ NODE_sortb_insert( DP newdp, NODE /* |
|
Line 1384 NODE /* of DP */ NODE_sortb_insert( DP newdp, NODE /* |
|
NEXT(newnd) = last; |
NEXT(newnd) = last; |
return newnd; |
return newnd; |
} |
} |
for ( ; p = NEXT(last); last = p ) |
for ( ; (p = NEXT(last)) != 0; last = p ) |
if ( sgn*(*cmpfun)( nv, newdl, BDY((DP) BDY(p))->dl ) > 0 ) break; |
if ( sgn*(*cmpfun)( nv, newdl, BDY((DP) BDY(p))->dl ) > 0 ) break; |
if ( p ) NEXT(NEXT(last) = newnd) = p; |
if ( p ) NEXT(NEXT(last) = newnd) = p; |
else NEXT(last) = newnd; |
else NEXT(last) = newnd; |
Line 1397 NODE /* of index */ NODE_sortbi_insert( int newdpi, NO |
|
Line 1412 NODE /* of index */ NODE_sortbi_insert( int newdpi, NO |
|
NEXT(newnd) = last; |
NEXT(newnd) = last; |
return newnd; |
return newnd; |
} |
} |
for ( ; p = NEXT(last); last = p ) |
for ( ; (p = NEXT(last)) != 0; last = p ) |
if ( sgn*(*cmpfun)( nv, newdl, psh[(long)BDY(p)] ) > 0 ) break; |
if ( sgn*(*cmpfun)( nv, newdl, psh[(long)BDY(p)] ) > 0 ) break; |
if ( p ) NEXT(NEXT(last) = newnd) = p; |
if ( p ) NEXT(NEXT(last) = newnd) = p; |
else NEXT(last) = newnd; |
else NEXT(last) = newnd; |
Line 1446 void reduceall(NODE in,NODE *h) |
|
Line 1461 void reduceall(NODE in,NODE *h) |
|
NODE node; |
NODE node; |
LIST hist; |
LIST hist; |
|
|
STOQ(w[i],q); |
STOZ(w[i],q); |
node = mknode(4,ONE,q,ONE,ONE); |
node = mknode(4,ONE,q,ONE,ONE); |
MKLIST(hist,node); |
MKLIST(hist,node); |
MKNODE(TraceList,hist,0); |
MKNODE(TraceList,hist,0); |
Line 1566 int newps(DP a,int m,NODE subst) |
|
Line 1581 int newps(DP a,int m,NODE subst) |
|
} |
} |
MKLIST(trace,tr); |
MKLIST(trace,tr); |
if ( OXCheck >= 0 ) { |
if ( OXCheck >= 0 ) { |
STOQ(OXCheck,q1); |
STOZ(OXCheck,q1); |
MKSTR(fname,"check_trace"); |
MKSTR(fname,"check_trace"); |
STOQ(psn,q2); |
STOZ(psn,q2); |
arg = mknode(5,q1,fname,a,q2,trace); |
arg = mknode(5,q1,fname,a,q2,trace); |
Pox_cmo_rpc(arg,&obj); |
Pox_cmo_rpc(arg,&obj); |
} else if ( OXCheck < 0 ) { |
} else if ( OXCheck < 0 ) { |
STOQ(psn,q1); |
STOZ(psn,q1); |
tn = mknode(2,q1,trace); |
tn = mknode(2,q1,trace); |
MKLIST(trace1,tn); |
MKLIST(trace1,tn); |
MKNODE(tr,trace1,AllTraceList); |
MKNODE(tr,trace1,AllTraceList); |
Line 1657 void reducebase_dehomo(NODE f,NODE *g) |
|
Line 1672 void reducebase_dehomo(NODE f,NODE *g) |
|
LIST hist; |
LIST hist; |
NODE node; |
NODE node; |
|
|
STOQ(r[i],q); |
STOZ(r[i],q); |
node = mknode(4,NULLP,q,NULLP,NULLP); |
node = mknode(4,NULLP,q,NULLP,NULLP); |
MKLIST(hist,node); |
MKLIST(hist,node); |
MKNODE(TraceList,hist,0); |
MKNODE(TraceList,hist,0); |
Line 1695 DP_pairs minp( DP_pairs d, DP_pairs *prest ) |
|
Line 1710 DP_pairs minp( DP_pairs d, DP_pairs *prest ) |
|
} |
} |
for ( lcm = m->lcm, s = m->sugar, ml = 0, l = m; p; p = NEXT(l = p) ) |
for ( lcm = m->lcm, s = m->sugar, ml = 0, l = m; p; p = NEXT(l = p) ) |
if ( NoSugar ? (*cmpfun)( nv, lcm, p->lcm ) >= 0 : |
if ( NoSugar ? (*cmpfun)( nv, lcm, p->lcm ) >= 0 : |
(s > p->sugar || s == p->sugar && (*cmpfun)( nv, lcm, p->lcm ) >= 0) ) |
(s > p->sugar || (s == p->sugar && (*cmpfun)( nv, lcm, p->lcm ) >= 0)) ) |
ml = l, lcm = (m = p)->lcm, s = p->sugar; |
ml = l, lcm = (m = p)->lcm, s = p->sugar; |
if ( !ml ) *prest = NEXT(m); |
if ( !ml ) *prest = NEXT(m); |
else { |
else { |
Line 1789 NODE gb(NODE f,int m,NODE subst) |
|
Line 1804 NODE gb(NODE f,int m,NODE subst) |
|
} else |
} else |
dp_sp(ps[l->dp1],ps[l->dp2],&h); |
dp_sp(ps[l->dp1],ps[l->dp2],&h); |
if ( GenTrace ) { |
if ( GenTrace ) { |
STOQ(l->dp1,q); ARG1(BDY((LIST)BDY(NEXT(TraceList)))) = q; |
STOZ(l->dp1,q); ARG1(BDY((LIST)BDY(NEXT(TraceList)))) = q; |
STOQ(l->dp2,q); ARG1(BDY((LIST)BDY(TraceList))) = q; |
STOZ(l->dp2,q); ARG1(BDY((LIST)BDY(TraceList))) = q; |
} |
} |
if ( h ) |
if ( h ) |
new_sugar = h->sugar; |
new_sugar = h->sugar; |
Line 1959 DP_pairs updpairs( DP_pairs d, NODE /* of index */ g, |
|
Line 1974 DP_pairs updpairs( DP_pairs d, NODE /* of index */ g, |
|
dd = d1; |
dd = d1; |
dl1 = DPPlength(dd); NDP += (dl-dl1); |
dl1 = DPPlength(dd); NDP += (dl-dl1); |
if ( !(nd = d) ) return dd; |
if ( !(nd = d) ) return dd; |
while ( nd = NEXT(d1 = nd) ) ; |
while ( (nd = NEXT(d1 = nd)) != 0 ) ; |
NEXT(d1) = dd; |
NEXT(d1) = dd; |
return d; |
return d; |
} |
} |
Line 2097 DP_pairs criterion_F( DP_pairs d1 ) |
|
Line 2112 DP_pairs criterion_F( DP_pairs d1 ) |
|
|
|
for ( head = last = 0, p = d1; NEXT(p); ) { |
for ( head = last = 0, p = d1; NEXT(p); ) { |
s = (r = w = collect_pairs_of_hdlcm( p, &rest ))->sugar; |
s = (r = w = collect_pairs_of_hdlcm( p, &rest ))->sugar; |
while ( w = NEXT(w) ) |
while ( (w = NEXT(w)) != 0 ) |
if ( !do_weyl && criterion_2( w->dp1, w->dp2 ) ) { |
if ( !do_weyl && criterion_2( w->dp1, w->dp2 ) ) { |
r = w; |
r = w; |
break; |
break; |
Line 2222 void gbcheck_list(NODE f,int n,VECT *gp,LIST *pp) |
|
Line 2237 void gbcheck_list(NODE f,int n,VECT *gp,LIST *pp) |
|
|
|
for ( u0 = 0, l = d; l; l = NEXT(l) ) { |
for ( u0 = 0, l = d; l; l = NEXT(l) ) { |
NEXTNODE(u0,u); |
NEXTNODE(u0,u); |
STOQ(l->dp1,q1); |
STOZ(l->dp1,q1); |
STOQ(l->dp2,q2); |
STOZ(l->dp2,q2); |
t = mknode(2,q1,q2); |
t = mknode(2,q1,q2); |
MKLIST(pair,t); |
MKLIST(pair,t); |
BDY(u) = (pointer)pair; |
BDY(u) = (pointer)pair; |
Line 2280 void dp_set_flag(Obj name,Obj value) |
|
Line 2295 void dp_set_flag(Obj name,Obj value) |
|
ratio = (Q)value; |
ratio = (Q)value; |
if ( ratio ) { |
if ( ratio ) { |
nmq(ratio,&t); |
nmq(ratio,&t); |
DP_Multiple = QTOS(t); |
DP_Multiple = ZTOS(t); |
dnq(ratio,&t); |
dnq(ratio,&t); |
Denominator = QTOS(t); |
Denominator = ZTOS(t); |
} else { |
} else { |
DP_Multiple = 0; |
DP_Multiple = 0; |
Denominator = 1; |
Denominator = 1; |
Line 2290 void dp_set_flag(Obj name,Obj value) |
|
Line 2305 void dp_set_flag(Obj name,Obj value) |
|
} |
} |
if ( value && OID(value) != O_N ) |
if ( value && OID(value) != O_N ) |
return; |
return; |
v = QTOS((Q)value); |
v = ZTOS((Q)value); |
if ( !strcmp(n,"NoSugar") ) |
if ( !strcmp(n,"NoSugar") ) |
NoSugar = v; |
NoSugar = v; |
else if ( !strcmp(n,"NoCriB") ) |
else if ( !strcmp(n,"NoCriB") ) |
Line 2333 void dp_set_flag(Obj name,Obj value) |
|
Line 2348 void dp_set_flag(Obj name,Obj value) |
|
OneZeroHomo = v; |
OneZeroHomo = v; |
else if ( !strcmp(n,"MaxDeg") ) |
else if ( !strcmp(n,"MaxDeg") ) |
MaxDeg = v; |
MaxDeg = v; |
|
else if ( !strcmp(n,"NaiveSchreyer") ) |
|
NaiveSchreyer = v; |
|
else if ( !strcmp(n,"ReversePOT") ) |
|
ReversePOT = v; |
} |
} |
|
|
void dp_make_flaglist(LIST *list) |
void dp_make_flaglist(LIST *list) |
Line 2343 void dp_make_flaglist(LIST *list) |
|
Line 2362 void dp_make_flaglist(LIST *list) |
|
NODE n,n1; |
NODE n,n1; |
|
|
#if 0 |
#if 0 |
STOQ(DP_Multiple,v); MKNODE(n,v,0); MKSTR(name,"DP_Multiple"); MKNODE(n1,name,n); n = n1; |
STOZ(DP_Multiple,v); MKNODE(n,v,0); MKSTR(name,"DP_Multiple"); MKNODE(n1,name,n); n = n1; |
STOQ(Denominator,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Denominator"); MKNODE(n1,name,n); n = n1; |
STOZ(Denominator,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Denominator"); MKNODE(n1,name,n); n = n1; |
#else |
#else |
if ( DP_Multiple ) { |
if ( DP_Multiple ) { |
STOQ(DP_Multiple,nm); STOQ(Denominator,dn); divq((Q)nm,(Q)dn,&r); |
STOZ(DP_Multiple,nm); STOZ(Denominator,dn); divq((Q)nm,(Q)dn,&r); |
} else |
} else |
v = 0; |
r = 0; |
MKNODE(n,v,0); MKSTR(name,"Content"); MKNODE(n1,name,n); n = n1; |
MKNODE(n,r,0); MKSTR(name,"Content"); MKNODE(n1,name,n); n = n1; |
#endif |
#endif |
MKNODE(n1,Dist,n); n = n1; MKSTR(name,"Dist"); MKNODE(n1,name,n); n = n1; |
MKNODE(n1,Dist,n); n = n1; MKSTR(name,"Dist"); MKNODE(n1,name,n); n = n1; |
STOQ(Reverse,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Reverse"); MKNODE(n1,name,n); n = n1; |
STOZ(Reverse,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Reverse"); MKNODE(n1,name,n); n = n1; |
STOQ(Stat,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Stat"); MKNODE(n1,name,n); n = n1; |
STOZ(Stat,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Stat"); MKNODE(n1,name,n); n = n1; |
STOQ(DP_Print,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Print"); MKNODE(n1,name,n); n = n1; |
STOZ(DP_Print,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Print"); MKNODE(n1,name,n); n = n1; |
STOQ(DP_PrintShort,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PrintShort"); MKNODE(n1,name,n); n = n1; |
STOZ(DP_PrintShort,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PrintShort"); MKNODE(n1,name,n); n = n1; |
STOQ(DP_NFStat,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NFStat"); MKNODE(n1,name,n); n = n1; |
STOZ(DP_NFStat,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NFStat"); MKNODE(n1,name,n); n = n1; |
STOQ(OXCheck,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OXCheck"); MKNODE(n1,name,n); n = n1; |
STOZ(OXCheck,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OXCheck"); MKNODE(n1,name,n); n = n1; |
STOQ(GenTrace,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenTrace"); MKNODE(n1,name,n); n = n1; |
STOZ(GenTrace,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenTrace"); MKNODE(n1,name,n); n = n1; |
STOQ(GenSyz,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenSyz"); MKNODE(n1,name,n); n = n1; |
STOZ(GenSyz,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"GenSyz"); MKNODE(n1,name,n); n = n1; |
STOQ(MaxDeg,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"MaxDeg"); MKNODE(n1,name,n); n = n1; |
STOZ(NaiveSchreyer,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NaiveSchreyer"); MKNODE(n1,name,n); n = n1; |
STOQ(OneZeroHomo,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OneZeroHomo"); MKNODE(n1,name,n); n = n1; |
STOZ(MaxDeg,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"MaxDeg"); MKNODE(n1,name,n); n = n1; |
STOQ(PtozpRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PtozpRA"); MKNODE(n1,name,n); n = n1; |
STOZ(OneZeroHomo,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OneZeroHomo"); MKNODE(n1,name,n); n = n1; |
STOQ(ShowMag,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"ShowMag"); MKNODE(n1,name,n); n = n1; |
STOZ(PtozpRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PtozpRA"); MKNODE(n1,name,n); n = n1; |
STOQ(Top,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Top"); MKNODE(n1,name,n); n = n1; |
STOZ(ShowMag,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"ShowMag"); MKNODE(n1,name,n); n = n1; |
STOQ(NoGCD,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoGCD"); MKNODE(n1,name,n); n = n1; |
STOZ(Top,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Top"); MKNODE(n1,name,n); n = n1; |
STOQ(NoRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoRA"); MKNODE(n1,name,n); n = n1; |
STOZ(NoGCD,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoGCD"); MKNODE(n1,name,n); n = n1; |
STOQ(NoMC,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoMC"); MKNODE(n1,name,n); n = n1; |
STOZ(NoRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoRA"); MKNODE(n1,name,n); n = n1; |
STOQ(NoGC,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoGC"); MKNODE(n1,name,n); n = n1; |
STOZ(NoMC,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoMC"); MKNODE(n1,name,n); n = n1; |
STOQ(NoCriB,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoCriB"); MKNODE(n1,name,n); n = n1; |
STOZ(NoGC,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoGC"); MKNODE(n1,name,n); n = n1; |
STOQ(NoSugar,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoSugar"); MKNODE(n1,name,n); n = n1; |
STOZ(NoCriB,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoCriB"); MKNODE(n1,name,n); n = n1; |
|
STOZ(NoSugar,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoSugar"); MKNODE(n1,name,n); n = n1; |
|
STOZ(ReversePOT,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"ReversePOT"); MKNODE(n1,name,n); n = n1; |
if ( Demand ) |
if ( Demand ) |
MKSTR(path,Demand); |
MKSTR(path,Demand); |
else |
else |
Line 2497 void _dp_nf(NODE b,DP g,DP *ps,int full,DP *rp) |
|
Line 2518 void _dp_nf(NODE b,DP g,DP *ps,int full,DP *rp) |
|
Z cq; |
Z cq; |
NODE node,node0; |
NODE node,node0; |
|
|
STOQ((long)BDY(l),cq); |
STOZ((long)BDY(l),cq); |
node0 = mknode(4,coef,cq,mult,ONE); |
node0 = mknode(4,coef,cq,mult,ONE); |
MKLIST(hist,node0); |
MKLIST(hist,node0); |
MKNODE(node,hist,TraceList); TraceList = node; |
MKNODE(node,hist,TraceList); TraceList = node; |
Line 2579 void _dp_nf_z(NODE b,DP g,DP *ps,int full,int multiple |
|
Line 2600 void _dp_nf_z(NODE b,DP g,DP *ps,int full,int multiple |
|
|
|
if ( GenTrace ) { |
if ( GenTrace ) { |
/* u = cr*rp + (-cred)*shift*red */ |
/* u = cr*rp + (-cred)*shift*red */ |
STOQ((long)BDY(l),cq); |
STOZ((long)BDY(l),cq); |
node = mknode(4,cr,cq,NULLP,NULLP); |
node = mknode(4,cr,cq,NULLP,NULLP); |
mulz(cred,rc,&rcred); |
mulz(cred,rc,&rcred); |
chsgnz(rcred,&mrcred); |
chsgnz(rcred,&mrcred); |