     }
 }
 
+/// Shift a big integer to the right by `amount` bits and return the result.
+/// - Returns: b / 2^amount
+/// - Complexity: O(count)
 @warn_unused_result
 public func >> (b: BigUInt, amount: Int) -> BigUInt {
     typealias Digit = BigUInt.Digit

    }

    /// Divide this integer by the digit `y` and return the resulting quotient and remainder.
    @warn_unused_result
    /// - Requires: y > 0
    /// - Returns: (div, mod) where div = floor(x/y), mod = x - div * y
    /// - Complexity: O(x.count)
    public func divideByDigit(y: Digit) -> (div: BigUInt, mod: Digit) {
        var div = self
        let mod = div.divideInPlaceByDigit(y)

        return (count, power)
    }

    /// Initialize a big integer from an ASCII representation in a given radix. Numerals above `9` are represented by
    /// letters from the English alphabet.
    ///
    /// - Requires: `radix > 1 && radix < 36`
    /// - Parameter `text`: A string consisting of characters corresponding to numerals in the given radix. (0-9, a-z, A-Z)
    /// - Parameter `radix`: The base of the number system to use, or 10 if unspecified.
    /// - Returns: The integer represented by `text`, or nil if `text` contains a character that does not represent a numeral in `radix`.
    public init?(_ text: String, radix: Int = 10) {
        precondition(radix > 1)
        let (charsPerDigit, power) = BigUInt.charsPerDigitForRadix(radix)
