U
    -e7                     @   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tt tttr$tttdd  ttddksFttt	ddddddddd	d
dg	dksptt
tttttkstttttttksttttttkstttt } ttddkstttdddkstttdddkstttdddks&ttttttks>ttdt t dttt  ksdtttjttks|ttd\}}tddt||f|| }t|dkstttdd  ttjtksttttttt kstttjdkstd S )Nc                   S   s   t tS N)r   r    r#   r#   l/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/matrices/expressions/tests/test_trace.py<lambda>       ztest_Trace.<locals>.<lambda>r          r!               	      r   zi jc                   S   s
   t tjS r"   )r   r   ZOner#   r#   r#   r$   r%   .   r&   T)
isinstancer   r   AssertionErrorr   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.    *&"r9   c                   C   sd   t tt tttt ks tttt jtttks<tttt  tttt ks`td S r"   )r   r   r   r   r0   r3   r   r5   r#   r#   r#   r$   test_Trace_A_plus_B6   s     r:   c                  C   sl   t dddggd } tddd}t| d|  |d| }t|j|ksHtt| ddt|  kshtd S )Nr'   r(   r    Y   )r   r   r   r   r3   r0   r5   )Xr;   qr#   r#   r$   test_Trace_MatAdd_doit<   s
    r@   c                  C   s\   t ddgddgg} t|  dks(tt| d}t|j|ksDtt| dksXtd S )Nr'   r(   r    r!   r)      )r
   r   r5   r0   r   r3   r>   r?   r#   r#   r$   test_Trace_MatPow_doitE   s
    
rC   c                  C   s8   t ddgddgg} t| t|  dt|  ks4td S )Nr'   r(   r    r!   )r
   r   r0   r>   r#   r#   r$   test_Trace_MutableMatrix_plusM   s    rE   c                  C   s   t ddgddgg} t| d}t|jddj|ks8tt| d|  }t|jddj|ks`tt| d|  }t|jddj|kstd S )Nr'   r(   r    r!   F)deep)r
   r   r   r5   r3   r0   r   r   rB   r#   r#   r$   test_Trace_doit_deep_FalseS   s    
rG   c                  C   sJ   t dt dtt ksttddgddgg} t td| dksFtd S )Nr(   r'   r    r!   
   )r   r   r   r0   r   r   rD   r#   r#   r$   test_trace_constant_factor]   s    rI   c                   C   sL   t ttttttf tdtd fks.tt tdtdksHtd S )Nr   r'   r    )r   r   Zrewriter   r   r   r0   r	   r#   r#   r#   r$   test_trace_rewrited   s    .rJ   c                   C   sd   t tt t tt kstt tt  t tt ks<tt ttj  t ttj ks`td S r"   )r   r   r   r0   
_normalizer1   r#   r#   r#   r$   test_trace_normalizei   s     rL   c                  C   s^   t tdd  tddd} t|  | d | d  | d  ksBtttd dksZtd S )Nc                   S   s   t t S r"   )r   r   as_explicitr#   r#   r#   r$   r%   p   r&   z(test_trace_as_explicit.<locals>.<lambda>r>   r    )r   r   )r'   r'   )r(   r(   )r   
ValueErrorr   r   rM   r0   r	   rD   r#   r#   r$   test_trace_as_explicito   s    (rO   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   r9   r:   r@   rC   rE   rG   rI   rJ   rL   rO   r#   r#   r#   r$   <module>   s*   4"	
