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

Annotation of OpenXM/src/kan96xx/Kan/gradedset.h, Revision 1.7

1.7     ! takayama    1: /* $OpenXM: OpenXM/src/kan96xx/Kan/gradedset.h,v 1.6 2003/08/19 08:02:09 takayama Exp $ */
1.1       maekawa     2: /* gradedset.h */
                      3: #define max(a,b) (a>b?a:b)
                      4:
                      5: /* You may use only ppAdd() and cpMult() for the elements of SyzRingp. */
                      6: #define srGrade(s) ((s)->m->e[0].x)  /* s is in the SyzRingp */
                      7: #define srIndex(s) ((s)->m->e[0].D)
                      8: #define srSyzCoeffToPOLY(s) ((s)->val.f)
                      9:
                     10:
                     11: /* gradedset.c */
                     12: void errorGradedSet(char *s);
                     13: void warningGradedSet(char *s);
                     14: struct polySet *newPolySet(int n);
                     15: struct pair *newPair(struct pair *prev);
                     16: struct pair *pairCopy(struct pair *node);
                     17: struct gradedPolySet *newGradedPolySet(int n);
                     18: struct gradedPairs *newGradedPairs(int n);
                     19: struct gradedPairs *enlargeGradedPairs(int size,struct gradedPairs *grD);
                     20: void insertPair(struct pair *inode,struct pair *before);
                     21:                   /* insert inode after before */
                     22: struct pair *deletePair(struct pair *p); /* delete p->next and returns
                     23:                                            p->next */
                     24: struct pair *getPair(struct gradedPairs *grD);
                     25: void whereInG(struct gradedPolySet *g, POLY fi, int *gradep, int *indexp,int sugar);
                     26: struct gradedPolySet *putPolyInG(struct gradedPolySet *g, POLY fi, int grade,
                     27:                                 int index,struct syz0 *syz,int mark,int serial);
                     28: void markRedundant(struct gradedPolySet *g,POLY gt,int grade,int index,int sugar);
                     29: void markRedundant0(struct gradedPolySet *g,int grade,int index);
                     30: struct syz0 *newSyz0(void);
                     31: struct gradedPairs *putPairInGradedPairs(struct gradedPairs *grP,
                     32:                                         struct pair *top);
                     33: void outputGradedPolySet(struct gradedPolySet *grG,int needSyz);
                     34: void outputGradedPairs(struct gradedPairs *grP);
                     35: void outputNode(struct pair *p);
                     36: int countPairs(struct gradedPairs *grD);
                     37: int countGradedPolySet(struct gradedPolySet *grD);
                     38: struct gradedPolySet *gradedPolySetCopy(struct gradedPolySet *grG);
                     39: int deletePairByCriterion2B(struct gradedPairs *grD,POLY gt,struct gradedPolySet *grG);
1.5       takayama   40: int markGeneratorInG(struct gradedPolySet *g,int grade,int index);
1.6       takayama   41: int clearGmod(struct gradedPolySet *g);
1.1       maekawa    42:
                     43: /* red.c */
                     44: struct spValue (*sp)(POLY f,POLY g);
1.7     ! takayama   45: struct spValue spZero(void);
1.1       maekawa    46: int (*isReducible)(POLY f,POLY g);
                     47: POLY (*reduction1)(POLY f,POLY g,int needSyz,POLY *cc,POLY *cg);
                     48: /*  if needSyz, then  result = *cc f + *cg g. */
                     49: /* syzp->cf is in the CurrentRignp and syzp->syz is in the SyzRingp. */
                     50: POLY (*reduction)(POLY f,struct gradedPolySet *gset,int needSyz,
                     51:                  struct syz0 *syzp);
                     52: POLY (*isCdrReducible)(POLY f,POLY g);
                     53: POLY (*reduction1Cdr)(POLY f,POLY fs,POLY g,int needSyz,POLY *cc,POLY *cg);
                     54: /*  if needSyz, then  result = *cc f + *cg g. */
                     55: POLY (*reductionCdr)(POLY f,struct gradedPolySet *gset,int needSyz,
                     56:                  struct syz0 *syzp);
                     57: POLY (*lcm)(POLY f,POLY g);
                     58: POLY reduction1_gen(POLY f,POLY g,int needSyz,POLY *cc,POLY *cg);
                     59: POLY reduction1_gen_debug(POLY f,POLY g,int needSyz,POLY *cc,POLY *cg);
                     60: POLY reduction1_sugar(POLY f,POLY g,int needSyz,POLY *c,POLY *h,int sugarGrade);
                     61: int isReducible_gen(POLY f,POLY g);
                     62: POLY reduction_gen(POLY f,struct gradedPolySet *gset,int needSyz,
                     63:                   struct syz0 *syzp);
                     64: POLY reduction_gen_rev(POLY f,struct gradedPolySet *gset,int needSyz,
                     65:                   struct syz0 *syzp);
                     66: POLY reduction_sugar(POLY f,struct gradedPolySet *gset,int needSyz,
                     67:                     struct syz0 *syzp,int sugarGrade);
                     68: POLY reduction1Cdr_gen(POLY f,POLY fs,POLY g,int needSyz,POLY *cc,POLY *cg);
                     69: POLY isCdrReducible_gen(POLY f,POLY g);
                     70: POLY reductionCdr_gen(POLY f,struct gradedPolySet *gset,int needSyz,
                     71:                   struct syz0 *syzp);
                     72: POLY lcm_gen(POLY f,POLY g);
                     73: struct spValue sp_gen(POLY f,POLY g);
                     74: struct spValue sp_q(POLY f,POLY g);
                     75: int grade_gen(POLY f);
