§
    OŠtjƒ3  ã                   óè   — 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 d dlmZmZmZmZmZmZmZmZ d dlmZ dd	„Zd
„ Zd„ Zd„ Zd„ Z d„ Z!ed„ ¦   «         Z"ed„ ¦   «         Z#dS )é    )ÚMul)ÚInteger)ÚSymbol)Únumbered_symbols)ÚXÚYÚZÚHÚCNOTÚCGate)Úbfs_identity_search)Ú	kmp_tableÚfind_subcircuitÚreplace_subcircuitÚconvert_to_symbolic_indicesÚconvert_to_real_indicesÚrandom_reduceÚrandom_insertÚflatten_ids)Úslowc                 óz   — t          | ¦  «        t          | ¦  «        t          | ¦  «        t          | ¦  «        f}|S )N)r   r   r	   r
   )ÚqubitÚgatess     úk/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/tests/test_circuitutils.pyÚcreate_gate_sequencer      s-   € Ýˆu‰XŒX•q˜‘x”x¥ 5¡¤­1¨U©8¬8Ð4€EØ€Ló    c                  ój  — d} g d¢}|t          | ¦  «        k    sJ ‚d} g d¢}|t          | ¦  «        k    sJ ‚t          d¦  «        }t          d¦  «        }t          d¦  «        }t	          d¦  «        }|||||f} g d¢}|t          | ¦  «        k    sJ ‚|||||f} g d¢}|t          | ¦  «        k    sJ ‚d S )N)ÚaÚbÚcÚdr   r   r!   )éÿÿÿÿr   r   r   r   é   é   )ÚPÚAÚRÚTÚIÚCr)   r%   r&   r(   ÚEú r)   ÚNr,   r%   r&   r'   r&   r*   r
   ÚUr(   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
   )ÚwordÚexpected_tableÚxÚyÚzÚhs         r   Útest_kmp_tabler6      sí   € Ø.€DØ+Ð+Ð+€NØ�Y t™_œ_Ò,Ð,Ð,Ð,ðH€Dð:ð :ð :€Nà�Y t™_œ_Ò,Ð,Ð,Ð,å	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AØˆq�!�Q˜ˆ?€DØ%Ð%Ð%€NØ�Y t™_œ_Ò,Ð,Ð,Ð,àˆq�!�Q˜ˆ?€DØ%Ð%Ð%€NØ�Y t™_œ_Ò,Ð,Ð,Ð,Ð,Ð,r   c                  ó  — t          d¦  «        } t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }t          d¦  «        }t	          d¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }	t          |¦  «        }
| ||f}t          || f¦  «        dk    sJ ‚t          ||f¦  «        dk    sJ ‚t          ||f¦  «        dk    sJ ‚t          ||f¦  «        dk    sJ ‚t          |t          | |¦  «        ¦  «        dk    sJ ‚t          |t          | ||¦  «        ¦  «        dk    sJ ‚t          |t          ||¦  «        ¦  «        dk    sJ ‚t          t          |Ž | |||f¦  «        dk    sJ ‚t          t          |Ž ||| f¦  «        dk    sJ ‚t          || fdd¬¦  «        dk    sJ ‚| || ||f}t          t          |Ž t          | ||¦  «        ¦  «        dk    sJ ‚t          || fd¬¦  «        dk    sJ ‚t          || |fdd¬¦  «        dk    sJ ‚t          t          |Ž | |fdd¬¦  «        dk    sJ ‚t          || |fdd	¬¦  «        dk    sJ ‚t          || |fdd	¬¦  «        dk    sJ ‚| |||| |||| ||| |||||f}t          || ||||f¦  «        d
k    sJ ‚| ||||	|f}t          ||||	f¦  «        dk    sJ ‚|||	|||
f}|||	f}t          ||¦  «        }|dk    sJ ‚d S )Nr   r#   Úi0r"   r$   )ÚstartÚend)r9   r/   é   é   )r   r   r	   r
   r   r   r   )r2   r3   r4   r5   Úx1Úy1r8   Úx_i0Úy_i0Úz_i0Úh_i0ÚcircuitÚ
