ó
¡¼™\c           @   s·  d  d l  m Z m Z m Z m Z m Z m Z m Z m Z m	 Z	 m
 Z
 m Z m Z m Z m Z m Z d  d l m Z d  d l m Z m Z e d d e ƒ\ Z Z Z Z e d d e ƒ\ Z Z e d e e ƒ Z e d e e ƒ Z e d	 e e ƒ Z e d
 e e ƒ Z e d d d ƒ Z  e d d d ƒ Z! e d d d ƒ Z" e d d d ƒ Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d S(   iÿÿÿÿ(   t   symbolst   MatrixSymbolt   MatPowt   BlockMatrixt   KroneckerDeltat   Identityt
   ZeroMatrixt   ImmutableMatrixt   eyet   Sumt   Dummyt   MatMult   tracet   Symbolt   Mul(   t   raises(   t   MatrixElementt
   MatrixExprs   k l m nt   integers   i jt   Wt   Xt   Yt   Zt   Ai   t   Bt   xi   c              s<   t  d ‰  t ‡  f d †  d d t  j g Dƒ ƒ s8 t ‚ d  S(   Ni   i   c         3   s!   |  ] } | t  ˆ  ƒ k Vq d  S(   N(   t   str(   t   .0t   s(   t   x12(    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pys	   <genexpr>   s    t   1t   2(   i   i   (   R   t   allt   namet   AssertionError(    (    (   R   sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_symbolic_indexing   s    
c           C   s<   t  t t t f t  t t f t t t f k s8 t ‚ d  S(   N(   R   R   t   it   jR"   (    (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_add_index   s    c          C   s  t  t d t  d t d	 t  d
 t d k s6 t ‚ t  t j ƒ  t  j ƒ  t j ƒ  k sb t ‚ t d t t ƒ }  t d t t ƒ } |  | d } t	 |  d t
 f | t
 d f t
 d t d f ƒ } | j d j | j d t
 ƒ sî t ‚ | j d d | j d d k st ‚ d  S(   Ni    i   R   R   i   i   (   i    i    (   i    i    (   i    i    (   i    i   (   i   i    (   i   i   (   R   t   yR"   R   t
   as_mutableR   t   nt   mt   kR	   R$   t   argst   dummy_eq(   R   R   t   resultt   expected(    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_mul_index    s    6,4&c          C   sy   t  t d ƒ }  |  d t d d t d t d k s= t ‚ t d ƒ } t | } | d	 t | d d ƒ k su t ‚ d  S(
   Ni   i    i   R)   (   i    i    (   i    i    (   i    i   (   i   i    (   i    i    (   R   R   R"   R    R   (   t   QR)   t   Q2(    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_pow_index,   s
    .
c           C   s-   t  j t t f t  t t f k s) t ‚ d  S(   N(   R   t   TR$   R%   R"   (    (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_transpose_index4   s    c              s˜   t  d ƒ ‰  ˆ  d ˆ  d k o: ˆ  d k o: d k n sE t ‚ ˆ  d	 ˆ  d
 k os ˆ  d k os d k n s~ t ‚ t t ‡  f d †  ƒ d  S(   Ni   i    i   i   c              s   ˆ  d S(   Ni   (   i   i   (    (    (   t   I(    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   <lambda><   t    (   i    i    (   i   i   (   i   i   (   i   i    (   i    i   (   i   i   (   R   R"   R   t
   IndexError(    (    (   R6   sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_Identity_index8   s    99c          C   sZ  t  d ƒ }  t d d ƒ } t |  |  g |  |  g g ƒ } t t d ƒ ƒ } t | | g | | g g ƒ } | d | d k o¦ | d	 k o¦ | d
 k o¦ d k n s± t ‚ | d | d k oÐ d k n sÛ t ‚ t | | g | | g g ƒ } | j ƒ  | j ƒ  k st ‚ t |  | g | |  g g ƒ } | j ƒ  j t d ƒ ƒ sVt ‚ d  S(   Ni   i    i   i   i   i   (   i    i    (   i   i    (   i    i   (   i   i   (   i   i   (   i   i   (   R   R   R   R   R   R"   t   as_explicitt   equals(   R6   R   R   t   e3t   BBt   BI(    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_block_index?   s    H*c           C   s   t  j ƒ  d d  d  … f d  S(   Ni    (   R   R;   (    (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_slicingP   s    c           C   s$   t  t d „  ƒ t  t d „  ƒ d  S(   Nc           S   s   t  d ƒ d S(   Ni   i   i   i   i   (   i   i   i   i   i   (   R   (    (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyR7   U   R8   c           S   s   t  d ƒ d d d d d g S(   Ni   i   i   i   i   (   R   (    (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyR7   V   R8   (   R   R9   (    (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   test_errorsT   s    c       
   C   se  t  d ƒ \ }  } t  d ƒ \ } } } d „  } t t t } | | j |  | ƒ ƒ t t |  | f t | | f t | | f | d t d f | d t d f ƒ k s® t ‚ t	 j
 | j |  | ƒ ƒ | k sÕ t ‚ t j t j t j } | | j |  | ƒ ƒ t t | | f t | | f t | |  f | d t d f | d t d f ƒ k s\t ‚ t	 j
 | j |  | ƒ |  ƒ | k s†t ‚ t t t t t t } | | j |  | ƒ ƒ t t |  | f t | | f t | | f | d t d f | d t d f ƒ t t |  | f t | | f t | | f | d t d f | d t d f ƒ k s`t ‚ t	 j
 | j |  | ƒ ƒ | k s‡t ‚ d t t t d t t t } | | j |  | ƒ ƒ d t t |  | f t | | f t | | f | d t d f | d t d f ƒ d t t |  | f t | | f t | | f | d t d f | d t d f ƒ k sqt ‚ t	 j
 | j |  | ƒ ƒ | k s˜t ‚ t t t t } | | j |  | ƒ ƒ t t |  | f t | | f t | | f t | | f | d t d f | d t d f ƒ k s(t ‚ t	 j
 | j |  | ƒ ƒ | k sOt ‚ t t d t } d  S(   Ns   i, js   i_1:4c         S   s&   d „  |  j  t ƒ Dƒ } |  j | ƒ S(   Nc         S   s"   i  |  ] } t  | j ƒ | “ q S(    (   R   R!   (   R   R$   (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pys
   <dictcomp>^   s   	 (   t   atomsR
   t   xreplace(   t   exprt   repl(    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   replace_dummies]   s    i    i   i   i   (   R    R   R   R   t   _entryR	   t   lR*   R"   R   t   from_index_summationR4   R   R   R   (   R$   R%   t   i1t   i2t   i3RG   RE   (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt!   test_matrix_expression_to_indicesY   s4    	['[*O\'"S`'i'c             sî  d d l  m ‰  m }  m } m } t d t t ƒ } t d t t ƒ } t d t t ƒ } t d t d ƒ } t d d	 t ƒ\ } } }	 }
 } t	 t
 ˆ  |  f t |  | f t | | f |  d
 t d f | d
 t d f ƒ ‰ t j ˆ ˆ  ƒ t
 t t k st ‚ t	 t
 j |  ˆ  f t |  | f t | | f |  d
 t d f | d
 t d f ƒ ‰ t j ˆ ˆ  ƒ t
 t t k s~t ‚ t	 | |  ˆ  f | |  | f | | | f |  d
 t d f | d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | j | | k sùt ‚ t	 | |  ˆ  f | | |  f | | | f |  d
 t d f | d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | j | j | k swt ‚ t	 | | | f | |  ˆ  f | | |  f |  d
 t d f | d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | j | j | k sõt ‚ t	 | ˆ  |  f | ˆ  |  f ˆ  d
 t d f |  d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | | k s[t ‚ t	 | ˆ  |  f | ˆ  |  f | |  | f |  d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | | | k sÃt ‚ t	 | ˆ  |  f | |  ˆ  f | |  | f |  d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | | j | k s.t ‚ t	 | ˆ  |  f | |  | f | | | f |  d
 t d f | d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | d k s¢t ‚ t	 | ˆ  |  f | |  | f | | | f |  d
 t d f | d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | d | k st ‚ t	 | ˆ  ˆ  f ˆ  d
 t d f ƒ ‰ t j ˆ d  ƒ t | ƒ k sdt ‚ t	 | ˆ  ˆ  f | |  | f | | | f ˆ  d
 t d f | d
 t d f ƒ ‰ t j ˆ |  ƒ t | ƒ | | k sât ‚ t	 t
 ˆ  |  f t |  | f t | | f |  d
 t d f | d
 t f ƒ ‰ t t ‡  ‡ f d †  ƒ t	 t
 ˆ  |  f t |  | f t | | f |  d
 t d f | d t d f ƒ ‰ t t ‡  ‡ f d †  ƒ t	 | ˆ  |  f t	 | |  | f | | | f | d
 t d f ƒ |  d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | | | k s2t ‚ t	 | ˆ  |  f t |  | ƒ | | | f |  d
 t d f | d
 t d f ƒ ‰ t j ˆ ˆ  ƒ | | k s¥t ‚ t	 t | t ƒ t |	 t ƒ | t | f | t |	 f | d
 t d f |	 d
 t d f ƒ ‰ t j ˆ t ƒ | j | t t f k s2t ‚ t	 | | |	 f | |	 d
 f |	 d
 t d f ƒ ‰ t j ˆ | ƒ | | k sˆt ‚ t	 | | |	 f | |	 d
 f |	 d
 t d f ƒ ‰ t j ˆ | ƒ t | | | d
 ƒ k sêt ‚ d  S(   Niÿÿÿÿ(   t   at   bt   ct   dR   R   t   Ct   w1i   s   i0:5t   clsi    i   i   c              s   t  j ˆ ˆ  ƒ S(   N(   R   RJ   (    (   RO   RE   (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyR7   ª   R8   c              s   t  j ˆ ˆ  ƒ S(   N(   R   RJ   (    (   RO   RE   (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyR7   ­   R8   (   t	   sympy.abcRO   RP   RQ   RR   R   R+   R    R
   R	   R   R   R   RI   R*   R   RJ   R"   R4   t   NoneR   R   t
   ValueErrorR   R)   R$   R%   R   (   RP   RQ   RR   R   R   RS   RT   t   i0RK   RL   RM   t   i4(    (   RO   RE   sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt+   test_matrix_expression_from_index_summation   sX    "!R&U&R)R,R,D"B&B)R"R&&$R,NRX&Q"^/4"4N(/   t   sympyR    R   R   R   R   R   R   R   R   R	   R
   R   R   R   R   t   sympy.utilities.pytestR   t"   sympy.matrices.expressions.matexprR   R   t   TrueR+   RI   R*   R)   R$   R%   R   R   R   R   R   R   R   R'   R#   R&   R0   R3   R5   R:   R@   RA   RB   RN   R[   (    (    (    sM   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_indexing.pyt   <module>   s.   d										(