version 1.4, 2003/08/25 14:17:51
|
version 1.5, 2006/10/22 16:54:00
|
Line 81 UDCell umdiv (UDCell u, UCell v)
|
Line 81 UDCell umdiv (UDCell u, UCell v)
|
UCell q = 0, h = u.hi, l = u.lo; |
UCell q = 0, h = u.hi, l = u.lo; |
UDCell res; |
UDCell res; |
|
|
|
if (v==0) |
|
throw(BALL_DIVZERO); |
|
if (h>=v) |
|
throw(BALL_RESULTRANGE); |
for (;;) |
for (;;) |
{ |
{ |
if (c || h >= v) |
if (c || h >= v) |
Line 112 DCell smdiv (DCell num, Cell denom) /* s
|
Line 116 DCell smdiv (DCell num, Cell denom) /* s
|
if (denomsign < 0) |
if (denomsign < 0) |
denom = -denom; |
denom = -denom; |
res = UD2D(umdiv (D2UD(num), denom)); |
res = UD2D(umdiv (D2UD(num), denom)); |
if ((numsign^denomsign)<0) |
if (res.lo >= (UCell)CELL_MIN) |
|
throw(BALL_RESULTRANGE); |
|
if ((numsign^denomsign)<0) { |
|
if (res.lo == CELL_MIN) |
|
throw(BALL_RESULTRANGE); |
res.lo = -res.lo; |
res.lo = -res.lo; |
|
} |
if (numsign<0) |
if (numsign<0) |
res.hi = -res.hi; |
res.hi = -res.hi; |
return res; |
return res; |
Line 132 DCell fmdiv (DCell num, Cell denom) /* f
|
Line 141 DCell fmdiv (DCell num, Cell denom) /* f
|
if (num.hi < 0) |
if (num.hi < 0) |
num.hi += denom; |
num.hi += denom; |
res = UD2D(umdiv(D2UD(num),denom)); |
res = UD2D(umdiv(D2UD(num),denom)); |
|
if (res.lo >= (UCell)CELL_MIN) |
|
throw(BALL_RESULTRANGE); |
if (denomsign<0) |
if (denomsign<0) |
res.hi = -res.hi; |
res.hi = -res.hi; |
return res; |
return res; |