a
    rh7$                     @   sP  d dl Z d dlmZmZ 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mZmZ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  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( ed\Z)Z*dZ+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd  Z3d!d" Z4d#d$ Z5d%d& Z6d'd( Z7dS ))    N)IntegerRational)S)symbols)sqrt)Matrix)	measure_allmeasure_all_oneshotmeasure_partialmatrix_to_qubitmatrix_to_densityqubit_to_matrixIntQubitIntQubitBraQubitBra)HadamardGateCNOTXGateYGateZGate	PhaseGate)qapply)	represent)Qubit)raises)Density)Trzx,ygư>c                  C   s   g d} t d}|dt dks&J |dt dks<J |dt dksRJ |jdks`J |jd	ksnJ td	D ]}|| | d|  ksvJ qvt|d	ksJ t d
}d S )N)r   r      r   r   Z00110r   Z00111r   Z00100   10110   110)r   flipqubit_values	dimensionrangelen)arrayqbi r*   b/var/www/html/assistant/venv/lib/python3.9/site-packages/sympy/physics/quantum/tests/test_qubit.py
test_Qubit   s    r,   c                  C   s   t d} td}|  tks J | t ks0J t ddd} tddd}t| ddjt|ddksfJ t dd} tdd}| |tdksJ tdd}| |tdksJ d S )Nr   r      Znqubits)r   r   
dual_classr   HZ_eval_innerproduct_QubitBrar   )r(   Zqb_brar*   r*   r+   test_QubitBra(   s    


r1   c                  C   s  t ddd} ttdt| ks$J td}tt |t|ksDJ t ddd} ttdt| kshJ tt dt| ksJ t ddd} ttd	t| ksJ tt ddt| ksJ t d
} |  d
ksJ | jdksJ t dd} | jdksJ t dt ddksJ t d} td}|  tks6J | t ksHJ t d} td}| |tdkspJ t d} td}| |tdksJ t	t
dd  t	t
dd  t	t
dd  t	t
dd  t	tdd  d S )Nr   r   r.   010101   r   Z0111   r   r   r   r   )r   r   r   r   r-      r    c                   S   s
   t ddS )Nr   r   r   r*   r*   r*   r+   <lambda>_       ztest_IntQubit.<locals>.<lambda>c                   S   s   t dS )N5r9   r*   r*   r*   r+   r:   a   r;   c                   S   s
   t ddS )Nr    r<   r9   r*   r*   r*   r+   r:   b   r;   c                   S   s   t dddS )Nr    r<   r.   r9   r*   r*   r*   r+   r:   c   r;   c                   S   s   t dddS )Nr    T)Zbad_argr9   r*   r*   r*   r+   r:   d   r;   )r   r   r   Zas_intr#   r   r/   Z_eval_innerproduct_IntQubitBrar   r   
ValueError	TypeError)Ziqbr(   Ziqb_brar*   r*   r+   test_IntQubit:   s>    
r?   c                  C   s   dt d td dt d td  } tddtd |  }tdd tdd  tdd  tdd  }t| |ksJ tt|dd|ksJ d S )	Nr   r8   0110r   0011r.   )r   r   r   r   r   expandr   r   )stateZ
state_gateZstate_expandedr*   r*   r+   test_superposition_of_statesf   s
    (0rF   c               
   C   s:  t tdt  ttdt  ttdt  ttdt  ttdt  ttdt  g} ttt d tt d tt d tt d tt d tt d }ttt d D ]}| tt d  | }qt	|dd}t
|}t|}| }| }||ks6J d S )Nr-   r8      r.   )r   intrandomr   r   r   r   r   r%   r   r   r   rD   )ZgatesZcircuitr)   matZstatesZ	state_repr*   r*   r+   test_apply_represent_equalityo   s"    $$*rK   c                  C   s   t dddd} tg d}t|| ks*J t| |ks:J dtd t dddt ddd t ddd t ddd t ddd t ddd t ddd t ddd  }tdd tg d }t|| ksJ t||ksJ d S )Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   rD   )r(   rJ   rE   Zonesr*   r*   r+   test_matrix_to_qubits   s$    ,




