o
    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s)J |jdks0J |jd	ks7J td	D ]}|| | d|  ksIJ q;t|d	ksRJ t d
}d S )N)r   r      r   r   00110r   00111r   00100   10110   110)r   flipqubit_values	dimensionrangelen)arrayqbi r-   \/var/www/html/ai/venv/lib/python3.10/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sJ t ddd} tddd}t| ddjt|ddks3J t dd} tdd}| |tdksHJ tdd}| |tdksXJ d S )Nr   r      nqubits)r   r   
dual_classr   H_eval_innerproduct_QubitBrar   )r+   qb_brar-   r-   r.   test_QubitBra(   s   


r7   c                  C   s  t ddd} ttdt| ksJ td}tt |t|ks"J t ddd} ttdt| ks4J tt dt| ks@J t ddd} ttd	t| ksRJ tt ddt| ks_J t d
} |  d
kskJ | jdksrJ t dd} | jdks~J t dt ddksJ t d} td}|  tksJ | t ksJ t d} td}| |tdksJ 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   r1   010101   r!   0111   r   r   r   r   )r   r   r   r   r0      r#   c                   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5rA   r-   r-   r-   r.   rB   a   s    c                   S   r@   )Nr#   rD   rA   r-   r-   r-   r.   rB   b   rC   c                   S      t dddS )Nr#   rD   r1   rA   r-   r-   r-   r.   rB   c       c                   S   rE   )Nr#   T)bad_argrA   r-   r-   r-   r.   rB   d   rF   )r   r   r   as_intr&   r   r3   _eval_innerproduct_IntQubitBrar   r   
ValueError	TypeError)iqbr+   iqb_brar-   r-   r.   test_IntQubit:   s>   
rN   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sAJ tt|dd|ksMJ d S )	Nr   r?   0110r   0011r1   )r   r   r   r   r   expandr   r   )state
state_gatestate_expandedr-   r-   r.   test_superposition_of_statesf   s
   (0rW   c               
   C   s8  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  | }qot	|dd}t
|}t|}| }| }||ksJ d S )Nr0   r?      r1   )r   intrandomr   r   r   r   r   r(   r   r   r   rS   )gatescircuitr,   matstates	state_repr-   r-   r.   test_apply_represent_equalityo   s"   $$*r`   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siJ t||ksqJ d S )Nr   )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   rS   )r+   r]   rT   onesr-   r-   r.   test_matrix_to_qubits   s$   ,




rb   c                  C   s   t d\} }| td |td  }t|ddd| td | |   f|td ||  fgks3J t|ddtd| |   ftd||  fgksOJ d S )Nza br$   111r   F)	normalize)r   r   r
   	conjugater   )abrT   r-   r-   r.   test_measure_normalize   s   .
&ri   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s4J t| dt| dd d d ksEJ 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s{J t|dt|dksJ t|dt d	tddft dtd
dfgksJ 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 )NrO   rP   rd   r   )r   r?   r0   00001r   11111)r   r?   )r0   r!   )r   r?   r0   1111110110111000)r   r   r0   r!   )r   r
   r   HalfrY   r   r   )rT   state1state2r-   r-   r.   test_measure_partial   sB   ,0"  $rt   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s+J tdtd dtd td  }t |tdtddftdtddfgksUJ t ttdtddfgksfJ d S )	NrR   r   rP   r#   r?   rQ   r!   r8   )r   r   r   rq   r   r   r   )rT   rs   r-   r-   r.   test_measure_all   s   
$"&ru   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s5J d S )N*   rR   r:   r8   r?   )rZ   seedr	   r   r   r-   r-   r-   r.   test_measure_all_oneshot   s   
"rx   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s<J t|d
}| dtt ddg dtt ddg  ks[J t|d}| dtt ddg dtt ddg  kszJ t|g d}| dksJ t|g d}| dtt ddg dtt ddg  ksJ 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"   01010g333333?g?g      ?r   0101r   ro   r!   r9   0110r?   )r   r   r?   r0   r!   )r?   r   r0   rQ   rP   rR   g      ?r8   r:   )r   r   r   doitr   )q1q2dtqr-   r-   r.   test_eval_trace   s:   







r   c                  C   s   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| ttddgks0J t ddgddgg} t| dksBJ t g dg dg dg dg} t| ttddgks`J t g dg dg dg dg} t| ttd	dgks~J d S )
Nr   r   r:   r8   )r   r   r   r   )r   r   r   r   rP   r>   rQ   )r   r   r   r   )r]   r-   r-   r.   test_matrix_to_density   s$    r   )8rZ   sympy.core.numbersr   r   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   sympy.matrices.denser   sympy.physics.quantum.qubitr   r	   r
   r   r   r   r   r   r   sympy.physics.quantum.gater   r   r   r   r   r   sympy.physics.quantum.qapplyr   sympy.physics.quantum.representr   sympy.physics.quantum.shorr   sympy.testing.pytestr   sympy.physics.quantum.densityr   sympy.physics.quantum.tracer   xyepsilonr/   r7   rN   rW   r`   rb   ri   rt   ru   rx   r   r   r-   r-   r-   r.   <module>   s8    , ,			%