Ejemplo n.º 1
0
 def test_matmul(self) -> None:
     self.assertEqual(rows((range(3), range(3, 6))) @ rows((range(6, 9), range(9, 12))), 145)
     self.assertEqual(row(range(5, -1, -1)) @ row(range(6)), 20)
     self.assertEqual(column(range(5, -1, -1)) @ column(range(6)), 20)
     self.assertEqual(vector(range(5, -1, -1)) @ vector(range(6)), 20)
     self.assertRaises(DimensionError, matmul, row(range(5)), column(range(5)))
     self.assertRaises(DimensionError, matmul, row(range(5)), row(range(6)))
Ejemplo n.º 2
0
    def test_getitem(self) -> None:
        self.assertEqual(rows((range(3), range(3, 6)))[4], 4)
        self.assertEqual(row(range(6))[4], 4)
        self.assertEqual(column(range(6))[4], 4)
        self.assertEqual(vector(range(6))[4], 4)

        self.assertIterableEqual(rows((range(3), range(3, 6)))[2:5], range(2, 5))
        self.assertIterableEqual(row(range(6))[2:5], range(2, 5))
        self.assertIterableEqual(column(range(6))[2:5], range(2, 5))
        self.assertIterableEqual(vector(range(6))[2:5], range(2, 5))
Ejemplo n.º 3
0
 def test_add(self) -> None:
     self.assertEqual(
         rows((range(3), range(3, 6))) + rows((range(6, 9), range(9, 12))), rows(((6, 8, 10), (12, 14, 16))))
     self.assertEqual(row(range(5, -1, -1)) + row(range(6)), row((5,) * 6))
     self.assertEqual(column(range(5, -1, -1)) + column(range(6)), column((5,) * 6))
     self.assertEqual(vector(range(5, -1, -1)) + vector(range(6)), vector((5,) * 6))
     self.assertRaises(TypeError, add, row(range(5)), 5)
     self.assertRaises(DimensionError, add, row(range(5)), column(range(5)))
     self.assertRaises(DimensionError, add, row(range(5)), row(range(6)))
     self.assertRaises(DimensionError, add, row(range(5)), vector(range(5)))
Ejemplo n.º 4
0
 def test_mul(self) -> None:
     self.assertEqual(
         rows((range(3), range(3, 6))) * rows((range(2), range(2, 4), range(4, 6))), rows(((10, 13), (28, 40))))
     self.assertEqual(row(range(5, -1, -1)) * column(range(6)), singleton_matrix(20))
     self.assertEqual(column(range(6)) * row(range(6)), rows((
         (0,) * 6, range(6), range(0, 12, 2), range(0, 18, 3), range(0, 24, 4), range(0, 30, 5),
     )))
     self.assertEqual(row(range(5, -1, -1)) * vector(range(6)), singleton_vector(20))
     self.assertRaises(DimensionError, mul, row(range(5)), row(range(5)))
     self.assertRaises(DimensionError, mul, row(range(5)), column(range(6)))
Ejemplo n.º 5
0
    def test_getitem(self) -> None:
        self.assertIterableEqual(rows((range(3), range(3, 6)))[::-1], reversed(range(6)))
        self.assertIterableEqual(row(range(6))[::-1], reversed(range(6)))
        self.assertIterableEqual(column(range(6))[::-1], reversed(range(6)))

        self.assertEqual(rows((range(3), range(3, 6)))[1, 1], 4)
        self.assertEqual(row(range(6))[0, 4], 4)
        self.assertEqual(column(range(6))[4, 0], 4)

        self.assertEqual(rows((range(3), range(3, 6)))[:, :], rows((range(3), range(3, 6))))
        self.assertEqual(row(range(6))[:, :], row(range(6)))
        self.assertEqual(column(range(6))[:, :], column(range(6)))

        self.assertEqual(rows((range(3), range(3, 6)))[:, :2], rows((range(2), range(3, 5))))
        self.assertEqual(row(range(6))[0, :], row(range(6)))
        self.assertEqual(column(range(6))[:, 0], column(range(6)))
Ejemplo n.º 6
0
 def test_rows(self) -> None:
     self.assert2DIterableEqual(row(range(5)).rows, (range(5),))
     self.assert2DIterableEqual(column(range(5)).rows, ((0,), (1,), (2,), (3,), (4,)))
     self.assert2DIterableEqual(Matrix(range(6), (2, 3)).rows, (range(3), range(3, 6)))
Ejemplo n.º 7
0
 def test_abs(self) -> None:
     self.assertAlmostEqual(abs(rows((range(3), range(3, 6)))), 7.416198487095663)
     self.assertAlmostEqual(abs(row(range(6))), 7.416198487095663)
     self.assertAlmostEqual(abs(column(range(6))), 7.416198487095663)