subcircuitÚresults                 r   Útest_find_subcircuitrF   +   sŽ  € Ý	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	
ˆ1‰Œ€BÝ	
ˆ1‰Œ€Bå	�‰Œ€BÝˆR‰5Œ5€DÝˆR‰5Œ5€DÝˆR‰5Œ5€DÝˆR‰5Œ5€Dà�!�Qˆi€Gå˜7 Q DÑ)Ô)¨QÒ.Ð.Ð.Ð.Ý˜7 R EÑ*Ô*¨bÒ0Ð0Ð0Ð0Ý˜7 Q DÑ)Ô)¨QÒ.Ð.Ð.Ð.Ý˜7 Q DÑ)Ô)¨RÒ/Ð/Ð/Ð/Ý˜7¥C¨¨1¡I¤IÑ.Ô.°"Ò4Ð4Ð4Ð4Ý˜7¥C¨¨1¨a¡L¤LÑ1Ô1°QÒ6Ð6Ð6Ð6Ý˜7¥C¨¨1¡I¤IÑ.Ô.°!Ò3Ð3Ð3Ð3Ý�3 ˜=¨1¨a°°A¨,Ñ7Ô7¸2Ò=Ð=Ð=Ð=Ý�3 ˜=¨1¨a°¨)Ñ4Ô4¸Ò:Ð:Ð:Ð:Ý˜7 Q D°°qÐ9Ñ9Ô9¸RÒ?Ð?Ð?Ð?à�!�Q˜˜1ˆo€GÝ�3 ˜=­#¨a°°A©,¬,Ñ7Ô7¸1Ò<Ð<Ð<Ð<Ý˜7 Q D°Ð2Ñ2Ô2°aÒ7Ð7Ð7Ð7Ý˜7 Q¨ F°!¸Ð;Ñ;Ô;¸rÒAÐAÐAÐAÝ�3 ˜=¨1¨a¨&¸¸qÐAÑAÔAÀRÒGÐGÐGÐGÝ˜7 Q¨ F°!¸Ð;Ñ;Ô;¸qÒ@Ð@Ð@Ð@Ý˜7 Q¨ F°!¸Ð;Ñ;Ô;¸qÒ@Ð@Ð@Ð@à�!�Q˜˜A˜q ! Q¨¨1¨bØ�!�Q˜˜2˜qð"€Gå˜7 Q¨¨1¨a°Ð$4Ñ5Ô5¸Ò;Ð;Ð;Ð;à�!�T˜4  qÐ)€GÝ˜7 T¨4°Ð$6Ñ7Ô7¸1Ò<Ð<Ð<Ð<à�T˜4  t¨TÐ2€GØ˜˜dÐ#€JÝ˜W jÑ1Ô1€FØ�QŠ;ˆ;ˆ;ˆ;ˆ;ˆ;r   c                  ó®  — t          d¦  «        } t          d¦  «        }t          d¦  «        }t          d¦  «        }t	          dd¦  «        }t          dt          d¦  «        ¦  «        }||| | f}||| f}t          |t          |Ž ¦  «        | fk    sJ ‚t          ||| fz   ¦  «        dk    sJ ‚t          ||d¬¦  «        |k    sJ ‚t          ||d¬¦  «        | fk    sJ ‚t          || | fd¬¦  «        ||fk    sJ ‚t          ||f¦  «        |k    sJ ‚| || ||f}| ||f}t          t          |Ž t          |Ž ¦  «        | |fk    sJ ‚| || |f}t          ||¦  «        |fk    sJ ‚| ||||f}| ||f}t          |t          |Ž d¬¦  «        ||fk    sJ ‚t          ||d¬¦  «        |k    sJ ‚||f}t          ||¦  «        |k    sJ ‚||||f}t          ||¦  «        | fk    sJ ‚|| f}t          |||¬¦  «        }	|	| || fk    sJ ‚| ||| ||f}| |f}||f}t          ||t          |Ž ¬¦  «        }	|	|||| ||fk    sJ ‚t          |||d¬	¦  «        }	|	| |||||fk    sJ ‚d S )
Nr   r#   ©r   © )Úposr$   r"   )Úreplace)rK   rJ   )r   r   r	   r
   r   r   r   r   )
