
    Ed
                     |    d dl mZ d dlmZ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<   d
S )    )Basic)adjoint	conjugate)
MatrixExprc                   z    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dS )	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         }|                    dd          r"t          |t                    r |j        di |}t          |dd           }| |            }||nt          |          S t          |          S )NdeepT_eval_transpose )argget
isinstancer   doitgetattrr   )selfhintsr   r   results        Dlib/python3.11/site-packages/sympy/matrices/expressions/transpose.pyr   zTranspose.doit!   s    h99VT"" 	$z#u'='= 	$#(##U##C!#'8$?? 	"$_&&F#C66Ys^^CS>>!    c                     | j         d         S )Nr   )argsr   s    r   r   zTranspose.arg,   s    y|r   c                 ,    | j         j        d d d         S )N)r   shaper   s    r   r   zTranspose.shape0   s    x~ddd##r   Fc                 .     | j         j        ||fd|i|S )Nexpand)r   _entry)r   ijr   kwargss        r   r   zTranspose._entry4   s%    txq!==F=f===r   c                 *    t          | j                  S N)r   r   r   s    r   _eval_adjointzTranspose._eval_adjoint7   s    """r   c                 *    t          | j                  S r$   )r   r   r   s    r   _eval_conjugatezTranspose._eval_conjugate:   s    tx   r   c                     | j         S r$   )r   r   s    r   r   zTranspose._eval_transpose=   s	    xr   c                 .    ddl m}  || j                  S )N   )Trace)tracer+   r   )r   r+   s     r   _eval_tracezTranspose._eval_trace@   s$          uTXr   c                 .    ddl m}  || j                  S )Nr   )det)&sympy.matrices.expressions.determinantr/   r   )r   r/   s     r   _eval_determinantzTranspose._eval_determinantD   s$    >>>>>>s48}}r   c                 6    | j                             |          S r$   )r   _eval_derivative)r   xs     r   r3   zTranspose._eval_derivativeH   s    x((+++r   c                 Z    | j         d                             |          }d |D             S )Nr   c                 6    g | ]}|                                 S r   )	transpose).0r    s     r   
<listcomp>z;Transpose._eval_derivative_matrix_lines.<locals>.<listcomp>N   s     ---!---r   )r   _eval_derivative_matrix_lines)r   r4   liness      r   r:   z'Transpose._eval_derivative_matrix_linesL   s/    	!::1==--u----r   N)F)__name__
__module____qualname____doc__is_Transposer   propertyr   r   r   r%   r'   r   r-   r1   r3   r:   r   r   r   r   r      s         . L	" 	" 	"   X $ $ X$> > > ># # #! ! !      , , ,. . . . .r   r   c                 H    t          |                               d          S )zMatrix transposeF)r
   )r   r   )exprs    r   r7   r7   Q   s    T??U+++r   )askQ)handlers_dictc                 X    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
    )rD   rE   	symmetricr   )rC   assumptionss     r   refine_TransposerJ   Z   s,     1;tk** xKr   N)sympy.core.basicr   sympy.functionsr   r   "sympy.matrices.expressions.matexprr   r   r7   sympy.assumptions.askrD   rE   sympy.assumptions.refinerF   rJ   r   r   r   <module>rP      s    " " " " " " . . . . . . . . 9 9 9 9 9 9G. G. G. G. G.
 G. G. G.T, , ,
 ) ( ( ( ( ( ( ( 2 2 2 2 2 2   .k   r   