test_ndim_array.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from sympy.testing.pytest import raises
  2. from sympy.functions.elementary.trigonometric import sin, cos
  3. from sympy.matrices.dense import Matrix
  4. from sympy.simplify import simplify
  5. from sympy.tensor.array import Array
  6. from sympy.tensor.array.dense_ndim_array import (
  7. ImmutableDenseNDimArray, MutableDenseNDimArray)
  8. from sympy.tensor.array.sparse_ndim_array import (
  9. ImmutableSparseNDimArray, MutableSparseNDimArray)
  10. from sympy.abc import x, y
  11. mutable_array_types = [
  12. MutableDenseNDimArray,
  13. MutableSparseNDimArray
  14. ]
  15. array_types = [
  16. ImmutableDenseNDimArray,
  17. ImmutableSparseNDimArray,
  18. MutableDenseNDimArray,
  19. MutableSparseNDimArray
  20. ]
  21. def test_array_negative_indices():
  22. for ArrayType in array_types:
  23. test_array = ArrayType([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
  24. assert test_array[:, -1] == Array([5, 10])
  25. assert test_array[:, -2] == Array([4, 9])
  26. assert test_array[:, -3] == Array([3, 8])
  27. assert test_array[:, -4] == Array([2, 7])
  28. assert test_array[:, -5] == Array([1, 6])
  29. assert test_array[:, 0] == Array([1, 6])
  30. assert test_array[:, 1] == Array([2, 7])
  31. assert test_array[:, 2] == Array([3, 8])
  32. assert test_array[:, 3] == Array([4, 9])
  33. assert test_array[:, 4] == Array([5, 10])
  34. raises(ValueError, lambda: test_array[:, -6])
  35. raises(ValueError, lambda: test_array[-3, :])
  36. assert test_array[-1, -1] == 10
  37. def 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. def test_issue_20222():
  45. A = Array([[1, 2], [3, 4]])
  46. B = Matrix([[1,2],[3,4]])
  47. raises(TypeError, lambda: A - B)
  48. def test_issue_17851():
  49. for array_type in array_types:
  50. A = array_type([])
  51. assert isinstance(A, array_type)
  52. assert A.shape == (0,)
  53. assert list(A) == []
  54. def test_issue_and_18715():
  55. for array_type in mutable_array_types:
  56. A = array_type([0, 1, 2])
  57. A[0] += 5
  58. assert A[0] == 5