r2   r3   r4   r5   ÚcnotÚcgate_zrC   ÚremoverK   Úactuals
             r   Útest_replace_subcircuitrP   [   s-  € Ý	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ��1‰:Œ:€DÝ�D�!˜A™$œ$ÑÔ€Gð �!�Q˜ˆl€GØ��AˆY€FÝ˜g¥s¨F |Ñ4Ô4¸¸Ò<Ð<Ð<Ð<Ý˜g v°°¡}Ñ5Ô5¸Ò;Ð;Ð;Ð;Ý˜g v°1Ð5Ñ5Ô5¸Ò@Ð@Ð@Ð@Ý˜g v°1Ð5Ñ5Ô5¸!¸Ò=Ð=Ð=Ð=Ý˜g¨¨1 v°1Ð5Ñ5Ô5¸!¸Q¸Ò?Ð?Ð?Ð?Ý˜g¨ tÑ,Ô,°Ò7Ð7Ð7Ð7à�!�Q˜˜1ˆo€GØ��AˆY€FÝ�c 7˜m­S°&¨\Ñ:Ô:¸qÀ!¸fÒDÐDÐDÐDØ��A�qˆ\€FÝ˜g vÑ.Ô.°1°$Ò6Ð6Ð6Ð6à�!�W˜a Ð&€GØ��Gˆ_€FÝ˜g¥s¨F |¸Ð<Ñ<Ô<ÀÀDÀ	ÒIÐIÐIÐIÝ˜g v°1Ð5Ñ5Ô5¸Ò@Ð@Ð@Ð@Ø�ˆV€FÝ˜g vÑ.Ô.°'Ò9Ð9Ð9Ð9Ø�˜!˜TÐ"€FÝ˜g vÑ.Ô.°1°$Ò6Ð6Ð6Ð6à�!ˆf€GÝ ¨Ø$ð&ñ &ô &€Fà�a˜˜A�YÒÐÐÐà�!�Q˜˜1˜aÐ €GØ�ˆV€FØ�Wˆo€GÝ ¨Ý  '˜]ð,ñ ,ô ,€Fà�d˜G Q¨¨1¨aÐ0Ò0Ð0Ð0Ð0å ¨Ø$¨!ð-ñ -ô -€Fà�a˜˜A˜t W¨aÐ0Ò0Ð0Ð0Ð0Ð0Ð0r   c                  óT  — t          ¦   «         \  } }}}t          d¦  «        }|t          d¦  «        i}t          | f¦  «        \  }}}}	|t	          |¦  «        fk    sJ ‚||k    sJ ‚t	          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        f}
|t          d¦  «        i}t          | |||f¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚t          d¦  «        \  }}}}t          d¦  «        }t	          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        f}
|t          d¦  «        i}t          ||||f¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚t	          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t	          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        f}
|t          d¦  «        |t          d¦  «        i}t          | |||||||f¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚|t          d¦  «        |t          d¦  «        i}t          t          ||||| |||¦  «        ¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚t	          |¦  «        t	          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        f}
|t          d¦  «        |t          d¦  «        i}t          t          | |||||||¦  «        ¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚|t          d¦  «        |t          d¦  «        i}t          || ||||||f¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚t          dd¦  «        }t          dd¦  «        }t          dt          d¦  «        ¦  «        }t          dt          d¦  «        ¦  «        }t	          |¦  «        t	          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          ||¦  «        t          ||¦  «        t          |t          |¦  «        ¦  «        t          |t          |¦  «        ¦  «        f}
|t          d¦  «        |t          d¦  «        i}| |||||||||||f}t          |¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚|| ||||||||||f}t	          |¦  «        t	          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        t          ||¦  «        t          ||¦  «        t          |t          |¦  «        ¦  «        t          |t          |¦  «        ¦  «        f}
|t          d¦  «        |t          d¦  «        i}t          |¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚||||f}t          ||¦  «        t          |¦  «        t          |t          |¦  «        ¦  «        t          |¦  «        f}
|t          d¦  «        |t          d¦  «        i}t          |¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚||||f}|t          d¦  «        |t          d¦  «        i}t          |¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚||||f}t          ||¦  «        t          |¦  «        t          |t          |¦  «        ¦  «        t          |¦  «        f}
|t          d¦  «        |t          d¦  «        i}t          |¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚t          d¦  «        }t          dt          dt          d¦  «        ¦  «        ¦  «        }t          dt          dt	          d¦  «        ¦  «        ¦  «        }||f}t          |t          |t          |¦  «        ¦  «        ¦  «        t          |t          |t	          |¦  «        ¦  «        ¦  «        f}
|t          d¦  «        |t          d¦  «        |t          d¦  «        i}t          |¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚|t          d¦  «        i}t          dd¬¦  «        }t          ||||¬	¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚t          d
¦  «        }t          dt	          d¦  «        ¦  «        }|t          d¦  «        |t          d¦  «        |t          d¦  «        |t          d¦  «        i}t          |||ft	          |¦  «        ¦  «        f}
|f}t          |¦  «        \  }}}}	||
k    sJ ‚||k    sJ ‚d S )Nr8   r   r#   Úi1Úi2r$   Úi)Úprefixr9   )Ú	qubit_mapr9   ÚgenÚi3)r/   r$   r#   r/   )r   r   r   r   r   r   r	   r
   r   r   r   r   )r2   r3   r4   r5   r8   Úexp_maprO   Úact_mapÚsndxrW   Úexpectedr=   r>   Úz1Úh1rR   Úcnot_10Úcnot_01Ú
