test_kind.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from sympy.core.add import Add
  2. from sympy.core.kind import NumberKind, UndefinedKind
  3. from sympy.core.mul import Mul
  4. from sympy.core.numbers import pi, zoo, I, AlgebraicNumber
  5. from sympy.core.singleton import S
  6. from sympy.core.symbol import Symbol
  7. from sympy.integrals.integrals import Integral
  8. from sympy.core.function import Derivative
  9. from sympy.matrices import (Matrix, SparseMatrix, ImmutableMatrix,
  10. ImmutableSparseMatrix, MatrixSymbol, MatrixKind, MatMul)
  11. comm_x = Symbol('x')
  12. noncomm_x = Symbol('x', commutative=False)
  13. def test_NumberKind():
  14. assert S.One.kind is NumberKind
  15. assert pi.kind is NumberKind
  16. assert S.NaN.kind is NumberKind
  17. assert zoo.kind is NumberKind
  18. assert I.kind is NumberKind
  19. assert AlgebraicNumber(1).kind is NumberKind
  20. def test_Add_kind():
  21. assert Add(2, 3, evaluate=False).kind is NumberKind
  22. assert Add(2,comm_x).kind is NumberKind
  23. assert Add(2,noncomm_x).kind is UndefinedKind
  24. def test_mul_kind():
  25. assert Mul(2,comm_x, evaluate=False).kind is NumberKind
  26. assert Mul(2,3, evaluate=False).kind is NumberKind
  27. assert Mul(noncomm_x,2, evaluate=False).kind is UndefinedKind
  28. assert Mul(2,noncomm_x, evaluate=False).kind is UndefinedKind
  29. def test_Symbol_kind():
  30. assert comm_x.kind is NumberKind
  31. assert noncomm_x.kind is UndefinedKind
  32. def test_Integral_kind():
  33. A = MatrixSymbol('A', 2,2)
  34. assert Integral(comm_x, comm_x).kind is NumberKind
  35. assert Integral(A, comm_x).kind is MatrixKind(NumberKind)
  36. def test_Derivative_kind():
  37. A = MatrixSymbol('A', 2,2)
  38. assert Derivative(comm_x, comm_x).kind is NumberKind
  39. assert Derivative(A, comm_x).kind is MatrixKind(NumberKind)
  40. def test_Matrix_kind():
  41. classes = (Matrix, SparseMatrix, ImmutableMatrix, ImmutableSparseMatrix)
  42. for cls in classes:
  43. m = cls.zeros(3, 2)
  44. assert m.kind is MatrixKind(NumberKind)
  45. def test_MatMul_kind():
  46. M = Matrix([[1,2],[3,4]])
  47. assert MatMul(2, M).kind is MatrixKind(NumberKind)
  48. assert MatMul(comm_x, M).kind is MatrixKind(NumberKind)