Ë
    7^(hÐ0  ã                   óÄ  — d dl mZ d dlmZmZmZmZ d dlmZm	Z	 d dl
mZ d dlmZ d dl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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, d dl-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@d„ ZAd„ ZBd„ ZCd„ ZDd„ ZEd„ ZFd„ ZGd„ ZHd„ ZId „ ZJd!„ ZKd"„ ZLd#„ ZMd$„ ZNd%„ ZOd&„ ZPd'„ ZQd(„ ZRd)„ ZSy*)+é    )ÚMul)ÚIÚIntegerÚRationalÚpi)ÚWildÚsymbols)Úexp)Úsqrt)ÚMatrixÚImmutableMatrix)ÚXGateÚYGateÚZGateÚrandom_circuitÚCNOTÚIdentityGateÚHÚXÚYÚSÚTÚZÚSwapGateÚ	gate_simpÚ	gate_sortÚCNotGateÚTGateÚHadamardGateÚ	PhaseGateÚUGateÚCGate)Ú
Commutator)ÚAntiCommutator)Ú	represent)Úqapply)ÚQubitÚIntQubitÚqubit_to_matrixÚmatrix_to_qubit)Úmatrix_to_zero)Ú	sqrt2_inv)ÚDaggerc                  óh  — t        d«      } | j                  dk(  sJ ‚| j                  dk(  sJ ‚t        d«      }t        d«      }t        |«      }t        |«      }t        |«      }||k(  sJ ‚||k7  sJ ‚||k7  sJ ‚t	        ||«      }t	        ||«      }t	        ||«      }||k(  sJ ‚||k7  sJ ‚||k7  sJ ‚y)zTest a basic gate.é   é   Úi0Úi1N)r   Ú
min_qubitsÚnqubitsr   r   )	Úhr1   r2   Úh0_w1Úh0_w2Úh1_w1Ú
cnot_10_w1Ú
cnot_10_w2Ú
cnot_01_w1s	            úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_gate.pyÚ	test_gater=      sÌ   € ä�Q‹€AØ�<‰<˜1ÒÐÐØ�9‰9˜Š>Ðˆ>ä	ˆd‹€BÜ	ˆd‹€BÜ˜Ó€EÜ˜Ó€EÜ˜Ó€Eà�EŠ>Ðˆ>Ø�EŠ>Ðˆ>Ø�EŠ>Ðˆ>ä�b˜"“€JÜ�b˜"“€JÜ�b˜"“€Jà˜Ò#Ð#Ð#Ø˜Ò#Ð#Ð#Ø˜Ò#Ð#Ñ#ó    c                  ó(  — t        d«      \  } }}}t        | |g||gg«      }t        d|«      }t        |d¬«      |k(  sJ ‚t	        |t        d«      z  «      | t        d«      z  |t        d«      z  z   k(  sJ ‚t	        |t        d«      z  «      |t        d«      z  |t        d«      z  z   k(  sJ ‚t        d|«      }t        |d¬«      }t        d	«      D ]>  }|t        t        |d«      «      z  t        t	        |t        |d«      z  «      «      k(  rŒ>J ‚ y )
Núa,b,c,d©r   r/   ©r4   Ú0Ú1©r/   r0   é   )	r	   r   r!   r%   r&   r'   Úranger)   r(   )	ÚaÚbÚcÚdÚuMatÚu1Úu2Úu2RepÚis	            r<   Ú
test_UGaterQ   /   s  € Ü˜Ó#�J€A€qˆ!ˆQÜ�A�q�6˜A˜q˜6Ð"Ó#€Dô 
ˆt�TÓ	€BÜ�R Ô# tÒ+Ð+Ð+Ü�"”U˜3“Z‘-Ó  A¤e¨C£j¡L°1´U¸3³Z±<Ñ$?Ò?Ð?Ð?Ü�"”U˜3“Z‘-Ó  A¤e¨C£j¡L°1´U¸3³Z±<Ñ$?Ò?Ð?Ð?ô 
ˆt�TÓ	€BÜ�b !Ô$€EÜ�1‹Xò 7ˆØ”_¤X¨a°£^Ó4Ñ4ÜœF 2¤h¨q°!£nÑ#4Ó5Ó6ó7ð 	7ð 7ñ7r>   c                  óL  — t        g d¢g d¢g d¢g d¢g«      } t        t        dt        d«      «      d¬«      | k(  sJ ‚t        d	t        d«      «      }t        |d
¬«      t        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      k(  sJ ‚t        dt        d«      «      }t	        |t        d«      z  «      t        t        |t        d«      z  d¬«      «      k(  sJ ‚t	        |t        d«      z  «      t        t        |t        d«      z  d¬«      «      k(  sJ ‚t        dt        d«      «      }t        dddddt         fddt        dff«      }t        |j                  «       d¬«      |k(  sJ ‚t        dt        d«      «      }t        d«      }t	        |t        d«      z  «      t        d«       k(  sJ ‚t        t        |t        d«      z  d¬«      «      t        d«       k(  sJ ‚t        |j                  «       d¬«      |k(  sJ ‚t        dt        d«      «      }t	        |t        d«      z  «      t        t        d«      z  k(  sJ ‚t        t        |t        d«      z  d¬«      «      t        t        d«      z  k(  sJ ‚t        |«      |k(  sJ ‚t        |d«      t        |«      k(  sJ ‚t        |«      |j                  «       k(  sJ ‚t        |«      |k7  sJ ‚t        |«      |j                  «       k(  sJ ‚t        |«      t        |d«      k(  sJ ‚t        |d«      |j                  «       k(  sJ ‚y)zTest the general CGate.©r/   r   r   r   ©r   r/   r   r   ©r   r   r   r/   ©r   r   r/   r   r/   r   r0   rB   )r/   r0   é   )r/   r   r   r   r   r   r   r   )r   r/   r   r   r   r   r   r   )r   r   r/   r   r   r   r   r   )r   r   r   r/   r   r   r   r   )r   r   r   r   r/   r   r   r   )r   r   r   r   r   r/   r   r   )r   r   r   r   r   r   r   r/   )r   r   r   r   r   r   r/   r   )rW   r   Ú1001rF   Ú0000)rS   rT   rV   )r   r   r   éÿÿÿÿÚ11rZ   N)r   r%   r"   r   r&   r'   r*   r   r   Ú	decomposer   r    r-   ÚpowÚinverse)Ú
CNOTMatrixÚToffoliGateÚCYGateÚCYGate_matrixÚCZGateÚCZGate_matrixÚ
CPhaseGates          r<   Ú
test_cgaterf   A   s  € ô Ú	’|¢\²<Ð@óB€Jä”U˜1œe A›hÓ'°Ô3°zÒAÐAÐAô ˜¤ a£Ó)€KÜ�[¨!Ô,ÜÚ%Ò'?ÒAYÚÒ6ò 9Ú*Úðó	òð ð ô ˜¤ a£Ó)€KÜ�+œe F›mÑ+Ó,Üœ	 +¬e°F«mÑ";ÀQÔGÓHòIð Ið Iä�+œe F›mÑ+Ó,Üœ	 +¬e°F«mÑ";ÀQÔGÓHòIð Ið Iô �1”e˜A“hÓ€FÜØ	�| a¨¨A´¨r ]°Q¸¼1¸a°LÐAóC€Mô �V×%Ñ%Ó'°Ô3°}ÒDÐDÐDä�1”e˜A“hÓ€FÜØAóC€Mä�&œ˜t›Ñ$Ó%¬%°«+¨Ò5Ð5Ð5Üœ9 V¬E°$«KÑ%7ÀÔCÓDÜ	ˆt‹ˆòð ð ô �V×%Ñ%Ó'°Ô3°}ÒDÐDÐDä�qœ) A›,Ó'€JÜ�*œU 4›[Ñ(Ó)Ü	Œ%�‹+‰òð ð äœ9 Z´°d³Ñ%;ÀQÔGÓHÜ	Œ%�‹+‰òð ð ô �&‹>˜VÒ#Ð#Ð#Üˆv�q‹>œV F›^Ò+Ð+Ð+Ü�&‹>˜VŸ^™^Ó-Ò-Ð-Ð-Ü�*Ó Ò+Ð+Ð+Ü�*Ó ×!3Ñ!3Ó!5Ò5Ð5Ð5Ü�*Ó¤ Z°Ó!4Ò4Ð4Ð4Üˆz˜2Ó *×"4Ñ"4Ó"6Ò6Ð6Ñ6r>   c                  ó
  — t        d«      \  } }}}t        | |g||gg«      }t        g d¢g d¢dd| |gdd||gg«      }t        d|«      }t        d|«      }t	        |d¬«      |k(  sJ ‚t        |t        d	«      z  «      | t        d	«      z  |t        d
«      z  z   k(  sJ ‚t        |t        d
«      z  «      |t        d	«      z  |t        d
«      z  z   k(  sJ ‚t        |t        d«      z  «      t        d«      k(  sJ ‚t        |t        d«      z  «      t        d«      k(  sJ ‚t        d|«      }t	        |d¬«      }	t        d«      D ]>  }
|	t        t        |
d«      «      z  t        t        |t        |
d«      z  «      «      k(  rŒ>J ‚ y )Nr@   rS   rT   r   rA   r/   r0   rB   Ú10r[   Ú01Ú00rE   rF   )
r	   r   r!   r"   r%   r&   r'   rG   r)   r(   )rH   rI   rJ   rK   rL   ÚcMatrM   Úcu1rN   rO   rP   s              r<   Útest_UGate_CGate_comborm   v   s�  € Ü˜Ó#�J€A€qˆ!ˆQÜ�A�q�6˜A˜q˜6Ð"Ó#€DÜ’<¢°°1°a¸¨|¸aÀÀAÀq¸\ÐJÓK€Dô 
ˆt�TÓ	€BÜ
��2‹,€CÜ�S !Ô$¨Ò,Ð,Ð,Ü�#”e˜D“k‘/Ó" a¬¨d«¡m°a¼¸d»±mÑ&CÒCÐCÐCÜ�#”e˜D“k‘/Ó" a¬¨d«¡m°a¼¸d»±mÑ&CÒCÐCÐCÜ�#”e˜D“k‘/Ó"¤e¨D£kÒ1Ð1Ð1Ü�#”e˜D“k‘/Ó"¤e¨D£kÒ1Ð1Ð1ô 
ˆt�TÓ	€BÜ�b !Ô$€EÜ�1‹Xò 7ˆØ”_¤X¨a°£^Ó4Ñ4ÜœF 2¤h¨q°!£nÑ#4Ó5Ó6ó7ð 	7ð 7ñ7r>   c            	      ó   — t        d«      \  } }}}t        | |g||gg«      }t        | |dz   ddg|dz   |ddgdd| |dz   gdd|dz   |gg«      }t        d«      t	        d|«      z   }t        |d¬«      |k(  sJ ‚t        dt        d«      z  dt        d«      z  gt        t        d«      z  t         t        d«      z  gg«      }t        t        dd«      t        dz  z   t        dd«      t        dz  z
  gt        dd«      t        dz  z
  t        dd«      t        dz  z   gg«      }t        ddgdt        gg«      }	t	        d|«      }
