U
    ZÊ¹jñ  ã                   @   sd   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 dd„ Zdd	„ Zd
d„ Zdd„ ZdS )é    )ÚTuple©Úsymbols)ÚMatrix©ÚTr)ÚraisesÚwarns_deprecated_sympyc                     s   t dƒ\} }}}}t ddd�\‰ }}}t| | ƒ| | ks>t‚tˆ | ƒtˆ ƒt|ƒ ks^t‚t|| ˆ  | ƒjd j||ˆ |fksŠt‚t| | ||  ƒ| | ||  ks²t‚t| ˆ  ƒ| tˆ ƒ ksÎt‚t| ˆ  | | ƒ| | tˆ | ƒ ksút‚ttˆ ƒtƒ�st‚tt| |ƒƒ| | k�s*t‚tttˆ | ƒƒtƒ�sDt‚tddgddggƒ}t|ƒdk�sjt‚tˆ ƒ}	|	jd tƒ k�sˆt‚tˆ dƒ}	|	jd tdƒk�sªt‚tˆ dgƒ}	|	jd tdƒk�sÎt‚tˆ dddgƒ}	|	jd tdddƒk�sút‚tˆ dƒ}	|	jd tdƒk�st‚tˆ d	ƒ}	|	jd tddƒk�s@t‚tˆ | dgƒ}	|	jd jd tdƒk�r„|	jd jd tdƒk�sˆt‚t| ˆ  ddgƒ}	|	jd jd tddƒk�sºt‚G d
d„ dƒ}
t|
ƒ ƒdk�sÜt‚tt	dd„ ƒ tt	‡ fdd„ƒ d S )Nz	a b c d YúA B C DF©Zcommutativer   é   é   é   )r   r   c                   @   s   e Zd Zdd„ ZdS )ztest_trace_new.<locals>.Fooc                 S   s   dS )Nr   © )Úselfr   r   úe/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/physics/quantum/tests/test_trace.pyÚtraceD   s    z!test_trace_new.<locals>.Foo.traceN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   ÚFooC   s   r   c                   S   s   t ƒ S )Nr   r   r   r   r   Ú<lambda>J   ó    z test_trace_new.<locals>.<lambda>c                      s   t ˆ ddƒS )Nr   r   r   r   ©ÚAr   r   r   K   r   )
r   r   ÚAssertionErrorÚargsÚ
isinstanceÚpowr   r   r   Ú
ValueError)ÚaÚbÚcÚdÚYÚBÚCÚDÚMÚtr   r   r   r   Útest_trace_new   sB     ,(,


8 r*   c                  C   s(   t dƒ\} }}}t ddd�\}}}}d S )Nza b c dr
   Fr   r   )r    r!   r"   r#   r   r%   r&   r'   r   r   r   Útest_trace_doitN   s    r+   c            
      C   s.  t ddd�\} }}}}}}t| | | | | | | ƒ}| d¡jd j| ||||||fksbt‚| d¡jd j||| ||||fksŠt‚| d¡jd j||||| ||fks²t‚| d¡jd j||||||| fksÚt‚| d¡jd j| d	¡jd jk�st‚| d
¡jd j||||||| fk�s.t‚| d¡jd j||||| ||fk�sXt‚| d¡jd j||| ||||fk�s‚t‚| d¡jd j| d
¡jd jk�s¬t‚t| | ||  | | ƒ}| d¡jd j||| | |d fk�sôt‚t| | ƒ}| d	¡}	t|ƒt|	ƒk�r&||	k�s*t‚d S )NzA B C D E F GFr   r   r   é   é   é   r   éÿÿÿÿéýÿÿÿéûÿÿÿiøÿÿÿ)r   r   Zpermuter   r   Úid)
r   r%   r&   r'   ÚEÚFÚGr)   Út1Út2r   r   r   Útest_permuteU   s      ((((*****,
r8   c               	   C   s"   t ƒ � ddlm}  W 5 Q R X d S )Nr   r   )r	   Zsympy.core.tracer   r   r   r   r   Útest_deprecated_core_tracek   s    r9   N)Zsympy.core.containersr   Zsympy.core.symbolr   Zsympy.matrices.denser   Zsympy.physics.quantum.tracer   Zsympy.testing.pytestr   r	   r*   r+   r8   r9   r   r   r   r   Ú<module>   s   F