o
    GZh7                     @   s(  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
dZ!ede!e!Z"ede!e!Z#edddZ$dd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd  Z,d!d" Z-d#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                  C   s  t ttts	J t tttrJ ttdd  ttddks#J ttddg ddks1J t	tttt
tks?J ttttt
tksMJ tttttksYJ ttt } ttddksiJ ttdddkstJ ttdddksJ ttd	d	d	ksJ tttttksJ td	t t d	ttt  ksJ ttjttksJ td
\}}tddt||f|| }t|dksJ ttdd  ttjtu sJ tttttt ksJ ttjdu sJ d S )Nc                   S   s   t tS N)r   r    r#   r#   Z/var/www/auris/lib/python3.10/site-packages/sympy/matrices/expressions/tests/test_trace.py<lambda>   s    ztest_Trace.<locals>.<lambda>r    )	      r    r!               	      r(   r   r&   r'   zi jr)   c                   S   s
   t tjS r"   )r   r   ZOner#   r#   r#   r$   r%   .   s   
 T)
isinstancer   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Tr   r   r   	TypeErrorargstrdoitZis_commutative)_r   jFr#   r#   r$   
test_Trace   s.   $ r7   c                   C   sd   t tt tttt ksJ ttt jtttksJ ttt  tttt ks0J d S r"   )r   r   r   r   r1   r   r3   r#   r#   r#   r$   test_Trace_A_plus_B6   s    (r8   c                  C   sj   t g dgd } tddd}t| d|  |d| }t|j|ks#J t| ddt|  ks3J d S )N)r&   r'   r    r    Yr'      )r   r   r   r   r1   r3   )Xr9   qr#   r#   r$   test_Trace_MatAdd_doit<   s
   $r>   c                  C   s\   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   r3   r   r1   r<   r=   r#   r#   r$   test_Trace_MatPow_doitE   s
   
rA   c                  C   s8   t ddgddgg} t| t|  dt|  ksJ d S )Nr&   r'   r    r!   )r
   r   r<   r#   r#   r$   test_Trace_MutableMatrix_plusM   s   $rC   c                  C   s   t ddgddgg} t| d}t|jddj|ksJ t| d|  }t|jddj|ks0J t| d|  }t|jddj|ksDJ d S )Nr&   r'   r    r!   F)deep)r
   r   r   r3   r1   r   r   r@   r#   r#   r$   test_Trace_doit_deep_FalseS   s   
rE   c                  C   sJ   t dt dtt 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   rB   r#   r#   r$   test_trace_constant_factor]   s   rG   c                   C   sL   t ttttttf tdtd fksJ t tdtdks$J d S )Nr   r&   r    )r   r   Zrewriter   r   r   r	   r#   r#   r#   r$   test_trace_rewrited   s   .rH   c                   C   sd   t tt t tt ksJ t tt  t tt ksJ t ttj  t ttj ks0J d S r"   )r   r   r   
_normalizer/   r#   r#   r#   r$   test_trace_normalizei   s    (rJ   c                  C   s^   t tdd  tddd} t|  | d | d  | d  ks!J ttd dks-J d S )Nc                   S   s   t t S r"   )r   r   as_explicitr#   r#   r#   r$   r%   p   s    z(test_trace_as_explicit.<locals>.<lambda>r<   r    )r   r   )r&   r&   )r'   r'   )r   
ValueErrorr   r   rK   r	   rB   r#   r#   r$   test_trace_as_explicito   s   (rM   N)/Z
sympy.corer   r   r   Zsympy.concreter   Zsympy.functionsr   r   r   Zsympy.matricesr	   r
   r   r   Zsympy.matrices.expressionsr   r   r   r   r   r   r   r   r   r   r   Z"sympy.matrices.expressions.specialr   Zsympy.testing.pytestr   Z	sympy.abcr   r   r   r   r   r7   r8   r>   rA   rC   rE   rG   rH   rJ   rM   r#   r#   r#   r$   <module>   s,    4"	