rL   c                  C   s   t d\} }| td |td  }t|ddd| td | |   f|td ||  fgksfJ t|ddtd| |   ftd||  fgksJ d S )Nza br!   Z111r   F)	normalize)r   r   r
   	conjugater   )abrE   r*   r*   r+   test_measure_normalize   s    .
&rR   c                  C   s  t dt d } t| dt dtjft dtjfgks:J t| tdt dtjft dtjfgkshJ t| dt| dd d d ksJ tdtd t d	 d
td t d  }t|dtdtd t d	 d
td t d  d
fgksJ t|dt|dksJ t|dt d	tddft dtd
dfgksDJ t dt d t d t d }t|dt dtd
dft dtd
dft dtd t dtd  tjfgksJ t|dt dtd
dft dtd t dtd  t dtd  tddfgksJ d S )Nr@   rA   rM   r   )r   r8   r-   Z00001r   Z11111)r   r8   )r-   r   )r   r8   r-   Z1111Z11011011Z1000)r   r   r-   r   )r   r
   r   HalfrH   r   r   )rE   Zstate1state2r*   r*   r+   test_measure_partial   sB    ,0"
  $
rW   c                  C   s   t tdtddfgksJ tdtd } t | tdtjftdtjfgksVJ tdtd dtd td  }t |tdtddftdtddfgksJ t ttdtddfgksJ d S )	NrC   r   rA   r    r8   rB   r   r2   )r   r   r   rU   r   r   r   )rE   rV   r*   r*   r+   test_measure_all   s    
$"rX   c                   C   sn   t d ttdtdks"J ttdtdks:J ttdtd tdtd  tdksjJ d S )N*   rC   r4   r2   r8   )rI   seedr	   r   r   r*   r*   r*   r+   test_measure_all_oneshot   s    
"r[   c                  C   s  t d} t d}t| dg|dg}t|}| dks:J t|d}| dtt ddg dtt d	dg  ksxJ t|d
}| dtt ddg dtt ddg  ksJ t|d}| dtt ddg dtt ddg  ksJ t|g d}| dksJ t|g d}| dtt ddg dtt ddg  ksXJ dtd t dt d  }t|dg}t|d}| dtt ddg dtt ddg  ksJ d S )Nr   Z01010g333333?g?g      ?r   Z0101r   rT   r   r3   Z0110r8   )r   r   r8   r-   r   )r8   r   r-   rB   rA   rC   g      ?r2   r4   )r   r   r   Zdoitr   )q1q2dtqr*   r*   r+   test_eval_trace   s:    






ra   c                  C   s   t ddgddgg} t| ttddgks0J t ddgddgg} t| ttddgks`J t ddgddgg} t| dksJ t g dg dg dg dg} t| ttddgksJ t g dg dg dg dg} t| ttd	dgksJ d S )
Nr   r   r4   r2   )r   r   r   r   )r   r   r   r   rA   r7   rB   )r   r   r   r   )rJ   r*   r*   r+   test_matrix_to_density   s$    rb   )8rI   Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Zsympy.matrices.denser   Zsympy.physics.quantum.qubitr   r	   r
   r   r   r   r   r   r   Zsympy.physics.quantum.gater   r   r   r   r   r   Zsympy.physics.quantum.qapplyr   Zsympy.physics.quantum.representr   Zsympy.physics.quantum.shorr   Zsympy.testing.pytestr   Zsympy.physics.quantum.densityr   Zsympy.physics.quantum.tracer   xyepsilonr,   r1   r?   rF   rK   rL   rR   rW   rX   r[   ra   rb   r*   r*   r*   r+   <module>   s6   , ,			%