+
    i3                         ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
HtHtHtHt ^ RIHt ^ RIHtHtHtHtHtHtHtHt ^ RIHt RR	 ltR
 tR tR tR t R t!]R 4       t"]R 4       t#R# )    )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    \        V 4      \        V 4      \        V 4      \        V 4      3pV# )N)r   r   r	   r
   )qubitgatess   & k/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/physics/quantum/tests/test_circuitutils.pycreate_gate_sequencer      s%    uXqx51U84EL    c                  *   Rp . ROpV\        V 4      8X  g   Q hRp . ROpV\        V 4      8X  g   Q h\        ^ 4      p\        ^ 4      p\        ^ 4      p\	        ^ 4      pW#W2V3p . ROpV\        V 4      8X  g   Q hW"W5V3p . ROpV\        V 4      8X  g   Q hR# )aN)r   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
   )wordexpected_tablexyzhs         r   test_kmp_tabler6      s    .D+NYt_,,,HD:NYt_,,,	!A	!A	!A	!A!?D%NYt_,,,!?D%NYt_,,,r   c                     \        ^ 4      p \        ^ 4      p\        ^ 4      p\        ^ 4      p\        ^4      p\        ^4      p\	        R4      p\        V4      p\        V4      p\        V4      p	\        V4      p
WV3p\        W34      ^ 8X  g   Q h\        W34      R8X  g   Q h\        W34      ^8X  g   Q h\        W34      R8X  g   Q h\        V\        W4      4      R8X  g   Q h\        V\        WV4      4      ^ 8X  g   Q h\        V\        W4      4      ^8X  g   Q h\        \        V!  WW#34      R8X  g   Q h\        \        V!  W!V 34      R8X  g   Q h\        W3^^R7      R8X  g   Q hWWV3p\        \        V!  \        WV4      4      ^8X  g   Q h\        W3^R7      ^8X  g   Q h\        WV3^^R7      R8X  g   Q h\        \        V!  W3^^R7      R8X  g   Q h\        WV3^^R7      ^8X  g   Q h\        WV3^^R7      ^8X  g   Q hWW$WW#WVWW#WS3p\        WWW534      ^8X  g   Q hWWxW3p\        WW34      ^8X  g   Q hWxWW3pWxV	3p\        W4      pV^ 8X  g   Q hR# )r   i0)startend)r9   Nr"   )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_subcircuitrD   +   s   	!A	!A	!A	!A	
1B	
1B	BR5DR5DR5DR5DQiG7D)Q...7E*b0007D)Q...7D)R///7CI."4447CaL1Q6667CI.!3333=1,72===3=1)4:::7Dq9R???Q1oG3=#aA,71<<<7D2a7777F!;rAAA3=1&qARGGG7F!;q@@@7F!;q@@@QA!bQ2"G7a$45;;;T)G74$671<<<4t2Gd#JW1FQ;;r   c                     \        ^ 4      p \        ^ 4      p\        ^ 4      p\        ^ 4      p\	        ^^ 4      p\        R\        ^4      4      pW!W 3pW!V 3p\        V\        V!  4      V 38X  g   Q h\        WgV 3,           4      R8X  g   Q h\        Wg^R7      V8X  g   Q h\        Wg^ R7      V 38X  g   Q h\        W`V 3^R7      W!38X  g   Q h\        Wc34      V8X  g   Q hWWV3pWV3p\        \        V!  \        V!  4      W38X  g   Q hWW3p\        Wg4      V38X  g   Q hWWSV3pWV3p\        V\        V!  RR7      W438X  g   Q h\        Wg^R7      V8X  g   Q hW33p\        Wg4      V8X  g   Q hW5W43p\        Wg4      V 38X  g   Q hW03p\        WgVR7      p	WW038X  g   Q hWW0W3pW3pWE3p\        Wg\        V!  R7      p	WWSWV38X  g   Q h\        WgV^R7      p	WWWEV38X  g   Q hR# )r   )pos)replace)rG   rF   Nr    r"   )r   r   r	   r
   r   r   r   r   )
r2   r3   r4   r5   cnotcgate_zrA   removerG   actuals
             r   test_replace_subcircuitrN   [   sD   	!A	!A	!A	!A1:DD!A$G QlGAYFgsF|4<<<g}5;;;g15@@@g15!===g1v15!???gt,777Q1oGAYFc7mS&\:qfDDDA\Fg.1$666W&GG_FgsF|<	IIIg15@@@VFg.'999!"Fg.1$666fG$&FYQ1 GVFoG '],FGa0000$!-Fta0000r   c                  |   \        4       w  rr#\        R 4      pV\        ^ 4      /p\        V 34      w  rgrV\	        V4      38X  g   Q hWu8X  g   Q h\	        V4      \        V4      \        V4      \        V4      3p
