o
    …º¥g   ã                   @   sô   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d„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dd „ Z$d!d"„ Z%d#d$„ Z&d%S )&é    )	ÚQasmÚ
flip_indexÚtrimÚ	get_indexÚnonblankÚ	fullsplitÚ
fixcommandÚstripquotesÚ	read_qasm)ÚXÚZÚHÚSÚT)ÚCNOTÚSWAPÚCPHASEÚCGateÚCGateS)ÚMzc                  C   s.   d} t | ƒ}| ¡ tddƒtdƒ ksJ ‚d S )Nz;    qubit q_0
    qubit q_1
    h q_0
    cnot q_0,q_1
    é   r   )r
   Úget_circuitr   r   )Ú
qasm_linesÚq© r   ú\/var/www/visachat/venv/lib/python3.10/site-packages/sympy/physics/quantum/tests/test_qasm.pyÚtest_qasm_readqasm   s   "r   c                  C   s0   t ddddƒ} |  ¡ tddƒtdƒ ksJ ‚d S )Núqubit q0úqubit q1zh q0ú
cnot q0,q1r   r   )r   r   r   r   ©r   r   r   r   Útest_qasm_ex1   s   "r!   c                  C   sR   t ƒ } |  d¡ |  d¡ |  d¡ |  dd¡ |  ¡ tddƒtdƒ ks'J ‚d S )NÚq_0Úq_1r   r   )r   ÚqubitÚhÚcnotr   r   r   r    r   r   r   Útest_qasm_ex1_methodcalls   s   


"r'   c                  C   s>   t dddddƒ} |  ¡ tddƒtddƒ tddƒ ksJ ‚d S )Nr   r   r   z
cnot q1,q0r   r   )r   r   r   r    r   r   r   Útest_qasm_swap   s   .r(   c                  C   s|   t ddddddddd	d
dƒ} |  ¡ tdtdƒƒtdtdƒƒ tdƒ tdƒ tdƒ tddƒ tddƒ tdƒ ks<J ‚d S )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    r   r   r   Útest_qasm_ex2"   s   
ý`r,   c                  C   sX   dt fdtfdtfdtfdtfdtffD ]\} }tdd|  ƒ}| ¡ |d	ƒks)J ‚qd S )
NÚxÚzr%   ÚsÚtÚmeasurer)   z%s q_0r   )r   r   r   r   r   r   r   r   ©ÚsymbolÚgater   r   r   r   Útest_qasm_1q)   s   0þr5   c                  C   sJ   dt fdtfdtffD ]\} }tddd|  ƒ}| ¡ |ddƒks"J ‚qd S )	Nr&   ÚswapÚcphaser)   r*   z
%s q_0,q_1r   r   )r   r   r   r   r   r2   r   r   r   Útest_qasm_2q.   s   þr8   c                  C   s,   t ddddƒ} |  ¡ tdtdƒƒksJ ‚d S )Nr   r   zqubit q2ztoffoli q2,q1,q0)r   r   r+   )r   r   r   r   r    r   r   r   Útest_qasm_3q3   s   r9   c                   C   s(   t ddƒdks	J ‚t ddƒdksJ ‚d S )Nr   r+   r   )r   r   r   r   r   Útest_qasm_flip_index7   s   r:   c                   C   ó$   t dƒdksJ ‚t dƒdksJ ‚d S )Nznothing happens herezSomething #happens herez
Something )r   r   r   r   r   Útest_qasm_trim;   ó   r<   c                   C   s0   t dddgƒdksJ ‚t dddgƒdksJ ‚d S )NÚq0Úq1r   r   )r   r   r   r   r   Útest_qasm_get_index?   s   r@   c                   C   s4   t tdƒƒt dƒksJ ‚t tdƒƒt dƒksJ ‚d S )NÚabcdzabc Úabc)Úlistr   r   r   r   r   Útest_qasm_nonblankC   s   rD   c                   C   s   t dƒdg d¢fksJ ‚d S )Nzg q0,q1,q2,  q3Úg)r>   r?   Úq2Úq3)r   r   r   r   r   Útest_qasm_fullsplitG   s   rH   c                   C   r;   )NÚfooÚdefÚqdef)r   r   r   r   r   Útest_qasm_fixcommandJ   r=   rL   c                   C   s4   t dƒdksJ ‚t dƒdksJ ‚t dƒdksJ ‚d S )Nz'S'r   z"S")r	   r   r   r   r   Útest_qasm_stripquotesN   s   rM   c                  C   sF   t dddƒ} t|  ¡ ƒdksJ ‚t ddddƒ} t|  ¡ ƒdks!J ‚d S )	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    r   r   r   Útest_qasm_qdefS   s   rO   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(   r,   r5   r8   r9   r:   r<   r@   rD   rH   rL   rM   rO   r   r   r   r   Ú<module>   s(   , 
