
    sgU
                     d    d dl mZ d dlmZ  G d de      Zd Zd dlmZmZ d dl	m
Z
 d Zee
d<   y	)
    )Basic)
MatrixExprc                   l    e Zd ZdZdZd Zed        Zed        ZddZ	d Z
d Zd	 Zd
 Zd Zd Zd Zy)	Transposea1  
    The transpose of a matrix expression.

    This is a symbolic object that simply stores its argument without
    evaluating it. To actually compute the transpose, use the ``transpose()``
    function, or the ``.T`` attribute of matrices.

    Examples
    ========

    >>> from sympy import MatrixSymbol, Transpose, transpose
    >>> A = MatrixSymbol('A', 3, 5)
    >>> B = MatrixSymbol('B', 5, 3)
    >>> Transpose(A)
    A.T
    >>> A.T == transpose(A) == Transpose(A)
    True
    >>> Transpose(A*B)
    (A*B).T
    >>> transpose(A*B)
    B.T*A.T

    Tc                     | j                   }|j                  dd      r"t        |t              r |j                  di |}t        |dd       }| |       }||S t        |      S t        |      S )NdeepT_eval_transpose )argget
isinstancer   doitgetattrr   )selfhintsr   r	   results        W/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/expressions/transpose.pyr   zTranspose.doit   sp    hh99VT"z#u'=#((#U#C!#'8$?&$&F#/6CYs^CS>!    c                      | j                   d   S Nr   )argsr   s    r   r   zTranspose.arg*   s    yy|r   c                 :    | j                   j                  d d d   S )N)r   shaper   s    r   r   zTranspose.shape.   s    xx~~dd##r   c                 B     | j                   j                  ||fd|i|S )Nexpand)r   _entry)r   ijr   kwargss        r   r   zTranspose._entry2   s#    txxq!=F=f==r   c                 6    | j                   j                         S N)r   	conjugater   s    r   _eval_adjointzTranspose._eval_adjoint5   s    xx!!##r   c                 6    | j                   j                         S r#   )r   adjointr   s    r   _eval_conjugatezTranspose._eval_conjugate8   s    xx!!r   c                     | j                   S r#   )r   r   s    r   r	   zTranspose._eval_transpose;   s    xxr   c                 2    ddl m}  || j                        S )N   )Trace)tracer,   r   )r   r,   s     r   _eval_tracezTranspose._eval_trace>   s     TXXr   c                 2    ddl m}  || j                        S )Nr   )det)&sympy.matrices.expressions.determinantr0   r   )r   r0   s     r   _eval_determinantzTranspose._eval_determinantB   s    >488}r   c                 8    | j                   j                  |      S r#   )r   _eval_derivative)r   xs     r   r4   zTranspose._eval_derivativeF   s    xx((++r   c                     | j                   d   j                  |      }|D cg c]  }|j                          c}S c c}w r   )r   _eval_derivative_matrix_lines	transpose)r   r5   linesr   s       r   r7   z'Transpose._eval_derivative_matrix_linesJ   s4    		!::1=',-!---s   =N)F)__name__
__module____qualname____doc__is_Transposer   propertyr   r   r   r%   r(   r	   r.   r2   r4   r7   r
   r   r   r   r      sc    . L	"   $ $>$",.r   r   c                 8    t        |       j                  d      S )zMatrix transposeF)r   )r   r   )exprs    r   r8   r8   O   s    T?U++r   )askQ)handlers_dictc                 \    t        t        j                  |       |      r| j                  S | S )z
    >>> from sympy import MatrixSymbol, Q, assuming, refine
    >>> X = MatrixSymbol('X', 2, 2)
    >>> X.T
    X.T
    >>> with assuming(Q.symmetric(X)):
    ...     print(refine(X.T))
    X
    )rB   rC   	symmetricr   )rA   assumptionss     r   refine_TransposerH   X   s%     1;;tk*xxKr   N)sympy.core.basicr   "sympy.matrices.expressions.matexprr   r   r8   sympy.assumptions.askrB   rC   sympy.assumptions.refinerD   rH   r
   r   r   <module>rM      s8    " 9G.
 G.T,
 ) 2 .k r   