
    \h                         S SK JrJrJr  S SKJr   " S S\5      r\R                  R                  \\5      S 5       r	\R                  R                  \\5      S 5       r
g)    )Kind_NumberKind
NumberKind)Mulc                   8   ^  \ rS rSrSr\4U 4S jjrS rSrU =r	$ )
MatrixKind   a  
Kind for all matrices in SymPy.

Basic class for this kind is ``MatrixBase`` and ``MatrixExpr``,
but any expression representing the matrix can have this.

Parameters
==========

element_kind : Kind
    Kind of the element. Default is
    :class:`sympy.core.kind.NumberKind`,
    which means that the matrix contains only numbers.

Examples
========

Any instance of matrix class has kind ``MatrixKind``:

>>> from sympy import MatrixSymbol
>>> A = MatrixSymbol('A', 2, 2)
>>> A.kind
MatrixKind(NumberKind)

An expression representing a matrix may not be an instance of
the Matrix class, but it will have kind ``MatrixKind``:

>>> from sympy import MatrixExpr, Integral
>>> from sympy.abc import x
>>> intM = Integral(A, x)
>>> isinstance(intM, MatrixExpr)
False
>>> intM.kind
MatrixKind(NumberKind)

Use ``isinstance()`` to check for ``MatrixKind`` without specifying the
element kind. Use ``is`` to check the kind including the element kind:

>>> from sympy import Matrix
>>> from sympy.core import NumberKind
>>> from sympy.matrices import MatrixKind
>>> M = Matrix([1, 2])
>>> isinstance(M.kind, MatrixKind)
True
>>> M.kind is MatrixKind(NumberKind)
True

See Also
========

sympy.core.kind.NumberKind
sympy.core.kind.UndefinedKind
sympy.core.containers.TupleKind
sympy.sets.sets.SetKind

c                 2   > [         TU ]  X5      nXl        U$ )N)super__new__element_kind)clsr   obj	__class__s      K/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/kind.pyr   MatrixKind.__new__@   s    goc0'
    c                      SU R                   -  $ )NzMatrixKind(%s))r   )selfs    r   __repr__MatrixKind.__repr__E   s    $"3"333r    )
__name__
__module____qualname____firstlineno____doc__r   r   r   __static_attributes____classcell__)r   s   @r   r   r      s    7p #- 
4 4r   r   c                     [        U[        5      (       d  Xp[        R                  " XR                  5      n[        U5      $ )z
Return MatrixKind. The element kind is selected by recursive dispatching.
Do not need to dispatch in reversed order because KindDispatcher
searches for this automatically.
)
isinstancer   r   _kind_dispatcherr   k1k2elemks      r   num_mat_mulr'   I   s5     b*%%B  __5Eer   c                 n    [         R                  " U R                  UR                  5      n[        U5      $ )zK
Return MatrixKind. The element kind is selected by recursive dispatching.
)r   r"   r   r   r#   s      r   mat_mat_mulr)   [   s)    
   "//BEer   N)sympy.core.kindr   r   r   sympy.core.mulr   r   r"   registerr'   r)   r   r   r   <module>r-      sk    : 9 ?4 ?4D {J7 8" z:6 7r   