U
    L?h†  ã                   @   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&   úY/var/www/html/venv/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st‚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   )Zexpr1Úresultr&   r&   r)   Útest_issue3044~   s    0 rR   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    "  rT   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   rR   rT   r&   r&   r&   r)   Ú<module>   sH   $


