
    g7                     N   d dl mZmZmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlm Z   ed	d
          Z! ede!e!          Z" ede!e!          Z# eddd          Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.dS )    )LambdaSsymbols)Sum)adjoint	conjugate	transpose)eyeMatrix
ShapeErrorImmutableMatrix)AdjointIdentityFunctionMatrix
MatrixExprMatrixSymbolTrace
ZeroMatrixtraceMatPowMatAddMatMul)	OneMatrix)raises)inT)integerABC      c            	      x   t          t          t                    t                    sJ t          t          t                    t                    rJ t	          t
          d            t          t          d                    dk    sJ t          t          ddg d                    dk    sJ t          t          t                              t          t          t                              k    sJ t          t          t                              t          t          t                              k    sJ t          t          t                              t          t                    k    sJ t          t          t                    z  } t          t          d                    dk    sJ t          t          dd                    dk    sJ t          t          dd                    dk    sJ t          t          dd                    dk    sJ t          t          t           t                               t           k    sJ t          dt          z  t"          z            dt          t          t"          z            z  k    sJ t          t          j                  t          t                    k    sJ t'          d	          \  }}t)          ddt+          ||f||z                       }t          |          d
k    sJ t	          t,          d            t          t                    j        t          u sJ t1          t          t                              t1          t          t                                                              k    sJ t          t                    j        du sJ d S )Nc                  *    t          t                    S N)r   r         g/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/expressions/tests/test_trace.py<lambda>ztest_Trace.<locals>.<lambda>   s    uQxx r'   r!   )	      r!   r"               	      r,   r   r*   r+   zi jr-   c                  4    t          t          j                  S r%   )r   r   Oner&   r'   r(   r)   ztest_Trace.<locals>.<lambda>.   s    eAEll r'   T)
isinstancer   r   r   r   r   r   r
   r   r   r   r   r	   r   r   r   r   r   Tr   r   r   	TypeErrorargstrdoitis_commutative)_r   jFs       r(   
test_Tracer>      s   eAhh&&&&&%((J/////
:''(((Q==A1999::;;rAAAA588gajj 1 11111U1XX%

"3"33333U1XX%((****	E!HHA !""""Aq!!""a''''1a!!Q&&&&1a!!Q&&&&1a!!Q&&&&1Q<<1U1Q3ZZ<''''::q!!!!5>>DAqq!VQFAE2233A8822222
9**+++88<1uQxx==Ca00000088"d******r'   c                     t          t          t          z             t          t                    t          t                    z   k    sJ t          t          t          z             j        t          t          t                    k    sJ t          t          t          z                                             t          t                    t          t                    z   k    sJ d S r%   )r   r   r   r   r7   r   r9   r&   r'   r(   test_Trace_A_plus_Br@   6   s    Q<<588eAhh.....Q<<va||++++Q<<%((U1XX"5555555r'   c                  *   t          g dgdz            } t          ddd          }t          | d| z  |d|z            }t          |          j        |k    sJ t          |                                          ddt          |          z  z
  k    sJ d S )N)r*   r+   r!   r!   Yr+      )r   r   r   r   r7   r9   )XrB   qs      r(   test_Trace_MatAdd_doitrG   <   s    A&&AS!QAq!A#q"Q$A88<188==??b1U1XX:o------r'   c                      t          ddgddgg          } t          |                                           dk    sJ t          | d          }t          |          j        |k    sJ t          |                                          dk    sJ d S )Nr*   r+   r!   r"   r,      )r   r   r9   r   r7   rE   rF   s     r(   test_Trace_MatPow_doitrK   E   s    AA  A88==??aq!A88<188==??b      r'   c                      t          ddgddgg          } t          |           t          |           z   dt          |           z  k    sJ d S )Nr*   r+   r!   r"   )r   r   rE   s    r(   test_Trace_MutableMatrix_plusrN   M   sN    AA  A88eAhh!E!HH*,,,,,,r'   c                     t          ddgddgg          } t          | d          }t          |                              d          j        |k    sJ t          | d| z            }t          |                              d          j        |k    sJ t          | d| z            }t          |                              d          j        |k    sJ d S )Nr*   r+   r!   r"   F)deep)r   r   r   r9   r7   r   r   rJ   s     r(   test_Trace_doit_deep_FalserQ   S   s    AA  Aq!A88==e=$$(A----q!A#A88==e=$$(A----q!A#A88==e=$$(A------r'   c                      t          dt          z            dt          t                    z  k    sJ t          ddgddgg          } t          t	          d|                     dk    sJ d S )Nr+   r*   r!   r"   
   )r   r   r   r   r   rM   s    r(   test_trace_constant_factorrT   ]   sh    1::588####!Q!Q())A1"$$$$$$r'   c                  H   t          t                                        t                    t          t          t          t          f         t          dt
          dz
  f          k    sJ t          t          d                                        t                    dk    sJ d S )Nr   r*   r!   )r   r   rewriter   r   r   r
   r&   r'   r(   test_trace_rewriterW   d   st    88C  C!Q$!QA$?$?????Q==  %%******r'   c                     t          t          t          z            t          t          t          z            k    sJ t          t          t          z                                            t          t          t          z            k    sJ t          t          t          j        z                                            t          t          t          j        z            k    sJ d S r%   )r   r   r   
_normalizer5   r&   r'   r(   test_trace_normalizerZ   i   s    1::qs####1::  ""eAaCjj000013<<""$$ae444444r'   c                  :   t          t          d            t          ddd          } t          |                                           | d         | d         z   | d         z   k    sJ t          t          d                                                    dk    sJ d S )Nc                  N    t          t                                                    S r%   )r   r   as_explicitr&   r'   r(   r)   z(test_trace_as_explicit.<locals>.<lambda>p   s    uQxx3355 r'   rE   r!   )r   r   )r*   r*   )r+   r+   )r   
ValueErrorr   r   r]   r
   rM   s    r(   test_trace_as_explicitr_   o   s    
:55666S!QA88!!QtWqw%64%@@@@@Q==$$&&!++++++r'   N)/
sympy.corer   r   r   sympy.concreter   sympy.functionsr   r   r	   sympy.matricesr
   r   r   r   sympy.matrices.expressionsr   r   r   r   r   r   r   r   r   r   r   "sympy.matrices.expressions.specialr   sympy.testing.pytestr   	sympy.abcr   r   r   r   r    r>   r@   rG   rK   rN   rQ   rT   rW   rZ   r_   r&   r'   r(   <module>rh      s!   ) ) ) ) ) ) ) ) ) )       9 9 9 9 9 9 9 9 9 9 C C C C C C C C C C C C                          9 8 8 8 8 8 ' ' ' ' ' '       GCLaLaLa +  +  +D6 6 6. . .! ! !- - -. . .% % %+ + +
5 5 5, , , , ,r'   