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

Defined functions

pow defined in line 2; used 1 times
  • in line 36
rpow defined in line 25; used 3 times
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 592
Valid CSS Valid XHTML 1.0 Strict