version 1.6, 2002/02/10 08:22:56 |
version 1.8, 2003/08/19 08:02:09 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/gb.c,v 1.5 2001/05/04 01:06:23 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/gb.c,v 1.7 2003/07/30 09:00:52 takayama Exp $ */ |
/* untabify on May 4, 2001 */ |
/* untabify on May 4, 2001 */ |
#include <stdio.h> |
#include <stdio.h> |
#include "datatype.h" |
#include "datatype.h" |
Line 23 extern int UseCriterion2B; |
|
Line 23 extern int UseCriterion2B; |
|
extern int Spairs; |
extern int Spairs; |
extern int Criterion2B, Criterion2F, Criterion2M; |
extern int Criterion2B, Criterion2F, Criterion2M; |
extern int AutoReduce; |
extern int AutoReduce; |
|
extern int TraceLift; |
|
extern struct ring *TraceLift_ringmod; |
static int MaxLength[DMAX]; |
static int MaxLength[DMAX]; |
static int SpNumber[DMAX]; |
static int SpNumber[DMAX]; |
|
|
Line 192 struct gradedPolySet *groebner_gen(f,needBack,needSyz, |
|
Line 194 struct gradedPolySet *groebner_gen(f,needBack,needSyz, |
|
extern struct ring *CurrentRingp; |
extern struct ring *CurrentRingp; |
extern char *F_mpMult; |
extern char *F_mpMult; |
struct ring *rp; |
struct ring *rp; |
|
int first; |
int statisticsPL, statisticsCount; |
int statisticsPL, statisticsCount; |
|
|
if (Statistics) { |
if (Statistics) { |
Line 216 struct gradedPolySet *groebner_gen(f,needBack,needSyz, |
|
Line 219 struct gradedPolySet *groebner_gen(f,needBack,needSyz, |
|
g->polys[i] = newPolySet(INITSIZE); |
g->polys[i] = newPolySet(INITSIZE); |
} |
} |
|
|
|
first = 1; |
for (i=0; i<r; i++) { |
for (i=0; i<r; i++) { |
gt = getArrayOfPOLY(f,i); |
gt = getArrayOfPOLY(f,i); |
if (gt ISZERO) { rp = CurrentRingp; } else { rp = gt->m->ringp; } |
if (gt ISZERO) { rp = CurrentRingp; } else { rp = gt->m->ringp; } |
|
if (TraceLift && (!(gt ISZERO)) && first) { |
|
TraceLift_ringmod = newRingOverFp(rp,getPrime(TraceLift)); first = 0; |
|
if (KanGBmessage) printf("Prime number for the trace lift is %d.\n", |
|
TraceLift_ringmod->p); |
|
} |
grade = -1; whereInG(g,gt,&grade,&indx,Sugar); |
grade = -1; whereInG(g,gt,&grade,&indx,Sugar); |
if (KanGBmessage == 2) { |
if (KanGBmessage == 2) { |
printf("init=%s, ",POLYToString(head(gt),'*',1)); |
printf("init=%s, ",POLYToString(head(gt),'*',1)); |
Line 236 struct gradedPolySet *groebner_gen(f,needBack,needSyz, |
|
Line 245 struct gradedPolySet *groebner_gen(f,needBack,needSyz, |
|
g = putPolyInG(g,gt,grade,indx,syzp,1,serial); |
g = putPolyInG(g,gt,grade,indx,syzp,1,serial); |
} |
} |
|
|
markRedundant0(g,grade,indx); |
/* markRedundant0(g,grade,indx); ?*/ |
|
markGeneratorInG(g,grade,indx); /*?*/ |
if (Debug) { |
if (Debug) { |
outputGradedPairs(d); outputGradedPolySet(g,needSyz); |
outputGradedPairs(d); outputGradedPolySet(g,needSyz); |
} |
} |
Line 249 struct gradedPolySet *groebner_gen(f,needBack,needSyz, |
|
Line 259 struct gradedPolySet *groebner_gen(f,needBack,needSyz, |
|
while ((top = getPair(d)) != (struct pair *)NULL) { |
while ((top = getPair(d)) != (struct pair *)NULL) { |
ig = top->ig; ii = top->ii; /* [ig,ii] */ |
ig = top->ig; ii = top->ii; /* [ig,ii] */ |
jg = top->jg; ji = top->ji; /* [jg,ji] */ |
jg = top->jg; ji = top->ji; /* [jg,ji] */ |
|
/* |
|
if (g->polys[ig]->del[ii] || g->polys[jg]->del[ji]) { |
|
if (KanGBmessage) printf("p"); |
|
continue; |
|
} Don't do this. |
|
*/ |
gi = g->polys[ig]->g[ii]; |
gi = g->polys[ig]->g[ii]; |
gj = g->polys[jg]->g[ji]; |
gj = g->polys[jg]->g[ji]; |
|
|