struct object gradedPolySetToGradedArray(struct gradedPolySet *gps, int keepRedundant); struct gradedPolySet *gradedArrayToGradedPolySet(struct object ob); struct object gradedPolySetToGradedArray(gps,keepRedundant) struct gradedPolySet *gps; int keepRedundant; { struct object ob,vec; int i; if (gps == (struct gradedPolySet *)NULL) return(NullObject); ob = newObjectArray(gps->maxGrade +1); vec = newObjectArray(gps->maxGrade); for (i=0; imaxGrade; i++) { putoa(vec,i,KpoInteger(i)); putoa(ob,i+1,polySetToArray(gps->polys[i],keepRedundant)); } putoa(ob,0,vec); return(ob); } struct gradedPolySet *gradedArrayToGradedPolySet(ob) struct object ob; { int n,max,i,j; struct object vec,gvec; struct gradedPolySet *grG; POLY f; int grd,ind; if (ob.tag != Sarray) errorKan1("%s\n","gradedArrayToGradedPolySet(): the argument must be an array."); n = getoaSize(ob); if (n<2) return(arrayToGradedPolySet(ob)); if (getoa(ob,0).tag != Sarray) return(arrayToGradedPolySet(ob)); if (n-1 != getoaSize(getoa(ob,0))) errorKan1("%s\n","gradedArrayToGradedPolySet(): the sizes of arrays mismatch."); max = 0; n--; gvec = getoa(ob,0); /* grade vector */ for (i=0; i max) max = KopInteger(getoa(gvec,i)); } grG = newGradedPolySet(max+1); j = 0; for (i=0; ilim;i++) { if (i == KopInteger(getoa(gvec,i))) { j++; if (getoa(ob,j).tag != Sarray) errorKan1("%s\n","gradedArrayToGradedPolySet(): the argument must be an array of polynomials."); grG->polys[i] = newPolySet(getoaSize(getoa(ob,j))); }else { grG->polys[i] = newPolySet(0); } } for (i=0; ip = P; CurrentRingp->n = N; CurrentRingp->m = M; CurrentRingp->l = L; CurrentRingp->c = C; CurrentRingp->nn = NN; CurrentRingp->mm = MM; CurrentRingp->ll = LL; CurrentRingp->cc = CC; CurrentRingp->x = TransX; CurrentRingp->D = TransD; CurrentRingp->order = tmpOrder; CurrentRingp->next = (struct ring *)NULL; Order = tmpOrder;