public static void Display(int[,] matrix) { for (int i = 0; i < matrix.Rows(); i++) { for (int j = 0; j < matrix.Cols(); j++) { Console.Write("{0,4}", matrix[i, j]); } Console.WriteLine(); } }
private static void Calculate(int index, int[,] matrix1, int[,] matrix2, int[,] resultMatrix) { int[] i2d = ConvertTo2dIndex(index, resultMatrix.Cols()); int result = 0; for (int i = 0; i < matrix1.Cols(); i++) { result += matrix1[i2d[0], i] * matrix2[i, i2d[1]]; } resultMatrix[i2d[0], i2d[1]] = result; }
public static int[,] Multiply(int[,] matrix1, int[,] matrix2) { if (matrix1.Cols() != matrix2.Rows()) { throw new InvalidOperationException("Error"); } int[,] result = new int[matrix1.Rows(), matrix2.Cols()]; Parallel.For(0, result.Length, (index) => { Calculate(index, matrix1, matrix2, result); }); return(result); }