 
 public protocol ScalarMultiplicative : AdditiveArithmetic {
     
-    associatedtype Scalar : ScalarMultiplicative where Scalar == Scalar.Scalar
+    associatedtype Scalar : ScalarProtocol
     
     static prefix func - (x: Self) -> Self
     

    
    @inlinable
    @inline(__always)
    public static func * (lhs: Scalar, rhs: Self) -> Self {
        return rhs.map { lhs * $0 }
    }
    @inlinable
    @inline(__always)
    public static func * (lhs: Self, rhs: Scalar) -> Self {
        return lhs.map { $0 * rhs }
    }
    @inlinable
    @inline(__always)
    public static func / (lhs: Self, rhs: Scalar) -> Self {
        return lhs.map { $0 / rhs }
    }
    @inlinable
    @inline(__always)
    public static func *= (lhs: inout Self, rhs: Scalar) {
        lhs = lhs * rhs
    }
    @inlinable
    @inline(__always)
    public static func /= (lhs: inout Self, rhs: Scalar) {
        lhs = lhs / rhs
    }
}

//  THE SOFTWARE.
//

public protocol ScalarProtocol: SignedNumeric, Strideable, ExpressibleByFloatLiteral, Multiplicative, ScalarMultiplicative where Self == Scalar {
    
    static func * (lhs: Self, rhs: Self) -> Self
    
