=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/poly4.c,v retrieving revision 1.13 retrieving revision 1.16 diff -u -p -r1.13 -r1.16 --- OpenXM/src/kan96xx/Kan/poly4.c 2004/06/12 07:29:46 1.13 +++ OpenXM/src/kan96xx/Kan/poly4.c 2005/07/03 11:08:54 1.16 @@ -1,5 +1,6 @@ -/* $OpenXM: OpenXM/src/kan96xx/Kan/poly4.c,v 1.12 2003/08/24 05:19:42 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/Kan/poly4.c,v 1.15 2005/06/16 05:07:23 takayama Exp $ */ #include +#include #include "datatype.h" #include "stackm.h" #include "extern.h" @@ -41,7 +42,7 @@ struct matrixOfPOLY *parts(f,v) int *ev; struct object *evList; struct object *list; - struct object ob; + struct object ob = OINIT; POLY ans; POLY h; extern struct ring *CurrentRingp; @@ -128,11 +129,13 @@ struct object parts2(f,v) int *ev; struct object *evList; struct object *list; - struct object ob; + struct object ob = OINIT; POLY ans; POLY h; POLY ft; - struct object ob1,ob2,rob; + struct object ob1 = OINIT; + struct object ob2 = OINIT; + struct object rob = OINIT; if (f ISZERO || v ISZERO) { @@ -388,8 +391,27 @@ POLY f; int flag,d,dd,neg; if (f == ZERO) return(f); - t = f; maxg = (*grade)(f); flag = 0; - maxdg = dDegree(f); + + t = f; + maxg = (*grade)(f); + while (t != POLYNULL) { + dd = (*grade)(t); + if (maxg < dd) maxg = dd; + t = t->next; + } + /* fprintf(stderr,"maxg=%d\n",maxg); */ + + t = f; + maxdg = dDegree(f); + while (t != POLYNULL) { + dd = dDegree(t); + if (maxdg < dd) maxdg = dd; + t = t->next; + } + /* fprintf(stderr,"maxdg=%d\n",maxdg); */ + + t = f; + flag = 0; while (t != POLYNULL) { d = (*grade)(t); if (d != maxg) flag = 1;