
    MZd$                     N    d dl mZ d dlmZmZ d dlmZ d dlmZ  G d de      Z	y)    )Basic)adjoint	conjugate)	transpose)
MatrixExprc                   X    e Zd ZdZdZd Zed        Zed        Zd Z	d Z
d Zd	 Zd
 Zy)Adjointa,  
    The Hermitian adjoint of a matrix expression.

    This is a symbolic object that simply stores its argument without
    evaluating it. To actually compute the adjoint, use the ``adjoint()``
    function.

    Examples
    ========

    >>> from sympy import MatrixSymbol, Adjoint, adjoint
    >>> A = MatrixSymbol('A', 3, 5)
    >>> B = MatrixSymbol('B', 5, 3)
    >>> Adjoint(A*B)
    Adjoint(A*B)
    >>> adjoint(A*B)
    Adjoint(B)*Adjoint(A)
    >>> adjoint(A*B) == Adjoint(A*B)
    False
    >>> adjoint(A*B) == Adjoint(A*B).doit()
    True
    Tc                     | j                   }|j                  dd      r+t        |t              rt	         |j
                  di |      S t	        | j                         S )NdeepT )argget
isinstancer   r   doit)selfhintsr   s      D/usr/lib/python3/dist-packages/sympy/matrices/expressions/adjoint.pyr   zAdjoint.doit    sJ    hh99VT"z#u'=8388,e,--488$$    c                      | j                   d   S )Nr   )argsr   s    r   r   zAdjoint.arg'   s    yy|r   c                 :    | j                   j                  d d d   S )N)r   shaper   s    r   r   zAdjoint.shape+   s    xx~~dd##r   c                 P    t         | j                  j                  ||fi |      S N)r   r   _entry)r   ijkwargss       r   r   zAdjoint._entry/   s#    A8899r   c                     | j                   S r   )r   r   s    r   _eval_adjointzAdjoint._eval_adjoint2   s    xxr   c                 ,    t        | j                        S r   )r   r   r   s    r   _eval_conjugatezAdjoint._eval_conjugate5       ""r   c                 D    ddl m} t         || j                              S )Nr   )Trace) sympy.matrices.expressions.tracer'   r   r   )r   r'   s     r   _eval_tracezAdjoint._eval_trace8   s    :txx))r   c                 ,    t        | j                        S r   )r   r   r   s    r   _eval_transposezAdjoint._eval_transpose<   r%   r   N)__name__
__module____qualname____doc__
is_Adjointr   propertyr   r   r   r"   r$   r)   r+   r   r   r   r	   r	      sT    , J%   $ $:#*#r   r	   N)

sympy.corer   sympy.functionsr   r   $sympy.matrices.expressions.transposer   "sympy.matrices.expressions.matexprr   r	   r   r   r   <module>r6      s     . : 96#j 6#r   