def test_square_matrix_multiply_strassen(self): """ strassenのアルゴリズムの結果が定義通りの計算の結果と一致することを確認する。 """ # nは2のベキである必要がある n = 2**randint(1, 4) A = [[randint(-100, 100) for _ in range(n)] for _ in range(n)] B = [[randint(-100, 100) for _ in range(n)] for _ in range(n)] result1 = square_matrix_multiply(A, B) result2 = square_matrix_multiply_strassen(A, B) self.assertEqual(result1, result2)
def test_noncommunicative(self): a = [[1, 1], [0, 1]] b = [[0, 1], [0, 1]] c = [[0, 2], [0, 1]] self.assertEqual(c, square_matrix_multiply(a, b))
def test_2by2(self): a = [[2, 1], [1, 2]] b = [[1, 2], [2, 1]] c = [[4, 5], [5, 4]] self.assertEqual(c, square_matrix_multiply(a, b))
def test_3by3(self): a = [[9, 8, 7], [6, 5, 4], [3, 2, 1]] b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] c = [[90, 114, 138], [54, 69, 84], [18, 24, 30]] self.assertEqual(c, square_matrix_multiply(a, b))