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
Defined struct's
vl
defined in line
2; used 2 times