o
    *ήc                     @   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 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! 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- e	d\Z.Z/Z0Z1e!dd Z2e!ddZ3e!ddZ4edZ5G dd deZ6dd Z7dd Z8dd Z9dd  Z:d!d" Z;d#d$ Z<d%d& Z=d'd( Z>d)d* Z?d+d, Z@d-d. ZAd/d0 ZBd1S )2    )Mul)IIntegerRational)S)symbols)sqrt)AntiCommutator)
Commutator)hbar)Dagger)H)Operator)qapply)JxJyJzJplusJminusJ2JzKet)TensorProduct)Ket)Density)Qubit)BosonOpBosonFockKetBosonFockBraz	j j' m m'   Ac                   @   s   e Zd Zdd ZdS )Fooc                 K   s   |S )N )selfketoptionsr"   r"   N/tmp/pip-target-vg8gfxp4/lib/python/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   s8  t tt tt ksJ t tt tt td tt td  ks$J t tt	 t td tt tt  ks:J t ttt  tt tt  ksLJ t tt tt  tt tt  ks`J t t	t	 t dtd  t ksrJ t td t dtd  t ksJ t td t	d  t dtd  t ksJ d S N      )
r   r   por   r   zr   mor   r   r"   r"   r"   r&   
test_basic$   s   0,$($$0r1   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s3J tt
t t  td |  tt |  tt	 |   ksOJ tttt	  |  tt |  tt	 |   ksgJ ttt |  tt	 |   tt |  tt	 |   ksJ ttt t |  dtd  t	 |  ksJ tt
d t	 |  dtd  t |  ksJ tt
d td  t |  dtd  t |  ksJ d S r+   )r/   dualr    r   r   r.   r   r   r   r0   r   r   )extrar"   r"   r&   
test_extra/   s    808,,8r4   c                   C   sF   t tjt t ddttjt  ksJ t tjt t tks!J d S )NFip_doit)r   r.   r2   r   r   r"   r"   r"   r&   test_innerproduct<   s   (r7   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_zeroA   s   r8   c                   C   s   t tttt t ttd  t ksJ t tttt t dks$J t ttt	dt dks3J t tt	dtt dksBJ d S )N   r   F)
r   r
   r   r   r   r.   r   r   r   r!   r"   r"   r"   r&   test_commutatorF   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s&J d S )Nr:   r,   )r   r	   r   r!   r.   r   r"   r"   r"   r&   test_anticommutatorM   s   &*r<   c                  C   sz   t ttj  t  t } t| td  t ksJ t| ddtd  tjt  t ks,J t|  td  t ks;J d S )Nr,   Fr5   )r   r0   r.   r2   r   r   doit)er"   r"   r&   test_outerproductR   s   ("r?   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sHJ tt| t|| | d| ks[J t|t| ||  ddtd| kspJ t||  tddksJ tt| || | td| ksJ ttt| || | ddtdt| ksJ d S )Nabr   r,   r   Tdagger)r   r   r   r   r   r   r   r=   )r@   rA   ket1ket2ket3bra1bra2r"   r"   r&   test_tensorproductY   s*   &&
&rI   c                  C   sX   t tdt td } t tdtd t tdtd  }t| dd|ks*J d S )Nr   r   r,   TrB   )r   r   r   r   r   )lhsrhsr"   r"   r&   test_daggerk   s   (rL   c                  C   sR   t ddd\} }t| |}td}t||ksJ t|j| |j| ks'J d S )Nzx yF)commutativeB)r   r   r   r   r2   )xyr    rN   r"   r"   r&   test_issue_6073q   s
   
 rQ   c                  C   sF   t tt dgtt dg} t| t t t dgtt dgks!J d S )Ng      ?)r   r   r0   r.   r   r   )dr"   r"   r&   test_densityy   s   ,rS   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 )Nr,   r   r-   r   )r   r   r   r   NegativeOner   Halfr   r   r   r   )expr1resultr"   r"   r&   test_issue3044~   s   0 rX   N)Csympy.core.mulr   sympy.core.numbersr   r   r   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   $sympy.physics.quantum.anticommutatorr	    sympy.physics.quantum.commutatorr
   sympy.physics.quantum.constantsr   sympy.physics.quantum.daggerr   sympy.physics.quantum.gater   sympy.physics.quantum.operatorr   sympy.physics.quantum.qapplyr   sympy.physics.quantum.spinr   r   r   r   r   r   r   #sympy.physics.quantum.tensorproductr   sympy.physics.quantum.stater   sympy.physics.quantum.densityr   sympy.physics.quantum.qubitr   sympy.physics.quantum.bosonr   r   r   jjpmmpr/   r.   r0   r    r!   r1   r4   r7   r8   r;   r<   r?   rI   rL   rQ   rS   rX   r"   r"   r"   r&   <module>   sH    $


