1: /* Copyright (c) 1982, Regents, University of California */
   2: struct vl   { long high; long low; };
   3: 
   4: /*
   5:  * $Header $
   6:  * exarith(mul1,mul2,add,hi,lo)
   7:  *
   8:  * (hi,lo) gets 64 bit product + sum of mul1*mul2+add;
   9:  * routine returns non-zero if product is bigger than 30 bits
  10:  */
  11: 
  12: long exarith(mul1,mul2,add,hi,lo)
  13: long *hi, *lo;
  14: register long add;
  15: {
  16:     struct vl work;
  17:     register long rlo;
  18: 
  19:         emul(mul1,mul2,add,&work);
  20:         add = work.high;
  21:         add <<= 2;
  22:         if((rlo = work.low) < 0) add += 2;
  23:         if(rlo & 0x40000000) add += 1;
  24:         *lo = rlo &0x3fffffff;
  25:         (*hi = add);
  26:         if((add==0) || (add!=-1)) return(add);
  27:         *lo = rlo;
  28:         return(0);
  29: }

Defined functions

exarith defined in line 12; never used

Defined struct's

vl defined in line 2; used 2 times
  • in line 16(2)
Last modified: 1985-08-14
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 690
Valid CSS Valid XHTML 1.0 Strict