version 1.5, 2020/10/06 06:31:19 |
version 1.8, 2021/02/17 22:18:39 |
|
|
* 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_contrib2/asir2018/builtin/gr.c,v 1.4 2020/02/22 06:23:35 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2018/builtin/gr.c,v 1.7 2021/01/11 08:37:43 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; |
Line 115 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 319 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 |
// clear denominators if the ground field is Q |
for ( r0 = 0, t = BDY(f); t; t = NEXT(t) ) { |
if ( field == 0 ) { |
ptozp((P)BDY(t),1,&cont,&pp); |
for ( r0 = 0, t = BDY(f); t; t = NEXT(t) ) { |
NEXTNODE(r0,r); BDY(r) = (pointer)pp; |
ptozp((P)BDY(t),1,&cont,&pp); |
|
NEXTNODE(r0,r); BDY(r) = (pointer)pp; |
|
} |
|
if ( r0 ) NEXT(r) = 0; |
|
MKLIST(f,r0); |
} |
} |
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 2346 void dp_set_flag(Obj name,Obj value) |
|
Line 2350 void dp_set_flag(Obj name,Obj value) |
|
MaxDeg = v; |
MaxDeg = v; |
else if ( !strcmp(n,"NaiveSchreyer") ) |
else if ( !strcmp(n,"NaiveSchreyer") ) |
NaiveSchreyer = v; |
NaiveSchreyer = v; |
|
else if ( !strcmp(n,"ReversePOT") ) |
|
ReversePOT = v; |
} |
} |
|
|
void dp_make_flaglist(LIST *list) |
void dp_make_flaglist(LIST *list) |
Line 2386 void dp_make_flaglist(LIST *list) |
|
Line 2392 void dp_make_flaglist(LIST *list) |
|
STOZ(NoGC,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoGC"); MKNODE(n1,name,n); n = n1; |
STOZ(NoGC,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NoGC"); 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(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(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 |