
    gU
                     l    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<   d	S )
    )Basic)
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        `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/expressions/transpose.pyr   zTranspose.doit   s    h99VT"" 	$z#u'='= 	$#(##U##C!#'8$??&$_&&F#/66Ys^^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.shape.   s    x~ddd##r   Fc                 .     | j         j        ||fd|i|S )Nexpand)r   _entry)r   ijr   kwargss        r   r   zTranspose._entry2   s%    txq!==F=f===r   c                 4    | j                                         S N)r   	conjugater   s    r   _eval_adjointzTranspose._eval_adjoint5   s    x!!###r   c                 4    | j                                         S r"   )r   adjointr   s    r   _eval_conjugatezTranspose._eval_conjugate8   s    x!!!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_determinantB   s$    >>>>>>s48}}r   c                 6    | j                             |          S r"   )r   _eval_derivative)r   xs     r   r3   zTranspose._eval_derivativeF   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>L   s     ---!---r   )r   _eval_derivative_matrix_lines)r   r4   liness      r   r:   z'Transpose._eval_derivative_matrix_linesJ   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   O   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   X   s,     1;tk** xKr   N)sympy.core.basicr   "sympy.matrices.expressions.matexprr   r   r7   sympy.assumptions.askrD   rE   sympy.assumptions.refinerF   rJ   r
   r   r   <module>rO      s    " " " " " " 9 9 9 9 9 9G. G. G. G. G.
 G. G. G.T, , ,
 ) ( ( ( ( ( ( ( 2 2 2 2 2 2   .k   r   