
    sg9                        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- d dlm.Z.  edege dgg      Z/ eddgddgg      Z0 edgegg      Z1 G d de      Z2 G d de      Z3 G d de      Z4 G d de      Z5 e2d      Z6 e3d      Z7 e4d       Z8 e5d!      Z9e7 ee1      f ee7      e1fe6e1f ee6       ee1      fe8e/f ee8       ee/      f ee6e7      e1e1jt                  z  f ee8e9       ee/e0      fe8dz  e/dz  fe8e9z  de8z  z   e/e0z  de/z  z   f ee8e9      e/e0z  e0e/z  z
  f ee8e9      e/e0z  e0e/z  z   f ee7e6      e1jt                  e1z  d    fgZ;d" Z<d# Z= ed$      Z>d% Z?d& Z@ ed'd(d)gi*      ZAd+ ZBd, ZC e'd-      ZD e)d-      ZE e(d.      ZFd/ ZGd0 ZHd1 ZIy2)3    )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)raises            c                   (    e Zd Zed        Zd Zd Zy)AKetc                     t         S N)ABraselfs    ]/var/www/html/venv/lib/python3.12/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""3733r0   c                     t         S r)   )Avecr,   basisr6   s      r-   r4   zAKet._represent_AOp&       r0   N)__name__
__module____qualname__classmethodr.   r7   r4    r0   r-   r'   r'      s     4r0   r'   c                       e Zd Zed        Zy)r*   c                     t         S r)   )r'   r+   s    r-   r.   zABra.dual_class,   r/   r0   N)r>   r?   r@   rA   r.   rB   r0   r-   r*   r*   *   s     r0   r*   c                       e Zd Zd Zd Zy)AOpc                 &     | j                   di |S r2   r3   r5   s     r-   r7   zAOp._represent_default_basis3   r8   r0   c                     t         S r)   )Amatr;   s      r-   r4   zAOp._represent_AOp6   r=   r0   Nr>   r?   r@   r7   r4   rB   r0   r-   rF   rF   1       4r0   rF   c                       e Zd Zd Zd Zy)BOpc                 &     | j                   di |S r2   r3   r5   s     r-   r7   zBOp._represent_default_basis<   r8   r0   c                     t         S r)   )Bmatr;   s      r-   r4   zBOp._represent_AOp?   r=   r0   NrJ   rB   r0   r-   rM   rM   :   rK   r0   rM   aABc                  n    t         D ],  } t        | d   t        d      }t        | d         }||k(  r,J  y )Nr   sympyr<   formatr"   )_testsr
   rR   r   testlhsrhss      r-   test_format_sympyr]   c   s=     Qq9tAwczzr0   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 y )Nr"         ?)r
   r   r   r   rB   r0   r-   test_scalar_sympyr`   j   sS    WQZ GAJ...U3Z E#J...S1Wq(((r0   numpyc                      t         st        d       t        D ]R  } t        | d   t        d      }t        | d         }t        |t              r||k(  j                         rJJ ||k(  rRJ  y )Nnumpy not installed.r   ra   rV   r"   )	npr   rX   r
   rR   r   
isinstancer   allrY   s      r-   test_format_numpyrg   s   si    #$ Qq9tAwc=)3J##%%%#::r0   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 y )Nrc   r"   ra   rW   r_         ?      ?)rd   r   r
   r   r   r   rB   r0   r-   test_scalar_numpyrk      sY    #$WQZ0A555U3Z0C777S1WW-;;;r0   scipyfromlistsparse)import_kwargsc                  >   t         st        d       t        st        d       t        D ]r  } t	        | d   t
        d      }t        | d         }t        |t              r6t         j                  j                  ||z
  j                               dk(  rjJ ||k(  rrJ  y )Nrc   scipy not installed.r   scipy.sparserV   r"   g        )rd   r   rl   rX   r
   rR   r   re   r   linalgnormtodenserY   s      r-   test_format_scipy_sparserv      s    #$#$ Qq@d1g&c./99>>39"5"5"78C???#::r0   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 y )Nrc   rq   r"   rr   ri   r_   rj   )rd   r   rl   r
   r   r   r   rB   r0   r-   test_scalar_scipy_sparserx      se    #$#$WQZ71<<<U3Z73>>>S1W^4
BBBr0   xXc                  
   t        t              t        t        d      t              j	                         k(  sJ t        t
              t        t
        t        d            j	                         k(  sJ t        t        d        y )Nx_1c                       t        t              S r)   )r   x_oprB   r0   r-   <lambda>z*test_innerprod_represent.<locals>.<lambda>   s    .t4 r0   )	r   x_ketr   r   doitx_brar   r!   	TypeErrorrB   r0   r-   test_innerprod_representr      s[    E"l4;&F&K&K&MMMME"l5$u+&F&K&K&MMMM
945r0   c                      t        t        t              dd      } t        t              t	        | d   j
                  t        z  | d   z        k(  sJ y )Nr"   r#   r   )r   r    r~   r   r   dual)
basis_ketss    r-   test_operator_representr      sP    !"4T":AqAJ
1**4/
1=>? ? ?r0   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 y )Nfoor"   foo_1)r"   r#   r%   foo_2foo_4)r   r   )rZ   s    r-   test_enumerate_statesr      s]    ;DD!Q'DM?:::i!']DM4=IJ J Jr0   N)J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    r!   rI   rP   r:   r'   r*   rF   rM   kbrR   rS   HrX   r]   r`   rd   rg   rk   rl   rv   rx   r   r   r~   r   r   r   rB   r0   r-   <module>r      s[   2 2 ' ( % /P P 0 A = E 7 ? ;J J < ; / @ '1vAw 1v1vsQCj
3 
3 ( (  	IIHH tAYIAYtIAYt!Qdff%1a/d;<T47OqS1Q3YT	AdF"#1tDy49,-Aq49tDy01!Q$&&+q)*/
6) 7
< 	gj8*-EFC 	S	S	
3x6?Jr0   