
    \hU
                     d    S SK Jr  S SKJr   " S S\5      rS rS SKJrJr  S SK	J
r
  S r\\
S'   g	)
    )Basic)
MatrixExprc                   v    \ rS rSrSrSrS r\S 5       r\S 5       r	SS jr
S rS	 rS
 rS rS rS rS rSrg)	Transpose   a  
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                     U R                   nUR                  SS5      (       a'  [        U[        5      (       a  UR                  " S0 UD6n[        USS 5      nUb  U" 5       nUb  U$ [        U5      $ [        U5      $ )NdeepT_eval_transpose )argget
isinstancer   doitgetattrr   )selfhintsr   r
   results        \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/transpose.pyr   Transpose.doit   st    hh99VT""z#u'='=((#U#C!#'8$?&$&F#/6CYs^CS>!    c                      U R                   S   $ Nr   )argsr   s    r   r   Transpose.arg*   s    yy|r   c                 :    U R                   R                  S S S2   $ )N)r   shaper   s    r   r   Transpose.shape.   s    xx~~dd##r   c                 @    U R                   R                  " X!4SU0UD6$ )Nexpand)r   _entry)r   ijr!   kwargss        r   r"   Transpose._entry2   s    xxq=F=f==r   c                 6    U R                   R                  5       $ N)r   	conjugater   s    r   _eval_adjointTranspose._eval_adjoint5   s    xx!!##r   c                 6    U R                   R                  5       $ r(   )r   adjointr   s    r   _eval_conjugateTranspose._eval_conjugate8   s    xx!!r   c                     U R                   $ r(   )r   r   s    r   r
   Transpose._eval_transpose;   s    xxr   c                 2    SSK Jn  U" U R                  5      $ )N   )Trace)tracer4   r   )r   r4   s     r   _eval_traceTranspose._eval_trace>   s     TXXr   c                 2    SSK Jn  U" U R                  5      $ )Nr   )det)&sympy.matrices.expressions.determinantr9   r   )r   r9   s     r   _eval_determinantTranspose._eval_determinantB   s    >488}r   c                 8    U R                   R                  U5      $ r(   )r   _eval_derivative)r   xs     r   r>   Transpose._eval_derivativeF   s    xx((++r   c                     U R                   S   R                  U5      nU Vs/ s H  o3R                  5       PM     sn$ s  snf r   )r   _eval_derivative_matrix_lines	transpose)r   r?   linesr#   s       r   rB   'Transpose._eval_derivative_matrix_linesJ   s6    		!::1=',-u!u---s   ?r   N)F)__name__
__module____qualname____firstlineno____doc__is_Transposer   propertyr   r   r"   r*   r.   r
   r6   r;   r>   rB   __static_attributes__r   r   r   r   r      sc    . L	"   $ $>$",.r   r   c                 2    [        U 5      R                  SS9$ )zMatrix transposeF)r	   )r   r   )exprs    r   rC   rC   O   s    T?U++r   )askQ)handlers_dictc                 h    [        [        R                  " U 5      U5      (       a  U R                  $ U $ )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
)rP   rQ   	symmetricr   )rO   assumptionss     r   refine_TransposerV   X   s(     1;;tk**xxKr   N)sympy.core.basicr   "sympy.matrices.expressions.matexprr   r   rC   sympy.assumptions.askrP   rQ   sympy.assumptions.refinerR   rV   r   r   r   <module>r[      s8    " 9G.
 G.T,
 ) 2 .k r   