o
    g9                     @   s  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Z0edgeggZ1G dd deZ2G dd deZ3G dd deZ4G dd deZ5e2dZ6e3dZ7e4d Z8e5d!Z9e7ee1fee7e1fe6e1fee6ee1fe8e/fee8ee/fee6e7e1e1j: fee8e9ee/e0fe8d e/d fe8e9 de8  e/e0 de/  fee8e9e/e0 e0e/  fee8e9e/e0 e0e/  fee7e6e1j:e1 d  fgZ;d"d# Z<d$d% Z=ed&Z>d'd( Z?d)d* Z@ed+d,d-gid.ZAd/d0 ZBd1d2 ZCe'd3ZDe)d3ZEe(d4ZFd5d6 ZGd7d8 ZHd9d: ZId;S )<    )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                   @   s(   e Zd Zedd Zdd Zdd ZdS )AKetc                 C      t S N)ABraself r+   a/var/www/visachat/venv/lib/python3.10/site-packages/sympy/physics/quantum/tests/test_represent.py
dual_class      zAKet.dual_classc                 K      | j di |S Nr'   _represent_AOpr*   optionsr+   r+   r,   _represent_default_basis#      zAKet._represent_default_basisc                 K   r&   r'   )Avecr*   basisr4   r+   r+   r,   r2   &      zAKet._represent_AOpN)__name__
__module____qualname__classmethodr-   r5   r2   r+   r+   r+   r,   r%      s
    
r%   c                   @   s   e Zd Zedd ZdS )r(   c                 C   r&   r'   )r%   r)   r+   r+   r,   r-   ,   r.   zABra.dual_classN)r;   r<   r=   r>   r-   r+   r+   r+   r,   r(   *   s    r(   c                   @      e Zd Zdd Zdd ZdS )AOpc                 K   r/   r0   r1   r3   r+   r+   r,   r5   3   r6   zAOp._represent_default_basisc                 K   r&   r'   )Amatr8   r+   r+   r,   r2   6   r:   zAOp._represent_AOpNr;   r<   r=   r5   r2   r+   r+   r+   r,   r@   1       r@   c                   @   r?   )BOpc                 K   r/   r0   r1   r3   r+   r+   r,   r5   <   r6   zBOp._represent_default_basisc                 K   r&   r'   )Bmatr8   r+   r+   r,   r2   ?   r:   zBOp._represent_AOpNrB   r+   r+   r+   r,   rD   :   rC   rD   aABc                  C   s8   t D ]} t| d tdd}t| d }||ksJ qd S )Nr   sympyr9   formatr!   )_testsr	   rG   r   testlhsrhsr+   r+   r,   test_format_sympyc   s
   rQ   c                   C   sL   t tdtdksJ t tdtdksJ t dt dt ks$J d S )Nr!         ?)r	   r   r   r   r+   r+   r+   r,   test_scalar_sympyj   s   rS   numpyc                  C   s`   t std tD ]%} t| d tdd}t| d }t|tr'||k s&J q||ks-J qd S )Nnumpy not installed.r   rT   rJ   r!   )	npr   rL   r	   rG   r   
isinstancer   allrM   r+   r+   r,   test_format_numpys   s   
rY   c                   C   sX   t std ttddddksJ ttddddksJ tdt dddks*J d S )NrU   r!   rT   rK   rR         ?      ?)rV   r   r	   r   r   r   r+   r+   r+   r,   test_scalar_numpy   s
   r\   scipyfromlistsparse)import_kwargsc                  C   sx   t std tstd tD ]+} t| d tdd}t| d }t|tr3t j	
||  dks2J q||ks9J qd S )NrU   scipy not installed.r   scipy.sparserJ   r!   g        )rV   r   r]   rL   r	   rG   r   rW   r   linalgnormtodenserM   r+   r+   r,   test_format_scipy_sparse   s   
rf   c                   C   sd   t std tstd ttddddksJ ttddddks$J tdt dddks0J d S )NrU   ra   r!   rb   rZ   rR   r[   )rV   r   r]   r	   r   r   r   r+   r+   r+   r,   test_scalar_scipy_sparse   s   rg   xXc                   C   sN   t tttdt ksJ t ttttd ksJ ttdd  d S )Nx_1c                   S   s   t tS r'   )r
   x_opr+   r+   r+   r,   <lambda>   s    z*test_innerprod_represent.<locals>.<lambda>)	r
   x_ketr   r   doitx_brar   r    	TypeErrorr+   r+   r+   r,   test_innerprod_represent   s   rq   c                  C   s:   t ttdd} ttt| d jt | d  ksJ d S )Nr!   r"   r   )r   r   rk   r   r   dual)
basis_ketsr+   r+   r,   test_operator_represent   s   rt   c                  C   sN   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   )rN   r+   r+   r,   test_enumerate_states   s   ry   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    rA   rE   r7   r%   r(   r@   rD   kbrG   rH   HrL   rQ   rS   rV   rY   r\   r]   rf   rg   rm   ro   rk   rq   rt   ry   r+   r+   r+   r,   <module>   sr    		

	
