=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/ecart.c,v retrieving revision 1.1 retrieving revision 1.3 diff -u -p -r1.1 -r1.3 --- OpenXM/src/kan96xx/Kan/ecart.c 2003/07/17 09:10:54 1.1 +++ OpenXM/src/kan96xx/Kan/ecart.c 2003/07/17 23:37:01 1.3 @@ -1,4 +1,4 @@ -/* $OpenXM$ */ +/* $OpenXM: OpenXM/src/kan96xx/Kan/ecart.c,v 1.2 2003/07/17 12:11:09 takayama Exp $ */ #include #include "datatype.h" #include "extern2.h" @@ -31,6 +31,10 @@ extern int DebugReductionRed; extern int DegreeShifto_size; extern int *DegreeShifto_vec; +/* It is used reduction_ecart() and ecartFindReducer() + to determine if we homogenize in this function */ +extern int EcartAutomaticHomogenization; + #define LARGE 0x7fffffff @@ -72,7 +76,7 @@ static int ecartGetEll(POLY f,POLY g) { if (tf->e[i].D < tg->e[i].D) return(-1); } if (tf->e[0].D < tg->e[0].D) return(-1); /* h */ - p = tf->e[i].x - tg->e[i].x; /* H, s */ + p = tf->e[0].x - tg->e[0].x; /* H, s */ if (p >=0 ) return 0; else return(-p); } @@ -131,15 +135,19 @@ static struct ecartReducer ecartFindReducer(POLY r,str while (grd < gset->maxGrade) { set = gset->polys[grd]; for (i=0; isize; i++) { - ell = ecartGetEll(r,set->g[i]); + if (set->gh[i] == POLYNULL) { + /* goHomogenize set->gh[i] */ + if (EcartAutomaticHomogenization) { + set->gh[i] = goHomogenize11(set->g[i],DegreeShifto_vec,DegreeShifto_size,-1,1); + }else{ + set->gh[i] = set->g[i]; + } + } + ell = ecartGetEll(r,set->gh[i]); if ((ell>=0) && (ell < ell1)) { ell1 = ell; minGrade = grd; minGseti=i; } - if (set->gh[i] == POLYNULL) { - /* goHomogenize set->gh[i] */ - set->gh[i] = goHomogenize11(set->g[i],DegreeShifto_vec,DegreeShifto_size,-1,1); - } } grd++; } @@ -178,6 +186,8 @@ static struct ecartReducer ecartFindReducer(POLY r,str /* r and gset are assumed to be (0,1)-homogenized (h-homogenized) + If EcartAutomaticHomogenization == 0, then r and gset are assumed + to be double homogenized (h-homogenized and s(H)-homogenized) */ POLY reduction_ecart(r,gset,needSyz,syzp) POLY r; @@ -207,12 +217,15 @@ POLY reduction_ecart(r,gset,needSyz,syzp) } if (r != POLYNULL) { - if (! r->m->ringp->weightedHomogenization) { + rp = r->m->ringp; + if (! rp->weightedHomogenization) { errorKan1("%s\n","ecart.c: the given ring must be declared with [(weightedHomogenization) 1]"); } } - r = goHomogenize11(r,DegreeShifto_vec,DegreeShifto_size,-1,1); + if (EcartAutomaticHomogenization) { + r = goHomogenize11(r,DegreeShifto_vec,DegreeShifto_size,-1,1); + } /* 1 means homogenize only s */ do { @@ -250,6 +263,8 @@ POLY reduction_ecart(r,gset,needSyz,syzp) syzp->syz = syz; /* syz is in the SyzRingp */ /* BUG: dehomogenize the syzygy */ } + /* r = goDeHomogenizeS(r); + */ return(r); }