docs: def _divide(divisor, remainder, quotient, remainders, base, precision=None):
          """
          Given a divisor and dividend, continue until precision in is reached.
  
          :param int divisor: the divisor
          :param int remainder: the remainder
          :param int base: the base
          :param precision: maximum number of fractional digits to compute
          :type precision: int or NoneType
  
          :returns: the remainder
          :rtype: int
  
          ``quotient`` and ``remainders`` are set by side effects
  
          Complexity: O(precision) if precision is not None else O(divisor)
          """
          # pylint: disable=too-many-arguments
  
          indices = itertools.count() if precision is None else range(precision)
  
          for _ in indices:
              if remainder == 0 or remainder in remainders:
                  break
              remainders.append(remainder)
              (quot, rem) = divmod(remainder, divisor)
              quotient.append(quot)
              if quot > 0:
                  remainder = rem * base
              else:
                  remainder = remainder * base
          return remainder