1: /*	@(#)pow.c	4.1	12/25/82	*/
   2: 
   3: #include <mp.h>
   4: pow(a,b,c,d) MINT *a,*b,*c,*d;
   5: {   int i,j,n;
   6:     MINT x,y;
   7:     x.len=y.len=0;
   8:     xfree(d);
   9:     d->len=1;
  10:     d->val=xalloc(1,"pow");
  11:     *d->val=1;
  12:     for(j=0;j<b->len;j++)
  13:     {   n=b->val[b->len-j-1];
  14:         for(i=0;i<15;i++)
  15:         {   mult(d,d,&x);
  16:             mdiv(&x,c,&y,d);
  17:             if((n=n<<1)&0100000)
  18:             {   mult(a,d,&x);
  19:                 mdiv(&x,c,&y,d);
  20:             }
  21:         }
  22:     }
  23:     xfree(&x);
  24:     xfree(&y);
  25:     return;
  26: }
  27: rpow(a,n,b) MINT *a,*b;
  28: {   MINT x,y;
  29:     int i;
  30:     x.len=1;
  31:     x.val=xalloc(1,"rpow");
  32:     *x.val=n;
  33:     y.len=n*a->len+4;
  34:     y.val=xalloc(y.len,"rpow2");
  35:     for(i=0;i<y.len;i++) y.val[i]=0;
  36:     y.val[y.len-1]=010000;
  37:     xfree(b);
  38:     pow(a,&x,&y,b);
  39:     xfree(&x);
  40:     xfree(&y);
  41:     return;
  42: }

Defined functions

pow defined in line 4; used 1 times
  • in line 38
rpow defined in line 27; never used
Last modified: 1983-07-26
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 711
Valid CSS Valid XHTML 1.0 Strict