version 1.1, 1999/10/08 02:12:01 |
version 1.3, 2001/05/04 01:06:24 |
|
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/output.c,v 1.2 2000/01/16 07:55:40 takayama Exp $ */ |
#include <stdio.h> |
#include <stdio.h> |
#include "datatype.h" |
#include "datatype.h" |
#include "stackm.h" |
#include "stackm.h" |
Line 16 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 50 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; |
|
|
/*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); |
} |
} |
} |
} |
|
|
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++; |
|
|
} |
} |
|
|
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 207 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 225 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 244 struct coeff *c; |
|
Line 245 struct coeff *c; |
|
} |
} |
|
|
isConstant(f) |
isConstant(f) |
POLY f; |
POLY f; |
{ |
{ |
int i; |
int i; |
int n; |
int n; |
|
|
} |
} |
|
|
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); |