
    \h                         S SK JrJrJrJrJrJrJrJrJ	r	  S SK
JrJrJrJrJr  S SK
JrJrJrJrJr  S SKJr  S rS rS rS rS	 rS
 rS rS rS rS r S r!S r"S r#S r$S r%S r&g)    )	Qasm
flip_indextrim	get_indexnonblank	fullsplit
fixcommandstripquotes	read_qasm)XZHST)CNOTSWAPCPHASECGateCGateS)Mzc                  v    Sn [        U 5      nUR                  5       [        SS5      [        S5      -  :X  d   eg )Nz;    qubit q_0
    qubit q_1
    h q_0
    cnot q_0,q_1
       r   )r   get_circuitr   r   )
qasm_linesqs     ]/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/quantum/tests/test_qasm.pytest_qasm_readqasmr      s7    J 	*A==?d1Qi!n,,,    c                  x    [        SSSS5      n U R                  5       [        SS5      [        S5      -  :X  d   eg )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                      [        5       n U R                  S5        U R                  S5        U R                  S5        U R                  SS5        U R	                  5       [        SS5      [        S5      -  :X  d   eg )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                      [        SSSSS5      n U R                  5       [        SS5      [        SS5      -  [        SS5      -  :X  d   eg )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                  @   [        SSSSSSSSS	S
S5      n U R                  5       [        S[        S5      5      [        S[	        S5      5      -  [        S5      -  [        S5      -  [        S5      -  [        SS5      -  [        SS5      -  [        S5      -  :X  d   eg )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                      S[         4S[        4S[        4S[        4S[        4S[
        44 H0  u  p[        SSU -  5      nUR                  5       U" S	5      :X  a  M0   e   g )
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<   )   s^    qC8c1XQx#qIWY?[h/0}}$q'))) \r   c                      S[         4S[        4S[        44 H2  u  p[        SSSU -  5      nUR	                  5       U" SS5      :X  a  M2   e   g )	Nr*   swapcphaser/   r0   z
%s q_0,q_1r   r   )r   r   r   r   r   r9   s      r   test_qasm_2qr@   .   sP     $&$(F9KLk<&+@A}}$q)+++ Mr   c                  r    [        SSSS5      n U R                  5       [        S[        S5      5      :X  d   eg )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                  L    [        SS5      S:X  d   e[        SS5      S:X  d   eg )Nr   r1   r   )r    r   r   test_qasm_flip_indexrE   7   s,    aq   aq   r   c                  H    [        S5      S:X  d   e[        S5      S:X  d   eg )Nznothing happens herezSomething #happens herez
Something )r   rD   r   r   test_qasm_trimrG   ;   s+    &'+AAAA)*l:::r   c                  T    [        SSS/5      S:X  d   e[        SSS/5      S:X  d   eg )Nq0q1r   r   )r   rD   r   r   test_qasm_get_indexrK   ?   s4    TD$<(A---TD$<(A---r   c                      [        [        S5      5      [        S5      :X  d   e[        [        S5      5      [        S5      :X  d   eg )Nabcdzabc abc)listr   rD   r   r   test_qasm_nonblankrP   C   s:     !T&\111 !T%[000r   c                  .    [        S5      S/ SQ4:X  d   eg )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                  H    [        S5      S:X  d   e[        S5      S:X  d   eg )Nfoodefqdef)r	   rD   r   r   test_qasm_fixcommandrZ   J   s(    e%%%e&&&r   c                  j    [        S5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   eg )Nz'S'r   z"S")r
   rD   r   r   test_qasm_stripquotesr\   N   s;    u$$$u$$$ss"""r   c                      [        SSS5      n [        U R                  5       5      S:X  d   e[        SSSS5      n [        U R                  5       5      S:X  d   eg )	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   