[BACK]Return to ecart.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Kan

Diff for /OpenXM/src/kan96xx/Kan/ecart.c between version 1.9 and 1.10

version 1.9, 2003/08/20 01:39:17 version 1.10, 2003/08/20 05:18:35
Line 1 
Line 1 
 /* $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.9 2003/08/20 01:39:17 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include "datatype.h"  #include "datatype.h"
 #include "extern2.h"  #include "extern2.h"
Line 36  static POLY reduction_ecart1(POLY r,struct gradedPolyS
Line 36  static POLY reduction_ecart1(POLY r,struct gradedPolyS
 static POLY reduction_ecart1_mod(POLY r,struct gradedPolySet *gset);  static POLY reduction_ecart1_mod(POLY r,struct gradedPolySet *gset);
 static POLY  ecartCheckSyz0(POLY cf,POLY r_0,POLY syz,  static POLY  ecartCheckSyz0(POLY cf,POLY r_0,POLY syz,
                             struct gradedPolySet *gg,POLY r);                              struct gradedPolySet *gg,POLY r);
   static int shouldReduceContent(POLY f,int ss);
   
 extern int DebugReductionRed;  extern int DebugReductionRed;
 extern int TraceLift;  extern int TraceLift;
Line 422  static POLY reduction_ecart1(r,gset,needSyz,syzp)
Line 423  static POLY reduction_ecart1(r,gset,needSyz,syzp)
   
   r = goHomogenize11(r,DegreeShifto_vec,DegreeShifto_size,-1,1);    r = goHomogenize11(r,DegreeShifto_vec,DegreeShifto_size,-1,1);
   /* 1 means homogenize only s */    /* 1 means homogenize only s */
     if (DoCancel && (r != POLYNULL)) shouldReduceContent(r,1);
   
   if (DebugReductionEcart&1) printf("=======================================\n");    if (DebugReductionEcart&1) printf("=======================================\n");
   do {    do {
Line 443  static POLY reduction_ecart1(r,gset,needSyz,syzp)
Line 445  static POLY reduction_ecart1(r,gset,needSyz,syzp)
       }        }
       if (ell > 0) r = mpMult(cxx(1,0,ell,rp),r); /* r = s^ell r */        if (ell > 0) r = mpMult(cxx(1,0,ell,rp),r); /* r = s^ell r */
       r = (*reduction1)(r,pp,needSyz,&cc,&cg);        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) printf("CONT=%d ",coeffToString(cont));
           }
         }
   
       if (needSyz) {        if (needSyz) {
         if (ells.first) {          if (ells.first) {
           cf = ppMult(cc,cf);            cf = ppMult(cc,cf);
Line 470  static POLY reduction_ecart1(r,gset,needSyz,syzp)
Line 481  static POLY reduction_ecart1(r,gset,needSyz,syzp)
   
   r = goDeHomogenizeS(r);    r = goDeHomogenizeS(r);
   if (DoCancel && (r != POLYNULL)) { /* BUG: syzygy should be corrected. */    if (DoCancel && (r != POLYNULL)) { /* BUG: syzygy should be corrected. */
         if (r->m->ringp->p == 0) {      if (r->m->ringp->p == 0) {
           if (coeffSizeMin(r) >= DoCancel) {        if (coeffSizeMin(r) >= DoCancel) {
                 r = reduceContentOfPoly(r,&cont);          r = reduceContentOfPoly(r,&cont);
         if (DebugReductionEcart || DebugReductionRed) printf("cont=%d ",coeffToString(cont));          if (DebugReductionEcart || DebugReductionRed) printf("cont=%d ",coeffToString(cont));
           }        }
         }      }
   }    }
   
   return(r);    return(r);
Line 624  static POLY reduction_ecart1_mod(r,gset)
Line 635  static POLY reduction_ecart1_mod(r,gset)
   r = goDeHomogenizeS(r);    r = goDeHomogenizeS(r);
   
   return(r);    return(r);
   }
   
   static int shouldReduceContent(POLY f,int ss) {
     static int prevSize = 1;
     int size;
     if (f == POLYNULL) return 0;
     if (f->m->ringp->p != 0) return 0;
     if (f->coeffp->tag != MP_INTEGER) return 0;
     size = mpz_size(f->coeffp->val.bigp);
     if (ss > 0) {
           prevSize = size;
           return 0;
     }
     if (size > 2*prevSize) {
           return 1;
     }else{
           return 0;
     }
 }  }

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>