ó
¡¼™\c           @  sv   d  d l  m Z 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 e f d „  ƒ  YZ d S(	   iÿÿÿÿ(   t   print_functiont   division(   t   Basic(   t   adjointt	   conjugate(   t	   transpose(   t
   MatrixExprt   Adjointc           B  sh   e  Z d  Z e Z d „  Z e d „  ƒ Z e d „  ƒ Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z RS(	   sX  
    The Hermitian adjoint of a matrix expression.

    This is a symbolic object that simply stores its argument without
    evaluating it. To actually compute the adjoint, use the ``adjoint()``
    function.

    Examples
    ========

    >>> from sympy.matrices import MatrixSymbol, Adjoint
    >>> from sympy.functions import adjoint
    >>> A = MatrixSymbol('A', 3, 5)
    >>> B = MatrixSymbol('B', 5, 3)
    >>> Adjoint(A*B)
    Adjoint(A*B)
    >>> adjoint(A*B)
    Adjoint(B)*Adjoint(A)
    >>> adjoint(A*B) == Adjoint(A*B)
    False
    >>> adjoint(A*B) == Adjoint(A*B).doit()
    True
    c         K  sN   |  j  } | j d t ƒ r= t | t ƒ r= t | j |   ƒ St |  j  ƒ Sd  S(   Nt   deep(   t   argt   gett   Truet
   isinstanceR   R   t   doit(   t   selft   hintsR	   (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyR   #   s    	!c         C  s   |  j  d S(   Ni    (   t   args(   R   (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyR	   *   s    c         C  s   |  j  j d  d  d … S(   Niÿÿÿÿ(   R	   t   shape(   R   (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyR   .   s    c         C  s   t  |  j j | | ƒ ƒ S(   N(   R   R	   t   _entry(   R   t   it   j(    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyR   2   s    c         C  s   |  j  S(   N(   R	   (   R   (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyt   _eval_adjoint5   s    c         C  s   t  |  j ƒ S(   N(   R   R	   (   R   (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyt   _eval_conjugate8   s    c         C  s#   d d l  m } t | |  j ƒ ƒ S(   Niÿÿÿÿ(   t   Trace(   t    sympy.matrices.expressions.traceR   R   R	   (   R   R   (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyt   _eval_trace;   s    c         C  s   t  |  j ƒ S(   N(   R   R	   (   R   (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyt   _eval_transpose?   s    (   t   __name__t
   __module__t   __doc__R   t
   is_AdjointR   t   propertyR	   R   R   R   R   R   R   (    (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyR   	   s   					N(   t
   __future__R    R   t
   sympy.coreR   t   sympy.functionsR   R   t$   sympy.matrices.expressions.transposeR   t"   sympy.matrices.expressions.matexprR   R   (    (    (    sA   lib/python2.7/site-packages/sympy/matrices/expressions/adjoint.pyt   <module>   s
   