1from sympy.testing.pytest import raises 2from sympy import ( 3 Array, ImmutableDenseNDimArray, ImmutableSparseNDimArray, 4 MutableDenseNDimArray, MutableSparseNDimArray, sin, cos, 5 simplify, Matrix 6) 7from sympy.abc import x, y 8 9array_types = [ 10 ImmutableDenseNDimArray, 11 ImmutableSparseNDimArray, 12 MutableDenseNDimArray, 13 MutableSparseNDimArray 14] 15 16 17def test_array_negative_indices(): 18 for ArrayType in array_types: 19 test_array = ArrayType([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) 20 assert test_array[:, -1] == Array([5, 10]) 21 assert test_array[:, -2] == Array([4, 9]) 22 assert test_array[:, -3] == Array([3, 8]) 23 assert test_array[:, -4] == Array([2, 7]) 24 assert test_array[:, -5] == Array([1, 6]) 25 assert test_array[:, 0] == Array([1, 6]) 26 assert test_array[:, 1] == Array([2, 7]) 27 assert test_array[:, 2] == Array([3, 8]) 28 assert test_array[:, 3] == Array([4, 9]) 29 assert test_array[:, 4] == Array([5, 10]) 30 31 raises(ValueError, lambda: test_array[:, -6]) 32 raises(ValueError, lambda: test_array[-3, :]) 33 34 assert test_array[-1, -1] == 10 35 36 37def test_issue_18361(): 38 A = Array([sin(2 * x) - 2 * sin(x) * cos(x)]) 39 B = Array([sin(x)**2 + cos(x)**2, 0]) 40 C = Array([(x + x**2)/(x*sin(y)**2 + x*cos(y)**2), 2*sin(x)*cos(x)]) 41 assert simplify(A) == Array([0]) 42 assert simplify(B) == Array([1, 0]) 43 assert simplify(C) == Array([x + 1, sin(2*x)]) 44 45def test_issue_20222(): 46 A = Array([[1, 2], [3, 4]]) 47 B = Matrix([[1,2],[3,4]]) 48 raises(TypeError, lambda: A - B) 49