o
    GZhH
                     @   s   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mZ d dlmZ d d	lmZmZ d d
lmZmZ dd Zdd Zdd ZG dd deZdd ZedZdd ZedddgidZdd Z dd Z!d d! Z"d"S )#    )Expr)Mul)IInteger)symbols)	conjugate)Matrix)adjointDagger)import_module)skipwarns_deprecated_sympy)OperatorIdentityOperatorc                  C   s   t ddd} t| t| ksJ tt|  t t|  ksJ t ddd}t||ks-J t d}tt|ts:J td}t||ksFJ t dd	d
}t|jd	u sUJ d S )NxT)complexirealp   AFZcommutative)r   r
   r   r   
isinstancer   Zis_commutative)r   r   r   r    r   V/var/www/auris/lib/python3.10/site-packages/sympy/physics/quantum/tests/test_dagger.pytest_scalars   s   r   c                  C   s6   t d} tt| t gddgg}t||jksJ d S )Nr         )r   r   r   r
   H)r   mr   r   r   test_matrix    s   r!   c                  C   s   t d} t| |  t| |  ksJ t  t }t| |  | tt| | | ks,J W d    n1 s6w   Y  t| t|  t| d ksKJ t| t| t| ksYJ d S )NOr   )r   r
   r   r   r   )r"   r   r   r   r   test_dagger_mul&   s   (  r#   c                   @   s   e Zd Zdd ZdS )Fooc                 C   s   t S N)r   )selfr   r   r   _eval_adjoint2   s   zFoo._eval_adjointN)__name__
__module____qualname__r'   r   r   r   r   r$   0   s    r$   c                  C   s   t  } t| }|tksJ d S r%   )r$   r
   r   )fdr   r   r   test_eval_adjoint6   s   r-   numpyc                  C   sJ   t std t ddgddgg} |    }t| |k s#J d S )Nnumpy not installed.g      ?               @             g       @)npr   arraycopy	transposer   r
   all)aadagr   r   r   test_numpy_dagger>   s
   r9   scipyfromlistsparse)Zimport_kwargsc                  C   sj   t std tstd ntj} | ddgddgg}|   }t j	t
||  dks3J d S )Nr/   zscipy not installed.y      ?        r0   r1   y       @        g        )r2   r   r:   r<   Z
csr_matrixr4   r5   r   ZlinalgZnormr
   Ztodense)r<   r7   r8   r   r   r   test_scipy_sparse_daggerJ   s   
$r=   c                  C   s2   t ddd} t| }|j| fkrt|tsJ dS )zCheck treatment of unknown objects.
    Objects without adjoint or conjugate/transpose methods
    are sympified and wrapped in dagger.
    r   Fr   Nr   r
   argsr   r	   r   resultr   r   r   test_unknownW   s   rB   c                  C   sF   t ddd} t| | ksJ t| dd}|j| fkrt|ts!J dS )z:Check that evaluate=False returns unevaluated Dagger.
    r   Tr   F)evaluateNr>   r@   r   r   r   test_unevaluateda   s   rD   N)#Zsympy.core.exprr   Zsympy.core.mulr   Zsympy.core.numbersr   r   Zsympy.core.symbolr   Z$sympy.functions.elementary.complexesr   Zsympy.matrices.denser   Zsympy.physics.quantum.daggerr	   r
   Zsympy.externalr   Zsympy.testing.pytestr   r   Zsympy.physics.quantum.operatorr   r   r   r!   r#   r$   r-   r2   r9   r:   r=   rB   rD   r   r   r   r   <module>   s*    
	
