=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/ecart.c,v retrieving revision 1.9 retrieving revision 1.11 diff -u -p -r1.9 -r1.11 --- OpenXM/src/kan96xx/Kan/ecart.c 2003/08/20 01:39:17 1.9 +++ OpenXM/src/kan96xx/Kan/ecart.c 2003/08/21 02:30:23 1.11 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/kan96xx/Kan/ecart.c,v 1.8 2003/08/19 08:02:09 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/Kan/ecart.c,v 1.10 2003/08/20 05:18:35 takayama Exp $ */ #include #include "datatype.h" #include "extern2.h" @@ -42,6 +42,7 @@ extern int TraceLift; struct ring *TraceLift_ringmod; extern DoCancel; int DebugReductionEcart = 0; +extern DebugContentReduction; /* This is used for goHomogenization */ extern int DegreeShifto_size; @@ -422,6 +423,7 @@ static POLY reduction_ecart1(r,gset,needSyz,syzp) r = goHomogenize11(r,DegreeShifto_vec,DegreeShifto_size,-1,1); /* 1 means homogenize only s */ + if (DoCancel && (r != POLYNULL)) shouldReduceContent(r,1); if (DebugReductionEcart&1) printf("=======================================\n"); do { @@ -443,6 +445,15 @@ static POLY reduction_ecart1(r,gset,needSyz,syzp) } if (ell > 0) r = mpMult(cxx(1,0,ell,rp),r); /* r = s^ell r */ r = (*reduction1)(r,pp,needSyz,&cc,&cg); + + if (DoCancel && (r != POLYNULL)) { /* BUG: syzygy should be corrected. */ + if (shouldReduceContent(r,0)) { + r = reduceContentOfPoly(r,&cont); + shouldReduceContent(r,1); + if (DebugReductionEcart || DebugReductionRed || DebugContentReduction) printf("CONT=%s ",coeffToString(cont)); + } + } + if (needSyz) { if (ells.first) { cf = ppMult(cc,cf); @@ -470,12 +481,10 @@ static POLY reduction_ecart1(r,gset,needSyz,syzp) r = goDeHomogenizeS(r); if (DoCancel && (r != POLYNULL)) { /* BUG: syzygy should be corrected. */ - if (r->m->ringp->p == 0) { - if (coeffSizeMin(r) >= DoCancel) { - r = reduceContentOfPoly(r,&cont); - if (DebugReductionEcart || DebugReductionRed) printf("cont=%d ",coeffToString(cont)); - } - } + if (r->m->ringp->p == 0) { + r = reduceContentOfPoly(r,&cont); + if (DebugReductionEcart || DebugReductionRed || DebugContentReduction) printf("cont=%s ",coeffToString(cont)); + } } return(r); @@ -625,3 +634,4 @@ static POLY reduction_ecart1_mod(r,gset) return(r); } +