§
    OŠtjÐ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)„ ZSd*S )+é    )Ú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                  ó®  — t          d¦  «        } | j        dk    sJ ‚| j        dk    sJ ‚t          d¦  «        }t          d¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }||k    sJ ‚||k    sJ ‚||k    sJ ‚t	          ||¦  «        }t	          ||¦  «        }t	          ||¦  «        }||k    sJ ‚||k    sJ ‚||k    sJ ‚dS )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/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/tests/test_gate.pyÚ	test_gater=      só   € å�Q‰Œ€AØŒ<˜1ÒÐÐÐØŒ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 ]S}|t          t          |d¦  «        ¦  «        z  t          t	          |t          |d¦  «        z  ¦  «        ¦  «        k    sJ ‚ŒTd S )
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   /   sk  € Ý˜Ñ#Ô#�J€A€qˆ!ˆQÝ�A�q�6˜A˜q˜6Ð"Ñ#Ô#€Dõ 
ˆt�TÑ	Ô	€BÝ�R Ð#Ñ#Ô# tÒ+Ð+Ð+Ð+Ý�"•U˜3‘Z”Z‘-Ñ Ô  A¥e¨C¡j¤j¡L°1µU¸3±Z´Z±<Ñ$?Ò?Ð?Ð?Ð?Ý�"•U˜3‘Z”Z‘-Ñ Ô  A¥e¨C¡j¤j¡L°1µU¸3±Z´Z±<Ñ$?Ò?Ð?Ð?Ð?õ 
ˆt�TÑ	Ô	€BÝ�b !Ð$Ñ$Ô$€EÝ�1‰XŒXð 7ð 7ˆØ•_¥X¨a°¡^¤^Ñ4Ô4Ñ4Ý�F 2¥h¨q°!¡n¤nÑ#4Ñ5Ô5Ñ6Ô6ò7ð 7ð 7ð 7ð 7ð7ð 7r>   c                  óH  — 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          | 	                    ¦   «         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          | 	                    ¦   «         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          |¦  «        |                     ¦   «         k    sJ ‚t          |¦  «        |k    sJ ‚t          |¦  «        |                     ¦   «         k    sJ ‚t          |¦  «        t          |d¦  «        k    sJ ‚t          |d¦  «        |                     ¦   «         k    sJ ‚dS )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ô B€Jå•U˜1�e A™hœhÑ'Ô'°Ð3Ñ3Ô3°zÒAÐAÐAÐAõ ˜¥ a¡¤Ñ)Ô)€KÝ�[¨!Ð,Ñ,Ô,ÝØ%Ð%Ð%Ð'?Ð'?Ð'?ÐAYÐAYÐAYØÐÐÐ6Ð6Ð6ð 9ð 9ð 9Ø*Ð*Ð*ØÐÐðñ	ô 	òð ð ð õ ˜¥ a¡¤Ñ)Ô)€KÝ�+�e F™mœmÑ+Ñ,Ô,Ý�	 +­e°F©m¬mÑ";ÀQÐGÑGÔGÑHÔHòIð Ið Ið Iå�+�e F™mœmÑ+Ñ,Ô,Ý�	 +­e°F©m¬mÑ";ÀQÐGÑGÔGÑHÔHòIð Ið Ið Iõ �1•e˜A‘h”hÑÔ€FÝØ	�| a¨¨Aµ¨r ]°Q¸½1¸a°LÐAñCô C€Mõ �V×%Ò%Ñ'Ô'°Ð3Ñ3Ô3°}ÒDÐDÐDÐDå�1•e˜A‘h”hÑÔ€FÝØAñCô C€Må�&�˜t™œÑ$Ñ%Ô%­%°©+¬+¨Ò5Ð5Ð5Ð5Ý�9 V­E°$©K¬KÑ%7ÀÐCÑCÔCÑDÔDÝ	ˆt‰Œˆòð ð ð õ �V×%Ò%Ñ'Ô'°Ð3Ñ3Ô3°}ÒDÐDÐDÐDå�q�) A™,œ,Ñ'Ô'€JÝ�*�U 4™[œ[Ñ(Ñ)Ô)Ý	�%�‰+Œ+‰òð ð ð å�9 Zµ°d±´Ñ%;ÀQÐGÑGÔGÑHÔHÝ	�%�‰+Œ+‰òð ð ð õ �&‰>Œ>˜VÒ#Ð#Ð#Ð#Ýˆv�q‰>Œ>�V F™^œ^Ò+Ð+Ð+Ð+Ý�&‰>Œ>˜VŸ^š^Ñ-Ô-Ò-Ð-Ð-Ð-Ý�*ÑÔ Ò+Ð+Ð+Ð+Ý�*ÑÔ ×!3Ò!3Ñ!5Ô!5Ò5Ð5Ð5Ð5Ý�*ÑÔ¥ Z°Ñ!4Ô!4Ò4Ð4Ð4Ð4Ýˆz˜2ÑÔ *×"4Ò"4Ñ"6Ô"6Ò6Ð6Ð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 ]S}
|	t          t          |
d¦  «        ¦  «        z  t          t          |t          |
d¦  «        z  ¦  «        ¦  «        k    sJ ‚ŒTd S )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ÔK€Dõ 
ˆt�TÑ	Ô	€BÝ
��2‰,Œ,€CÝ�S !Ð$Ñ$Ô$¨Ò,Ð,Ð,Ð,Ý�#•e˜D‘k”k‘/Ñ"Ô" a­¨d©¬¡m°a½¸d¹¼±mÑ&CÒCÐCÐCÐCÝ�#•e˜D‘k”k‘/Ñ"Ô" a­¨d©¬¡m°a½¸d¹¼±mÑ&CÒCÐCÐCÐCÝ�#•e˜D‘k”k‘/Ñ"Ô"¥e¨D¡k¤kÒ1Ð1Ð1Ð1Ý�#•e˜D‘k”k‘/Ñ"Ô"¥e¨D¡k¤kÒ1Ð1Ð1Ð1õ 
ˆt�TÑ	Ô	€BÝ�b !Ð$Ñ$Ô$€EÝ�1‰XŒXð 7ð 7ˆØ•_¥X¨a°¡^¤^Ñ4Ô4Ñ4Ý�F 2¥h¨q°!¡n¤nÑ#4Ñ5Ô5Ñ6Ô6ò7ð 7ð 7ð 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 ‚d S )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¬7©Ð3µa½¸Q¹¼±iÅ!ÀÅDÈÁGÄGÁÐ5LÐMÑNÔN€EÝ•x  1‘~”~­¨!©Ñ+­X°a¸©^¬^½aÀ¹cÑ-AÐBÝ  1‘~”~­¨!©Ñ+­X°a¸©^¬^½aÀ¹cÑ-AÐBðDñ Eô E€Gå�q˜!�f˜q¥!˜fÐ%Ñ&Ô&€GÝ	ˆq�%‰Œ€BÝ•Q�q‘T”T˜"‘W aÐ(Ñ(Ô(¨GÒ3Ð3Ð3Ð3Ý�R�˜!™œ‘W aÐ(Ñ(Ô(¨GÒ3Ð3Ð3Ð3Ð3Ð3r>   c                  ó¬   — t          d¦  «        t          d¦  «        z  } t          | d¬¦  «        }|t          t          t          ddg¦  «        k    sJ ‚dS )z-Test the representation of the hadamard gate.r   rj   r0   rB   N)r   r'   r%   r   r,   ©ÚcircuitÚanswers     r<   Útest_represent_hadamardr}   š   sR   € å˜1‰oŒo�e D™kœkÑ)€GÝ�w¨Ð*Ñ*Ô*€Fà•V�Y­	°1°aÐ8Ñ9Ô9Ò9Ð9Ð9Ð9Ð9Ð9r>   c                  ó”   — t          d¦  «        t          d¦  «        z  } t          | d¬¦  «        }t          g d¢¦  «        |k    sJ ‚dS )z&Test the representation of the X gate.r   rj   r0   rB   rT   N)r   r'   r%   r   rz   s     r<   Útest_represent_xgater   ¢   óM   € å�A‰hŒ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 ‚dS )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‚   ©   sh   € å�A‰hŒh•u˜T‘{”{Ñ"€GÝ�w¨Ð*Ñ*Ô*€FØ�!Œ9˜Š>ˆ>˜f Qœi­1šn˜nØˆqŒ	�QŠˆ˜6 !œ9¨š>˜>˜>ð*Ø)˜>r>   c                  ó”   — t          d¦  «        t          d¦  «        z  } t          | d¬¦  «        }t          g d¢¦  «        |k    sJ ‚dS )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 ‚dS )z&Test the representation of the S gate.r   ri   r0   rB   N)r    r'   r%   r   r   rz   s     r<   Útest_represent_phasegater†   ¸   sQ   € å˜‰lŒ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 ‚dS )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‰   ¿   s[   € å�A‰hŒh•u˜T‘{”{Ñ"€GÝ�1•c�!�B™$˜q™&‘k”k 1 aÐ(Ñ)Ô)­Y°wÈÐ-JÑ-JÔ-JÒJÐJÐJÐJÐJÐJr>   c                  óL  — 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 ‚dS )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‹   Å   s‡   € å�A‰hŒh•u˜Q‘x”xÑ¥ a¡¤Ñ(­°a©¬Ñ8½¸t¹¼ÑD€GÝ�w¨Ð*Ñ*Ô*€FÝ•1•T˜!‘W”W‘9�a¥ Q¡¤™i¨¨AÐ.Ñ/Ô/°6Ò9Ð9Ð9Ð9Ð9Ð9r>   c                  ó°  — 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 ‚dS )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Œn€GÝ�W aÐ(Ñ(Ô(Ý���˜l˜l˜l¨L¨L¨L¸,¸,¸,ÐGÑHÔHòIð Ið Ið Ià•e˜E‘l”lÑ"€GÝ�9 W°aÐ8Ñ8Ô8Ñ9Ô9Ýˆw‰Œòð ð ð õ �q˜!‰nŒn€GÝ�'‰?Œ?˜gÒ%Ð%Ð%Ð%Ý•&˜‘/”/Ñ"Ô" gÒ-Ð-Ð-Ð-Ø�7‰?˜aÒÐÐÐÐÐr>   c                  óê	  — t           t          t          t          t          t
          fD ]Y} t           | d¦  «         | d¦  «        z   | d¦  «        z  ¦  «         | d¦  «         | d¦  «        z   | d¦  «        z  k    sJ ‚ŒZt          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 ‚dS )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˜a ™dœd™ 1 1 Q¡4¤4™Ñ(Ô(¨A¨A¨a©D¬D°°°1±´©I°a°a¸±d´d©NÒ:Ð:Ð:Ð:Ð:Ý•!�A‘$”$•q˜‘t”t˜Q‘w‘,�t A q™zœzÑ)­!¨A©$¬$Ñ.­q°©t¬tÑ3Ñ4Ô4€AØ•�!‘”�a‘�˜Q ™
œ
Ñ"¥1 Q¡4¤4Ñ'­¨!©¬¨a©Ñ/Ò/Ð/Ð/Ð/Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥A a¡D¤D 5­¨1©¬¡:Ò-Ð-Ð-Ð-Ý•Q�q‘T”T�!˜A™$œ$ ™'‘\Ñ"Ô"¥a¨¡d¤d¨A¡g­a°©d¬d¡lÒ2Ð2Ð2Ð2Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥A a¡D¤D 5­¨1©¬¡:Ò-Ð-Ð-Ð-Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥A a¡D¤D 5­¨1©¬¡:Ò-Ð-Ð-Ð-Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥A a¡D¤D 5­¨1©¬¡:Ò-Ð-Ð-Ð-Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥1 Q¡4¤4­¨!©¬¡9Ò,Ð,Ð,Ð,Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥1 Q¡4¤4­¨!©¬¡9Ò,Ð,Ð,Ð,Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥1 Q¡4¤4­¨!©¬¡9Ò,Ð,Ð,Ð,Ý•Q�q‘T”T�$˜q !™*œ*‘_Ñ%Ô%­¨a°©¬µA°a±D´D©Ò8Ð8Ð8Ð8Ý•Q�q‘T”T�$˜q !™*œ*‘_Ñ%Ô%­¨a°©¬µA°a±D´D©Ò8Ð8Ð8Ð8Ý•Q�q‘T”T�$˜q !™*œ*‘_Ñ%Ô%­¨a°©¬µA°a±D´D©Ò8Ð8Ð8Ð8Ý•Q�q‘T”T�$˜q !™*œ*‘_Ñ%Ô%­¨a°©¬µA°a±D´D©Ò8Ð8Ð8Ð8Ð8Ð8r>   c                  óX  — 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 ‚dS )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ŒT‰	•!�A‘$”$˜‘'Ñ�$˜q !™*œ*Ñ$¥Q q¡T¤T¨1¡WÑ,­Q¨q©T¬TÑ1µ!°A±$´$¸±'Ñ9½!¸A¹$¼$À¹'ÑA€AÝ�Q‰<Œ<�1˜Q™4œ4¥ Q¨¡
¤
™?­1¨Q©4¬4Ñ/µ°!±´Ñ4µQ°q±T´TÑ9Ò9Ð9Ð9Ð9Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ 1Ò$Ð$Ð$Ð$Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ 1Ò$Ð$Ð$Ð$Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ 1Ò$Ð$Ð$Ð$Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ 1Ò$Ð$Ð$Ð$Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥1 Q¡4¤4Ò'Ð'Ð'Ð'Ý•Q�q‘T”T�!˜A™$œ$‘YÑÔ¥1 Q¡4¤4Ò'Ð'Ð'Ð'Ý•W˜Q‘Z”ZÑ Ô ¥G¨A¡J¤JÒ.Ð.Ð.Ð.Ý•Q�q‘T”T˜1‘W�q ™tœt Q™wÑ&Ñ'Ô'­7°1©:¬:Ò5Ð5Ð5Ð5Ð5Ð5r>   c            	      ó  — t          d¦  «        } t          t          dd¦  «                             ¦   «         d¬¦  «        | k    sJ ‚t	          t          dd¦  «        t          d¦  «        z  ¦  «        t          d¦  «        k    sJ ‚d	}t          |¦  «        D ]h}t          |¦  «        D ]V}t          t          ||¦  «        |¬¦  «        t          t          ||¦  «                             ¦   «         |¬¦  «        k    sJ ‚ŒWŒid
S )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ô BÐå•X˜a ‘^”^×-Ò-Ñ/Ô/¸Ð;Ñ;Ô;Ð?OÒOÐOÐOÐOÝ•(˜1˜a‘.”.¥ v¡¤Ñ.Ñ/Ô/µ5¸±=´=Ò@Ð@Ð@Ð@Ø€GÝ�7‰^Œ^ð Gð GˆÝ�q‘”ð 	Gð 	GˆAÝ�X a¨™^œ^°WÐ=Ñ=Ô=Ý�( 1 a™.œ.×2Ò2Ñ4Ô4¸gÐFÑFÔFòGð Gð Gð 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          | 
                    ¦   «         dd¬¦  «        ¦  «        }||k    sJ ‚t           | d¦  «         |d¦  «        ¦  «        }| 
                    ¦   «         dk    sJ ‚Œ¹ŒèdS )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˜2˜a™5œ5 " " Q¡%¤%Ñ(Ô(ˆAÝ�y¨°A¸gÐFÑFÔFÑGÔGˆAÝ�y¨¯ª©¬¸1ÀWÐMÑMÔMÑNÔNˆAØ˜’6�6�6�6å˜2˜2˜a™5œ5 " " Q¡%¤%Ñ(Ô(ˆAØ—6’6‘8”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          |                     ¦   «         dd¬¦  «        ¦  «        }||k    sJ ‚t           | d¦  «         |d¦  «        ¦  «        }t          t          |dd¬¦  «        ¦  «        }t          t          |                     ¦   «         dd¬¦  «        ¦  «        }||k    sJ ‚Œ÷�ŒdS )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˜r !™uœu b b¨¡e¤eÑ,Ô,ˆAÝ�y¨°A¸gÐFÑFÔFÑGÔGˆAÝ�y¨¯ª©¬¸1ÀWÐMÑMÔMÑNÔNˆAØ˜’6�6�6�6Ý˜r˜r !™uœu b b¨¡e¤eÑ,Ô,ˆAÝ�y¨°A¸gÐFÑFÔFÑGÔGˆAÝ�y¨¯ª©¬¸1ÀWÐMÑMÔMÑNÔNˆAØ˜’6�6�6�6�6ñ	ð	ð 	r>   c                  ó>  — t          t          dd¦  «        t          d¦  «        ¦  «                             ¦   «         dk    sJ ‚t          t          dd¦  «        t	          d¦  «        ¦  «                             ¦   «         dk    sJ ‚t          t          dd¦  «        t          d¦  «        ¦  «                             ¦   «         dk    sJ ‚t          t          dd¦  «        t          d¦  «        ¦  «                             ¦   «         dk    sJ ‚t          t          dd¦  «        t          dd¦  «        ¦  «                             ¦   «         dk    sJ ‚t          t          dd¦  «        t          dd¦  «        ¦  «                             ¦   «         dk    sJ ‚t          t          dd¦  «        t          dd¦  «        ¦  «                             ¦   «         dk    sJ ‚t          t          dd¦  «        t          dd¦  «        ¦  «                             ¦   «         dk    sJ ‚dS )z)Test commutators of involving CNOT gates.r   r/   r0   N)r#   r   r   rž   r   r   r   © r>   r<   Útest_cnot_commutatorsr§   -  s¸  € å•d˜1˜a‘j”j¥! A¡$¤$Ñ'Ô'×,Ò,Ñ.Ô.°!Ò3Ð3Ð3Ð3Ý•d˜1˜a‘j”j¥! A¡$¤$Ñ'Ô'×,Ò,Ñ.Ô.°!Ò3Ð3Ð3Ð3Ý•d˜1˜a‘j”j¥! A¡$¤$Ñ'Ô'×,Ò,Ñ.Ô.°!Ò3Ð3Ð3Ð3Ý•d˜1˜a‘j”j¥! A¡$¤$Ñ'Ô'×,Ò,Ñ.Ô.°!Ò3Ð3Ð3Ð3Ý•d˜1˜a‘j”j¥$ q¨!¡*¤*Ñ-Ô-×2Ò2Ñ4Ô4¸Ò9Ð9Ð9Ð9Ý•d˜1˜a‘j”j¥$ q¨!¡*¤*Ñ-Ô-×2Ò2Ñ4Ô4¸Ò9Ð9Ð9Ð9Ý•d˜1˜a‘j”j¥$ q¨!¡*¤*Ñ-Ô-×2Ò2Ñ4Ô4¸Ò9Ð9Ð9Ð9Ý•d˜1˜a‘j”j¥$ q¨!¡*¤*Ñ-Ô-×2Ò2Ñ4Ô4¸Ò9Ð9Ð9Ð9Ð9Ð9r>   c                  ó¾   — t          dd¦  «        } t          | t          ¦  «        sJ ‚t          | d¬¦  «        }|j        dk    sJ ‚t          |t
          ¦  «        sJ ‚d S )Né
   rW   rB   )é   rª   )r   Ú
