 }
 
 // TODO conditional conformance - Matrix: Randomable
-/* FIXME
 public extension Matrix where R: Randomable {
     public static func rand(_ lowerBound: Int, _ upperBound: Int) -> Matrix<n, m, R> {
         return Matrix { (_, _) in  R.rand(lowerBound, upperBound) }

            }
        }
        
        return A
    }
}
*/

}

public extension Matrix where R: Randomable, n == m {
    public static func randRegular(_ size: Int? = nil, shuffle: Int = 50) -> Matrix<n, n, R> {
        let s = size ?? n.intValue
        let A = ComputationalMatrix<R>.identity(s)
        
        for _ in 0 ..< shuffle {
            let i = Int.rand(0, A.rows)
