/* * 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); }