U
    ZÊ¹j7  ã                   @   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sŒt‚tttƒƒtttƒƒks¨t‚tttƒƒttƒksÀt‚tttƒ } ttdƒƒdksàt‚ttddƒƒdksöt‚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�s´t‚ttdd„ ƒ ttƒjtk�sÖt‚tttƒƒtttƒ ¡ ƒk�søt‚ttƒjdk�st‚d S )Nc                   S   s   t tƒS ©N)r   r   © r#   r#   új/var/www/html/bwave/python/venv/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sˆt‚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"	