V\        ^ 4      /p\        WW#34      w  rgrWj8X  g   Q hWW8X  g   Q h\        ^4      w  rr\        R4      p\	        V4      \        V4      \        V4      \        V4      3p
V\        ^4      /p\        WW34      w  rgrWj8X  g   Q hWu8X  g   Q h\	        V4      \        V4      \        V4      \        V4      \	        V4      \        V4      \        V4      \        V4      3p
V\        ^ 4      V\        ^4      /p\        WW#WW34      w  rgrWj8X  g   Q hWu8X  g   Q hV\        ^4      V\        ^ 4      /p\        \        WWWW#4      4      w  rgrWj8X  g   Q hWu8X  g   Q h\	        V4      \	        V4      \        V4      \        V4      \        V4      \        V4      \        V4      \        V4      3p
V\        ^ 4      V\        ^4      /p\        \        WWW-W>4      4      w  rgrWj8X  g   Q hWu8X  g   Q hV\        ^4      V\        ^ 4      /p\        WWWW34      w  rgrWj8X  g   Q hWu8X  g   Q h\        ^^ 4      p\        ^ ^4      p\        ^\        ^ 4      4      p\        ^ \        ^4      4      p\	        V4      \	        V4      \        V4      \        V4      \        V4      \        V4      \        V4      \        V4      \        W4      \        WO4      \        V\        V4      4      \        V\        V4      4      3p
V\        ^ 4      V\        ^4      /pWWW-W>VVVV3p\        V4      w  rgrWj8X  g   Q hWu8X  g   Q hWWWWVVVV3p\	        V4      \	        V4      \        V4      \        V4      \        V4      \        V4      \        V4      \        V4      \        WO4      \        W4      \        V\        V4      4      \        V\        V4      4      3p
V\        ^4      V\        ^ 4      /p\        V4      w  rgrWj8X  g   Q hWu8X  g   Q hVVVV3p\        WO4      \        V4      \        V\        V4      4      \        V4      3p
V\        ^4      V\        ^ 4      /p\        V4      w  rgrWj8X  g   Q hWu8X  g   Q hVVVV3pV\        ^ 4      V\        ^4      /p\        V4      w  rgrWj8X  g   Q hWu8X  g   Q hVVVV3p\        WO4      \        V4      \        V\        V4      4      \        V4      3p
V\        ^4      V\        ^ 4      /p\        V4      w  rgrWj8X  g   Q hWu8X  g   Q h\        R4      p\        ^ \        ^\        ^4      4      4      p\        ^\        ^\	        ^ 4      4      4      pVV3p\        V\        V\        V4      4      4      \        V\        V\	        V4      4      4      3p
V\        ^ 4      V\        ^4      V\        ^4      /p\        V4      w  rgrWj8X  g   Q hWu8X  g   Q hV\        ^ 4      /p\        R^R7      p\        VVVVR7      w  rgrWj8X  g   Q hWu8X  g   Q h\        R4      p\        R\	        ^ 4      4      pV\        ^4      V\        ^4      V\        ^4      V\        ^ 4      /p\        WOV3\	        V4      4      3p
V3p\        V4      w  rgrWj8X  g   Q hWu8X  g   Q hR# )	r8   i1i2i)prefixr9   )	qubit_mapr9   geni3N)r/   r$   r#   )r   r   r   r   r   r   r	   r
   r   r   r   r   )r2   r3   r4   r5   r8   exp_maprM   act_mapsndxrU   expectedr;   r<   z1h1rP   cnot_10cnot_01