cgate_z_10Ú
cgate_z_01ÚargsrS   Úccgate_zÚccgate_xÚndx_mapÚ	index_genrX   Úcgate_x0_c321s                               r   Ú test_convert_to_symbolic_indicesri   �   s€	  € Ý'Ñ)Ô)�L€Qˆˆ1ˆaå	�‰Œ€BØ•7˜1‘:”:Ð€GÝ!<¸a¸TÑ!BÔ!BÑ€FˆG�T˜3Ø•a˜‘e”e�XÒÐÐÐØ�gÒÐÐÐå�"‘”•q˜‘u”u�a ™eœe¥Q r¡U¤UÐ+€HØ•7˜1‘:”:Ð€GÝ!<¸aÀÀAÀq¸\Ñ!JÔ!JÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐå+¨AÑ.Ô.Ñ€RˆˆR�Ý	�‰Œ€Bå�"‘”•q˜‘u”u�a ™eœe¥Q r¡U¤UÐ+€HØ•7˜1‘:”:Ð€GÝ!<¸bÀ"ÀbÈ"Ð=MÑ!NÔ!NÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐå�"‘”•q˜‘u”u�a ™eœe¥Q r¡U¤U­A¨b©E¬Eµ1°R±5´5½!¸B¹%¼%ÅÀ2ÁÄÐG€HØ•7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GÝ!<¸aÀÀAÀqØ)+¨R°°Rð>9ñ ":ô ":Ñ€FˆG�T˜3à�XÒÐÐÐØ�gÒÐÐÐà•7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GÝ!<½SÀÀRØ)+¨R°°A°q¸!ñ>=ô >=ñ ">ô ">Ñ€FˆG�T˜3à�XÒÐÐÐØ�gÒÐÐÐå�"‘”•q˜‘u”u�a ™eœe¥Q r¡U¤U­A¨b©E¬Eµ1°R±5´5½!¸B¹%¼%ÅÀ2ÁÄÐG€HØ•7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GÝ!<½SÀÀBØ)*¨B°°2°q¸"ñ>>ô >>ñ "?ô "?Ñ€FˆG�T˜3à�XÒÐÐÐØ�gÒÐÐÐà•7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GÝ!<¸bÀ!ÀRÈØ)+¨Q°°Að>7ñ "8ô "8Ñ€FˆG�T˜3à�XÒÐÐÐØ�gÒÐÐÐå�1�a‰jŒj€GÝ�1�a‰jŒj€GÝ�q�!˜A™$œ$‘”€JÝ�q�!˜A™$œ$‘”€Jå�"‘”•q˜‘u”u�a ™eœe¥Q r¡U¤U­A¨b©E¬Eµ1°R±5´5Ý�"‘”•q˜‘u”u�d 2 r™lœl­D°°R©L¬LÝ�b�!˜B™%œ%Ñ Ô ¥%¨­A¨b©E¬EÑ"2Ô"2ð4€Hð •7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GØˆr�1�b˜!˜R  B¨°Ø˜
ð$€Då!<¸TÑ!BÔ!BÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐà��2�q˜"˜a  Q¨°Ø˜
ð$€Då�"‘”•q˜‘u”u�a ™eœe¥Q r¡U¤U­A¨b©E¬Eµ1°R±5´5Ý�"‘”•q˜‘u”u�d 2 r™lœl­D°°R©L¬LÝ�b�!˜B™%œ%Ñ Ô ¥%¨­A¨b©E¬EÑ"2Ô"2ð4€Hð •7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GÝ!<¸TÑ!BÔ!BÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐà�Q˜
 AÐ&€DÝ�R˜‘”�a ™eœe¥U¨2­q°©u¬uÑ%5Ô%5µq¸±u´uÐ=€HØ•7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GÝ!<¸TÑ!BÔ!BÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐà�R˜ RÐ(€DØ•7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GÝ!<¸TÑ!BÔ!BÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐà�R˜ RÐ(€DÝ�R˜‘”�a ™eœe¥U¨2­q°©u¬uÑ%5Ô%5µq¸±u´uÐ=€HØ•7˜1‘:”:˜r¥7¨1¡:¤:Ð.€GÝ!<¸TÑ!BÔ!BÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐå	�‰Œ€BÝ�Q�˜a¥ 1¡¤™œÑ'Ô'€HÝ�Q�˜a¥ 1¡¤™œÑ'Ô'€HØ�hÐ€Då�b�% ¥A b¡E¤EÑ*Ô*Ñ+Ô+­U°2µu¸RÅÀ2ÁÄÑ7GÔ7GÑ-HÔ-HÐI€HØ•7˜1‘:”:˜r¥7¨1¡:¤:¨rµ7¸1±:´:Ð>€GÝ!<¸TÑ!BÔ!BÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐà•7˜1‘:”:Ð€GÝ ¨°1Ð5Ñ5Ô5€IÝ!<¸TØ3:Ø/1Ø-6ð"8ñ "8ô "8Ñ€FˆG�T˜3ð �XÒÐÐÐØ�gÒÐÐÐå	�‰Œ€BÝ˜)¥Q q¡T¤TÑ*Ô*€MØ•7˜1‘:”:˜r¥7¨1¡:¤:Ø•7˜1‘:”:˜r¥7¨1¡:¤:ð/€Gå�r˜2˜r�l¥A b¡E¤EÑ*Ô*Ð,€HØÐ€DÝ!<¸TÑ!BÔ!BÑ€FˆG�T˜3Ø�XÒÐÐÐØ�gÒÐÐÐÐÐr   c            
      ó  — t          d¦  «        } t          d¦  «        }t          ¦   «         \  }}}}t          | ¦  «        }t          | ¦  «        }t	          | ¦  «        }| di}	|||f}
