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

Diff for /OpenXM/src/kan96xx/Kan/output.c between version 1.2 and 1.4

version 1.2, 2000/01/16 07:55:40 version 1.4, 2003/08/26 12:46:05
Line 1 
Line 1 
 /* $OpenXM$ */  /* $OpenXM: OpenXM/src/kan96xx/Kan/output.c,v 1.3 2001/05/04 01:06:24 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include "datatype.h"  #include "datatype.h"
 #include "stackm.h"  #include "stackm.h"
Line 17  struct outputQueue {
Line 17  struct outputQueue {
 static void putstr(char *s,struct outputQueue *oq);  static void putstr(char *s,struct outputQueue *oq);
   
 static void putstr(s,oq)  static void putstr(s,oq)
 char *s;       char *s;
 struct outputQueue *oq;       struct outputQueue *oq;
 {  {
   int i;    int i;
   char **tmp;    char **tmp;
Line 51  struct outputQueue *oq;
Line 51  struct outputQueue *oq;
 #define multStr(c) (c==' '?" ":(c=='\0'?"":"*"))  #define multStr(c) (c==' '?" ":(c=='\0'?"":"*"))
   
 char *POLYToString(f,multSym,brace)  char *POLYToString(f,multSym,brace)
 POLY f;       POLY f;
 int multSym;       int multSym;
 int brace;       int brace;
 {  {
   extern int Wrap;    extern int Wrap;
   int i,j,jj,fi;    int i,j,jj,fi;
Line 93  int brace;
Line 93  int brace;
     /*print coefficient*/      /*print coefficient*/
     if (fi == 0) {      if (fi == 0) {
       if (isConstant(f)) {        if (isConstant(f)) {
         putstr(coeffToString(f->coeffp),&oq);          putstr(coeffToString(f->coeffp),&oq);
       }else if (isOne(f->coeffp)) {        }else if (isOne(f->coeffp)) {
         /* do nothing */          /* do nothing */
       }else if (isMinusOne(f->coeffp)) {        }else if (isMinusOne(f->coeffp)) {
         putstr("-",&oq);          putstr("-",&oq);
       }else{        }else{
         putstr(coeffToString(f->coeffp),&oq);          putstr(coeffToString(f->coeffp),&oq);
         putstr(multStr(multSym),&oq);          putstr(multStr(multSym),&oq);
       }        }
     }else{      }else{
       if (isConstant(f)) {        if (isConstant(f)) {
         if (isNegative(f->coeffp)) {          if (isNegative(f->coeffp)) {
           putstr(coeffToString(f->coeffp),&oq);            putstr(coeffToString(f->coeffp),&oq);
         }else{          }else{
           putstr("+",&oq);            putstr("+",&oq);
           putstr(coeffToString(f->coeffp),&oq);            putstr(coeffToString(f->coeffp),&oq);
         }          }
       } else if (isOne(f->coeffp)) {        } else if (isOne(f->coeffp)) {
         putstr("+",&oq);          putstr("+",&oq);
       }else if (isMinusOne(f->coeffp)) {        }else if (isMinusOne(f->coeffp)) {
         putstr("-",&oq);          putstr("-",&oq);
       }else{        }else{
         if (!isNegative(f->coeffp)) putstr("+",&oq);          if (!isNegative(f->coeffp)) putstr("+",&oq);
         putstr(coeffToString(f->coeffp),&oq);          putstr(coeffToString(f->coeffp),&oq);
         putstr(multStr(multSym),&oq);          putstr(multStr(multSym),&oq);
       }        }
     }      }
Line 125  int brace;
Line 125  int brace;
     for (jj=0; jj<n*2; jj++) {      for (jj=0; jj<n*2; jj++) {
       j = xout[jj];        j = xout[jj];
       if (j <n) {        if (j <n) {
         if (f->m->e[j].x) {          if (f->m->e[j].x) {
           vi++;            vi++;
           if (vi != 1) putstr(multStr(multSym),&oq);            if (vi != 1) putstr(multStr(multSym),&oq);
           putstr(xnames[j],&oq);            putstr(xnames[j],&oq);
           if (f->m->e[j].x >= 2) {            if (f->m->e[j].x >= 2) {
             putstr("^",&oq);              putstr("^",&oq);
             putstr(intToString(f->m->e[j].x),&oq);              putstr(intToString(f->m->e[j].x),&oq);
           }else if (f->m->e[j].x < 0) {            }else if (f->m->e[j].x < 0) {
             putstr("^(",&oq);              putstr("^(",&oq);
             putstr(intToString(f->m->e[j].x),&oq);              putstr(intToString(f->m->e[j].x),&oq);
             putstr(")",&oq);              putstr(")",&oq);
           }            }
         }          }
       }else {        }else {
         j = j-n;          j = j-n;
         if (f->m->e[j].D) {          if (f->m->e[j].D) {
           vi++;            vi++;
           if (vi != 1) putstr(multStr(multSym),&oq);            if (vi != 1) putstr(multStr(multSym),&oq);
           putstr(dnames[j],&oq);            putstr(dnames[j],&oq);
           if (f->m->e[j].D >= 2) {            if (f->m->e[j].D >= 2) {
             putstr("^",&oq);              putstr("^",&oq);
             putstr(intToString(f->m->e[j].D),&oq);              putstr(intToString(f->m->e[j].D),&oq);
           }else if (f->m->e[j].D < 0) {            }else if (f->m->e[j].D < 0) {
             putstr("^(",&oq);              putstr("^(",&oq);
             putstr(intToString(f->m->e[j].D),&oq);              putstr(intToString(f->m->e[j].D),&oq);
             putstr(")",&oq);              putstr(")",&oq);
           }            }
         }          }
       }        }
     }      }
     fi++;      fi++;
Line 183  int brace;
Line 183  int brace;
 }  }
   
 char *KPOLYToString(f)  char *KPOLYToString(f)
 POLY f;       POLY f;
 {  {
   extern int OutputStyle;    extern int OutputStyle;
   return(POLYToString(f,OutputStyle,0));    return(POLYToString(f,OutputStyle,0));
 }  }
   
 isOne(c)  isOne(c)
 struct coeff *c;       struct coeff *c;
 {  {
   switch(c->tag) {    switch(c->tag) {
   case INTEGER:    case INTEGER:
Line 208  struct coeff *c;
Line 208  struct coeff *c;
   }    }
 }  }
 isMinusOne(c)  isMinusOne(c)
 struct coeff *c;       struct coeff *c;
 {  {
   switch(c->tag) {    switch(c->tag) {
   case INTEGER:    case INTEGER:
Line 226  struct coeff *c;
Line 226  struct coeff *c;
   
 }  }
 isNegative(c)  isNegative(c)
 struct coeff *c;       struct coeff *c;
 {  {
   switch(c->tag) {    switch(c->tag) {
   case INTEGER:    case INTEGER:
Line 245  struct coeff *c;
Line 245  struct coeff *c;
 }  }
   
 isConstant(f)  isConstant(f)
 POLY f;       POLY f;
 {  {
   int i;    int i;
   int n;    int n;
Line 257  POLY f;
Line 257  POLY f;
   return(1);    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)  void errorOutput(s)
 char *s;       char *s;
 {  {
   fprintf(stderr,"Error(output.c):%s\n",s);    fprintf(stderr,"Error(output.c):%s\n",s);
   exit(15);    exit(15);

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.4

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