o
    oÇhë  ã                   @   s<   d dl mZ d dlmZmZ d dlmZ G dd„ deƒZdS )é    )ÚBasic)ÚadjointÚ	conjugate)Ú
MatrixExprc                   @   s\   e Zd ZdZdZdd„ Zedd„ ƒZedd„ ƒZd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú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                 K   s:   | j }| dd¡rt|tƒrt|jdi |¤ŽƒS t| j ƒS )NÚdeepT© )ÚargÚgetÚ
isinstancer   r   Údoit)ÚselfÚhintsr	   r   r   úv/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/matrices/expressions/adjoint.pyr      s   
zAdjoint.doitc                 C   s
   | j d S )Nr   )Úargs©r   r   r   r   r	   &   s   
zAdjoint.argc                 C   s   | j jd d d… S )Néÿÿÿÿ)r	   Úshaper   r   r   r   r   *   s   zAdjoint.shapec                 K   s   t | jj||fi |¤ŽƒS ©N)r   r	   Ú_entry)r   ÚiÚjÚkwargsr   r   r   r   .   s   zAdjoint._entryc                 C   s   | j S r   )r	   r   r   r   r   Ú_eval_adjoint1   s   zAdjoint._eval_adjointc                 C   ó
   | j  ¡ S r   )r	   r   r   r   r   r   Ú_eval_transpose4   ó   
zAdjoint._eval_transposec                 C   r   r   )r	   Ú	transposer   r   r   r   Ú_eval_conjugate7   r   zAdjoint._eval_conjugatec                 C   s   ddl m} t|| jƒƒS )Nr   )ÚTrace)Ú sympy.matrices.expressions.tracer   r   r	   )r   r   r   r   r   Ú_eval_trace:   s   zAdjoint._eval_traceN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
is_Adjointr   Úpropertyr	   r   r   r   r   r   r!   r   r   r   r   r      s    

r   N)Ú
sympy.corer   Úsympy.functionsr   r   Ú"sympy.matrices.expressions.matexprr   r   r   r   r   r   Ú<module>   s    