from sympy.core.add import Add from sympy.core.kind import NumberKind, UndefinedKind from sympy.core.mul import Mul from sympy.core.numbers import pi, zoo, I, AlgebraicNumber from sympy.core.singleton import S from sympy.core.symbol import Symbol from sympy.integrals.integrals import Integral from sympy.core.function import Derivative from sympy.matrices import (Matrix, SparseMatrix, ImmutableMatrix, ImmutableSparseMatrix, MatrixSymbol, MatrixKind, MatMul) comm_x = Symbol('x') noncomm_x = Symbol('x', commutative=False) def test_NumberKind(): assert S.One.kind is NumberKind assert pi.kind is NumberKind assert S.NaN.kind is NumberKind assert zoo.kind is NumberKind assert I.kind is NumberKind assert AlgebraicNumber(1).kind is NumberKind def test_Add_kind(): assert Add(2, 3, evaluate=False).kind is NumberKind assert Add(2,comm_x).kind is NumberKind assert Add(2,noncomm_x).kind is UndefinedKind def test_mul_kind(): assert Mul(2,comm_x, evaluate=False).kind is NumberKind assert Mul(2,3, evaluate=False).kind is NumberKind assert Mul(noncomm_x,2, evaluate=False).kind is UndefinedKind assert Mul(2,noncomm_x, evaluate=False).kind is UndefinedKind def test_Symbol_kind(): assert comm_x.kind is NumberKind assert noncomm_x.kind is UndefinedKind def test_Integral_kind(): A = MatrixSymbol('A', 2,2) assert Integral(comm_x, comm_x).kind is NumberKind assert Integral(A, comm_x).kind is MatrixKind(NumberKind) def test_Derivative_kind(): A = MatrixSymbol('A', 2,2) assert Derivative(comm_x, comm_x).kind is NumberKind assert Derivative(A, comm_x).kind is MatrixKind(NumberKind) def test_Matrix_kind(): classes = (Matrix, SparseMatrix, ImmutableMatrix, ImmutableSparseMatrix) for cls in classes: m = cls.zeros(3, 2) assert m.kind is MatrixKind(NumberKind) def test_MatMul_kind(): M = Matrix([[1,2],[3,4]]) assert MatMul(2, M).kind is MatrixKind(NumberKind) assert MatMul(comm_x, M).kind is MatrixKind(NumberKind)