a
    kş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 d dl2m3Z3 e	d\Z4Z5Z6Z7e$dd Z8e$ddZ9e$ddZ:edZ;G dd deZ<dd Z=dd Z>dd Z?d d! Z@d"d# ZAd$d% ZBd&d' ZCd(d) ZDd*d+ ZEd,d- ZFd.d/ ZGd0d1 ZHd2d3 ZId4S )5é    )Ú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ÚBosonFockBra)Úwarns_deprecated_sympyz	j j' m m'é   é˙˙˙˙ÚAc                   @   s   e Zd Zdd ZdS )ÚFooc                 K   s   |S )NŠ )ÚselfZketÚoptionsr'   r'   úU/var/www/auris/lib/python3.9/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J t tt tt td tt td  ksHJ t tt	 t td tt tt  kstJ t ttt  tt tt  ksJ t tt tt  tt tt  ksŔJ t t	t	 t dtd  t ksäJ t td t dtd  t ks
J t td t	d  t dtd  t ks8J d S ŠNé   é   )
r   r   Úpor   r   Ú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.J ttt  |  tt td tt	 td  |  ksfJ tt
t t  td |  tt |  tt	 |   ksJ tttt	  |  tt |  tt	 |   ksÎJ ttt |  tt	 |   tt |  tt	 |   ksJ ttt t |  dtd  t	 |  ks6J tt
d t	 |  dtd  t |  ksdJ tt
d td  t |  dtd  t |  ksJ d S r/   )r3   Údualr%   r   r   r2   r   r   r   r4   r   r   )Úextrar'   r'   r*   Ú
test_extra0   s     8˙˙0:..r8   c                   C   sF   t tjt t ddttjt  ks(J t tjt t tksBJ d S )NFŠZip_doit)r   r2   r6   r   r   r'   r'   r'   r*   Útest_innerproduct=   s    (r:   c                   C   s(   t ddksJ t tddks$J d S )Nr   )r   r   r'   r'   r'   r*   Ú	test_zeroB   s    r;   c                   C   s   t tttt t ttd  t ks*J t tttt t dksHJ t ttt	dt dksfJ t tt	dtt dksJ d S )Né   r   ÚF)
r   r
   r   r   r   r2   r   r   r   r&   r'   r'   r'   r*   Útest_commutatorG   s    *r>   c                   C   sP   t tttdt dt t ks&J t ttdtt dt t ksLJ d S )Nr=   r0   )r   r	   r   r&   r2   r   r'   r'   r'   r*   Útest_anticommutatorN   s    &r?   c                  C   sz   t ttj  t  t } t| td  t ks0J t| ddtd  tjt  t ksXJ t|  Ą td  t ksvJ d S )Nr0   Fr9   )r   r4   r2   r6   r   r   Údoit)Úer'   r'   r*   Útest_outerproductS   s    (rB   c                  C   sZ  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J tt| t|| | d| ksśJ t|t| ||  ddtd| ksŕJ t||  Ą tj	ksúJ tt| || | td| ks"J ttt| || | ddtdt| ksVJ d S )NÚaÚbr#   r0   r   TŠÚdagger)
r   r   r    r!   r   r   r   r@   r   ZOne)rC   rD   Zket1Zket2Zket3Zbra1Zbra2r'   r'   r*   Útest_tensorproductZ   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sTJ d S )Nr   r#   r0   TrE   )r   r   r   r   r   )ÚlhsÚrhsr'   r'   r*   Útest_daggerl   s    (rJ   c                  C   sR   t ddd\} }t| |}td}t||ks2J t|j| |j| ksNJ d S )Nzx yF)ZcommutativeÚB)r   r   r   r   r6   )ÚxÚyr%   rK   r'   r'   r*   Útest_issue_6073r   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sBJ d S )Ng      ŕ?)r   r   r4   r2   r   r   )Údr'   r'   r*   Útest_densityz   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~J d S )Nr0   r#   r1   r$   )r   r   r   r   ZNegativeOner   ZHalfr   r   r   r   )Úexpr1Úresultr'   r'   r*   Útest_issue3044   s    0 rS   c                  C   s\  t dtd } t| | ks J tdtd } t| | ks@J ttdttdtdtd}t|tdtd ks~J t|dd}t|ddtdks˘J tdtdtd  td }t|dd}|tdksŢJ t b ttdt  tdksJ tt	dtdtd  tdtd ks8J W d    n1 sN0    Y  d S )Nr   rC   r#   TrE   )
r    r   r   r   r   r   r   r"   r   r   )ÚPZP1ZP2r'   r'   r*   Útest_issue24158_ket_times_op   s    "  rU   N)JZ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!   Zsympy.testing.pytestr"   ÚjZjpÚmÚmpr3   r2   r4   r%   r&   r5   r8   r:   r;   r>   r?   rB   rG   rJ   rN   rP   rS   rU   r'   r'   r'   r*   Ú<module>   sJ   $


