
    Rie.                        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mZmZ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% d dl&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-  edege dgg          Z. eddgddgg          Z/ edgegg          Z0 G d de          Z1 G d de          Z2 G d de          Z3 G d de          Z4 e1d          Z5 e2d          Z6 e3d          Z7 e4d           Z8e6 ee0          f ee6          e0fe5e0f ee5           ee0          fe7e.f ee7           ee.          f ee5e6          e0e0j9        z  f ee7e8           ee.e/          fe7dz  e.dz  fe7e8z  de7z  z   e.e/z  de.z  z   f ee7e8          e.e/z  e/e.z  z
  f ee7e8          e.e/z  e/e.z  z   f ee6e5          e0j9        e0z  d          fgZ:d! Z;d" Z< ed#          Z=d$ Z>d% Z? ed&d'd(gi)          Z@d* ZAd+ ZB e'd,          ZC e)d,          ZD e(d-          ZEd. ZFd/ ZGd0 ZHd1S )2    )FloatIInteger)Matrix)import_module)skip)Dagger)	representrep_innerproductrep_expectationenumerate_states)BraKet)OperatorOuterProduct)TensorProduct)matrix_tensor_product)
Commutator)AntiCommutator)InnerProduct)numpy_ndarrayscipy_sparse_matrixto_numpyto_scipy_sparseto_sympy)XKetXOpXBra)qapply)operators_to_state            c                   0    e Zd Zed             Zd Zd ZdS )AKetc                     t           S N)ABraselfs    Jlib/python3.11/site-packages/sympy/physics/quantum/tests/test_represent.py
dual_classzAKet.dual_class           c                      | j         di |S Nr(   _represent_AOpr+   optionss     r,   _represent_default_basiszAKet._represent_default_basis"       "t"337333r/   c                     t           S r(   )Avecr+   basisr5   s      r,   r3   zAKet._represent_AOp%       r/   N)__name__
__module____qualname__classmethodr-   r6   r3    r/   r,   r&   r&      sK          [4 4 4    r/   r&   c                   $    e Zd Zed             ZdS )r)   c                     t           S r(   )r&   r*   s    r,   r-   zABra.dual_class+   r.   r/   N)r=   r>   r?   r@   r-   rA   r/   r,   r)   r)   )   s-          [  r/   r)   c                       e Zd Zd Zd ZdS )AOpc                      | j         di |S r1   r2   r4   s     r,   r6   zAOp._represent_default_basis2   r7   r/   c                     t           S r(   )Amatr:   s      r,   r3   zAOp._represent_AOp5   r<   r/   Nr=   r>   r?   r6   r3   rA   r/   r,   rE   rE   0   2        4 4 4    r/   rE   c                       e Zd Zd Zd ZdS )BOpc                      | j         di |S r1   r2   r4   s     r,   r6   zBOp._represent_default_basis;   r7   r/   c                     t           S r(   )Bmatr:   s      r,   r3   zBOp._represent_AOp>   r<   r/   NrI   rA   r/   r,   rL   rL   9   rJ   r/   rL   aABc                      t           D ]<} t          | d         t          d          }t          | d                   }||k    sJ =d S )Nr   sympyr;   formatr!   )_testsr
   rQ   r   testlhsrhss      r,   test_format_sympyr\   b   sS      Qq999tAwczzzzz r/   c                     t          t          d                    t          d          k    sJ t          t          d                    t          d          k    sJ t          dt          z             dt          z   k    sJ d S )Nr!         ?)r
   r   r   r   rA   r/   r,   test_scalar_sympyr_   i   ss    WQZZ  GAJJ....U3ZZ  E#JJ....S1Wq((((((r/   numpyc                     t           st          d           t          D ]l} t          | d         t          d          }t          | d                   }t          |t                    r||k                                    sJ d||k    sJ md S )Nnumpy not installed.r   r`   rU   r!   )	npr   rW   r
   rQ   r   
