def __long__(self): if gmp.mpz_fits_slong_p(self._mpz): return long(gmp.mpz_get_si(self._mpz)) elif gmp.mpz_fits_ulong_p(self._mpz): return gmp.mpz_get_ui(self._mpz) else: return _mpz_to_pylong(self._mpz)
def __rshift__(self, other): if not isinstance(other, (int, long, mpz)): return NotImplemented oth = gmp.mpz_get_ui(other._mpz) if isinstance(other, mpz) else other res = _new_mpz() gmp.mpz_fdiv_q_2exp(res, self._mpz, oth) return mpz._from_c_mpz(res)