ó
¡¼™\c           @   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	 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 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! m" Z" d  d l# m$ Z$ d  d l% m& Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d „  Z0 e" d „  ƒ Z1 d S(   iÿÿÿÿ(   t   symbolst   St   log(   t   Tr(   t   import_module(   t   Densityt   entropyt   fidelity(   t   Kett
   TimeDepKet(   t   Qubit(   t	   represent(   t   Dagger(   t   XKett   PxKett   PxOpt   XOp(   t   JzKet(   t   OuterProduct(   t   sqrt(   t   raisest   slow(   t   scipy_sparse_matrix(   t   TensorProductc          C   sþ   t  t t d ƒ d g t d ƒ d g ƒ t ƒ s6 t ‚ t  t t d ƒ d t d ƒ g t d ƒ d t d ƒ g ƒ t ƒ s€ t ‚ t t d ƒ d t d ƒ g t d ƒ d t d ƒ g ƒ }  x, |  j D]! \ } } t  | t ƒ sÅ t ‚ qÅ Wt t d „  ƒ d  S(   Ni    g      à?i   t   00i   t   11c           S   s   t  t d ƒ g t d ƒ g ƒ S(   Ni    i   (   R   R   (    (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   <lambda>   t    (	   t
   isinstanceR   R   t   AssertionErrorR
   R   t   argsR   t
   ValueError(   t   dt   statet   prob(    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_eval_args   s    6+;c          C   sÜ  t  d ƒ \ }  } t  d d t ƒ\ } } } } } } t t ƒ  d g t ƒ  d g ƒ } d t ƒ  t t ƒ  ƒ d t ƒ  t t ƒ  ƒ | j ƒ  k s› t ‚ t t |  | ƒ d g t |  | ƒ d g ƒ }	 d t |  | ƒ t t |  | ƒ ƒ d t |  | ƒ t t |  | ƒ ƒ |	 j ƒ  k s*t ‚ t | | | d g ƒ } | j ƒ  d | | t | ƒ t | ƒ d | | t | ƒ t | ƒ d | | t | ƒ t | ƒ d | | t | ƒ t | ƒ k sØt ‚ t | | | ƒ }
 t |
 d g ƒ } | j ƒ  d t | t | ƒ | t | ƒ | t | ƒ ƒ k sBt ‚ t | | ƒ } t | | ƒ } t | d g | d g ƒ } | j ƒ  d t | t | ƒ | t | ƒ ƒ d t | t | ƒ | t | ƒ ƒ k sÙt ‚ t | | d g ƒ } | j ƒ  d t | t | ƒ | t | ƒ ƒ d t | t | ƒ | t | ƒ ƒ d t | t | ƒ | t | ƒ ƒ d t | t | ƒ | t | ƒ ƒ k s—t ‚ t t	 d d ƒ t	 d d ƒ ƒ } t | d g ƒ } t
 | ƒ }
 |
 j ƒ  d k sît ‚ t
 | d g ƒ }
 |
 j ƒ  t	 d d ƒ t t	 d d ƒ ƒ k s4t ‚ t
 | d g ƒ }
 |
 j ƒ  t	 d d ƒ t t	 d d ƒ ƒ k szt ‚ t t	 t d ƒ d	 t d ƒ d	 ƒ t	 t d ƒ d	 t d ƒ d	 ƒ ƒ } t | d g ƒ } t
 | ƒ }
 |
 j ƒ  d k sút ‚ t
 | d g ƒ }
 |
 j ƒ  t	 t d ƒ d	 t d ƒ d	 ƒ t t	 t d ƒ d	 t d ƒ d	 ƒ ƒ k sjt ‚ t
 | d g ƒ }
 |
 j ƒ  t	 t d ƒ d	 t d ƒ d	 ƒ t t	 t d ƒ d	 t d ƒ d	 ƒ ƒ k sØt ‚ d  S(
   Ns   x ys   A B C D E Ft   commutativeg      à?g      ð?i   iÿÿÿÿi    i   (   R    t   FalseR   R   R   R   t   doitR   R   R   R   R   (   t   xt   yt   At   Bt   Ct   Dt   Et   FR    t
   d_with_symt   tt   t2t   t3t   tp1t   tp2(    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt	   test_doit!   sR    $!-/%;	_,	=-1	n1!44J^c          C   sx   t  t d ƒ d g t d ƒ d g ƒ }  |  j t ƒ  ƒ t  t ƒ  t d ƒ d g t ƒ  t d ƒ d g ƒ k st t ‚ d  S(   Ni    g      à?i   (   R   R   t   apply_opR   R   (   R    (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_apply_opg   s    '(c          C   s  t  d ƒ \ }  } t t ƒ  d g t ƒ  d g ƒ } t d t ƒ  t t ƒ  ƒ ƒ t d t ƒ  t t ƒ  ƒ ƒ t | ƒ k sƒ t ‚ t t |  | ƒ d g t |  | ƒ d g ƒ } t d t |  | ƒ t t |  | ƒ ƒ ƒ t d t |  | ƒ t t |  | ƒ ƒ ƒ t | ƒ k st ‚ t d t ƒ  t t ƒ  ƒ d t ƒ  ƒt d t ƒ  t t ƒ  ƒ d t ƒ  ƒt | d t ƒ  ƒk s‰t ‚ d  S(   Ns   x yg      à?t   basis(   R    R   R   R   R   R   R   R   (   R'   R(   R    R/   (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_representm   s    !3/+,&'c          C   si   t  t d ƒ d g t d ƒ d g ƒ }  |  j ƒ  } | d t d ƒ k r_ | d t d ƒ k se t ‚ d  S(   Ni    g      à?i   (   R   R   t   statesR   (   R    R:   (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_states   s    'c          C   sÈ   t  t d ƒ d g t d ƒ d g ƒ }  |  j ƒ  } | d d k rS | d d k sY t ‚ t d ƒ \ } } t  t d ƒ | g t d ƒ | g ƒ }  |  j ƒ  } | d | k r¾ | d | k sÄ t ‚ d  S(   Ni    g      è?i   g      Ð?s   x y(   R   R   t   probsR   R    (   R    R<   R'   R(   (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt
   test_probs…   s    '&'c          C   s   t  d ƒ \ }  } t t d ƒ |  g t d ƒ | g ƒ } | j d ƒ | j d ƒ f } | d t d ƒ k rƒ | d t d ƒ k s‰ t ‚ d  S(   Ns   x yi    i   (   R    R   R   t	   get_stateR   (   R'   R(   R    R:   (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_get_state‘   s    'c          C   s   t  d ƒ \ }  } t t d ƒ |  g t d ƒ | g ƒ } | j d ƒ | j d ƒ f } | d |  k rw | d | k s} t ‚ d  S(   Ns   x yi    i   (   R    R   R   t   get_probR   (   R'   R(   R    R<   (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_get_prob˜   s    'c          C   sÇ  t  t d ƒ d t d ƒ d ƒ }  t  t d ƒ d t d ƒ d ƒ } t |  t d ƒ d f | t d ƒ d f ƒ } t | ƒ } t | ƒ d t d ƒ k s¤ t ‚ | j ƒ  d t d ƒ k sÆ t ‚ t d d d ƒ} | rGt | d d ƒ} t | ƒ } t | | j	 j
 j ƒ st ‚ | j d k s/t ‚ | j d	 k sGt ‚ n  t d
 d i d g d 6ƒ} | rÃ| rÃt | d d ƒ} t | t ƒ s–t ‚ | j d k s«t ‚ | j d	 k sÃt ‚ n  d  S(   Ni   i   g      à?t   numpyt   min_module_versions   1.4.0t   formatgï9úþB.æ?i    t   scipyt   __import__kwargst   sparset   fromlists   scipy.sparse(   R   R   R   R   R   R   R   R   R   t	   matrixlibt	   defmatrixt   matrixt   realt   imagR   (   t   upt   downR    t   entt   npt   np_matRE   t   mat(    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_entropyŸ   s&    #$/""c          C   sK  t  t d ƒ d t d ƒ d ƒ }  t  t d ƒ d t d ƒ d ƒ } t |  d f | d f ƒ } t | ƒ } | j ƒ  d k s† t ‚ d t f d „  ƒ  Y} t d ƒ \ } } | d d ƒ } | d d ƒ } t | d g | d g ƒ } | j ƒ  d t | | j	 ƒ d t | | j	 ƒ k s#t ‚ t | ƒ } | j ƒ  d k sGt ‚ d  S(   Ni   i   g      à?t   TestTimeDepKetc           B   s   e  Z d  „  Z RS(   c         [   s   d S(   Ni   (    (   t   selft   brat   options(    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   _eval_traceÅ   s    (   t   __name__t
   __module__RY   (    (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyRU   Ä   s   s   x ti    (
   R   R   R   R   R&   R   R	   R    R   t   dual(   RN   RO   R    R0   RU   R'   t   k1t   k2(    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_eval_trace»   s    #$ c             sÄ  t  t d ƒ d t d ƒ d ƒ }  t  t d ƒ d t d ƒ d ƒ } t d ƒ t d ƒ |  t d ƒ t d ƒ | } t |  t |  ƒ ƒ } t | t | ƒ ƒ } t | t | ƒ ƒ } t t | | ƒ d ƒ d k  sà t ‚ t | | ƒ d k  sû t ‚ t t | | ƒ t d ƒ t d ƒ ƒ d k  s0t ‚ t t | | ƒ t d ƒ t d ƒ ƒ d k  set ‚ t |  d g ƒ } t | d g ƒ } t | d g ƒ } t t | | ƒ d ƒ d k  sÀt ‚ t t | | ƒ ƒ d k  sát ‚ t t | | ƒ t d ƒ t d ƒ ƒ d k  st ‚ t t | | ƒ t d ƒ t d ƒ ƒ d k  sKt ‚ t d ƒ d |  t d ƒ d | } t | d g | d g ƒ } t | d g | d g ƒ } t t | | ƒ d ƒ d k  sÌt ‚ t t | | ƒ t | | ƒ ƒ d k  sút ‚ t	 d	 ƒ }	 t	 d
 ƒ }
 t d ƒ t d ƒ |	 t d ƒ t d ƒ |
 } t t d ƒ d ƒ |	 t d ƒ t d ƒ |
 } t |	 d g ƒ } t |
 d g ƒ } t | d g ƒ } t | | ƒ d k sÇt ‚ t | | ƒ d k sât ‚ t t | | ƒ d t d ƒ ƒ d k  st ‚ t t | | ƒ d t d ƒ ƒ d k  s@t ‚ t | d g | d g ƒ } t | d g | d g ƒ } t t | | ƒ d ƒ d k  s›t ‚ t t | | ƒ d ƒ d k  sÀt ‚ t t | | ƒ t | | ƒ ƒ d k  sît ‚ d d g d d g d d g g ‰  d d g d d g g ‰ t
 t ‡  ‡ f d †  ƒ d d g d d g g ‰  d d d g d d d g d d d g g ‰ t
 t ‡  ‡ f d †  ƒ d \ ‰ ‰ t
 t ‡ ‡ f d †  ƒ d  S(   Ni   i   gü©ñÒMbP?g      ð?i   g      Ð?g      è?gƒÀÊ¡E¶ï?t   0t   1i    gffffffæ?g333333Ó?gš™™™™™É?gš™™™™™é?g¬Zd;ßï?c              s   t  ˆ  ˆ ƒ S(   N(   R   (    (   t   mat1t   mat2(    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyR     R   c              s   t  ˆ  ˆ ƒ S(   N(   R   (    (   Rb   Rc   (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyR     R   c              s   t  ˆ  ˆ ƒ S(   N(   R   (    (   R'   R(   (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyR     R   (   i   i   (   R   R   R   R   R   t   absR   R   R   R
   R   R   (   RN   RO   t   updownt   up_dmt   down_dmt	   updown_dmt   updown2t   d1t   d2t   state1t   state2t   state3t   state4t	   state1_dmt	   state2_dmt	   state3_dm(    (   Rb   Rc   R'   R(   sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   test_fidelityÓ   sh    #$2%55%!55&%.22//%%.				N(2   t   sympyR    R   R   t   sympy.core.traceR   t   sympy.externalR   t   sympy.physics.quantum.densityR   R   R   t   sympy.physics.quantum.stateR   R	   t   sympy.physics.quantum.qubitR
   t   sympy.physics.quantum.representR   t   sympy.physics.quantum.daggerR   t   sympy.physics.quantum.cartesianR   R   R   R   t   sympy.physics.quantum.spinR   t   sympy.physics.quantum.operatorR   t   sympy.functionsR   t   sympy.utilities.pytestR   R   t!   sympy.physics.quantum.matrixutilsR   t#   sympy.physics.quantum.tensorproductR   R#   R5   R7   R9   R;   R=   R?   RA   RT   R_   Rs   (    (    (    sG   lib/python2.7/site-packages/sympy/physics/quantum/tests/test_density.pyt   <module>   s2   "		F								