isinstancer   allrX   s      r,   test_format_numpyrf   r   s     %#$$$  Qq999tAwc=)) 	3J##%%%%%%#::::: r/   c                      t           st          d           t          t          d          d          dk    sJ t          t	          d          d          dk    sJ t          dt
          z   d          dk    sJ d S )Nrb   r!   r`   rV   r^         ?      ?)rc   r   r
   r   r   r   rA   r/   r,   test_scalar_numpyrj      s     %#$$$WQZZ000A5555U3ZZ000C7777S1WW---;;;;;;r/   scipyfromlistsparse)import_kwargsc                     t           st          d           t          st          d           t          D ]} t	          | d         t
          d          }t          | d                   }t          |t                    r;t           j	        
                    ||z
                                            dk    sJ ||k    sJ d S )Nrb   scipy not installed.r   scipy.sparserU   r!   g        )rc   r   rk   rW   r
   rQ   r   rd   r   linalgnormtodenserX   s      r,   test_format_scipy_sparseru      s     %#$$$ %#$$$  Qq@@@d1g&&c.// 	9>>39"5"5"7"788C?????#::::: r/   c                  ,   t           st          d           t          st          d           t          t	          d          d          dk    sJ t          t          d          d          dk    sJ t          dt          z   d          dk    sJ d S )Nrb   rp   r!   rq   rh   r^   ri   )rc   r   rk   r
   r   r   r   rA   r/   r,   test_scalar_scipy_sparserw      s     %#$$$ %#$$$WQZZ7771<<<<U3ZZ7773>>>>S1W^444
BBBBBBr/   xXc                     t          t                    t          t          d          t                                                    k    sJ t          t
                    t          t
          t          d                                                    k    sJ 	 t          t                     d S # t          $ r Y dS w xY w)Nx_1T)	r   x_ketr   r   doitx_brar   x_op	TypeErrorrA   r/   r,   test_innerprod_representr      s    E""l4;;&F&F&K&K&M&MMMMME""l5$u++&F&F&K&K&M&MMMMM   tts   B0 0
B>=B>c                      t          t          t                    dd          } t          t                    t	          | d         j        t          z  | d         z            k    sJ d S )Nr!   r"   r   )r   r    r   r   r   dual)
basis_ketss    r,   test_operator_representr      sj    !"4T":":AqAAJ 
1*4/
1=>>? ? ? ? ? ?r/   c                      t          d          } t          | dd          t          d          gk    sJ t          | g d          t          d          t          d          t          d          gk    sJ d S )Nfoor!   foo_1)r!   r"   r$   foo_2foo_4)r   r   )rY   s    r,   test_enumerate_statesr      s    ;;DD!Q''DMM?::::iii !']]DMM4==IJ J J J J Jr/   N)Isympy.core.numbersr   r   r   sympy.matrices.denser   sympy.externalr   sympy.testing.pytestr   sympy.physics.quantum.daggerr	   sympy.physics.quantum.representr
   r   r   r   sympy.physics.quantum.stater   r   sympy.physics.quantum.operatorr   r   #sympy.physics.quantum.tensorproductr   r    sympy.physics.quantum.commutatorr   $sympy.physics.quantum.anticommutatorr   "sympy.physics.quantum.innerproductr   !sympy.physics.quantum.matrixutilsr   r   r   r   r   sympy.physics.quantum.cartesianr   r   r   sympy.physics.quantum.qapplyr   !sympy.physics.quantum.operatorsetr    rH   rO   r9   r&   r)   rE   rL   kbrQ   rR   HrW   r\   r_   rc   rf   rj   rk   ru   rw   r|   r~   r   r   r   r   rA   r/   r,   <module>r      s(   2 2 2 2 2 2 2 2 2 2 ' ' ' ' ' ' ( ( ( ( ( ( % % % % % % / / / / / /P P P P P P P P P P P P 0 0 0 0 0 0 0 0 A A A A A A A A = = = = = = E E E E E E 7 7 7 7 7 7 ? ? ? ? ? ? ; ; ; ; ; ;J J J J J J J J J J J J J J < ; ; ; ; ; ; ; ; ; / / / / / / @ @ @ @ @ @v1vAw  v1v1vvsQCj
 
 
 
 
3 
 
 
    3       (       (    	DIIDIICHHCHH tVAYYIVAYYtIVAYYt\!Qdf%]1a//d;;<T47OqS1Q3YT	AdF"#Z1tDy49,-^Aq49tDy01\!Q$&+q)*/
6  ) ) ) ]7
 
 
< < < 	gj8*-EFFF  C C C 	S		S		
s3xx  ? ? ?J J J J Jr/   