U
    	Ç-e  ă                   @   sÂ  d dl mZ d dl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 d d	lmZ d d
lmZmZmZ d dlmZmZ d dlmZ d dlmZ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,m-Z- d dl.m/Z/m0Z0m1Z1 e	d\Z2Z3Z4Z5e$dd Z6e$ddZ7e$ddZ8edZ9G dd deZ:dd Z;dd Z<dd Z=dd  Z>d!d" Z?d#d$ Z@d%d& ZAd'd( ZBd)d* ZCd+d, ZDd-d. ZEd/d0 ZFd1d2 ZGd3S )4é    )ÚMul)ÚIÚIntegerÚRational)ÚS)Úsymbols)Úsqrt)ÚAntiCommutator)Ú
Commutator)Úhbar)ÚDagger)ÚHÚXGateÚIdentityGate)ÚOperatorÚIdentityOperator)Úqapply)ÚJxÚJyÚJzÚJplusÚJminusÚJ2ÚJzKet)ÚTensorProduct)ÚKet)ÚDensity)ÚQubitÚQubitBra)ÚBosonOpÚBosonFockKetÚBosonFockBraz	j j' m m'é   é˙˙˙˙ÚAc                   @   s   e Zd Zdd ZdS )ÚFooc                 K   s   |S )NŠ )ÚselfZketÚoptionsr&   r&   úh/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/physics/quantum/tests/test_qapply.pyÚ_apply_operator_JzKet    s    zFoo._apply_operator_JzKetN)Ú__name__Ú
__module__Ú__qualname__r*   r&   r&   r&   r)   r%      s   r%   c                   C   s<  t tt tt kstt tt tt td tt td  ksHtt t	t
 t td tt tt  ksttt ttt  tt tt  kstt tt tt  tt tt  ksŔtt t
t
 t dtd  t ksätt t	d t dtd  t ks
tt t	d t
d  t dtd  t ks8td S ŠNé   é   )r   r   Úpor   ÚAssertionErrorr   Úzr   Úmor   r   r&   r&   r&   r)   Ú
test_basic$   s    0,$($&r5   c                  C   s  t jt t  } ttt |  tt |  ks.tttt  |  tt t	d tt
 t	d  |  ksftttt t  t	d |  tt |  tt
 |   ksttttt
  |  tt |  tt
 |   ksÎtttt |  tt
 |   tt |  tt
 |   kstttt t |  dtd  t
 |  ks6tttd t
 |  dtd  t |  ksdtttd td  t |  dtd  t |  kstd S r.   )r3   Údualr$   r   r   r1   r   r2   r   r   r4   r   r   )Úextrar&   r&   r)   Ú
test_extra/   s     8˙˙0:..r8   c                   C   sF   t tjt t ddttjt  ks(tt tjt t tksBtd S )NFŠZip_doit)r   r1   r6   r   r   r2   r&   r&   r&   r)   Útest_innerproduct<   s    (r:   c                   C   s(   t ddkstt tddks$td S )Nr   )r   r2   r   r&   r&   r&   r)   Ú	test_zeroA   s    r;   c                   C   s   t tttt t ttd  t ks*tt tt	tt t dksHtt ttt
dt dksftt tt
dtt dkstd S )Né   r   ÚF)r   r
   r   r   r   r1   r   r   r2   r   r%   r&   r&   r&   r)   Útest_commutatorF   s    *r>   c                   C   sP   t tttdt dt t ks&tt ttdtt dt t ksLtd S )Nr=   r/   )r   r	   r   r%   r1   r   r2   r&   r&   r&   r)   Útest_anticommutatorM   s    &r?   c                  C   sz   t ttj  t  t } t| td  t ks0tt| ddtd  tjt  t ksXtt|  Ą td  t ksvtd S )Nr/   Fr9   )r   r4   r1   r6   r   r   r2   Údoit)Úer&   r&   r)   Útest_outerproductR   s    (rB   c                  C   s^  t d} t d}ttdtd}ttdtd}ttdtd}ttdtd}ttdtd}tt| |d | td| ksttt| t|| | d| ksśtt|t| ||  ddtd| ksŕtt||  Ą tddksţttt| || | td| ks&tttt| || | ddtdt| ksZtd S )NÚaÚbr"   r/   r   TŠÚdagger)	r   r   r    r!   r   r   r2   r   r@   )rC   rD   Zket1Zket2Zket3Zbra1Zbra2r&   r&   r)   Útest_tensorproductY   s*    &&˙
˙(˙˙rG   c                  C   sX   t tdt td } t tdtd t tdtd  }t| dd|ksTtd S )Nr   r"   r/   TrE   )r   r   r   r   r   r2   )ÚlhsÚrhsr&   r&   r)   Útest_daggerk   s    (rJ   c                  C   sR   t ddd\} }t| |}td}t||ks2tt|j| |j| ksNtd S )Nzx yF)ZcommutativeÚB)r   r   r   r   r2   r6   )ÚxÚyr$   rK   r&   r&   r)   Útest_issue_6073q   s
    
rN   c                  C   sF   t tt dgtt dg} t| t t t dgtt dgksBtd S )Ng      ŕ?)r   r   r4   r1   r   r   r2   )Údr&   r&   r)   Útest_densityy   s    rP   c                  C   s   t tttdtj td tttjtj } ttjtdddtj t	d }|t tddttjtj9 }t
| |ks~td S )Nr/   r"   r0   r#   )r   r   r   r   ZNegativeOner   ZHalfr   r   r   r   r2   )Úexpr1Úresultr&   r&   r)   Útest_issue3044~   s    0 rS   c                  C   s<  t dtd } t| | ks ttdtd } t| | ks@tttdttdtdtd}t|tdtd ks~tt|dd}t|ddtdks˘ttdtd td td }t|dd}t|ddtdksćtttdt  tdksttt	dtdtd  tdtd ks8td S )Nr   rC   r"   TrE   )
r    r   r   r2   r   r   r   r   r   r   )ÚPZP1ZP2r&   r&   r)   Útest_issue24158_ket_times_op   s    "  rU   N)HZsympy.core.mulr   Zsympy.core.numbersr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.physics.quantum.anticommutatorr	   Z sympy.physics.quantum.commutatorr
   Zsympy.physics.quantum.constantsr   Zsympy.physics.quantum.daggerr   Zsympy.physics.quantum.gater   r   r   Zsympy.physics.quantum.operatorr   r   Zsympy.physics.quantum.qapplyr   Zsympy.physics.quantum.spinr   r   r   r   r   r   r   Z#sympy.physics.quantum.tensorproductr   Zsympy.physics.quantum.stater   Zsympy.physics.quantum.densityr   Zsympy.physics.quantum.qubitr   r   Zsympy.physics.quantum.bosonr   r    r!   ÚjÚjpÚmÚmpr3   r1   r4   r$   r%   r5   r8   r:   r;   r>   r?   rB   rG   rJ   rN   rP   rS   rU   r&   r&   r&   r)   Ú<module>   sH   $


