ó
¡¼™\c           @   sk  d  d l  m Z d  d l m Z m Z m Z d  d l m Z m Z m	 Z	 m
 Z
 d  d l m Z m Z m Z d  d l m Z e d d e ƒ\ Z Z Z Z e d e e ƒ Z e d	 e e ƒ Z e d
 e e ƒ Z e d e e ƒ Z e d e e ƒ Z 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 „  Z' d S(   iÿÿÿÿ(   t   raises(   t   symbolst   pit   S(   t   Identityt   MatrixSymbolt   ImmutableMatrixt
   ZeroMatrix(   t   MatPowt   MatAddt   MatMul(   t
   ShapeErrors   n m l kt   integert   At   Bt   Ct   Dt   Ec          C   s—   d d l  m }  t t d ƒ d t d k s3 t ‚ t t d ƒ d d k sR t ‚ t t d ƒ d	 d k sq t ‚ t t t d ƒ d
 |  ƒ s“ t ‚ d  S(   Niÿÿÿÿ(   t   Sumi   i    i   (   i    i    (   i    i    (   i    i    (   i    i   (   i    i    (   t   sympy.concreteR   R   R   t   AssertionErrorR   t
   isinstance(   R   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt
   test_entry   s
    #c          C   s•   t  d d d ƒ }  t |  d ƒ j ƒ  t t d ƒ ƒ k s? t ‚ t |  d ƒ j ƒ  |  j ƒ  k sf t ‚ t |  d ƒ j ƒ  |  j ƒ  d k s‘ t ‚ d  S(   Nt   Xi   i    i   (   R   R   t   as_explicitR   R   R   (   R   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_as_explicit_symbol   s    -'c              sy   t  d d d ƒ ‰  t ˆ  d ƒ j ƒ  ˆ  j ƒ  k s9 t ‚ x9 d d t j t j g D] ‰ t t ‡  ‡ f d †  ƒ qR Wd  S(   NR   i   i   i   i    c              s   t  ˆ  ˆ ƒ j ƒ  S(   N(   R   R   (    (   R   t   r(    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   <lambda>"   t    (	   R   R   R   R   R   t   Halft   PiR    R   (    (    (   R   R   sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt!   test_as_explicit_nonsquare_symbol   s    'c          C   s!  t  d d g d d g g ƒ }  t |  d ƒ j ƒ  t  t d ƒ ƒ k sK t ‚ t |  d ƒ j ƒ  |  k sl t ‚ t |  d ƒ j ƒ  |  d k s‘ t ‚ t |  d ƒ j ƒ  |  j ƒ  k s¸ t ‚ t |  d ƒ j ƒ  |  j ƒ  d k sã t ‚ t  d g ƒ }  t |  t j ƒ j ƒ  |  t j k st ‚ d  S(   Ni   i   i   i   i    iÿÿÿÿiþÿÿÿ(   R   R   R   R   R   t   invR   R   (   R   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_as_explicit%   s    -!%'+c              s¡   t  d d d g d d d g g ƒ ‰  t ˆ  d ƒ j ƒ  ˆ  k sE t ‚ t t ‡  f d †  ƒ t t ‡  f d †  ƒ t t ‡  f d	 †  ƒ t t ‡  f d
 †  ƒ d  S(   Ni   i   i   i   i   i   c              s   t  ˆ  d ƒ j ƒ  S(   Ni    (   R   R   (    (   R   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   4   R   c              s   t  ˆ  d ƒ j ƒ  S(   Ni   (   R   R   (    (   R   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   5   R   c              s   t  ˆ  d ƒ j ƒ  S(   Niÿÿÿÿ(   R   R   (    (   R   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   6   R   c              s   t  ˆ  t ƒ j ƒ  S(   N(   R   R   R   (    (   R   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   7   R   (   R   R   R   R   R    R   t
   ValueError(    (    (   R   sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_as_explicit_nonsquare1   s    $!c          C   sl   t  t d ƒ j ƒ  t k s! t ‚ xD d d d t g D]0 }  t  t |  ƒ j ƒ  t  t |  ƒ k s4 t ‚ q4 Wd  S(   Ni   i    i   iÿÿÿÿ(   R   R   t   doitR   R   (   R   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt    test_doit_nonsquare_MatrixSymbol:   s    !c          C   s   t  t d ƒ j ƒ  t t ƒ k s' t ‚ t  t d ƒ j ƒ  t k sH t ‚ x> d t g D]0 }  t  t |  ƒ j ƒ  t  t |  ƒ k sU t ‚ qU Wd  S(   Ni    i   i   (   R   R   R$   R   t   nR   R   (   R   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt%   test_doit_square_MatrixSymbol_symsize@   s    '!c          C   s  t  d d g d d g g ƒ }  t |  d ƒ j ƒ  t  t d ƒ ƒ k sK t ‚ t |  d ƒ j ƒ  |  k sl t ‚ t |  d ƒ j ƒ  |  d k s‘ t ‚ t |  d ƒ j ƒ  |  j ƒ  k s¸ t ‚ t |  d ƒ j ƒ  |  j ƒ  d k sã t ‚ t t  d g ƒ t j ƒ j ƒ  t  d g ƒ k st ‚ d  S(   Ni   i   i   i   i    iÿÿÿÿiþÿÿÿ(   R   R   R$   R   R   R    R   R   (   R   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_doit_with_MatrixBaseG   s    -!%'+c              s¡   t  d d d g d d d g g ƒ ‰  t ˆ  d ƒ j ƒ  ˆ  k sE t ‚ t t ‡  f d †  ƒ t t ‡  f d †  ƒ t t ‡  f d	 †  ƒ t t ‡  f d
 †  ƒ d  S(   Ni   i   i   i   i   i   c              s   t  ˆ  d ƒ j ƒ  S(   Ni    (   R   R$   (    (   R   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   U   R   c              s   t  ˆ  d ƒ j ƒ  S(   Ni   (   R   R$   (    (   R   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   V   R   c              s   t  ˆ  d ƒ j ƒ  S(   Niÿÿÿÿ(   R   R$   (    (   R   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   W   R   c              s   t  ˆ  t ƒ j ƒ  S(   N(   R   R   R$   (    (   R   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   X   R   (   R   R   R$   R   R    R   (    (    (   R   sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_doit_nonsquareR   s    $!c          C   s¤   t  d d g d d g g ƒ }  t  d d g d d g g ƒ } t t |  | ƒ d ƒ j ƒ  |  | d k sn t ‚ t t |  | ƒ d ƒ j ƒ  |  | d k s  t ‚ d  S(   Ni   i   i   i   i   (   R   R   R
   R$   R   R	   (   R   t   Y(    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_doit_nested_MatrixExpr[   s    2c          C   s  t  t ƒ }  t |  d ƒ j ƒ  |  k s- t ‚ t |  t ƒ j ƒ  |  k sN t ‚ t |  d ƒ j ƒ  |  k so t ‚ t |  d ƒ j ƒ  |  k s t ‚ t  d ƒ } t | t ƒ j ƒ  | k s½ t ‚ t | d ƒ j ƒ  | k sÞ t ‚ t | d ƒ j ƒ  | k sÿ t ‚ d  S(   Ni   iýÿÿÿi    i   iÿÿÿÿ(   R   R&   R   R$   R   (   t   kt   l(    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_identity_powerb   s    !!!!!!c              sL  t  t t ƒ ‰  t ˆ  d ƒ j ƒ  ˆ  k s0 t ‚ t t ‡  f d †  ƒ t ˆ  d ƒ j ƒ  t t ƒ k sm t ‚ t ˆ  t ƒ j ƒ  ˆ  k sŽ t ‚ t t ‡  f d †  ƒ t  d d ƒ ‰ t ˆ t ƒ j ƒ  ˆ k sÔ t ‚ t t ‡ f d †  ƒ t ˆ d ƒ j ƒ  ˆ k st ‚ t ˆ d ƒ j ƒ  t d ƒ k s2t ‚ t t ‡ f d †  ƒ d  S(	   Ni   c              s   t  ˆ  d ƒ j ƒ  S(   Niÿÿÿÿ(   R   R$   (    (   t   z1(    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   q   R   i    c              s   t  ˆ  d ƒ j ƒ  S(   Niþÿÿÿ(   R   R$   (    (   R/   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   t   R   i   c              s   t  ˆ  d ƒ j ƒ  S(   Niýÿÿÿ(   R   R$   (    (   t   z2(    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   w   R   i   c              s   t  ˆ  d ƒ j ƒ  S(   Niÿÿÿÿ(   R   R$   (    (   R0   (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyR   z   R   (   R   R&   R   R$   R   R    R"   R   (    (    (   R/   R0   sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_zero_powern   s    !'!!!'c          C   sÄ  d d l  m }  t t j d t t d j k oK t j t j d k n sV t ‚ t t j d j t t d k s~ t ‚ t j j j d t d k s¡ t ‚ t j t j t t t t k sÉ t ‚ t	 j t
 j d j t
 t	 d k sô t ‚ t
 t	 j d j d t
 t	 d k s t ‚ |  |  t d t d ƒ d ƒ j ƒ  t d t d d k sdt ‚ t t d	 j d	 t t d
 j k st ‚ t t t j t j t t t t k sÀt ‚ d  S(   Niÿÿÿÿ(   t	   Transposei   i   iùÿÿÿi#   i   i   iûÿÿÿi   (   t$   sympy.matrices.expressions.transposeR2   R   R   t   TR   t   IR-   R,   R   R   R$   (   t   TP(    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   test_transpose_power}   s    F(#(+,D,N((   t   sympy.utilities.pytestR    t
   sympy.coreR   R   R   t   sympy.matricesR   R   R   R   t   sympy.matrices.expressionsR   R	   R
   t"   sympy.matrices.expressions.matexprR   t   TrueR&   t   mR-   R,   R   R   R   R   R   R   R   R   R!   R#   R%   R'   R(   R)   R+   R.   R1   R7   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matpow.pyt   <module>   s.   "														