o
    GZh                     @   s  d 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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" 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- ddl.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 e2dZ8e3dZ9e4dZ:e4dZ;e4dZ<e4dZ=e5dZ>e5dZ?e6dZ@e7dZAed ZBed!ZCed"ZDed#d$d%ZEed&d$d$d'ZFe*d(ZGe*d)d*d+gid,ZHe&e8eAd"d-d.ZIe&e9eAd"d-d.ZJe&eAeAd"d-d.ZKe&e@eAd"d-d.ZLe&e=eAd"d-d.ZMe&e?eAd"d-d.ZNd/d0 ZOd1d2 ZPd3d4 ZQd5d6 ZRd7d8 ZSd9d: ZTd;d< ZUd=d> ZVd?S )@zTests for sho1d.py    )Sum)oo)IInteger)S)Symbolsymbols)	factorial)exp)sqrt)Abs)KroneckerDelta)Dagger)hbar)
Commutator)qapply)InnerProduct)XPx)ComplexSpace)	represent)simplify)import_module)IndexedBaseIdx)skipraises)	RaisingOp
LoweringOpSHOKetSHOBraHamiltonianNumberOpak      bHNomegam   pTintegerq)nonnegativer/   numpyscipyfromlistsparse)Zimport_kwargsZsympybasisndimformatc                  C   sD  t ttksJ ttt tdksJ ttt tdt ks$J ttt t	tj
d ttj
d   ks<J ttt t	tj
d ttj
d   ksTJ ttt t	tj
d ttj
d   kslJ td tdt	tdt t t  tdt t tt t   ksJ tjttjksJ ttd D ]} t| d | f t	| d ksJ qtstd tttddd}ttd D ]} || d | f t t	| d ksJ qtstd t!std	 tttdd
dd}ttd D ]} || d | f t t	| d ksJ q|j"dksJ |j"dks J d S )Nr%   xp   znumpy not installed.r,   r2   r6   zscipy not installed.zscipy.sparseZlil)r7   r8   r9   ZspmatrixZfloat64)#r   adr#   r   doitr   r)   r   r$   r   nr   expandkzkfrewriter   r+   r*   r   r   r   hilbert_spacer   r   Infinityranger8   ad_rep_sympynpr   r   floatr3   Zdtype)iZad_rep_numpyZad_rep_scipy rK   U/var/www/auris/lib/python3.10/site-packages/sympy/physics/quantum/tests/test_sho1d.pytest_RaisingOp9   s4   000:"&(rM   c                  C   s4  t ttksJ ttt tdksJ ttt tks J ttt t	tj
ttj
td   ks8J ttt tdksDJ ttt t	tj
ttj
td   ks\J td tdt	tdt t t  tt tt t   ksJ ttd D ]} t| | d f t	| d ksJ qd S )Nr%   r   r;   r<   )r   r#   r=   r   r>   r   r)   r   r$   r   r?   r   r@   rA   rB   rC   r   r+   r*   r   r   r   rF   r8   a_reprJ   rK   rK   rL   test_LoweringOpY   s   002"rP   c                  C   s@  t tt tksJ t tt tdt ksJ t tt tdks'J ttt tj	t 
 ks6J td tt ksCJ td tdtdt t t  td tt t d   tdtd  ksnJ td ttt  tdtd  ksJ ttD ]} t| | f | ksJ qttt ksJ d S )Nr:   r   r#   r;   r%   r<   r(   )r   r)   r=   r>   r#   r   r(   r   r$   r?   r@   rC   r+   r   r*   r   r   rF   r8   N_reprG   rN   rO   rK   rK   rL   test_NumberOpe   s   &
.rR   c                  C   s,  t tt tdksJ ttt tt tj	tdtd   t 
 ks(J td tt tt tdtd   ksAJ td tdtdt  td tt t d   ks`J td tt ttdtd   kswJ ttD ]} t| | f tt | tdtd   ksJ q{d S )Nr   r%   r<   r#   r;   r)   )r   r(   r)   r>   r   r   r$   r   r*   r?   r@   rC   r=   r#   r+   r   r   rF   r8   H_reprO   rK   rK   rL   test_Hamiltonianr   s   62*..rT   c                   C   s   t d tks
J td t ksJ ttt ttjtjks$J tj	t
tjks.J ttjdf tdks;J tdtjf tdksHJ d S )Nr$   r'   r   r%   )r   Z
dual_classr    r   r'   r$   r>   r   r?   rD   r   r   rE   k3_repk3r   b3_repb3rK   rK   rK   rL   test_SHOKet|   s    rY   c                  C   s  t tttt tddf} |  tdtd tdtd  ks$J tt tttt tdtftt ddttks@J td}t	dt
d}tttt || t| |dtf dd}||t kshJ tttt tttt tdtf t || t| |dtf dd}||t ksJ tt- tttt tttt tdtf t |t tt tdtf dd}W d    d S 1 sw   Y  d S )Nr   r%   TZsum_doitr#   r?   )cls)r   r   r-   r    r>   r   r   r0   r   r   r   r   
ValueError)e1r#   r?   resultrK   rK   rL   test_sho_sums   s.   ,",>
>"r_   c                  C   s   t ddd} tt| d  td t| t ttt tt tdt	f }t
tt| ddtt| d  td | t  ttt ksJJ tt
ttt | ddtt
tt|  | ddkshJ d S )NalphaT)Z
is_complexr<   r   rZ   )r   r
   r   r   r   r-   r   r	   r   r   r   r    r0   r   r#   )r`   ZcstaterK   rK   rL   test_sho_coherant_state   s   BF@ra   c                  C   s   t dddd} t ddd}t dddd}t dddd}t| d	|   | t| t| |d
tf}tt|| t| dd}t|| | d	  | t|| ksRJ d S )NnbarT)realr1   r?   r.   rJ   )r/   r1   jr%   r   rZ   )r   r   r   r    r   r   r   r   )rb   r?   rJ   rd   rhor^   rK   rK   rL   test_issue_26495   s   ,*rf   N)W__doc__Zsympy.concreter   Z
sympy.corer   Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z(sympy.functions.combinatorial.factorialsr	   Z&sympy.functions.elementary.exponentialr
   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.functions.elementary.complexesr   Z(sympy.functions.special.tensor_functionsr   Zsympy.physics.quantumr   Zsympy.physics.quantum.constantsr   r   Zsympy.physics.quantum.qapplyr   Z"sympy.physics.quantum.innerproductr   Zsympy.physics.quantum.cartesianr   r   Zsympy.physics.quantum.hilbertr   Zsympy.physics.quantum.representr   Zsympy.simplifyr   Zsympy.externalr   Zsympy.tensorr   r   Zsympy.testing.pytestr   r   Zsympy.physics.quantum.sho1dr   r   r   r    r!   r"   r=   r#   r$   rA   rB   rV   r'   rX   r(   r)   r*   r+   r8   r-   r0   rH   r3   rG   rN   rQ   rS   rU   rW   rM   rP   rR   rT   rY   r_   ra   rf   rK   rK   rK   rL   <module>   sn      
