a
    {d"                     @   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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   Zflipqubit_valuesZ	dimensionrangelen)arrayqbi r'   o/var/www/html/stable-diffusion-webui/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    


r.   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5r6   r'   r'   r'   r(   r7   a   r8   c                   S   s
   t ddS )Nr   r9   r6   r'   r'   r'   r(   r7   b   r8   c                   S   s   t dddS )Nr   r9   r+   r6   r'   r'   r'   r(   r7   c   r8   c                   S   s   t dddS )Nr   T)Zbad_argr6   r'   r'   r'   r(   r7   d   r8   )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   r5   0110r   0011r+   )r   r   r   r   r   expandr
   r   )stateZ
state_gateZstate_expandedr'   r'   r(   test_superposition_of_statesf   s
    (0rC   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*   r5      r+   )r   intrandomr   r   r   r   r   r"   r   r   r
   rA   )ZgatesZcircuitr&   matZstatesZ	state_repr'   r'   r(   test_apply_represent_equalityo   s"    $$*rH   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   r5   r   )r   r   r   r   r   r   r   r   )r   r   r
   r   r   rA   )r%   rG   rB   Zonesr'   r'   r(   test_matrix_to_qubits   s$    ,




rI   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brB   r'   r'   r(   test_measure_normalize   s    .
&rO   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=   r>   rJ   r   )r   r5   r*   Z00001r   Z11111)r   r5   )r*   r   )r   r5   r*   Z1111Z11011011Z1000)r   r   r*   r   )r   r	   r   HalfrE   r   r   )rB   Z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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 )	Nr@   r   r>   r   r5   r?   r   r/   )r   r   r   rR   r   r   r   )rB   rS   r'   r'   r(   test_measure_all   s    
$"rU   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   rQ   r   r0   Z0110r5   )r   r   r5   r*   r   )r5   r   r*   r?   r>   r@   g      ?r/   r1   )r   r   r   Zdoitr   )Zq1Zq2dtqr'   r'   r(   test_eval_trace   s:    






rY   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   r1   r/   )r   r   r   r   )r   r   r   r   r>   r4   r?   )r   r   r   r   )rG   r'   r'   r(   test_matrix_to_density   s$    rZ   )6rF   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   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)   r.   r<   rC   rH   rI   rO   rT   rU   rY   rZ   r'   r'   r'   r(   <module>   s4   ( ,		%