Ejemplo n.º 8
0
 def test_div(self) -> None:
     self.assertEqual(rows((range(0, 15, 5), range(15, 30, 5))) / 5, rows((range(3), range(3, 6))))
     self.assertEqual(row(range(25, -1, -5)) / 5, row(range(5, -1, -1)))
     self.assertEqual(column(range(25, -1, -5)) / 5, column(range(5, -1, -1)))
     self.assertEqual(vector(range(25, -1, -5)) / 5, vector(range(5, -1, -1)))
Ejemplo n.º 9
0
 def test_rmul(self) -> None:
     self.assertEqual(5 * rows((range(3), range(3, 6))), rows((range(0, 15, 5), range(15, 30, 5))))
     self.assertEqual(5 * row(range(5, -1, -1)), row(range(25, -1, -5)))
     self.assertEqual(5 * column(range(5, -1, -1)), column(range(25, -1, -5)))
     self.assertEqual(5 * vector(range(5, -1, -1)), vector(range(25, -1, -5)))
Ejemplo n.º 10
0
 def test_sub(self) -> None:
     self.assertEqual(
         rows((range(3), range(3, 6))) - rows((range(6, 9), range(9, 12))), rows(((-6, -6, -6), (-6, -6, -6))))
     self.assertEqual(row(range(5, -1, -1)) - row(range(6)), row(range(5, -6, -2)))
     self.assertEqual(column(range(5, -1, -1)) - column(range(6)), column(range(5, -6, -2)))
     self.assertEqual(vector(range(5, -1, -1)) - vector(range(6)), vector(range(5, -6, -2)))
Ejemplo n.º 11
0
 def test_norm(self) -> None:
     self.assertAlmostEqual(norm(row((1 / sqrt(2), 1 / sqrt(2)))), 1)
     self.assertAlmostEqual(norm(column((1, 0, 0))), 1)
     self.assertAlmostEqual(norm(vector(range(5))), abs(vector(range(5))))
     self.assertAlmostEqual(norm(identity_matrix(2)), sqrt(2))
Ejemplo n.º 12
0
 def test_one_matrix(self) -> None:
     self.assertEqual(one_matrix(0), empty_matrix())
     self.assertEqual(one_matrix(5), rows(((1,) * 5, (1,) * 5, (1,) * 5, (1,) * 5, (1,) * 5)))
     self.assertEqual(one_matrix(5, 5), rows(((1,) * 5, (1,) * 5, (1,) * 5, (1,) * 5, (1,) * 5)))
     self.assertEqual(one_matrix(1, 5), row((1,) * 5))
     self.assertEqual(one_matrix(5, 1), column((1,) * 5))
Ejemplo n.º 13
0
 def test_columns(self) -> None:
     self.assert2DIterableEqual(row(range(5)).columns, ((0,), (1,), (2,), (3,), (4,)))
     self.assert2DIterableEqual(column(range(5)).columns, (range(5),))
     self.assert2DIterableEqual(Matrix(range(6), (2, 3)).columns, ((0, 3), (1, 4), (2, 5)))
Ejemplo n.º 14
0
 def test_row(self) -> None:
     self.assertEqual(row(()).dimensions, (1, 0))
     self.assertEqual(row(range(10)), rows((range(10),)))
     self.assertEqual(row(tuple(map(partial(pow, 2), range(5)))), rows(((1, 2, 4, 8, 16),)))
Ejemplo n.º 15
0
 def test_neg(self) -> None:
     self.assertEqual(-rows((range(3), range(3, 6))), rows((range(0, -3, -1), range(-3, -6, -1))))
     self.assertEqual(-row(range(6)), rows((range(0, -6, -1),)))
     self.assertEqual(-column(range(6)), rows(tuple((-x,) for x in range(6))))
     self.assertEqual(-vector(range(6)), vector(range(0, -6, -1)))
Ejemplo n.º 16
0
 def test_pos(self) -> None:
     self.assertEqual(+rows((range(3), range(3, 6))), rows((range(3), range(3, 6))))
     self.assertEqual(+row(range(6)), row(range(6)))
     self.assertEqual(+column(range(6)), column(range(6)))
     self.assertEqual(+vector(range(6)), vector(range(6)))
Ejemplo n.º 17
0
 def test_pow(self) -> None:
     self.assertEqual(rows((range(3), range(3, 6))) ** 'T', rows(((0, 3), (1, 4), (2, 5))))
     self.assertEqual(row(range(6)) ** 'T', column(range(6)))
     self.assertEqual(column(range(6)) ** 'T', row(range(6)))