/*
* call-seq:
* fix >> count => integer
*
* Shifts _fix_ right _count_ positions (left if _count_ is negative).
*/
static VALUE
fix_rshift(x, y)
VALUE x, y;
{
long i, val;
i = NUM2LONG(y);
if (i < 0)
return fix_lshift(x, LONG2FIX(-i));
if (i == 0) return x;
val = FIX2LONG(x);
if (i >= sizeof(long)*CHAR_BIT-1) {
if (val < 0) return INT2FIX(-1);
return INT2FIX(0);
}
val = RSHIFT(val, i);
return LONG2FIX(val);
}