U
    ˜9%eL  ã                   @   st  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
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 d dlmZmZ d dlmZ eƒ eƒ eƒ   ZZZed	ƒed	ƒed	ƒ  ZZZ ed
ƒed
ƒed
ƒ  Z!Z"Z#eƒ eƒ  Z$Z%ed	ƒed	ƒ Z&Z'edƒedƒ Z(Z)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0dd„ Z1dd„ Z2dd „ Z3d!d"„ Z4d#d$„ Z5d%S )&é    )ÚMul)ÚI)ÚMatrix)Úlatex)ÚDaggerÚ
CommutatorÚAntiCommutatorÚqapplyÚOperatorÚ	represent)ÚSigmaOpBaseÚSigmaXÚSigmaYÚSigmaZÚ
SigmaMinusÚ	SigmaPlusÚqsimplify_pauli)Ú	SigmaZKetÚ	SigmaZBra)Úraisesé   é   ÚAÚBc                   C   s|   t ttƒrt ttƒst‚t ttƒr,t ttƒs0t‚t ttƒrDt ttƒsHt‚t t	tƒr\t t	t
ƒs`t‚t ttƒrtt ttƒsxt‚d S ©N)Ú
isinstanceÚsxr   r   ÚAssertionErrorÚsyr   Úszr   Úsmr   Úspr   © r"   r"   úe/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/physics/quantum/tests/test_pauli.pyÚtest_pauli_operators_types   s
    r$   c                   C   s^   t ttƒ ¡ dt t kst‚t ttƒ ¡ dt t ks<t‚t ttƒ ¡ dt t ksZt‚d S ©Nr   )r   r   r   Údoitr   r   r   r"   r"   r"   r#   Útest_pauli_operators_commutator    s    r'   c                   C   sú   t ttƒ ¡ dt t kst‚t ttƒ ¡ dt t ks<t‚t ttƒ ¡ dt t ksZt‚t ttƒ ¡ dt t	 ksxt‚t tt	ƒ ¡ dt t ks–t‚t t	tƒ ¡ dt t ks´t‚t ttƒ ¡ dksÊt‚t tt	ƒ ¡ dksàt‚t ttƒ ¡ dksöt‚d S )Nr   r   )
r   Úsx1Úsy1r&   r   Úsz1r   Úsx2Úsy2Úsz2r"   r"   r"   r#   Ú+test_pauli_operators_commutator_with_labels'   s    r.   c                   C   s\   t ttƒ ¡ dkst‚t ttƒ ¡ dks,t‚t ttƒ ¡ dksBt‚t ttƒ ¡ dksXt‚d S )Nr   r   )r   r   r   r&   r   r   r    r!   r"   r"   r"   r#   Ú#test_pauli_operators_anticommutator6   s    r/   c                   C   s4   t tƒtkst‚t tƒtks t‚t tƒtks0t‚d S r   )r   r   r   r   r   r"   r"   r"   r#   Útest_pauli_operators_adjoint>   s    r0   c                   C   sd   t tƒtkst‚t tƒtks t‚t tƒtks0t‚t tƒtks@t‚t tƒtksPt‚t tƒtks`t‚d S r   )r   r(   r   r)   r*   r+   r,   r-   r"   r"   r"   r#   Ú(test_pauli_operators_adjoint_with_labelsE   s    r1   c                   C   sÖ   t tt ƒdkst‚t tt ƒdks(t‚t tt ƒdks<t‚t tt ƒtt ksTt‚t tt ƒtt kslt‚t tt ƒtt ks„t‚t tt ƒt t ksžt‚t tt ƒt t ks¸t‚t tt ƒt t ksÒt‚d S ©Nr   )r   r   r   r   r   r   r"   r"   r"   r#   Ú#test_pauli_operators_multiplicationP   s    r3   c                   C   sº   t tt ƒdkst‚t tt ƒdks(t‚t tt ƒdks<t‚ttt tƒsNt‚ttt tƒs`t‚ttt	 tƒsrt‚t tt t t ƒt t	 ks”t‚t tt t	 t ƒt t ks¶t‚d S r2   )
r   r(   r   r)   r*   r   r+   r   r,   r-   r"   r"   r"   r#   Ú/test_pauli_operators_multiplication_with_labels_   s    "r4   c                  C   s4  t ƒ tƒ  } }tdƒ}tdƒ}t| | ƒ|ks2t‚t| | ƒ|ksFt‚t|| ƒ|ksZt‚t|| ƒ| kspt‚tdƒ}tdƒ}t||  dd|ks˜t‚t||  dd|ks°t‚t|| dd|ksÈt‚t|| dd| ksât‚ttdƒƒtdƒksút‚ttdƒƒtdƒkst‚ttdd„ ƒ ttdd„ ƒ d S )Nr   r   T)Údaggerc                   S   s   t dƒS r%   )r   r"   r"   r"   r#   Ú<lambda>‚   ó    z#test_pauli_states.<locals>.<lambda>c                   S   s   t dƒS r%   )r   r"   r"   r"   r#   r6   ƒ   r7   )	r   r   r   r	   r   r   r   r   Ú
ValueError)r   r   ÚupZdownr"   r"   r#   Útest_pauli_statesm   s"    r:   c                   C   s<   t jdkst‚tjdkst‚tjdks*t‚tjdks8t‚d S )NFT)r    Zuse_namer   Úsm1r   r(   r"   r"   r"   r#   Útest_use_name†   s    r<   c                   C   s¤   t tƒdkst‚t tƒdks t‚t tƒdks0t‚t tƒdks@t‚t tƒdksPt‚t tƒdks`t‚t tƒdkspt‚t t	ƒdks€t‚t t
ƒd	kst‚t tƒd
ks t‚d S )Nz
{\sigma_x}z{\sigma_x^{(1)}}z
{\sigma_y}z{\sigma_y^{(1)}}z
{\sigma_z}z{\sigma_z^{(1)}}z
{\sigma_-}z{\sigma_-^{(1)}}z
{\sigma_+}z{\sigma_+^{(1)}})r   r   r   r(   r   r)   r   r*   r    r;   r!   Úsp1r"   r"   r"   r#   Útest_printing   s    r>   c                   C   s¦   t tƒtddgddggƒks t‚t tƒtdt gtdggƒksBt‚t tƒtddgddggƒksbt‚t tƒtddgddggƒks‚t‚t tƒtddgddggƒks¢t‚d S )Nr   r   éÿÿÿÿ)	r   r   r   r   r   r   r   r    r!   r"   r"   r"   r#   Útest_representš   s
     "  r@   N)6Zsympy.core.mulr   Zsympy.core.numbersr   Zsympy.matrices.denser   Zsympy.printing.latexr   Zsympy.physics.quantumr   r   r   r	   r
   r   Zsympy.physics.quantum.paulir   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   r   r   r(   r)   r*   r+   r,   r-   r    r!   r;   r=   r   r   r$   r'   r.   r/   r0   r1   r3   r4   r:   r<   r>   r@   r"   r"   r"   r#   Ú<module>   s2    $	