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

Annotation of OpenXM/src/kan96xx/Kan/trash.c, Revision 1.1

1.1     ! maekawa     1: struct object gradedPolySetToGradedArray(struct gradedPolySet *gps,
        !             2:                                         int keepRedundant);
        !             3: struct gradedPolySet *gradedArrayToGradedPolySet(struct object ob);
        !             4:
        !             5: struct object gradedPolySetToGradedArray(gps,keepRedundant)
        !             6: struct gradedPolySet *gps;
        !             7: int keepRedundant;
        !             8: {
        !             9:   struct object ob,vec;
        !            10:   int i;
        !            11:   if (gps == (struct gradedPolySet *)NULL) return(NullObject);
        !            12:   ob = newObjectArray(gps->maxGrade +1);
        !            13:   vec = newObjectArray(gps->maxGrade);
        !            14:   for (i=0; i<gps->maxGrade; i++) {
        !            15:     putoa(vec,i,KpoInteger(i));
        !            16:     putoa(ob,i+1,polySetToArray(gps->polys[i],keepRedundant));
        !            17:   }
        !            18:   putoa(ob,0,vec);
        !            19:   return(ob);
        !            20: }
        !            21:
        !            22: struct gradedPolySet *gradedArrayToGradedPolySet(ob)
        !            23: struct object ob;
        !            24: {
        !            25:   int n,max,i,j;
        !            26:   struct object vec,gvec;
        !            27:   struct gradedPolySet *grG;
        !            28:   POLY f;
        !            29:   int grd,ind;
        !            30:   if (ob.tag != Sarray) errorKan1("%s\n","gradedArrayToGradedPolySet(): the argument must be an array.");
        !            31:   n = getoaSize(ob);
        !            32:   if (n<2) return(arrayToGradedPolySet(ob));
        !            33:   if (getoa(ob,0).tag != Sarray) return(arrayToGradedPolySet(ob));
        !            34:   if (n-1 != getoaSize(getoa(ob,0)))
        !            35:     errorKan1("%s\n","gradedArrayToGradedPolySet(): the sizes of arrays mismatch.");
        !            36:   max = 0; n--;
        !            37:   gvec = getoa(ob,0); /* grade vector */
        !            38:   for (i=0; i<n; i++) {
        !            39:     if (getoa(gvec,i).tag != Sinteger)
        !            40:       errorKan1("%s\n","gradedArrayToGradedPolySet(): the first argument must be a vector of grades.");
        !            41:     if (KopInteger(getoa(gvec,i)) > max) max = KopInteger(getoa(gvec,i));
        !            42:   }
        !            43:   grG = newGradedPolySet(max+1);
        !            44:   j = 0;
        !            45:   for (i=0; i<grG->lim;i++) {
        !            46:     if (i == KopInteger(getoa(gvec,i))) {
        !            47:       j++;
        !            48:       if (getoa(ob,j).tag != Sarray) errorKan1("%s\n","gradedArrayToGradedPolySet(): the argument must be an array of polynomials.");
        !            49:       grG->polys[i] = newPolySet(getoaSize(getoa(ob,j)));
        !            50:     }else {
        !            51:       grG->polys[i] = newPolySet(0);
        !            52:     }
        !            53:   }
        !            54:   for (i=0; i<n; i++) {
        !            55:     vec = getoa(ob,i+1);
        !            56:     for (j=0; j<getoaSize(vec);j++) {
        !            57:       if (getoa(vec,j).tag != Spoly) {
        !            58:        errorKan1("%s(%d,%d)\n","gradedArrayToGradedPolySet(): the element must be polynomial. (i,j)=");
        !            59:       }
        !            60:       f = KopPOLY(getoa(vec,j));
        !            61:       whereInG(grG,f,&grd,&ind);
        !            62:       grG = putPolyInG(grG,f,grd,ind,(struct syz0 *)NULL,1);
        !            63:     }
        !            64:   }
        !            65:   return(grG);
        !            66: }
        !            67:
        !            68:
        !            69:   static int tmpOrder[] =
        !            70: /*
        !            71:    0    1    2    3    4    5    6    7    8    9   10   11
        !            72:   x5   x4   x3   x2   x1   x0   D5   D4   D3   D2   D1   D0
        !            73: */
        !            74:   {
        !            75:    1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !            76:    0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,
        !            77:    0,   0,   0,   0,   0,  -1,   0,   0,   0,   0,   0,   0,
        !            78:    0,   0,   0,   0,  -1,   0,   0,   0,   0,   0,   0,   0,
        !            79:    0,   0,   0,  -1,   0,   0,   0,   0,   0,   0,   0,   0,
        !            80:    0,   0,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !            81:    0,  -1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        !            82:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  -1,   0,
        !            83:    0,   0,   0,   0,   0,   0,   0,   0,   0,  -1,   0,   0,
        !            84:    0,   0,   0,   0,   0,   0,   0,   0,  -1,   0,   0,   0,
        !            85:    0,   0,   0,   0,   0,   0,   0,  -1,   0,   0,   0,   0,
        !            86:    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1};
        !            87:
        !            88:
        !            89:   /* tmp code */
        !            90:   TransX[0] = "x0"; TransX[1] = "x1"; TransX[2] = "x2";
        !            91:   TransX[3] = "x3"; TransX[4] = "x4"; TransX[5] = "t";
        !            92:
        !            93:   TransD[0] = "h"; TransD[1] = "D1"; TransD[2] = "D2";
        !            94:   TransD[3] = "D3"; TransD[4] = "D4"; TransD[5] = "T";
        !            95:
        !            96:   CurrentRingp = (struct ring *)GC_malloc(sizeof(struct ring));
        !            97:   CurrentRingp->p = P;
        !            98:   CurrentRingp->n = N; CurrentRingp->m = M; CurrentRingp->l = L; CurrentRingp->c = C;
        !            99:   CurrentRingp->nn = NN; CurrentRingp->mm = MM; CurrentRingp->ll = LL;
        !           100:   CurrentRingp->cc = CC;
        !           101:   CurrentRingp->x = TransX;
        !           102:   CurrentRingp->D = TransD;
        !           103:   CurrentRingp->order = tmpOrder;
        !           104:   CurrentRingp->next = (struct ring *)NULL;
        !           105:   Order = tmpOrder;

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