1: /*	@(#)gcd.c	4.1	12/25/82	*/
   2: 
   3: #include <mp.h>
   4: gcd(a,b,c) MINT *a,*b,*c;
   5: {   MINT x,y,z,w;
   6:     x.len=y.len=z.len=w.len=0;
   7:     move(a,&x);
   8:     move(b,&y);
   9:     while(y.len!=0)
  10:     {   mdiv(&x,&y,&w,&z);
  11:         move(&y,&x);
  12:         move(&z,&y);
  13:     }
  14:     move(&x,c);
  15:     xfree(&x);
  16:     xfree(&y);
  17:     xfree(&z);
  18:     xfree(&w);
  19:     return;
  20: }
  21: invert(a, b, c) MINT *a, *b, *c;
  22: {   MINT x, y, z, w, Anew, Aold;
  23:     int i = 0;
  24:     x.len = y.len = z.len = w.len = Aold.len = 0;
  25:     Anew.len = 1;
  26:     Anew.val = xalloc(1);
  27:     *Anew.val = 1;
  28:     move(b, &x);
  29:     move(a, &y);
  30:     while(y.len != 0)
  31:     {   mdiv(&x, &y, &w, &z);
  32:         move(&Anew, &x);
  33:         mult(&w, &Anew, &Anew);
  34:         madd(&Anew, &Aold, &Anew);
  35:         move(&x, &Aold);
  36:         move(&y, &x);
  37:         move(&z, &y);
  38:         i++;
  39:     }
  40:     move(&Aold, c);
  41:     if( (i&01) == 0) msub(b, c, c);
  42:     xfree(&x);
  43:     xfree(&y);
  44:     xfree(&z);
  45:     xfree(&w);
  46:     xfree(&Aold);
  47:     xfree(&Anew);
  48: }

Defined functions

gcd defined in line 4; never used
invert defined in line 21; never used
Last modified: 1983-07-26
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 692
Valid CSS Valid XHTML 1.0 Strict