o
    GZh\                     @   s  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 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 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(m)Z)m*Z*m+Z+ d dl,m-Z- ed\Z.Z/Z0G dd de"Z1G dd de"Z2G dd de$Z3G dd de$Z4dd Z5dd Z6dd Z7d d! Z8d"d# Z9d$d% Z:d&d' Z;d(d) Z<d*S )+    )Add)diff)Mul)IIntegerRationaloopi)Pow)S)Symbolsymbols)sympify)	conjugate)sqrt)sin)raises)Dagger)QExpr)
KetBra
TimeDepKet
TimeDepBraKetBaseBraBase	StateBaseWavefunctionOrthogonalKetOrthogonalBra)HilbertSpacezx,y,tc                   @      e Zd Zedd ZdS )	CustomKetc                 C      dS )N)test selfr$   r$   U/var/www/auris/lib/python3.10/site-packages/sympy/physics/quantum/tests/test_state.pydefault_args      zCustomKet.default_argsN__name__
__module____qualname__classmethodr(   r$   r$   r$   r'   r!          r!   c                   @   r    )CustomKetMultipleLabelsc                 C   r"   )N)rthetaphir$   r%   r$   r$   r'   r(   !   r)   z$CustomKetMultipleLabels.default_argsNr*   r$   r$   r$   r'   r0       r/   r0   c                   @   r    )CustomTimeDepKetc                 C   r"   )N)r#   tr$   r%   r$   r$   r'   r(   '   r)   zCustomTimeDepKet.default_argsNr*   r$   r$   r$   r'   r4   &   r/   r4   c                   @   r    )CustomTimeDepKetMultipleLabelsc                 C   r"   )N)r1   r2   r3   r5   r$   r%   r$   r$   r'   r(   -   r)   z+CustomTimeDepKetMultipleLabels.default_argsNr*   r$   r$   r$   r'   r6   ,   r/   r6   c                  C   sL  t d} t| t sJ t| tsJ t| tsJ t| ts J | jtdfks*J | jt ks2J | j	du s9J t d} | jtdfksGJ t t
t} | jt
tfksUJ | jt ks]J | j	du sdJ |  tkslJ | jtt
tksvJ | t
tt ttksJ t } | tdksJ t } | tdddksJ t  t dksJ d S )	N0Fr	   r#   r1   r2   r3   psi)r   
isinstancer   r   r   labelr   hilbert_spacer   is_commutativexy
dual_classr   dualsubsr!   r0   kr$   r$   r'   test_ket2   s,   
rD   c                  C   s  t d} t| t sJ t| tsJ t| tsJ t| ts J | jtdfks*J | jt ks2J | j	du s9J t d} | jtdfksGJ t t
t} | jt
tfksUJ | jt ks]J | j	du sdJ |  tkslJ | jtt
tksvJ | t
tt ttksJ t  t dksJ d S )Nr7   Fr	   r8   )r   r9   r   r   r   r:   r   r;   r   r<   r=   r>   r?   r   r@   rA   )br$   r$   r'   test_braT   s$   
rF   c               	   C   sb   t d} t d}dt |  ttd |  }|ttdt| ttddttdtj	|ks/J d S )Nr         )
r   r   r=   r   r   r   r   r
   r   ZHalf)Zk0Zk1rC   r$   r$   r'   test_opsp   s   rJ   c                  C   s  t dt} t| t sJ t| tsJ t| tsJ t| ts!J | jtdfks+J | jtdtfks6J | j	tks=J | 
 tksEJ | jtdtksOJ | tdt ddks\J t td} | jtfksiJ | jttdfkstJ t } | jtdfksJ | j	tdksJ | tddksJ t } | jtdtdtdfksJ | j	tdksJ | tddddksJ t  t d	dksJ d S )
Nr   rH         ?r#   r5   r1   r2   r3   r8   )r   r5   r9   r   r   r   r:   r   argstimer?   r   r@   rA   r=   r   r4   r   r6   rB   r$   r$   r'   test_time_dep_ketx   s.   

 rN   c                  C   s   t dt} t| t sJ t| tsJ t| tsJ t| ts!J | jtdfks+J | jtdtfks6J | j	tks=J | 
 tksEJ | jtdtksOJ t td}|jtfks\J |jttdfksgJ t  t ddksqJ d S )Nr   rK   r8   r5   )r   r5   r9   r   r   r   r:   r   rL   rM   r?   r   r@   r=   r   )rE   rC   r$   r$   r'   test_time_dep_bra   s   

rO   c                  C   s   t ddd} td}td}t|tdksJ t|tdks"J t|jdu s+J td}dt | | |  }t|t| t| dt t|  ksOJ d S )	Nr=   T)complexrC   rE   Fk2rH   )r   r   r   r   r<   r   r   )r=   rC   rE   rQ   er$   r$   r'   test_bra_ket_dagger   s   0rS   c                     s  t ddd\} }t ddd}t dddd}t| d |    } j} jd	u s*J  jtu s1J  d
dks9J |d
dksAJ ||  t tfksLJ t | td|  | ksZJ tt	 fdd t
 tt
 j| ksqJ t
 t ks{J t| d | |d |   | ddf|ddf}|j}||  dksJ || dksJ |jd	u sJ |jtdd ksJ |dddksJ |dddksJ tt|| |td|  d|  | ddf|ddfksJ t
|tt
|jg|jdd  R  ksJ t
|t|ksJ ttd| d  | ddf}|jdu sJ | |ks$J t
|tt
|j| ddfks6J t
|t|ksAJ tt|t |  | | d|f}	|	jt|d ks]J |	|d dkshJ |	dtd| t | ksyJ |	ddddtdt ksJ |	 ttdt| t|t |  |  | d|fksJ t
|	tt
|	j| d|fksJ t
|	t|	ksJ t| d d}
t|
jd tksJ d S )Nzx yT)realL)positiven)integerrV   rH   F
   d   i'  c                      s      S )N)	normalizer$   fr$   r'   <lambda>   s    z#test_wavefunction.<locals>.<lambda>r   rG   )r   rG   )r   rH   *            rK   )rW   rU   r=   )r   r   ZprobZlimitsis_normalizedZnormr   r   r   NotImplementedErrorr   exprr   r   rL   r[   r   r	   type	variablesr   )r=   r>   rU   rW   pZlimsgZlims_ghZpiabrC   r$   r\   r'   test_wavefunction   sV   ,8,$ " .
$rk   c                  C   sh   t ttt } |  dksJ t tttd  } |  dks"J t ttt } |  | ks2J d S )NrG   r   )r   r=   r   Zdoitr>   )Zbracketr$   r$   r'   test_orthogonal_states   s   rl   N)=Zsympy.core.addr   Zsympy.core.functionr   Zsympy.core.mulr   Zsympy.core.numbersr   r   r   r   r	   Zsympy.core.powerr
   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Z$sympy.functions.elementary.complexesr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Zsympy.testing.pytestr   Zsympy.physics.quantum.daggerr   Zsympy.physics.quantum.qexprr   Zsympy.physics.quantum.stater   r   r   r   r   r   r   r   r   r   Zsympy.physics.quantum.hilbertr   r=   r>   r5   r!   r0   r4   r6   rD   rF   rJ   rN   rO   rS   rk   rl   r$   r$   r$   r'   <module>   s:    0""3