
    g9                        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          e1e1j:        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          e1j:        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 ZId2S )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                   0    e Zd Zed             Zd Zd ZdS )AKetc                     t           S N)ABraselfs    f/var/www/html/ai-engine/env/lib/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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'      sK          [4 4 4    r0   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/   r0   N)r>   r?   r@   rA   r.   rB   r0   r-   r*   r*   *   s-          [  r0   r*   c                       e Zd Zd Zd ZdS )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   2        4 4 4    r0   rF   c                       e Zd Zd Zd ZdS )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                      t           D ]<} t          | d         t          d          }t          | d                   }||k    sJ =d S )Nr   sympyr<   formatr"   )_testsr
   rR   r   testlhsrhss      r-   test_format_sympyr]   c   sS      Qq999tAwczzzzz 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 d S )Nr"         ?)r
   r   r   r   rB   r0   r-   test_scalar_sympyr`   j   ss    WQZZ  GAJJ....U3ZZ  E#JJ....S1Wq((((((r0   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   ra   rV   r"   )	npr   rX   r
   rR   r   
isinstancer   allrY   s      r-   test_format_numpyrg   s   s     %#$$$  Qq99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 d S )Nrc   r"   ra   rW   r_         ?      ?)rd   r   r
   r   r   r   rB   r0   r-   test_scalar_numpyrk      s     %#$$$WQZZ000A5555U3ZZ000C7777S1WW---;;;;;;r0   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 )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.// 	9>>39"5"5"7"78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 d S )Nrc   rq   r"   rr   ri   r_   rj   )rd   r   rl   r
   r   r   r   rB   r0   r-   test_scalar_scipy_sparserx      s     %#$$$ %#$$$WQZZ7771<<<<U3ZZ7773>>>>S1W^444
BBBBBBr0   xXc                  b   t          t                    t          t          d          t                                                    k    sJ t          t
                    t          t
          t          d                                                    k    sJ t          t          d            d S )Nx_1c                  *    t          t                    S r)   )r   x_oprB   r0   r-   <lambda>z*test_innerprod_represent.<locals>.<lambda>   s    .t44 r0   )	r   x_ketr   r   doitx_brar   r!   	TypeErrorrB   r0   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
94455555r0   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=>>? ? ? ? ? ?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 d S )Nfoor"   foo_1)r"   r#   r%   foo_2foo_4)r   r   )rZ   s    r-   test_enumerate_statesr      s    ;;DD!Q''DMM?::::iii !']]DMM4==IJ J J 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 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6 6 6? ? ?J J J J Jr0   