cgate_z_10
cgate_z_01argsrQ   ccgate_zccgate_xndx_map	index_genrV   cgate_x0_c321s                               r    test_convert_to_symbolic_indicesrg      s   ')LQ1	B71:G!<aT!BFTaeX"quaeQrU+H71:G!<aA\!JFT+A.RR	B"quaeQrU+H71:G!<bb=M!NFT"quaeQrUAbE1R5!B%2GH71:r71:.G!<aA)+>9 ":FT71:r71:.G!<S)+q>= ">FT"quaeQrUAbE1R5!B%2GH71:r71:.G!<S)*q>> "?FT71:r71:.G!<bR)+>7 "8FT1ajG1ajGq!A$Jq!A$J"quaeQrUAbE1R5"qud2lDLb!B% %AbE"24H 71:r71:.G1!
$D!<T!BFT2"
$D"quaeQrUAbE1R5"qud2lDLb!B% %AbE"24H 71:r71:.G!<T!BFTQ
A&DRaeU2qu%5qu=H71:r71:.G!<T!BFTRR(D71:r71:.G!<T!BFTRR(DRaeU2qu%5qu=H71:r71:.G!<T!BFT	BQa1'HQa1'HhDb%AbE*+U2uR27G-HIH71:r71:r71:>G!<T!BFT71:G 15I!<T3:/1-6"8FT 	B)QqT*M71:r71:71:r71:/GrrlAbE*,HD!<T!BFTr   c            
         \        R 4      p \        R4      p\        4       w  r#rE\        V 4      p\        V 4      p\	        V 4      pV ^ /p	WV3p
WCV3p\        W4      pW8X  g   Q h\        ^^ 4      p\        ^ ^4      p\        ^\	        ^ 4      4      p\        ^ \	        ^4      4      p\        W4      p\        W4      p\        V\	        V 4      4      pV ^ V^/p	V3p
V3p\        W4      pW8X  g   Q hV3p
V3p\        W4      pW8X  g   Q hV3p
V3p\        W4      pW8X  g   Q hV ^V^ /p	V3p
V3p\        W4      pW8X  g   Q h\        R4      p\        V \        V\	        V4      4      4      p\        V\        V\        V 4      4      4      pV ^ V^V^/p	VV3p
\        ^ \        ^\	        ^4      4      4      \        ^\        ^\        ^ 4      4      4      3p\        \        V
!  V	4      pW8X  g   Q hV ^V^ V^/p	VV3p
\        ^\        ^ \        ^4      4      4      \        ^\        ^\	        ^ 4      4      4      3p\        W4      pW8X  g   Q hR# )r8   rP   rQ   N)	r   r   r   r   r	   r   r   r   r   )r8   rP   r2   r3   r4   r5   r=   r>   r?   rT   ra   rZ   rM   r]   r^   r_   r`   
cnot_i1_i0
cnot_i0_i1cgate_z_i1_i0rQ   rb   rc   s                          r   test_convert_to_real_indicesrl     sh   	B	B')LQ1R5DR5DR5DQIDayH$T5F1ajG1ajGq!A$Jq!A$JbJbJ"ae$MQAI=DzH$T5FD}H$T5F=DzH$T5FQAID}H$T5F	BRr1R5)*HRr1R5)*HQAr1%IhDaq!A$(%5AaD>*BCH$S$Z;FQAr1%IhDaq!A$(%5AaD>*BCH$T5Fr   c            
         \        ^ 4      p \        ^ 4      p\        ^ 4      p\        ^ 4      p\	        ^^ 4      p\        R\        ^4      4      pWV.p\        \        V^^R7      4      pWW2V3p\        V. 4      V8X  g   Q h\        W4      V8X  g   Q h. ROp	WW W3p\        WV	R7      WV38X  g   Q hW WW"3p\        WV	R7      W W38X  g   Q h. ROp	\        WV	R7      WW"38X  g   Q hWW#WE.p\        \        V^^R7      4      p^.p	WW!W1W5W43
pWW%W43p
\        WV	R7      V
8X  g   Q h\        V!  p\        WV	R7      V
8X  g   Q hR# )r   	max_depthseedNrH   )r$      	   r/      )      r   )
r   r   r	   r
   r   r   listr   r   r   )r2   r3   r4   r5   rJ   rK   	gate_listidsrA   seqrZ   s              r   test_random_reducer{   K  su   	!A	!A	!A	!A1:DD!A$Gq	I
"9a1=
>CQ4 G"%000&'111
CQ1 GC0Q1I===Q1 GC0Q1L@@@
CC0Q1L@@@qT+I
"9a1=
>C$CQ1Q5Ga!*HC0H<<<7mGC0H<<<r   c            	         \        ^ 4      p \        ^ 4      p\        ^ 4      p\        ^ 4      p\	        ^^ 4      p\        R\        ^4      4      pW 3.pW3p^ ^ r\        WvW.R7      p
WWV38X  g   Q hWW#3pW33WV3.pW WWV3p^^r\        WvW.R7      p
W8X  g   Q hWW#WE.p\        \        V^^R7      4      p\        V4      pWW4V3pWWWW4V3	p^^r\        W~W.R7      p
W8X  g   Q h\        V!  p\        W~W.R7      p
W8X  g   Q hR# )r   rp   rn   NrH   )r   r   r	   r
   r   r   r   rw   r   r   r   )r2   r3   r4   r5   rJ   rK   choicesrA   locchoicerM   rZ   rx   ry   eq_idss                  r   test_random_insertr   p  sJ   	!A	!A	!A	!A1:DD!A$GvhGfGQ73-@Fq\!!!QlGvay!GaA!$HQ73-@FqT+I
"9a1=
>CFQg&GaA!73HR7#?F7mG7#?F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   rD   rN   rg   rl   r{   r   rI   r   r   <module>r      sz     & $ , > > D   &
-0-`/1d{|=@ != !=H ! !r   