
    sg	                         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 d d
lmZmZ d Zd Zd Z G d de      Zd Z ed      Zd Z edddgi      Zd Zd Z d Z!y)    )Expr)Mul)IInteger)symbols)	conjugate)Matrix)adjointDagger)import_module)skip)OperatorIdentityOperatorc                     t        dd      } t        |       t        |       k(  sJ t        t        | z        t         t        |       z  k(  sJ t        dd      }t        |      |k(  sJ t        d      }t	        t        |      t
              sJ t        d      }t        |      |k(  sJ t        dd	
      }t        |      j                  d	u sJ y )NxT)complexirealp   AF)commutative)r   r   r   r   
isinstancer
   r   is_commutative)r   r   r   r   s       Z/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_dagger.pytest_scalarsr      s    T"A!9	!$$$!A#;1"Yq\/)))$A!9>>AfQi)))
A!9>>'A!9##u,,,    c                      t        d      } t        t        | t        z  gddgg      }t        |      |j                  k(  sJ y )Nr         )r   r	   r   r   H)r   ms     r   test_matrixr$       s<    AAaC1a&!"A!9r   c                  ^   t        d      } t               }t        |       | z  t        |       | z  k(  sJ t        |       | z  |z  t        t        |       |       |z  k(  sJ t        |       t        |       z  t        |       dz  k(  sJ t        |       t        |      z  t        |       k(  sJ y )NOr    )r   r   r   r   )r&   r   s     r   test_dagger_mulr'   &   s    AA!9Q;&)A+%%%!9Q;q=Cq	1-a////!9VAY&)Q,...!9VAY&)+++r   c                       e Zd Zd Zy)Fooc                     t         S N)r   )selfs    r   _eval_adjointzFoo._eval_adjoint1   s    r   N)__name__
__module____qualname__r-    r   r   r)   r)   /   s    r   r)   c                  D    t               } t        |       }|t        k(  sJ y r+   )r)   r   r   )fds     r   test_eval_adjointr5   5   s    Aq	A6M6r   numpyc                      t         st        d       t         j                  ddgddgg      } | j                         j	                         j                         }t        |       |k(  j                         sJ y )Nnumpy not installed.g      ?               @             g       @)npr   arraycopy	transposer   r   all)aadags     r   test_numpy_daggerrB   =   sa    #$
3+s|,-A668))+D1I""$$$r   scipyfromlistsparse)import_kwargsc                  l   t         st        d       t        st        d       nt        j                  }  j	                  ddgddgg      }|j                         j                         j                         }t         j                  j                  t        |      |z
  j                               dk(  sJ y )Nr8   zscipy not installed.y      ?        r9   r:   y       @        g        )r;   r   rC   rE   
csr_matrixr=   r>   r   linalgnormr   todense)rE   r@   rA   s      r   test_scipy_sparse_daggerrL   I   s    #$#$J-z/BCDA668))+D99>>6!9t+44673>>>r   c                  t    t        d      } t        |       }|j                  | fk(  rt        |t              sJ y)zCheck treatment of unknown objects.
    Objects without adjoint or conjugate/transpose methods
    are sympified and wrapped in dagger.
    r   Nr   r   argsr   r
   r   results     r   test_unknownrR   V   s6    
 	AAYF;;1$:fg#>>>#>r   c                      t        dd      } t        |       | k(  sJ t        | d      }|j                  | fk(  rt        |t              sJ y)z:Check that evaluate=False returns unevaluated Dagger.
    r   Tr   F)evaluateNrN   rP   s     r   test_unevaluatedrU   `   sL     	$A!9>>A&F;;1$:fg#>>>#>r   N)"sympy.core.exprr   sympy.core.mulr   sympy.core.numbersr   r   sympy.core.symbolr   $sympy.functions.elementary.complexesr   sympy.matrices.denser	   sympy.physics.quantum.daggerr
   r   sympy.externalr   sympy.testing.pytestr   sympy.physics.quantum.operatorr   r   r   r$   r'   r)   r5   r;   rB   rC   rL   rR   rU   r1   r   r   <module>r`      sx       + % : ' 8 ( % E-$,$ 
 7% 	gj8*-EF
???r   