o
    g"                     @   sD  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 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 Z/dd Z0dd Z1dd  Z2d!d" Z3d#d$ Z4d%d& Z5dS )'    N)IntegerRational)S)symbols)sqrt)Matrix)measure_all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/visachat/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   


r6   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   r0   010101   r    0111   r   r   r   r   )r   r   r   r   r/      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5r@   r,   r,   r,   r-   rA   a   s    c                   S   r?   )Nr"   rC   r@   r,   r,   r,   r-   rA   b   rB   c                   S      t dddS )Nr"   rC   r0   r@   r,   r,   r,   r-   rA   c       c                   S   rD   )Nr"   T)bad_argr@   r,   r,   r,   r-   rA   d   rE   )r   r   r   as_intr%   r   r2   _eval_innerproduct_IntQubitBrar   r   
ValueError	TypeError)iqbr*   iqb_brar,   r,   r-   test_IntQubit:   s>   
rM   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11r0   )r   r   r   r   r   expandr
   r   )state
state_gatestate_expandedr,   r,   r-   test_superposition_of_statesf   s
   (0rV   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 )Nr/   r>      r0   )r   intrandomr   r   r   r   r   r'   r   r   r
   rR   )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   rR   )r*   r\   rS   onesr,   r,   r-   test_matrix_to_qubits   s$   ,




ra   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brS   r,   r,   r-   test_measure_normalize   s   .
&rh   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 )NrN   rO   rc   r   )r   r>   r/   00001r   11111)r   r>   )r/   r    )r   r>   r/   1111110110111000)r   r   r/   r    )r   r	   r   HalfrX   r   r   )rS   state1state2r,   r,   r-   test_measure_partial   sB   ,0"  $rs   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 )	NrQ   r   rO   r"   r>   rP   r    r7   )r   r   r   rp   r   r   r   )rS   rr   r,   r,   r-   test_measure_all   s   
$"&rt   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   rn   r    r8   0110r>   )r   r   r>   r/   r    )r>   r   r/   rP   rO   rQ   g      ?r7   r9   )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   r9   r7   )r   r   r   r   )r   r   r   r   rO   r=   rP   )r   r   r   r   )r\   r,   r,   r-   test_matrix_to_density   s$    r   )6rY   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   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.   r6   rM   rV   r_   ra   rh   rs   rt   r~   r   r,   r,   r,   r-   <module>   s6    ( ,		%