§
    OŠtj  ã                   óÒ   — d dl mZmZmZ d dlmZ  G d„ de¦  «        Zej                             ee¦  «        d„ ¦   «         Z	ej                             ee¦  «        d„ ¦   «         Z
dS )é    )ÚKindÚ_NumberKindÚ
NumberKind)ÚMulc                   ó,   ‡ — e Zd ZdZefˆ fd„	Zd„ Zˆ xZS )Ú
MatrixKinda¶  
    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                 óZ   •— t          ¦   «                              | |¦  «        }||_        |S )N)ÚsuperÚ__new__Úelement_kind)Úclsr   ÚobjÚ	__class__s      €úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/kind.pyr   zMatrixKind.__new__@   s'   ø€ Ý‰gŒg�oŠo˜c <Ñ0Ô0ˆØ'ˆÔØˆ
ó    c                 ó   — d| j         z  S )NzMatrixKind(%s))r   )Úselfs    r   Ú__repr__zMatrixKind.__repr__E   s   € Ø $Ô"3Ñ3Ð3r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ú__classcell__)r   s   @r   r   r      s\   ø€ € € € € ð7ð 7ðp #-ð ð ð ð ð ð ð
4ð 4ð 4ð 4ð 4ð 4ð 4r   r   c                 ó†   — t          |t          ¦  «        s|| }} t          j        | |j        ¦  «        }t          |¦  «        S )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   sA   € õ �b�*Ñ%Ô%ð Ø�RˆBˆÝÔ   R¤_Ñ5Ô5€EÝ�eÑÔÐr   c                 ó^   — t          j        | j        |j        ¦  «        }t          |¦  «        S )zS
    Return MatrixKind. The element kind is selected by recursive dispatching.
    )r   r   r   r   r   s      r   Úmat_mat_mulr#   [   s(   € õ
 Ô  ¤°"´/ÑBÔB€EÝ�eÑÔÐr   N)Úsympy.core.kindr   r   r   Úsympy.core.mulr   r   r   Úregisterr!   r#   © r   r   ú<module>r(      sÊ   ðð :Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð ð?4ð ?4ð ?4ð ?4ð ?4�ñ ?4ô ?4ð ?4ðD Ô×Ò˜{¨JÑ7Ô7ðð ñ 8Ô7ðð" Ô×Ò˜z¨:Ñ6Ô6ðð ñ 7Ô6ðð ð r   