 //  THE SOFTWARE.
 //
 
-public protocol BinaryFixedPoint : Numeric, Hashable, CustomStringConvertible, ExpressibleByFloatLiteral where RepresentingValue.RawSignificand : FixedWidthInteger {
+public protocol BinaryFixedPoint : Numeric, Hashable, CustomStringConvertible, ExpressibleByFloatLiteral {
     
     associatedtype BitPattern : FixedWidthInteger
     

    }
}

extension BinaryFixedPoint {
    
    @_versioned
    @_inlineable
    static var _fractionOffset: Int {
        return Self.fractionalBitCount - RepresentingValue.significandBitCount
    }
    
    @_inlineable

                return 0
            } else {
                let _bitPattern = RepresentingValue.RawSignificand(bitPattern < 0 ? 0 - bitPattern : bitPattern)
                let exponent = Int(log2(_bitPattern)) - Self.fractionalBitCount
                let offset = Self._fractionOffset + exponent
                let exponentBitPattern = RepresentingValue.RawExponent(Self._exponentBias + exponent)
                let significandBitMask: RepresentingValue.RawSignificand = (1 << RepresentingValue.significandBitCount) - 1
                let significandBitPattern = (_bitPattern >> offset) & significandBitMask
                if BitPattern.isSigned {
                    return RepresentingValue(sign: bitPattern < 0 ? .minus : .plus, exponentBitPattern: exponentBitPattern, significandBitPattern: significandBitPattern)
                } else {
