
    sg                         d dl mZmZmZ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 d dl
mZmZmZmZmZ d dlmZ d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&y)    )	Qasm
flip_indextrim	get_indexnonblank	fullsplit
fixcommandstripquotes	read_qasm)XZHST)CNOTSWAPCPHASECGateCGateS)Mzc                  t    d} t        |       }|j                         t        dd      t        d      z  k(  sJ y )Nz;    qubit q_0
    qubit q_1
    h q_0
    cnot q_0,q_1
       r   )r   get_circuitr   r   )
qasm_linesqs     X/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_qasm.pytest_qasm_readqasmr      s7    J 	*A==?d1Qi!n,,,    c                  v    t        dddd      } | j                         t        dd      t        d      z  k(  sJ y )Nqubit q0qubit q1zh q0
cnot q0,q1r   r   )r   r   r   r   r   s    r   test_qasm_ex1r$      s4    ZV\:A==?d1Qi!n,,,r   c                      t               } | j                  d       | j                  d       | j                  d       | j                  dd       | j	                         t        dd      t        d      z  k(  sJ y )Nq_0q_1r   r   )r   qubithcnotr   r   r   r#   s    r   test_qasm_ex1_methodcallsr+      sZ    AGGENGGENCCJFF5%==?d1Qi!n,,,r   c                      t        ddddd      } | j                         t        dd      t        dd      z  t        dd      z  k(  sJ y )Nr    r!   r"   z
cnot q1,q0r   r   )r   r   r   r#   s    r   test_qasm_swapr-      sD    Z\<NA==?d1QiQq	1$q);;;;r   c                  >   t        ddddddddd	d
d      } | j                         t        dt        d            t        dt	        d            z  t        d      z  t        d      z  t        d      z  t        dd      z  t        dd      z  t        d      z  k(  sJ y )N	qubit q_0	qubit q_1z	qubit q_2zh  q_1zcnot q_1,q_2zcnot q_0,q_1zh q_0zmeasure q_1zmeasure q_0zc-x q_1,q_2zc-z q_0,q_2   r   r   )r   r   r   r   r   r   r   r   r#   s    r   test_qasm_ex2r2   "   s    [+{H^WMM	+A ==?eAadmE!AaDM9"Q%?1EadJ4PQRS9TUYZ[\]U^^_`ab_cccccr   c                      dt         fdt        fdt        fdt        fdt        fdt
        ffD ]/  \  } }t        dd| z        }|j                          |d	      k(  r/J  y )
Nxzr)   stmeasurer/   z%s q_0r   )r   r   r   r   r   r   r   r   symbolgater   s      r   test_qasm_1qr<   )   sd    qC8c1XQx#qIWY?[ *h/0}}$q')))*r   c                      dt         fdt        fdt        ffD ]1  \  } }t        ddd| z        }|j	                          |dd      k(  r1J  y )	Nr*   swapcphaser/   r0   z
%s q_0,q_1r   r   )r   r   r   r   r   r9   s      r   test_qasm_2qr@   .   sV     $&$(F9KL ,k<&+@A}}$q)+++,r   c                  p    t        dddd      } | j                         t        dt        d            k(  sJ y )Nr    r!   zqubit q2ztoffoli q2,q1,q0)r   r   r1   )r   r   r   r   r#   s    r   test_qasm_3qrB   3   s2    ZZ1CDA==?fU1Q40000r   c                  H    t        dd      dk(  sJ t        dd      dk(  sJ y )Nr   r1   r   )r    r   r   test_qasm_flip_indexrE   7   s,    aq   aq   r   c                  D    t        d      dk(  sJ t        d      dk(  sJ y )Nznothing happens herezSomething #happens herez
Something )r   rD   r   r   test_qasm_trimrG   ;   s+    &'+AAAA)*l:::r   c                  P    t        dddg      dk(  sJ t        dddg      dk(  sJ y )Nq0q1r   r   )r   rD   r   r   test_qasm_get_indexrK   ?   s4    TD$<(A---TD$<(A---r   c                      t        t        d            t        d      k(  sJ t        t        d            t        d      k(  sJ y )Nabcdzabc abc)listr   rD   r   r   test_qasm_nonblankrP   C   s:     !T&\111 !T%[000r   c                  ,    t        d      dg dfk(  sJ y )Nzg q0,q1,q2,  q3g)rI   rJ   q2q3)r   rD   r   r   test_qasm_fullsplitrU   G   s    &'C1I+JJJJr   c                  D    t        d      dk(  sJ t        d      dk(  sJ y )Nfoodefqdef)r	   rD   r   r   test_qasm_fixcommandrZ   J   s(    e%%%e&&&r   c                  d    t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ y )Nz'S'r   z"S")r
   rD   r   r   test_qasm_stripquotesr\   N   s;    u$$$u$$$ss"""r   c                      t        ddd      } t        | j                               dk(  sJ t        dddd      } t        | j                               dk(  sJ y )	Nz	def Q,0,Qr    zQ q0zQ(0)z
def CQ,1,Qr!   zCQ q0,q1zC((1),Q(0)))r   strr   r#   s    r   test_qasm_qdefr_   S   sR    [F+Aq}}6)))\:z:>Aq}}=000r   N)'sympy.physics.quantum.qasmr   r   r   r   r   r   r	   r
   r   sympy.physics.quantum.gater   r   r   r   r   r   r   r   r   r   !sympy.physics.quantum.circuitplotr   r   r$   r+   r-   r2   r<   r@   rB   rE   rG   rK   rP   rU   rZ   r\   r_   rD   r   r   <module>rc      sx   H H H 4 4 H H 0---<
d*
,
1!;.1K'#
1r   