[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.5 and 1.8

version 1.5, 2005/07/03 11:08:54 version 1.8, 2020/10/06 11:33:46
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/Kan/output.c,v 1.4 2003/08/26 12:46:05 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/Kan/output.c,v 1.7 2011/10/05 05:46:14 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
   #include <ctype.h>
 #include "datatype.h"  #include "datatype.h"
 #include "stackm.h"  #include "stackm.h"
 #include "extern.h"  #include "extern.h"
Line 58  char *POLYToString(f,multSym,brace)
Line 59  char *POLYToString(f,multSym,brace)
      int brace;       int brace;
 {  {
   extern int Wrap;    extern int Wrap;
     extern int UseDsmall;
     extern int COutput;
   int i,j,jj,fi;    int i,j,jj,fi;
   int printed = 0;    int printed = 0;
   int vi; /* index for variables */    int vi; /* index for variables */
Line 86  char *POLYToString(f,multSym,brace)
Line 89  char *POLYToString(f,multSym,brace)
     printed = 1;      printed = 1;
     xnames = dnames = (char **)NULL;      xnames = dnames = (char **)NULL;
   }else{    }else{
     ringp = f->m->ringp; xnames = f->m->ringp->x; dnames = f->m->ringp->D;      ringp = f->m->ringp; xnames = f->m->ringp->x;
       if (UseDsmall) dnames = f->m->ringp->Dsmall;
       else dnames = f->m->ringp->D;
     n = ringp->n;      n = ringp->n;
     xout = ringp->outputOrder;      xout = ringp->outputOrder;
   }    }
Line 127  char *POLYToString(f,multSym,brace)
Line 132  char *POLYToString(f,multSym,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 (COutput) {
           vi++;                    if (f->m->e[j].x) {
           if (vi != 1) putstr(multStr(multSym),&oq);                          vi++;
           putstr(xnames[j],&oq);                          if (vi != 1) putstr(multStr(multSym),&oq);
           if (f->m->e[j].x >= 2) {                          if (f->m->e[j].x == 1) {
             putstr("^",&oq);                            putstr(xnames[j],&oq);
             putstr(intToString(f->m->e[j].x),&oq);                          } else {
           }else if (f->m->e[j].x < 0) {                            putstr("sm1power(",&oq);
             putstr("^(",&oq);                            putstr(xnames[j],&oq);
             putstr(intToString(f->m->e[j].x),&oq);                            putstr(",",&oq);
             putstr(")",&oq);                            putstr(intToString(f->m->e[j].x),&oq);
           }                            putstr(")",&oq);
         }                          }
                     }
                   }else{
                     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 {        }else {
         j = j-n;                  if (COutput) {
         if (f->m->e[j].D) {                    j = j-n;
           vi++;                    if (f->m->e[j].D) {
           if (vi != 1) putstr(multStr(multSym),&oq);                          vi++;
           putstr(dnames[j],&oq);                          if (vi != 1) putstr(multStr(multSym),&oq);
           if (f->m->e[j].D >= 2) {                          if (f->m->e[j].D == 1) {
             putstr("^",&oq);                            putstr(dnames[j],&oq);
             putstr(intToString(f->m->e[j].D),&oq);                          }else {
           }else if (f->m->e[j].D < 0) {                            if (f->m->e[j].D) putstr("sm1power(",&oq);
             putstr("^(",&oq);                            putstr(dnames[j],&oq);
             putstr(intToString(f->m->e[j].D),&oq);                            putstr(",",&oq);
             putstr(")",&oq);                            putstr(intToString(f->m->e[j].D),&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);
                           }
                     }
                   }
       }        }
     }      }
     fi++;      fi++;
Line 191  char *KPOLYToString(f)
Line 229  char *KPOLYToString(f)
   return(POLYToString(f,OutputStyle,0));    return(POLYToString(f,OutputStyle,0));
 }  }
   
 isOne(c)  int isOne(c)
      struct coeff *c;       struct coeff *c;
 {  {
   switch(c->tag) {    switch(c->tag) {
Line 209  isOne(c)
Line 247  isOne(c)
     errorCoeff("not yet");      errorCoeff("not yet");
   }    }
 }  }
 isMinusOne(c)  int isMinusOne(c)
      struct coeff *c;       struct coeff *c;
 {  {
   switch(c->tag) {    switch(c->tag) {
Line 227  isMinusOne(c)
Line 265  isMinusOne(c)
   }    }
   
 }  }
 isNegative(c)  int isNegative(c)
      struct coeff *c;       struct coeff *c;
 {  {
   switch(c->tag) {    switch(c->tag) {
Line 246  isNegative(c)
Line 284  isNegative(c)
   }    }
 }  }
   
 isConstant(f)  int isConstant(f)
      POLY f;       POLY f;
 {  {
   int i;    int i;
Line 276  void errorOutput(s)
Line 314  void errorOutput(s)
 {  {
   fprintf(stderr,"Error(output.c):%s\n",s);    fprintf(stderr,"Error(output.c):%s\n",s);
   exit(15);    exit(15);
   }
   
   char **makeDsmall(char **dvars,int n) {
     char **ans;
     int i;
     ans = (char **) sGC_malloc(sizeof(char *)*(n+1));
     for (i=0; i<n; i++) {
           ans[i] =  (char *) sGC_malloc(sizeof(char)*(strlen(dvars[i])+1));
           strcpy(ans[i],dvars[i]);
           ans[i][0] = tolower(ans[i][0]);
     }
     ans[n] = NULL;
     return ans;
 }  }

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.8

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