|||f}t          |
|	¦  «        }||k    sJ ‚t          dd¦  «        }t          dd¦  «        }t          dt	          d¦  «        ¦  «        }t          dt	          d¦  «        ¦  «        }t          || ¦  «        }t          | |¦  «        }t          |t	          | ¦  «        ¦  «        }| d|di}	|f}
|f}t          |
|	¦  «        }||k    sJ ‚|f}
|f}t          |
|	¦  «        }||k    sJ ‚|f}
|f}t          |
|	¦  «        }||k    sJ ‚| d|di}	|f}
|f}t          |
|	¦  «        }||k    sJ ‚t          d¦  «        }t          | t          |t	          |¦  «        ¦  «        ¦  «        }t          |t          |t          | ¦  «        ¦  «        ¦  «        }| d|d|di}	||f}
t          dt          dt	          d¦  «        ¦  «        ¦  «        t          dt          dt          d¦  «        ¦  «        ¦  «        f}t          t          |
Ž |	¦  «        }||k    sJ ‚| d|d|di}	||f}
t          dt          dt          d¦  «        ¦  «        ¦  «        t          dt          dt	          d¦  «        ¦  «        ¦  «        f}t          |
|	¦  «        }||k    sJ ‚d S )Nr8   rR   r   r#   rS   r$   )	r   r   r   r   r	   r   r   r   r   )r8   rR   r2   r3   r4   r5   r?   r@   rA   rV   rc   r\   rO   r_   r`   ra   rb   Ú
cnot_i1_i0Ú
cnot_i0_i1Úcgate_z_i1_i0rS   rd   re   s                          r   Útest_convert_to_real_indicesrn     s  € Ý	�‰Œ€BÝ	�‰Œ€Bå'Ñ)Ô)�L€Qˆˆ1ˆaåˆR‰5Œ5€DÝˆR‰5Œ5€DÝˆR‰5Œ5€Dà�Q�€IØ�$˜Ð€DØ�1�aˆy€HÝ$ T¨9Ñ5Ô5€FØ�XÒÐÐÐå�1�a‰jŒj€GÝ�1�a‰jŒj€GÝ�q�!˜A™$œ$‘”€JÝ�q�!˜A™$œ$‘”€Jå�b˜"‘”€JÝ�b˜"‘”€JÝ˜"�a ™eœeÑ$Ô$€Mà�Q˜˜A�€IØˆ=€DØˆz€HÝ$ T¨9Ñ5Ô5€FØ�XÒÐÐÐàÐ€DØˆ}€HÝ$ T¨9Ñ5Ô5€FØ�XÒÐÐÐàˆ=€DØˆz€HÝ$ T¨9Ñ5Ô5€FØ�XÒÐÐÐà�Q˜˜A�€IØÐ€DØˆ}€HÝ$ T¨9Ñ5Ô5€FØ�XÒÐÐÐå	�‰Œ€BÝ�R�˜r¥1 R¡5¤5Ñ)Ô)Ñ*Ô*€HÝ�R�˜r¥1 R¡5¤5Ñ)Ô)Ñ*Ô*€Hà�Q˜˜A˜r 1Ð%€IØ�hÐ€DÝ�a�˜q¥! A¡$¤$™œÑ(Ô(­%°µ5¸½A¸a¹D¼D±>´>Ñ*BÔ*BÐC€HÝ$¥S¨$ Z°Ñ;Ô;€FØ�XÒÐÐÐà�Q˜˜A˜r 1Ð%€IØ�hÐ€DÝ�a�˜q¥! A¡$¤$™œÑ(Ô(­%°µ5¸½A¸a¹D¼D±>´>Ñ*BÔ*BÐC€HÝ$ T¨9Ñ5Ô5€FØ�XÒÐÐÐÐÐr   c            
      óJ  — t          d¦  «        } t          d¦  «        }t          d¦  «        }t          d¦  «        }t	          dd¦  «        }t          dt          d¦  «        ¦  «        }| ||g}t          t          |dd¬¦  «        ¦  «        }| ||||f}t          |g ¦  «        |k    sJ ‚t          ||¦  «        |k    sJ ‚g d¢}	| ||| ||f}t          |||	¬¦  «        | ||fk    sJ ‚| | ||||f}t          |||	¬¦  «        | | ||fk    sJ ‚g d¢}	t          |||	¬¦  «        ||||fk    sJ ‚| |||||g}t          t          |d	d¬¦  «        ¦  «        }d
