version 1.61, 2006/06/09 09:59:12 |
version 1.72, 2016/08/08 07:18:10 |
|
|
* 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/asir2000/builtin/gr.c,v 1.60 2005/11/16 23:42:53 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/gr.c,v 1.71 2015/08/14 13:51:54 fujimoto Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
|
|
#include "ox.h" |
#include "ox.h" |
|
|
#if defined(__GNUC__) |
#if defined(__GNUC__) |
#define INLINE inline |
#define INLINE static inline |
#elif defined(VISUAL) |
#elif defined(VISUAL) || defined(__MINGW32__) |
#define INLINE __inline |
#define INLINE __inline |
#else |
#else |
#define INLINE |
#define INLINE |
Line 95 int DP_NFStat = 0; |
|
Line 95 int DP_NFStat = 0; |
|
LIST Dist = 0; |
LIST Dist = 0; |
int NoGCD = 0; |
int NoGCD = 0; |
int GenTrace = 0; |
int GenTrace = 0; |
|
int GenSyz = 0; |
int OXCheck = -1; |
int OXCheck = -1; |
|
int OneZeroHomo = 0; |
|
int MaxDeg = 0; |
|
|
int NoSugar = 0; |
int NoSugar = 0; |
static int NoCriB = 0; |
static int NoCriB = 0; |
Line 104 static int NoMC = 0; |
|
Line 107 static int NoMC = 0; |
|
static int NoRA = 0; |
static int NoRA = 0; |
static int ShowMag = 0; |
static int ShowMag = 0; |
static int Stat = 0; |
static int Stat = 0; |
static int Denominator = 1; |
int Denominator = 1; |
int Top = 0; |
int Top = 0; |
int Reverse = 0; |
int Reverse = 0; |
static int Max_mag = 0; |
static int Max_mag = 0; |
Line 909 NODE gb_f4_mod(NODE f,int m) |
|
Line 912 NODE gb_f4_mod(NODE f,int m) |
|
|
|
/* XXX free redmat explicitly */ |
/* XXX free redmat explicitly */ |
for ( k = 0; k < nred; k++ ) { |
for ( k = 0; k < nred; k++ ) { |
GC_free(BDY(redmat[k])); |
GCFREE(BDY(redmat[k])); |
GC_free(redmat[k]); |
GCFREE(redmat[k]); |
} |
} |
|
|
get_eg(&tmp0); add_eg(&eg_elim1,&tmp1,&tmp0); |
get_eg(&tmp0); add_eg(&eg_elim1,&tmp1,&tmp0); |
Line 973 NODE gb_f4_mod(NODE f,int m) |
|
Line 976 NODE gb_f4_mod(NODE f,int m) |
|
|
|
/* XXX free spmat[] explicitly */ |
/* XXX free spmat[] explicitly */ |
for ( j = 0; j < nsp; j++ ) { |
for ( j = 0; j < nsp; j++ ) { |
GC_free(spmat[j]); |
GCFREE(spmat[j]); |
} |
} |
} |
} |
if ( DP_Print ) { |
if ( DP_Print ) { |
Line 1654 void reducebase_dehomo(NODE f,NODE *g) |
|
Line 1657 void reducebase_dehomo(NODE f,NODE *g) |
|
NODE node; |
NODE node; |
|
|
STOQ(r[i],q); |
STOQ(r[i],q); |
node = mknode(4,0,q,0,0); |
node = mknode(4,NULLP,q,NULLP,NULLP); |
MKLIST(hist,node); |
MKLIST(hist,node); |
MKNODE(TraceList,hist,0); |
MKNODE(TraceList,hist,0); |
} |
} |
Line 1746 NODE gb(NODE f,int m,NODE subst) |
|
Line 1749 NODE gb(NODE f,int m,NODE subst) |
|
Max_coef = 0; |
Max_coef = 0; |
prev = 1; |
prev = 1; |
doing_f4 = 0; |
doing_f4 = 0; |
|
init_denomlist(); |
if ( m ) { |
if ( m ) { |
psm = (DP *)MALLOC(pslen*sizeof(DP)); |
psm = (DP *)MALLOC(pslen*sizeof(DP)); |
for ( i = 0; i < psn; i++ ) |
for ( i = 0; i < psn; i++ ) |
|
|
get_eg(&tpz0); |
get_eg(&tpz0); |
prim_part(nf,0,&h); |
prim_part(nf,0,&h); |
get_eg(&tpz1); add_eg(&eg_pz,&tpz0,&tpz1); |
get_eg(&tpz1); add_eg(&eg_pz,&tpz0,&tpz1); |
|
add_denomlist(BDY(h)->c); |
get_eg(&tnp0); |
get_eg(&tnp0); |
if ( Demand && skip_nf_flag ) |
if ( Demand && skip_nf_flag ) |
nh = newps_nosave(h,m,subst); |
nh = newps_nosave(h,m,subst); |
Line 2318 void dp_set_flag(Obj name,Obj value) |
|
Line 2323 void dp_set_flag(Obj name,Obj value) |
|
GenTrace = v; |
GenTrace = v; |
else if ( !strcmp(n,"OXCheck") ) |
else if ( !strcmp(n,"OXCheck") ) |
OXCheck = v; |
OXCheck = v; |
|
else if ( !strcmp(n,"GenSyz") ) |
|
GenSyz = v; |
|
else if ( !strcmp(n,"OneZeroHomo") ) |
|
OneZeroHomo = v; |
|
else if ( !strcmp(n,"MaxDeg") ) |
|
MaxDeg = v; |
} |
} |
|
|
void dp_make_flaglist(LIST *list) |
void dp_make_flaglist(LIST *list) |
Line 2344 void dp_make_flaglist(LIST *list) |
|
Line 2355 void dp_make_flaglist(LIST *list) |
|
STOQ(DP_NFStat,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"NFStat"); 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; |
STOQ(OXCheck,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OXCheck"); MKNODE(n1,name,n); n = n1; |
STOQ(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; |
STOQ(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; |
|
STOQ(MaxDeg,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"MaxDeg"); MKNODE(n1,name,n); n = n1; |
|
STOQ(OneZeroHomo,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"OneZeroHomo"); MKNODE(n1,name,n); n = n1; |
STOQ(PtozpRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PtozpRA"); MKNODE(n1,name,n); n = n1; |
STOQ(PtozpRA,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"PtozpRA"); MKNODE(n1,name,n); n = n1; |
STOQ(ShowMag,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"ShowMag"); MKNODE(n1,name,n); n = n1; |
STOQ(ShowMag,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"ShowMag"); MKNODE(n1,name,n); n = n1; |
STOQ(Top,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Top"); MKNODE(n1,name,n); n = n1; |
STOQ(Top,v); MKNODE(n1,v,n); n = n1; MKSTR(name,"Top"); MKNODE(n1,name,n); n = n1; |
Line 2561 void _dp_nf_z(NODE b,DP g,DP *ps,int full,int multiple |
|
Line 2575 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((int)BDY(l),cq); |
STOQ((int)BDY(l),cq); |
node = mknode(4,cr,cq,0,0); |
node = mknode(4,cr,cq,NULLP,NULLP); |
mulq(cred,rc,&rcred); |
mulq(cred,rc,&rcred); |
chsgnnum((Num)rcred,(Num *)&mrcred); |
chsgnnum((Num)rcred,(Num *)&mrcred); |
muldc(CO,shift,(P)mrcred,(DP *)&ARG2(node)); |
muldc(CO,shift,(P)mrcred,(DP *)&ARG2(node)); |