=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/kanExport1.c,v retrieving revision 1.2 retrieving revision 1.10 diff -u -p -r1.2 -r1.10 --- OpenXM/src/kan96xx/Kan/kanExport1.c 2001/05/04 01:06:24 1.2 +++ OpenXM/src/kan96xx/Kan/kanExport1.c 2003/08/27 03:11:12 1.10 @@ -1,3 +1,4 @@ +/* $OpenXM: OpenXM/src/kan96xx/Kan/kanExport1.c,v 1.9 2003/08/24 05:19:42 takayama Exp $ */ #include #include "datatype.h" #include "stackm.h" @@ -11,6 +12,13 @@ static int Message = 1; extern int KanGBmessage; +struct object DegreeShifto; +int DegreeShifto_size = 0; +int *DegreeShifto_vec = NULL; +struct object DegreeShiftD; +int DegreeShiftD_size = 0; +int *DegreeShiftD_vec = NULL; + /** :kan, :ring */ struct object Kreduction(f,set) struct object f; @@ -38,6 +46,7 @@ struct object Kreduction(f,set) }else{ r = (*reduction)(f.lc.poly,grG,1,&syz); } + /* outputGradedPolySet(grG,0); */ if (flag) { rob = newObjectArray(3); putoa(rob,0,KpoPOLY(r)); @@ -265,6 +274,7 @@ struct object Kgroebner(ob) fflush(stdout); } mp = getSyzygy(grG,grP->next,&grBases,&backwardMat); + if (mp == NULL) errorKan1("%s\n","Internal error in getSyzygy(). BUG of sm1."); if (KanGBmessage) printf("Done.\n"); putoa(rob,0,gradedPolySetToArray(grG,0)); @@ -495,7 +505,7 @@ struct object syzPolyToArray(size,f,grG) while (f != POLYNULL) { g0 = srGrade(f); - i0 = srIndex(f); + i0 = srIndex(f); serial = grG->polys[g0]->serial[i0]; if (serial < 0) { errorKan1("%s\n","syzPolyToArray(): invalid serial[i] of grG."); @@ -683,6 +693,7 @@ struct object homogenizeObject(ob,gradep) rob = newObjectArray(size); flag = 0; ob1 = getoa(ob,0); + if (ob1.tag == Sdollar) return(homogenizeObject_go(ob,gradep)); ob1 = homogenizeObject(ob1,&gr); maxg = gr; getoa(rob,0) = ob1; @@ -744,6 +755,7 @@ struct object homogenizeObject_vec(ob,gradep) if (size == 0) { errorKan1("%s\n","homogenizeObject_vec() is called for the empty array."); } + if (getoa(ob,0).tag == Sdollar) return(homogenizeObject_go(ob,gradep)); rob = newObjectArray(size); for (i=0; i0?dssize:1)); + if (ds == NULL) errorKan1("%s\n","no more memory."); + for (i=0; i0?dssize:1)); + if (ds == NULL) errorKan1("%s\n","no more memory."); + for (i=0; i0?dssize:1)); + if (ds == NULL) errorKan1("%s\n","no more memory."); + for (i=0; i= 2*N0) errorKan1("%s\n","oInitW(): the size of the second argument is invalid."); for (i=0; im->ringp; + n = ringp->n; + if (n - ringp->nn <= 0) errorKan1("%s\n","Graduation variable in D is not given."); + } + t = (*mpMult)(cxx(1,n-1,i,ringp),t); + f = ppAddv(f,t); + } + } + return f; +} + +struct object POLYtoObjArray(POLY f,int size) { + struct object rob; + POLY *pa; + int d,n,i; + POLY t; + if (size < 0) errorKan1("%s\n","POLYtoObjArray() invalid size."); + rob = newObjectArray(size); + pa = (POLY *) sGC_malloc(sizeof(POLY)*(size+1)); + if (pa == NULL) errorKan1("%s\n","POLYtoObjArray() no more memory."); + for (i=0; im->ringp->n; + while (f != POLYNULL) { + d = f->m->e[n-1].x; + if (d >= size) errorKan1("%s\n","POLYtoObjArray() size is too small."); + t = newCell(coeffCopy(f->coeffp),monomialCopy(f->m)); + i = t->m->e[n-1].x; + t->m->e[n-1].x = 0; + pa[i] = ppAddv(pa[i],t); /* slow to add from the top. */ + f = f->next; + } + for (i=0; i= 2*N0) errorKan1("%s\n","ordWsAll(): the size of the second argument is invalid."); + for (i=0; i