internal static void refmul <M, N, T>(Matrix256 <M, N, T> A, Block256 <N, T> B, Block256 <M, T> X) where M : unmanaged, ITypeNat where N : unmanaged, ITypeNat where T : unmanaged { var m = nat32i <M>(); for (var i = 0; i < m; i++) { X[i] = t_dot.dot(A.GetRow(i), B); } }
static ref Matrix256 <M, N, double> Mul <M, K, N>(Matrix256 <M, K, double> A, Matrix256 <K, N, double> B, ref Matrix256 <M, N, double> X) where M : unmanaged, ITypeNat where K : unmanaged, ITypeNat where N : unmanaged, ITypeNat { var m = nat32i <M>(); var n = nat32i <N>(); for (var i = 0; i < m; i++) { var row = A.GetRow(i); for (var j = 0; j < n; j++) { var col = B.GetCol(j); X[i, j] = Dot(row, col); } } return(ref X); }