isinstancer   r%   Úshaper   )rJ   Úms     r<   Útest_random_circuitr®   9  sh   € Ý�r˜1ÑÔ€AÝ�a�ÑÔÐÐÐÝ�!˜QÐÑÔ€AØŒ7�fÒÐÐÐÝ�a�Ñ Ô Ð Ð Ð Ð Ð r>   c                  óT   — t          dd¦  «        } t          | ¦  «        }| |k    sJ ‚d S ©Nr/   r0   ©r   r-   ©ÚxÚx_daggers     r<   Útest_hermitian_XGaterµ   A  ó+   € Ýˆa�‰Œ€AÝ�a‰yŒy€Hà�ŠMˆMˆMˆMˆMˆMr>   c                  óT   — t          dd¦  «        } t          | ¦  «        }| |k    sJ ‚d S r°   ©r   r-   ©ÚyÚy_daggers     r<   Útest_hermitian_YGater¼   H  r¶   r>   c                  óT   — t          dd¦  «        } t          | ¦  «        }| |k    sJ ‚d S r°   ©r   r-   ©ÚzÚz_daggers     r<   Útest_hermitian_ZGaterÂ   O  r¶   r>   c                  óZ   — t          dd¦  «        } t          | ¦  «        }| |z  dk    sJ ‚d S r°   r±   r²   s     r<   Útest_unitary_XGaterÄ   V  ó/   € Ýˆa�‰Œ€AÝ�a‰yŒy€Hàˆh‰J˜!ŠOˆOˆOˆOˆOˆOr>   c                  óZ   — t          dd¦  «        } t          | ¦  «        }| |z  dk    sJ ‚d S r°   r¸   r¹   s     r<   Útest_unitary_YGaterÇ   ]  rÅ   r>   c                  óZ   — t          dd¦  «        } t          | ¦  «        }| |z  dk    sJ ‚d S 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Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ð@ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð @ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð à <Ð <Ð <Ð <Ð <Ð <Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø (Ð (Ð (Ð (Ð (Ð (ð$ð $ð $ð27ð 7ð 7ð$27ð 27ð 27ðj7ð 7ð 7ð*4ð 4ð 4ð:ð :ð :ð*ð *ð *ð*ð *ð *ð*ð *ð *ð*ð *ð *ðKð Kð Kð:ð :ð :ð ð  ð  ð9ð 9ð 9ð86ð 6ð 6ð
Gð 
Gð 
Gð
!ð 
!ð 
!ðð ð ð	:ð 	:ð 	:ð!ð !ð !ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð r>   