1: #include <stdio.h>
   2: #include <mp.h>
   3: m_in(a,b,f) MINT *a; FILE *f;
   4: {   MINT x,y,ten;
   5:     int sign,c;
   6:     short qten,qy;
   7:     xfree(a);
   8:     sign=1;
   9:     ten.len=1;
  10:     ten.val= &qten;
  11:     qten=b;
  12:     x.len=0;
  13:     y.len=1;
  14:     y.val= &qy;
  15:     while((c=getc(f))!=EOF)
  16:     switch(c)
  17:     {
  18:     case '\\':  getc(f);
  19:         continue;
  20:     case '\t':
  21:     case '\n': a->len *= sign;
  22:         xfree(&x);
  23:         return(0);
  24:     case ' ':
  25:         continue;
  26:     case '-': sign = -sign;
  27:         continue;
  28:     default: if(c>='0' && c<= '9')
  29:         {   qy=c-'0';
  30:             mult(&x,&ten,a);
  31:             madd(a,&y,a);
  32:             move(a,&x);
  33:             continue;
  34:         }
  35:         else
  36:         {   VOID ungetc(c,stdin);
  37:             a->len *= sign;
  38:             return(0);
  39:         }
  40:     }
  41:     return(EOF);
  42: }
  43: m_out(a,b,f) MINT *a; FILE *f;
  44: {   int sign,xlen,i;
  45:     short r;
  46:     MINT x;
  47:     char *obuf;
  48:     register char *bp;
  49:     sign=1;
  50:     xlen=a->len;
  51:     if(xlen<0)
  52:     {   xlen= -xlen;
  53:         sign= -1;
  54:     }
  55:     if(xlen==0)
  56:     {   fprintf(f,"0\n");
  57:         return;
  58:     }
  59:     x.len=xlen;
  60:     x.val=xalloc(xlen,"m_out");
  61:     for(i=0;i<xlen;i++) x.val[i]=a->val[i];
  62:     obuf=(char *)malloc(7*xlen);
  63:     bp=obuf+7*xlen-1;
  64:     *bp--=0;
  65:     while(x.len>0)
  66:     {   for(i=0;i<10&&x.len>0;i++)
  67:         {   sdiv(&x,b,&x,&r);
  68:             *bp--=r+'0';
  69:         }
  70:         if(x.len>0) *bp--=' ';
  71:     }
  72:     if(sign==-1) *bp--='-';
  73:     fprintf(f,"%s\n",bp+1);
  74:     free(obuf);
  75:     FREE(x)
  76:     return;
  77: }
  78: sdiv(a,n,q,r) MINT *a,*q; short *r;
  79: {   MINT x,y;
  80:     int sign;
  81:     sign=1;
  82:     x.len=a->len;
  83:     x.val=a->val;
  84:     if(n<0)
  85:     {   sign= -sign;
  86:         n= -n;
  87:     }
  88:     if(x.len<0)
  89:     {   sign = -sign;
  90:         x.len= -x.len;
  91:     }
  92:     s_div(&x,n,&y,r);
  93:     xfree(q);
  94:     q->val=y.val;
  95:     q->len=sign*y.len;
  96:     *r = *r*sign;
  97:     return;
  98: }
  99: s_div(a,n,q,r) MINT *a,*q; short *r;
 100: {   int qlen,i;
 101:     long int x;
 102:     short *qval;
 103:     x=0;
 104:     qlen=a->len;
 105:     qval=xalloc(qlen,"s_div");
 106:     for(i=qlen-1;i>=0;i--)
 107:     {
 108:         x=x*0100000L+a->val[i];
 109:         qval[i]=x/n;
 110:         x=x%n;
 111:     }
 112:     *r=x;
 113:     if(qval[qlen-1]==0) qlen--;
 114:     q->len=qlen;
 115:     q->val=qval;
 116:     if(qlen==0) shfree(qval);
 117:     return;
 118: }
 119: min(a) MINT *a;
 120: {
 121:     return(m_in(a,10,stdin));
 122: }
 123: omin(a) MINT *a;
 124: {
 125:     return(m_in(a,8,stdin));
 126: }
 127: mout(a) MINT *a;
 128: {
 129:     m_out(a,10,stdout);
 130: }
 131: omout(a) MINT *a;
 132: {
 133:     m_out(a,8,stdout);
 134: }
 135: fmout(a,f) MINT *a; FILE *f;
 136: {   m_out(a,10,f);
 137: }
 138: fmin(a,f) MINT *a; FILE *f;
 139: {
 140:     return(m_in(a,10,f));
 141: }

Defined functions

fmin defined in line 138; never used
fmout defined in line 135; never used
m_in defined in line 3; used 4 times
m_out defined in line 43; used 4 times
min defined in line 119; never used
mout defined in line 127; never used
omin defined in line 123; never used
omout defined in line 131; used 3 times
s_div defined in line 99; used 1 times
  • in line 92
sdiv defined in line 78; used 4 times
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 737
Valid CSS Valid XHTML 1.0 Strict