=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/output.c,v retrieving revision 1.1 retrieving revision 1.4 diff -u -p -r1.1 -r1.4 --- OpenXM/src/kan96xx/Kan/output.c 1999/10/08 02:12:01 1.1 +++ OpenXM/src/kan96xx/Kan/output.c 2003/08/26 12:46:05 1.4 @@ -1,3 +1,4 @@ +/* $OpenXM: OpenXM/src/kan96xx/Kan/output.c,v 1.3 2001/05/04 01:06:24 takayama Exp $ */ #include #include "datatype.h" #include "stackm.h" @@ -16,8 +17,8 @@ struct outputQueue { static void putstr(char *s,struct outputQueue *oq); static void putstr(s,oq) -char *s; -struct outputQueue *oq; + char *s; + struct outputQueue *oq; { int i; char **tmp; @@ -50,9 +51,9 @@ struct outputQueue *oq; #define multStr(c) (c==' '?" ":(c=='\0'?"":"*")) char *POLYToString(f,multSym,brace) -POLY f; -int multSym; -int brace; + POLY f; + int multSym; + int brace; { extern int Wrap; int i,j,jj,fi; @@ -92,30 +93,30 @@ int brace; /*print coefficient*/ if (fi == 0) { if (isConstant(f)) { - putstr(coeffToString(f->coeffp),&oq); + putstr(coeffToString(f->coeffp),&oq); }else if (isOne(f->coeffp)) { - /* do nothing */ + /* do nothing */ }else if (isMinusOne(f->coeffp)) { - putstr("-",&oq); + putstr("-",&oq); }else{ - putstr(coeffToString(f->coeffp),&oq); - putstr(multStr(multSym),&oq); + putstr(coeffToString(f->coeffp),&oq); + putstr(multStr(multSym),&oq); } }else{ if (isConstant(f)) { - if (isNegative(f->coeffp)) { - putstr(coeffToString(f->coeffp),&oq); - }else{ - putstr("+",&oq); - putstr(coeffToString(f->coeffp),&oq); - } + if (isNegative(f->coeffp)) { + putstr(coeffToString(f->coeffp),&oq); + }else{ + putstr("+",&oq); + putstr(coeffToString(f->coeffp),&oq); + } } else if (isOne(f->coeffp)) { - putstr("+",&oq); + putstr("+",&oq); }else if (isMinusOne(f->coeffp)) { - putstr("-",&oq); + putstr("-",&oq); }else{ - if (!isNegative(f->coeffp)) putstr("+",&oq); - putstr(coeffToString(f->coeffp),&oq); + if (!isNegative(f->coeffp)) putstr("+",&oq); + putstr(coeffToString(f->coeffp),&oq); putstr(multStr(multSym),&oq); } } @@ -124,34 +125,34 @@ int brace; for (jj=0; jjm->e[j].x) { - vi++; - if (vi != 1) putstr(multStr(multSym),&oq); - putstr(xnames[j],&oq); - if (f->m->e[j].x >= 2) { - putstr("^",&oq); - putstr(intToString(f->m->e[j].x),&oq); - }else if (f->m->e[j].x < 0) { - putstr("^(",&oq); - putstr(intToString(f->m->e[j].x),&oq); - putstr(")",&oq); - } - } + if (f->m->e[j].x) { + vi++; + if (vi != 1) putstr(multStr(multSym),&oq); + putstr(xnames[j],&oq); + if (f->m->e[j].x >= 2) { + putstr("^",&oq); + putstr(intToString(f->m->e[j].x),&oq); + }else if (f->m->e[j].x < 0) { + putstr("^(",&oq); + putstr(intToString(f->m->e[j].x),&oq); + putstr(")",&oq); + } + } }else { - j = j-n; - if (f->m->e[j].D) { - vi++; - if (vi != 1) putstr(multStr(multSym),&oq); - putstr(dnames[j],&oq); - if (f->m->e[j].D >= 2) { - putstr("^",&oq); - putstr(intToString(f->m->e[j].D),&oq); - }else if (f->m->e[j].D < 0) { - putstr("^(",&oq); - putstr(intToString(f->m->e[j].D),&oq); - putstr(")",&oq); - } - } + j = j-n; + if (f->m->e[j].D) { + vi++; + if (vi != 1) putstr(multStr(multSym),&oq); + putstr(dnames[j],&oq); + if (f->m->e[j].D >= 2) { + putstr("^",&oq); + putstr(intToString(f->m->e[j].D),&oq); + }else if (f->m->e[j].D < 0) { + putstr("^(",&oq); + putstr(intToString(f->m->e[j].D),&oq); + putstr(")",&oq); + } + } } } fi++; @@ -182,14 +183,14 @@ int brace; } char *KPOLYToString(f) -POLY f; + POLY f; { extern int OutputStyle; return(POLYToString(f,OutputStyle,0)); } isOne(c) -struct coeff *c; + struct coeff *c; { switch(c->tag) { case INTEGER: @@ -207,7 +208,7 @@ struct coeff *c; } } isMinusOne(c) -struct coeff *c; + struct coeff *c; { switch(c->tag) { case INTEGER: @@ -225,7 +226,7 @@ struct coeff *c; } isNegative(c) -struct coeff *c; + struct coeff *c; { switch(c->tag) { case INTEGER: @@ -244,7 +245,7 @@ struct coeff *c; } isConstant(f) -POLY f; + POLY f; { int i; int n; @@ -256,8 +257,20 @@ POLY f; return(1); } +int isConstantAll(POLY f) +{ + int i; + int n; + if (f == POLYNULL) return(1); + while (f != POLYNULL) { + if (!isConstant(f)) return 0; + f = f->next; + } + return 1; +} + void errorOutput(s) -char *s; + char *s; { fprintf(stderr,"Error(output.c):%s\n",s); exit(15);