o
    GZh                      @   st  d dl mZmZmZ d dlmZ d dlmZm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 d d
lmZmZmZmZmZ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&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- G dd deZ.G dd deZ/e. Z0e/ Z1dd Z2dd Z3dd Z4dd Z5dd Z6d d! Z7d"d# Z8d$d% Z9d&d' Z:d(S ))    )
DerivativeFunctiondiff)Mul)Integerpi)Symbolsymbols)sympify)sin)QExpr)Dagger)HilbertSpace)OperatorUnitaryOperatorHermitianOperatorOuterProductDifferentialOperatorIdentityOperator)KetBraWavefunction)qapply)	represent)JzKetJzBra)Tr)eye)warns_deprecated_sympyc                   @      e Zd Zedd ZdS )	CustomKetc                 C      dS )N)t selfr#   r#   X/var/www/auris/lib/python3.10/site-packages/sympy/physics/quantum/tests/test_operator.pydefault_args      zCustomKet.default_argsN__name__
__module____qualname__classmethodr'   r#   r#   r#   r&   r           r    c                   @   r   )CustomOpc                 C   r!   )N)Tr#   r$   r#   r#   r&   r'      r(   zCustomOp.default_argsNr)   r#   r#   r#   r&   r/      r.   r/   c                  C   s@  t d} t d}t d}t| t sJ t| tsJ | jtdfks$J | jdu s+J | jt ks3J | | ||  ks=J | ||   | | | |  ksOJ | | d  | d | |  ||   |d  ksiJ t	jd tt	
 d ksxJ t  t dksJ t  | t  | ksJ W d    d S 1 sw   Y  d S )NABCF   r   O)r   
isinstancer   labelr   is_commutativeZhilbert_spacer   expandt_opr'   r   r   )r1   r2   r3   r#   r#   r&   test_operator'   s    $4"r;   c                  C   s4   t d} | |   dksJ |  |  dksJ d S )Nr1      )r   inv)r1   r#   r#   r&   test_operator_inv?   s   r>   c                  C   sh   t d} t| t sJ t| tsJ t| | ksJ |  | ks"J | jdu s)J t| jdu s2J d S )NHF)r   r6   r   r   r=   r8   )r?   r#   r#   r&   test_hermitianE   s   r@   c                  C   s   t d} t| t sJ t| tsJ |  t| ksJ | t|  dks&J t| |  dks0J | jdu s7J t| jdu s@J d S )NUr<   F)r   r6   r   r=   r   r8   )rA   r#   r#   r&   test_unitaryQ   s   rB   c                  C   sR  t   t } td}td}td}t| tsJ t| ts!J | | |ks)J ||  |ks1J | t| t|ks=J t||  t|ksIJ t| |  tsRJ ||  |ksZJ | | |ksbJ |  | ksjJ t| | ksrJ t| | |ks|J t||  |ksJ dD ]}t	t|t
|ksJ qW d    d S 1 sw   Y  d S )Nr5   x   )r4   rD      )r   r   r   r   r
   r6   r   r=   r   r   r   )Ir5   rC   threenr#   r#   r&   test_identity^   s,   "rI   c                  C   s  t d} td}t| |}t|tsJ t|tsJ |j| ks"J |j|ks)J |j| |fks2J |jdu s9J | | }t|tsDJ t|tsKJ |j| ksRJ |j|ksYJ |j| |fksbJ |jdu siJ d|  | }|t	t
d| |ks{J d| |  }|t	t
dt| |ksJ t| | tt|t| ksJ t| | jdu sJ tttddtdd dksJ td|  |dt| | ksJ t| d| dt| | ksJ t dt d}}tdtd	}}t|| |t||t|| ksJ t||| t||t|| ksJ td| d|  d
| d|  d
t|| dt||  dt||  dt||  ksHJ d S )NkbFr4   r<   k1k2b1b2rD            )r   r   r   r6   r   ZketZbrar7   r8   r   r   r   r   r   r   Zdoit)rJ   rK   oprL   rM   rN   rO   r#   r#   r&   test_outer_productx   sT   
"&  

 rT   c                  C   sp   t d} t d}t| | t|t|  ksJ t| | t| t| ks(J t| d t| d ks6J d S )Nr1   r2   r4   )r   r   )r1   r2   r#   r#   r&   test_operator_dagger   s
      rU   c                  C   s  t d} td}tt|| | || }t| d | }t|| td|  | ks*J |jt|| | ks6J |j|| ks?J |j| fksGJ t	|| tt|| | d|| ks[J tt|| | d|| }t| d | }t|| td|  | ks~J |jt|| | dksJ |j|| ksJ |j| fksJ t	|| tt|| | d|| ksJ td|  t|| |  || }|jd|  t|| |  ksJ |j|| ksJ |j| fksJ t	|| ttd|  t|| |  | || ksJ t|| td|  | ksJ t d}tt|| || dt|| ||d || |}t| d |d  |d | d   | |}|jt|| || dt|| ||d ksSJ |j|| |ks^J |j| |fkshJ t	|| tt|j| || |ks|J t	||tt|j||| |ksJ t|| td| d  d|  |d   d| d  |  d|d   | |ksJ t
d\}}td| t|t|||| | d|d  t||||d  |||}t|d t| ||d	tf}|jd| t|t|||| | d|d  t||||d  ksJ |j|||ks%J |j||fks/J t	||tt|j||||ksCJ t	||tt|j||||ksWJ t|| tdt| ||d	tfksmJ d S )
NrC   fr4   rD   rQ   r<   yzr thr   )r   r   r   r   r   r   exprfunction	variablesr   r	   r   r   )rC   rV   dgrW   wrthr#   r#   r&   test_differential_operator   s   ((  $ (0

B" 


0r`   c            	      C   s  ddl m}  ddlm} td}td}td}|d | ks"J |d | ks,J |d | ks6J tdd	d
}|| ||sDJ || | ||ksOJ | ||| ||ddks]J ddl	m
} |d}|| ||soJ || | ||kszJ | ||dd| ||ksJ tdd	d	d}|| dksJ tdd	d	d}|| |ksJ tdd	d}|| ||sJ || | ||ksJ | ||dd| ||ksJ |d dksJ |d |ksJ d S )Nr   )Pow)	unchangedr5   rA   r?   rC   T)ZcommutativeF)evaluate)XGaterH   )integerZevenr<   )rf   Zodd)rf   rP      )Z
sympy.corera   Zsympy.core.exprrb   r   r   r   r=   r	   Zsympy.physics.quantum.gatere   )	ra   rb   r5   rA   r?   rC   re   XrH   r#   r#   r&   test_eval_power   s6   ri   N);Zsympy.core.functionr   r   r   Zsympy.core.mulr   Zsympy.core.numbersr   r   Zsympy.core.symbolr   r	   Zsympy.core.sympifyr
   Z(sympy.functions.elementary.trigonometricr   Zsympy.physics.quantum.qexprr   Zsympy.physics.quantum.daggerr   Zsympy.physics.quantum.hilbertr   Zsympy.physics.quantum.operatorr   r   r   r   r   r   Zsympy.physics.quantum.stater   r   r   Zsympy.physics.quantum.qapplyr   Zsympy.physics.quantum.representr   Zsympy.physics.quantum.spinr   r   Zsympy.physics.quantum.tracer   Zsympy.matricesr   Zsympy.testing.pytestr   r    r/   Zt_ketr:   r;   r>   r@   rB   rI   rT   rU   r`   ri   r#   r#   r#   r&   <module>   s<     7;