static void
shift_subtract (p4udcell * u, p4ucell v)
{
int i = CELLBITS, c = 0;
p4ucell q = 0, h = u->hi, l = u->lo;
for (;;)
{
if (c || h >= v)
{
q++;
h -= v;
}
if (--i < 0)
break;
c = HIGHBIT (h);
h <<= 1;
h += HIGHBIT (l);
l <<= 1;
q <<= 1;
}
u->hi = h;
u->lo = q;
} |