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

Diff for /OpenXM/src/kan96xx/Kan/gb.c between version 1.5 and 1.7

version 1.5, 2001/05/04 01:06:23 version 1.7, 2003/07/30 09:00:52
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/Kan/gb.c,v 1.4 2000/03/15 01:31:17 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/Kan/gb.c,v 1.6 2002/02/10 08:22:56 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 8 
Line 8 
   
 #define INITGRADE 4  #define INITGRADE 4
 #define INITSIZE 2  #define INITSIZE 2
   #define DMAX 100
   
 int KanGBmessage = 1;  int KanGBmessage = 1;
   
Line 22  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;
   static int MaxLength[DMAX];
   static int SpNumber[DMAX];
   
   
 struct gradedPairs *updatePairs(grD,gt,gtGrade,t,grG)  struct gradedPairs *updatePairs(grD,gt,gtGrade,t,grG)
      struct gradedPairs *grD;  /* set of pairs */       struct gradedPairs *grD;  /* set of pairs */
      POLY gt;                 /* new polynomial */       POLY gt;                 /* new polynomial */
Line 190  struct gradedPolySet *groebner_gen(f,needBack,needSyz,
Line 192  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 statisticsPL, statisticsCount;
   
     if (Statistics) {
       for (i=0; i<DMAX; i++) MaxLength[i] = SpNumber[i] = 0;
     }
   r = f->n;    r = f->n;
   if (r<=0) return((struct gradedPolySet *)NULL);    if (r<=0) return((struct gradedPolySet *)NULL);
   if (UseCriterion1) {    if (UseCriterion1) {
Line 230  struct gradedPolySet *groebner_gen(f,needBack,needSyz,
Line 236  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 243  struct gradedPolySet *groebner_gen(f,needBack,needSyz,
Line 250  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];
   
     Spairs++;      Spairs++;
     h = (*sp)(gi,gj);      h = (*sp)(gi,gj);
     rd = ppAddv(ppMult(h.a,gi),ppMult(h.b,gj));      rd = ppAddv(ppMult(h.a,gi),ppMult(h.b,gj));
   
       if (Statistics) {
         if (top->grade >=0 && top->grade < DMAX) {
           statisticsPL = pLength(rd);
                   SpNumber[top->grade]++;
           if (MaxLength[top->grade] < statisticsPL) {
             MaxLength[top->grade] = statisticsPL;
           }
         }
       }
   
     if (!Sugar || forceReduction) {      if (!Sugar || forceReduction) {
       rd = (*reduction)(rd,g,needBack,&syz);        rd = (*reduction)(rd,g,needBack,&syz);
     }else{      }else{
Line 361  struct gradedPolySet *groebner_gen(f,needBack,needSyz,
Line 385  struct gradedPolySet *groebner_gen(f,needBack,needSyz,
     printf("Criterion1 is applied %d times.\n",Criterion1);      printf("Criterion1 is applied %d times.\n",Criterion1);
     printf("Criterions M,F and B are applied M=%d, F=%d, B=%d times.\n",Criterion2M,Criterion2F,Criterion2B);      printf("Criterions M,F and B are applied M=%d, F=%d, B=%d times.\n",Criterion2M,Criterion2F,Criterion2B);
     Spairs = Criterion1 = Criterion2M = Criterion2F = Criterion2B = 0;      Spairs = Criterion1 = Criterion2M = Criterion2F = Criterion2B = 0;
   
       printf("degree(number of spolys): maximal polynomial size\n");
       statisticsCount = 0;
       for (i=0; i<DMAX; i++) {
         if (SpNumber[i] > 0) {
           printf("%3d(%3d): %5d, ",i,SpNumber[i],MaxLength[i]);
                   if (statisticsCount % 4 == 3) {
                     printf("\n");
                     statisticsCount = 0;
                   }else{ statisticsCount++; }
         }
       }
       printf("\n");
   }    }
   
   if (AutoReduce) {    if (AutoReduce) {

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.7

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