docs: def as_integer_ratio(self):
          """Return pair n, d of integers such that the value of self is
          exactly equal to n/d, n and d are relatively prime, and d >= 1.
  
          """
          if not is_finite(self):
              raise ValueError("Can't express infinity or nan as "
                               "an integer ratio")
          elif not self:
              return 0, 1
  
          # convert to a hex string, and from there to a fraction
          negative, digits, e = _mpfr_get_str2(
              16,
              0,
              self,
              ROUND_TIES_TO_EVEN,
          )
          digits = digits.rstrip('0')
  
          # find number of trailing 0 bits in last hex digit
          v = int(digits[-1], 16)
          v &= -v
          n, d = int(digits, 16) // v, 1
          e = (e - len(digits) << 2) + {1: 0, 2: 1, 4: 2, 8: 3}[v]
  
          # abs(number) now has value n * 2**e, and n is odd
          if e >= 0:
              n <<= e
          else:
              d <<= -e
  
          return (-n if negative else n), d