1.3       takayama   76: POLY reductionCdr_except_grd_i(POLY f,struct gradedPolySet *gset,
                     77:                               int needSyz,struct syz0 *syzp,
                     78:                               int grd,int i, int *reduced);
                     79:  /* Polynomial at (grd,i) is not used for reduction.
                     80:     if del[j] == 1, then the attached polynomial is not used for reduction.*/
1.4       takayama   81:
                     82: /* ecart.c */
                     83: POLY reduction_ecart(POLY f,struct gradedPolySet *gset,
                     84:                                         int needSyz,struct syz0 *syzp);
1.1       maekawa    85:
                     86: /* constructor */
                     87: POLY toSyzPoly(POLY cg,int grade,int index);
                     88: struct coeff *toSyzCoeff(POLY f);
                     89: void initSyzRingp(void);
                     90:
                     91: /* gb.c */
                     92: struct gradedPolySet *(*groebner)(struct arrayOfPOLY *f,
                     93:                                  int needBack,
                     94:                                  int needSyz, struct pair **grP,
1.7     ! takayama   95:                                  int countDown,int forceReduction,int reduceOnly);
1.1       maekawa    96: struct gradedPolySet *groebner_gen(struct arrayOfPOLY *f,
                     97:                                  int needBack,
                     98:                                  int needSyz, struct pair **grP,
1.7     ! takayama   99:                                  int countDown,int forceReduction,int reduceOnly);
1.1       maekawa   100: struct gradedPairs *updatePairs(struct gradedPairs *grD, POLY gt,
                    101:                                int gtGrade, int t,
                    102:                                struct gradedPolySet *grG);
                    103: /* add gt to grD. gt is indexed by (gtGrade,t) */
1.3       takayama  104: void toReducedBasis(struct gradedPolySet *grP,int needBack, int needSyz);
                    105:
1.1       maekawa   106:
                    107: /* gbGM.c */
                    108: struct gradedPolySet *groebner_gm(struct arrayOfPOLY *f,
                    109:                                  int needBack,
                    110:                                  int needSyz, struct pair **grP,
1.7     ! takayama  111:                                  int countDown,int forceReduction,int reduceOnly);
1.1       maekawa   112:
                    113: /* syz0 */
                    114: void simplifyBT(int grd,int index, struct gradedPolySet *grG);
                    115: /* grG->polys[i]->syz[j],mark[j] is modified. */
                    116:
                    117: void getBackwardTransformation(struct gradedPolySet *grG);
                    118: /* grG->polys[i]->syz[j],mark[j] is modified. */
                    119:
                    120: struct arrayOfPOLY *getSyzygy0(struct gradedPolySet *grG,
                    121:                               struct pair *zeroPairs);
                    122: /* grG->polys[i]->mark[j] are modified.
                    123:    grG->polys[i]->del[j] and syz[j] must be set.
                    124:    syz[j] is the result of the reduction by grBases.  cf. getSyzygy(). */
                    125:
                    126: struct matrixOfPOLY *getSyzygy(struct gradedPolySet *grG,struct pair *zp,
                    127:                               struct gradedPolySet **grBasesp,
                    128:                               struct matrixOfPOLY **backwardMatp);
                    129: /* grBasesp is also returned. */
                    130:
                    131: POLY getSyzPolyFromSp(struct pair *spij,struct gradedPolySet *grG);
                    132: /* del and syz of grG and grBases must be properly set. mark of grG
                    133:    will be modified. */
                    134:
                    135: struct matrixOfPOLY *getBackwardMatrixOfPOLY(struct gradedPolySet *grG);
                    136: /* get B */
                    137:
                    138: struct matrixOfPOLY *getSyzygy1(struct matrixOfPOLY *b,struct matrixOfPOLY *nc,
                    139:                                struct arrayOfPOLY *dc);
                    140:
                    141: struct matrixOfPOLY *getNC(struct gradedPolySet *newG,int n,
                    142:                           struct gradedPolySet *grBases);
                    143: /* get the numerator of C */
                    144:
                    145: struct arrayOfPOLY *getDC(struct gradedPolySet *newG);
                    146: /* diag(DC) f + C G = 0. */
                    147:
                    148: void errorSyz0(char *s);
                    149:
                    150: /* conversion */
                    151: struct arrayOfPOLY *syzPolyToArrayOfPOLY(int size,POLY f,
                    152:                                         struct gradedPolySet *grG);
                    153: /* f is in SyzRingp. */
                    154:
                    155:
                    156: #define checkRingSp(f,g,r) {\
                    157:   if ((f)->m->ringp != (g)->m->ringp) {\
                    158:     warningPoly("f and g must be in a same ring. Returns 0.\n");\
                    159:     fprintf(stderr,"f=%s\n",POLYToString(f,'*',0));\
                    160:     fprintf(stderr,"g=%s\n",POLYToString(g,'*',0));\
                    161:     r.a = ZERO; r.b = ZERO;\
                    162:     return(r);\
                    163:     }\
                    164: }
                    165:
                    166: #define checkRingIsR(f,g) {\
                    167:   if ((f)->m->ringp != (g)->m->ringp) {\
                    168:     warningPoly("f and g must be in a same ring. Returns 0.\n");\
                    169:     fprintf(stderr,"f=%s\n",POLYToString(f,'*',0));\
                    170:     fprintf(stderr,"g=%s\n",POLYToString(g,'*',0));\
                    171:     return(0);\
                    172:     }\
                    173: }
                    174:

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