o
    GZh7$                     @   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   Z00110r   Z00111r   Z00100   10110   110)r   flipqubit_values	dimensionrangelen)arrayqbi r*   U/var/www/auris/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      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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   r.   010101   r   Z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+   r;   a   s    c                   S   r9   )Nr    r=   r:   r*   r*   r*   r+   r;   b   r<   c                   S      t dddS )Nr    r=   r.   r:   r*   r*   r*   r+   r;   c       c                   S   r>   )Nr    T)Zbad_argr:   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>   
rB   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   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rI   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-   r8      r.   )r   intrandomr   r   r   r   r   r%   r   r   r   rG   )ZgatesZcircuitr)   matZstatesZ	state_repr*   r*   r+   test_apply_represent_equalityo   s"   $$*rN   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   r8   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   rG   )r(   rM   rH   Zonesr*   r*   r+   test_matrix_to_qubits   s$   ,




rO   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!   Z111r   F)	normalize)r   r   r
   	conjugater   )abrH   r*   r*   r+   test_measure_normalize   s   .
&rU   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 )NrC   rD   rP   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   HalfrK   r   r   )rH   Zstate1state2r*   r*   r+   test_measure_partial   sB   ,0"  $rZ   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 )	NrF   r   rD   r    r8   rE   r   r2   )r   r   r   rX   r   r   r   )rH   rY   r*   r*   r+   test_measure_all   s   
$"&r[   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*   rF   r4   r2   r8   )rL   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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   Z01010g333333?g?g      ?r   Z0101r   rW   r   r3   Z0110r8   )r   r   r8   r-   r   )r8   r   r-   rE   rD   rF   g      ?r2   r4   )r   r   r   Zdoitr   )q1q2dtqr*   r*   r+   test_eval_trace   s:   







rd   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   r4   r2   )r   r   r   r   )r   r   r   r   rD   r7   rE   )r   r   r   r   )rM   r*   r*   r+   test_matrix_to_density   s$    re   )8rL   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   rB   rI   rN   rO   rU   rZ   r[   r^   rd   re   r*   r*   r*   r+   <module>   s8    , ,			%