g}	| |||||||||f
}| |||||f}
t          |||	¬¦  «        |
k    sJ ‚t          |Ž }t          |||	¬¦  «        |
k    sJ ‚d S )Nr   r#   rH   r;   ©Ú	max_depth)r$   r<   é	   r/   é   ©Úseed)é   é   r   r$   é   )
r   r   r	   r
   r   r   Úlistr   r   r   )r2   r3   r4   r5   rL   rM   Ú	gate_listÚidsrC   Úseqr\   s              r   Útest_random_reducer}   K  s  € å	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ��1‰:Œ:€DÝ�D�!˜A™$œ$ÑÔ€Gà�A�q�	€IÝ
Õ" 9¨a¸1Ð=Ñ=Ô=Ñ
>Ô
>€Cà�!�Q˜˜4Ð €GÝ˜ "Ñ%Ô%¨Ò0Ð0Ð0Ð0Ý˜ #Ñ&Ô&¨'Ò1Ð1Ð1Ð1à
Ð
Ð
€CØ�!�Q˜˜1˜aÐ €GÝ˜ #¨CÐ0Ñ0Ô0°Q¸¸1°IÒ=Ð=Ð=Ð=à�!�Q˜˜1˜aÐ €GÝ˜ #¨CÐ0Ñ0Ô0°Q¸¸1¸a°LÒ@Ð@Ð@Ð@à
ˆ+ˆ+€CÝ˜ #¨CÐ0Ñ0Ô0°Q¸¸1¸a°LÒ@Ð@Ð@Ð@à�A�q˜!˜T 7Ð+€IÝ
Õ" 9¨a¸1Ð=Ñ=Ô=Ñ
>Ô
>€Càˆ$€CØ�!�Q˜˜1˜a  G¨Q°Ð5€GØ�1�a˜ ! TÐ*€HÝ˜ #¨CÐ0Ñ0Ô0°HÒ<Ð<Ð<Ð<Ý�7ˆm€GÝ˜ #¨CÐ0Ñ0Ô0°HÒ<Ð<Ð<Ð<Ð<Ð<r   c            	      óÂ  — t          d¦  «        } t          d¦  «        }t          d¦  «        }t          d¦  «        }t	          dd¦  «        }t          dt          d¦  «        ¦  «        }| | fg}||f}d\  }}	t          ||||	g¬¦  «        }
|
| | ||fk    sJ ‚| |||f}||f| ||fg}| | |||||f}d\  }}	t          ||||	g¬¦  «        }
|
|k    sJ ‚| |||||g}t          t          |dd¬	¦  «        ¦  «        }t          |¦  «        }| ||||f}| || || ||||f	}d
\  }}	t          ||||	g¬¦  «        }
|
|k    sJ ‚t          |Ž }t          ||||	g¬¦  «        }
|
|k    sJ ‚d S )Nr   r#   rH   )r   r   rt   )r#   r#   r$   r;   rp   )r#   é   )r   r   r	   r
   r   r   r   ry   r   r   r   )r2   r3   r4   r5   rL   rM   ÚchoicesrC   ÚlocÚchoicerO   r\   rz   r{   Úeq_idss                  r   Útest_random_insertr„   p  sÓ  € å	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ	ˆ!‰Œ€AÝ��1‰:Œ:€DÝ�D�!˜A™$œ$ÑÔ€Gà�1ˆvˆh€GØ�!ˆf€GØ�K€CˆÝ˜7 G°3¸°-Ð@Ñ@Ô@€FØ�a˜˜A˜q�\Ò!Ð!Ð!Ð!à�!�Q˜ˆl€GØ�1ˆv˜˜1˜a�yÐ!€GØ�1�a˜˜A˜q !Ð$€HØ�K€CˆÝ˜7 G°3¸°-Ð@Ñ@Ô@€FØ�XÒÐÐÐà�A�q˜!˜T 7Ð+€IÝ
Õ" 9¨a¸1Ð=Ñ=Ô=Ñ
>Ô
>€Cå˜ÑÔ€Fà�!�Q˜˜gÐ&€GØ�1�a˜˜A˜q ! T¨7Ð3€HØ�K€CˆÝ˜7 F°#°v°Ð?Ñ?Ô?€FØ�XÒÐÐÐÝ�7ˆm€GÝ˜7 F°#°v°Ð?Ñ?Ô?€FØ�XÒÐÐÐÐÐr   NrH   )$Úsympy.core.mulr   Úsympy.core.numbersr   Úsympy.core.symbolr   Úsympy.utilitiesr   Úsympy.physics.quantum.gater   r   r	   r
   r   r   Ú$sympy.physics.quantum.identitysearchr   Ú"sympy.physics.quantum.circuitutilsr   r   r   r   r   r   r   r   Úsympy.testing.pytestr   r   r6   rF   rP   ri   rn   r}   r„   rI   r   r   ú<module>r�      s®  ðØ Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø $Ð $Ð $Ð $Ð $Ð $Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð &Ð %Ð %Ð %Ð %Ð %ðð ð ð ð
-ð -ð -ð0-ð -ð -ð`/1ð /1ð /1ðd{ð {ð {ð|=ð =ð =ð@ ð!=ð !=ñ „ð!=ðH ð!ð !ñ „ð!ð !ð !r   