t        t        d«      |
z  d¬«      |k(  sJ ‚t        |
t        d«      z  d¬«      |	k(  sJ ‚y )Nzv w f gr/   r   r0   rB   )
r	   r   r   r   r!   r%   r   r   r   r   )ÚvÚwÚfÚgÚuMat1ÚcMat1rM   ÚuMat2ÚcMat2_1ÚcMat2_2rN   s              r<   Útest_UGate_OneQubitGate_comborx   ‹   s’  € Ü˜Ó#�J€A€qˆ!ˆQÜ˜a ˜V a¨ VÐ,Ó-€EÜ�Q˜˜A™˜q !Ð$ q¨1¡u¨a°°AÐ&6¸¸A¸qÀ!ÀaÁ%Ð8HÈ1ÈaÐQRÐUVÑQVÐXYÐJZÐ[Ó\€EÜ	
ˆ1‹”�a˜“Ñ	€BÜ�R Ô# uÒ,Ð,Ð,ä˜a¤ Q£™i¨¬4°«7©Ð3´a¼¸Q»±iÄ!ÀÄDÈÃGÁÐ5LÐMÓN€EÜ”x  1“~¬¨!©Ñ+¬X°a¸«^¼aÀ¹cÑ-AÐBÜ  1“~¬¨!©Ñ+¬X°a¸«^¼aÀ¹cÑ-AÐBðDó E€Gä�q˜!�f˜q¤!˜fÐ%Ó&€GÜ	ˆq�%‹€BÜ”Q�q“T˜"‘W aÔ(¨GÒ3Ð3Ð3Ü�Rœ˜!›‘W aÔ(¨GÒ3Ð3Ñ3r>   c                  ó„   — t        d«      t        d«      z  } t        | d¬«      }|t        t        t        ddg«      k(  sJ ‚y)z-Test the representation of the hadamard gate.r   rj   r0   rB   N)r   r'   r%   r   r,   ©ÚcircuitÚanswers     r<   Útest_represent_hadamardr}   š   s<   € ä˜1‹oœe D›kÑ)€GÜ�w¨Ô*€Fà”VœY¬	°1°aÐ8Ó9Ò9Ð9Ñ9r>   c                  óp   — t        d«      t        d«      z  } t        | d¬«      }t        g d¢«      |k(  sJ ‚y)z&Test the representation of the X gate.r   rj   r0   rB   rT   N)r   r'   r%   r   rz   s     r<   Útest_represent_xgater   ¢   ó3   € ä�A‹h”u˜T“{Ñ"€GÜ�w¨Ô*€FÜ’,Ó 6Ò)Ð)Ñ)r>   c                  ó˜   — t        d«      t        d«      z  } t        | d¬«      }|d   dk(  r|d   t        k(  r|d   dk(  r|d   dk(  sJ ‚y)z&Test the representation of the Y gate.r   rj   r0   rB   r/   rW   N)r   r'   r%   r   rz   s     r<   Útest_represent_ygater‚   ©   sW   € ä�A‹h”u˜T“{Ñ"€GÜ�w¨Ô*€FØ�!‰9˜Š>˜f Q™i¬1šnØˆq‰	�QŠ˜6 !™9¨š>ð*ð *Ø)r>   c                  óp   — t        d«      t        d«      z  } t        | d¬«      }t        g d¢«      |k(  sJ ‚y)z&Test the representation of the Z gate.r   rj   r0   rB   rS   N)r   r'   r%   r   rz   s     r<   Útest_represent_zgater„   ±   r€   r>   c                  ó|   — t        d«      t        d«      z  } t        | d¬«      }t        dt        ddg«      |k(  sJ ‚y)z&Test the representation of the S gate.r   ri   r0   rB   N)r    r'   r%   r   r   rz   s     r<   Útest_represent_phasegater†   ¸   s;   € ä˜‹lœ5 ›;Ñ&€GÜ�w¨Ô*€FÜ�1”a˜˜A�,Ó 6Ò)Ð)Ñ)r>   c                  óž   — t        d«      t        d«      z  } t        dt        t        t
        z  dz  «      ddg«      t        | d¬«      k(  sJ ‚y)z&Test the representation of the T gate.r   ri   rF   r0   rB   N)r   r'   r   r
   r   r   r%   ©r{   s    r<   Útest_represent_tgater‰   ¿   sC   € ä�A‹h”u˜T“{Ñ"€GÜ�1”cœ!œB™$˜q™&“k 1 aÐ(Ó)¬Y°wÈÔ-JÒJÐJÑJr>   c                  óü   — t        d«      t        d«      z  t        d«      z  t        d«      z  t	        d«      z  } t        | d¬«      }t        t        t        d«      z  t        t        d«      z  ddg«      |k(  sJ ‚y)z$Test a compound gate representation.r   rj   r0   rB   N)	r   r   r   r   r'   r%   r   r   r   rz   s     r<   Útest_compound_gatesr‹   Å   sg   € ä�A‹h”u˜Q“xÑ¤ a£Ñ(¬°a«Ñ8¼¸t»ÑD€GÜ�w¨Ô*€FÜ”1”T˜!“W‘9œa¤ Q£™i¨¨AÐ.Ó/°6Ò9Ð9Ñ9r>   c                  óL  — t        dd«      } t        | d¬«      t        g d¢g d¢g d¢g d¢g«      k(  sJ ‚| t        d	«      z  } t	        t        | d
¬«      «      t        | «      k(  sJ ‚t        dd«      } t        | «      | k(  sJ ‚t        t        | «      «      | k(  sJ ‚| | z  dk(  sJ ‚y)zTest the CNOT gate.r/   r   r0   rB   rS   rT   rU   rV   Ú111rW   N)r   r%   r   r'   r*   r&   r-   rˆ   s    r<   Útest_cnot_gaterŽ   Ì   sµ   € ä�q˜!‹n€GÜ�W aÔ(Ü’šlªLº,ÐGÓHòIð Ið Ià”e˜E“lÑ"€GÜœ9 W°aÔ8Ó9Üˆw‹òð ð ô �q˜!‹n€GÜ�'‹?˜gÒ%Ð%Ð%Ü”&˜“/Ó" gÒ-Ð-Ð-Ø�7‰?˜aÒÐÑr>   c                  óh  — t         t        t        t        t        t
        fD ]B  } t         | d«       | d«      z   | d«      z  «       | d«       | d«      z   | d«      z  k(  rŒBJ ‚ t        t        d«      t        d«      dz  z  t        dd«      z  t        d«      z  t        d«      z  «      }|t        d«      dz  t        dd«      z  t        d«      z  t        d«      dz  z  k(  sJ ‚t        t        d«      t        d«      z  «      t        d«       t        d«      z  k(  sJ ‚t        t        d«      t        d«      dz  z  «      t        d«      dz  t        d«      z  k(  sJ ‚t        t        d«      t        d«      z  «      t        d«       t        d«      z  k(  sJ ‚t        t        d«      t        d«      z  «      t        d«       t        d«      z  k(  sJ ‚t        t        d«      t        d«      z  «      t        d«       t        d«      z  k(  sJ ‚t        t        d«      t	        d«      z  «      t	        d«      t        d«      z  k(  sJ ‚t        t        d«      t	        d«      z  «      t	        d«      t        d«      z  k(  sJ ‚t        t        d«      t        d«      z  «      t        d«      t        d«      z  k(  sJ ‚t        t        d«      t        dd«      z  «      t        dd«      t        d«      z  k(  sJ ‚t        t	        d«      t        dd«      z  «      t        dd«      t	        d«      z  k(  sJ ‚t        t        d«      t        dd«      z  «      t        dd«      t        d«      z  k(  sJ ‚t        t        d«      t        dd«      z  «      t        dd«      t        d«      z  k(  sJ ‚y)zTest gate_sort.r0   r/   r   N)r   r   r   r   r   r   r   r   )rr   Úes     r<   Útest_gate_sortr‘   Û   së  € ä””A”qœ!œQÐò ;ˆÜ™˜1›™a ›d™¡1 Q£4™Ó(©A¨a«D±°1³©I±a¸³d©NÓ:Ð:Ð:ð;ä”!�A“$”q˜“t˜Q‘w‘,œt A q›zÑ)¬!¨A«$Ñ.¬q°«tÑ3Ó4€AØ”�!“�a‘œ˜Q ›
Ñ"¤1 Q£4Ñ'¬¨!«¨a©Ñ/Ò/Ð/Ð/Ü”Q�q“Tœ!˜A›$‘YÓ¤A a£D 5¬¨1«¡:Ò-Ð-Ð-Ü”Q�q“Tœ!˜A›$ ™'‘\Ó"¤a¨£d¨A¡g¬a°«d¡lÒ2Ð2Ð2Ü”Q�q“Tœ!˜A›$‘YÓ¤A a£D 5¬¨1«¡:Ò-Ð-Ð-Ü”Q�q“Tœ!˜A›$‘YÓ¤A a£D 5¬¨1«¡:Ò-Ð-Ð-Ü”Q�q“Tœ!˜A›$‘YÓ¤A a£D 5¬¨1«¡:Ò-Ð-Ð-Ü”Q�q“Tœ!˜A›$‘YÓ¤1 Q£4¬¨!«¡9Ò,Ð,Ð,Ü”Q�q“Tœ!˜A›$‘YÓ¤1 Q£4¬¨!«¡9Ò,Ð,Ð,Ü”Q�q“Tœ!˜A›$‘YÓ¤1 Q£4¬¨!«¡9Ò,Ð,Ð,Ü”Q�q“Tœ$˜q !›*‘_Ó%¬¨a°«´A°a³D©Ò8Ð8Ð8Ü”Q�q“Tœ$˜q !›*‘_Ó%¬¨a°«´A°a³D©Ò8Ð8Ð8Ü”Q�q“Tœ$˜q !›*‘_Ó%¬¨a°«´A°a³D©Ò8Ð8Ð8Ü”Q�q“Tœ$˜q !›*‘_Ó%¬¨a°«´A°a³D©Ò8Ð8Ñ8r>   c                  óü  — t        d«      t        d«      z  t        d«      dz  z  t        dd«      z  t        d«      dz  z  t        d«      z  t        d«      dz  z  t	        d«      dz  z  } t        | «      t        d«      t        dd«      z  t	        d«      z  t        d«      z  t        d«      z  k(  sJ ‚t        t        d«      t        d«      z  «      dk(  sJ ‚t        t        d«      t        d«      z  «      dk(  sJ ‚t        t        d«      t        d«      z  «      dk(  sJ ‚t        t        d«      t        d«      z  «      dk(  sJ ‚t        t        d«      t        d«      z  «      t	        d«      k(  sJ ‚t        t	        d«      t	        d«      z  «      t        d«      k(  sJ ‚t        t        d«      «      t        d«      k(  sJ ‚t        t        d«      dz  t        d«      dz  z   «      t        d«      k(  sJ ‚y)zTest gate_simp.r   r/   r0   rW   rF   N)	r   r   r   r   r   r   r   r   r   )r�   s    r<   Útest_gate_simpr“   ÷   sŸ  € ä	ˆ!‹ŒQˆq‹T‰	”!�A“$˜‘'Ñœ$˜q !›*Ñ$¤Q q£T¨1¡WÑ,¬Q¨q«TÑ1´!°A³$¸±'Ñ9¼!¸A»$À¹'ÑA€AÜ�Q‹<œ1˜Q›4¤ Q¨£
™?¬1¨Q«4Ñ/´°!³Ñ4´Q°q³TÑ9Ò9Ð9Ð9Ü”Q�q“Tœ!˜A›$‘YÓ 1Ò$Ð$Ð$Ü”Q�q“Tœ!˜A›$‘YÓ 1Ò$Ð$Ð$Ü”Q�q“Tœ!˜A›$‘YÓ 1Ò$Ð$Ð$Ü”Q�q“Tœ!˜A›$‘YÓ 1Ò$Ð$Ð$Ü”Q�q“Tœ!˜A›$‘YÓ¤1 Q£4Ò'Ð'Ð'Ü”Q�q“Tœ!˜A›$‘YÓ¤1 Q£4Ò'Ð'Ð'Ü”W˜Q“ZÓ ¤G¨A£JÒ.Ð.Ð.Ü”Q�q“T˜1‘Wœq ›t Q™wÑ&Ó'¬7°1«:Ò5Ð5Ñ5r>   c            	      óŽ  — t        d«      } t        t        dd«      j                  «       d¬«      | k(  sJ ‚t	        t        dd«      t        d«      z  «      t        d«      k(  sJ ‚d	}t        |«      D ]Q  }t        |«      D ]A  }t        t        ||«      |¬«      t        t        ||«      j                  «       |¬«      k(  rŒAJ ‚ ŒS y
)zTest the SWAP gate.)rS   rV   rT   rU   r/   r   r0   rB   rW   Ú0010Ú1000rF   N)r   r%   r   r\   r&   r'   rG   )Úswap_gate_matrixr4   rP   Újs       r<   Útest_swap_gater™     sÆ   € äØ@óBÐä”X˜a “^×-Ñ-Ó/¸Ô;Ð?OÒOÐOÐOÜ”(˜1˜a“.¤ v£Ñ.Ó/´5¸³=Ò@Ð@Ð@Ø€GÜ�7‹^ò GˆÜ�q“ò 	GˆAÜœX a¨›^°WÔ=Üœ( 1 a›.×2Ñ2Ó4¸gÔFóGð Gð Gñ	GñGr>   c            	      ó¼  — t         t        t        t        t        t
        t        fD ]´  } t         t        t        t        t        t
        t        fD ]Š  }t         | d«       |d«      «      }t        t        |dd¬«      «      }t        t        |j                  «       dd¬«      «      }||k(  sJ ‚t         | d«       |d«      «      }|j                  «       dk(  rŒŠJ ‚ Œ¶ y)z-Test single qubit gate commutation relations.r   r/   Úsympy©r4   ÚformatN)r   r   r   r   r   r   r   r#   r+   r%   Údoit©Úg1Úg2r�   rH   rI   s        r<   Útest_one_qubit_commutatorsr¢     s¯   € äœQ¤¤1¤a¬¬AÐ.ò !ˆÜ¤¤A¤q¬!¬Q´Ð2ò 	!ˆBÜ™2˜a›5¡" Q£%Ó(ˆAÜœy¨°A¸gÔFÓGˆAÜœy¨¯©«¸1ÀWÔMÓNˆAØ˜’6ˆM�6ä™2˜a›5¡" Q£%Ó(ˆAØ—6‘6“8˜q“=Ð �=ñ	!ñ!r>   c            	      óð  — t         t        t        t        t        fD ]Ø  } t         t        t        t        t        fD ]¸  }t         | d«       |d«      «      }t        t        |dd¬«      «      }t        t        |j                  «       dd¬«      «      }||k(  sJ ‚t         | d«       |d«      «      }t        t        |dd¬«      «      }t        t        |j                  «       dd¬«      «      }||k(  rŒ¸J ‚ ŒÚ y)z1Test single qubit gate anticommutation relations.r   r/   r›   rœ   r0   N)	r   r   r   r   r   r$   r+   r%   rž   rŸ   s        r<   Útest_one_qubit_anticommutatorsr¤     sÌ   € äœQ¤¤1¤aÐ(ò 	ˆÜ¤¤A¤q¬!Ð,ò 	ˆBÜ™r !›u¡b¨£eÓ,ˆAÜœy¨°A¸gÔFÓGˆAÜœy¨¯©«¸1ÀWÔMÓNˆAØ˜’6ˆM�6Ü™r !›u¡b¨£eÓ,ˆAÜœy¨°A¸gÔFÓGˆAÜœy¨¯©«¸1ÀWÔMÓNˆAØ˜“6ˆM�6ñ	ñ	r>   c                  ó,  — t        t        dd«      t        d«      «      j                  «       dk(  sJ ‚t        t        dd«      t	        d«      «      j                  «       dk(  sJ ‚t        t        dd«      t        d«      «      j                  «       dk(  sJ ‚t        t        dd«      t        d«      «      j                  «       dk(  sJ ‚t        t        dd«      t        dd«      «      j                  «       dk(  sJ ‚t        t        dd«      t        dd«      «      j                  «       dk(  sJ ‚t        t        dd«      t        dd«      «      j                  «       dk(  sJ ‚t        t        dd«      t        dd«      «      j                  «       dk(  sJ ‚y)z)Test commutators of involving CNOT gates.r   r/   r0   N)r#   r   r   rž   r   r   r   © r>   r<   Útest_cnot_commutatorsr§   -  sJ  € ä”d˜1˜a“j¤! A£$Ó'×,Ñ,Ó.°!Ò3Ð3Ð3Ü”d˜1˜a“j¤! A£$Ó'×,Ñ,Ó.°!Ò3Ð3Ð3Ü”d˜1˜a“j¤! A£$Ó'×,Ñ,Ó.°!Ò3Ð3Ð3Ü”d˜1˜a“j¤! A£$Ó'×,Ñ,Ó.°!Ò3Ð3Ð3Ü”d˜1˜a“j¤$ q¨!£*Ó-×2Ñ2Ó4¸Ò9Ð9Ð9Ü”d˜1˜a“j¤$ q¨!£*Ó-×2Ñ2Ó4¸Ò9Ð9Ð9Ü”d˜1˜a“j¤$ q¨!£*Ó-×2Ñ2Ó4¸Ò9Ð9Ð9Ü”d˜1˜a“j¤$ q¨!£*Ó-×2Ñ2Ó4¸Ò9Ð9Ñ9r>   c                  ó    — t        dd«      } t        | t        «      sJ ‚t        | d¬«      }|j                  dk(  sJ ‚t        |t
        «      sJ ‚y )Né
   rW   rB   )é   rª   )r   Ú
isinstancer   r%   Úshaper   )rJ   Úms     r<   Útest_random_circuitr®   9  sL   € Ü�r˜1Ó€AÜ�aœÔÐÐÜ�!˜QÔ€AØ�7‰7�fÒÐÐÜ�aœÔ Ð Ñ r>   c                  ó@   — t        dd«      } t        | «      }| |k(  sJ ‚y ©Nr/   r0   ©r   r-   ©ÚxÚx_daggers     r<   Útest_hermitian_XGaterµ   A  ó"   € Üˆa�‹€AÜ�a‹y€Hà�ŠMÐ‰Mr>   c                  ó@   — t        dd«      } t        | «      }| |k(  sJ ‚y r°   ©r   r-   ©ÚyÚy_daggers     r<   Útest_hermitian_YGater¼   H  r¶   r>   c                  ó@   — t        dd«      } t        | «      }| |k(  sJ ‚y r°   ©r   r-   ©ÚzÚz_daggers     r<   Útest_hermitian_ZGaterÂ   O  r¶   r>   c                  óF   — t        dd«      } t        | «      }| |z  dk(  sJ ‚y r°   r±   r²   s     r<   Útest_unitary_XGaterÄ   V  ó&   € Üˆa�‹€AÜ�a‹y€Hàˆh‰J˜!ŠOÐ‰Or>   c                  óF   — t        dd«      } t        | «      }| |z  dk(  sJ ‚y r°   r¸   r¹   s     r<   Útest_unitary_YGaterÇ   ]  rÅ   r>   c                  óF   — t        dd«      } t        | «      }| |z  dk(  sJ ‚y r°   r¾   r¿   s     r<   Útest_unitary_ZGaterÉ   d  rÅ   r>   N)TÚsympy.core.mulr   Úsympy.core.numbersr   r   r   r   Úsympy.core.symbolr   r	   Ú&sympy.functions.elementary.exponentialr
   Ú(sympy.functions.elementary.miscellaneousr   Úsympy.matricesr   r   Úsympy.physics.quantum.gater   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   Ú sympy.physics.quantum.commutatorr#   Ú$sympy.physics.quantum.anticommutatorr$   Úsympy.physics.quantum.representr%   Úsympy.physics.quantum.qapplyr&   Úsympy.physics.quantum.qubitr'   r(   r)   r*   Ú!sympy.physics.quantum.matrixutilsr+   Ú!sympy.physics.quantum.matrixcacher,   Úsympy.physics.quantumr-   r=   rQ   rf   rm   rx   r}   r   r‚   r„   r†   r‰   r‹   rŽ   r‘   r“   r™   r¢   r¤   r§   r®   rµ   r¼   rÂ   rÄ   rÇ   rÉ   r¦   r>   r<   ú<module>rÙ      sä   ðÝ ß 9Ó 9ß -Ý 6Ý 9ß 2÷@÷ @÷ @÷ @÷ @õ @õ 8Ý ?Ý 5Ý /÷ó å <Ý 7Ý (ò$ò27ò$27òj7ò*4ò:ò*ò*ò*ò*òKò:ò ò9ò86ò
Gò
!òò	:ò!òòòòòór>   