ó
¡¼™\c           @   sI  d  d l  m Z m Z m Z m Z d  d l m Z m Z d  d l m	 Z	 m
 Z
 m Z m Z 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 m Z m Z m Z m Z d  d l 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 ƒ 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 „  Z0 d „  Z1 d „  Z2 d „  Z3 d „  Z4 d „  Z5 d „  Z6 d „  Z7 d „  Z8 d „  Z9 d „  Z: d „  Z; d „  Z< d „  Z= d „  Z> d  „  Z? d! „  Z@ d" „  ZA e$ d# „  ƒ ZB d$ „  ZC d% „  ZD d& S('   iÿÿÿÿ(   t   It   symbolst   Basict   Mul(   t   adjointt	   transpose(   t   Identityt   Inverset   Matrixt   MatrixSymbolt
   ZeroMatrixt   eyet   ImmutableMatrix(   t   Adjointt	   Transposet   dett   MatPow(   t   factor_in_frontt
   remove_idst   MatMult   xxinvt	   any_zerost   unpackt   only_squares(   t	   null_safe(   t   refinet   Qt   Symbol(   t   XFAILs   n m l kt   integert   xt   At   Bt   Ct   Dt   Ec          C   s>  t  t t ƒ t t ƒ t t ƒ k s, t ‚ t  d t t ƒ d t t ƒ t t ƒ k s` t ‚ t  d t t ƒ d t t t ƒ k sŽ t ‚ t d d d d t d d g ƒ }  t d d d d d t d g ƒ } t  |  ƒ | k sê t ‚ t  d |  ƒ d | k s
t ‚ t  t d |  ƒ ƒ t d | ƒ j	 ƒ  k s:t ‚ d  S(   Ni   iþÿÿÿi   i   i   (
   R   R   R    R   t   AssertionErrorR    R!   R   R   t   doit(   t   Mt   MA(    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_adjoint   s    ,4."" c          C   s>  t  t t ƒ t t ƒ t t ƒ k s, t ‚ t  d t t ƒ d t t ƒ t t ƒ k s` t ‚ t  d t t ƒ d t t t ƒ k sŽ t ‚ t d d d d t d d g ƒ }  t d d d d d t d g ƒ } t  |  ƒ | k sê t ‚ t  d |  ƒ d | k s
t ‚ t  t d |  ƒ ƒ t d | ƒ j	 ƒ  k s:t ‚ d  S(   Ni   i   i   i   (
   R   R   R    R   R$   R    R!   R   R   R%   (   R&   t   MT(    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_transpose"   s    ,4."" c           C   s@   t  t t d t d t ƒƒ t d t t d t ƒk s< t ‚ d  S(   Ni   t   evaluate(   R   R   R   R    t   FalseR$   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_factor_in_front.   s    c           C   s…   t  t t t t ƒ t d t ƒƒ t t t d t ƒk s? t ‚ t t  ƒ t t t	 ƒ d t ƒƒ t t t	 ƒ d t ƒk s t ‚ d  S(   NR+   (
   R   R   R   R   t   mR    R,   R$   R   t   n(    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_remove_ids3   s    !!c           C   sI   t  t t t t ƒ t d t ƒƒ t t t ƒ t d t ƒk sE t ‚ d  S(   NR+   (   R   R   R"   R   R,   R   R/   R$   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt
   test_xxinv:   s    !c           C   s=   t  t t t t t ƒ d t ƒƒ t t t ƒ k s9 t ‚ d  S(   NR+   (	   R   R   R   R
   R.   t   kR,   R/   R$   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_any_zeros?   s    !c          C   sO   t  t t d t ƒƒ t k s$ t ‚ t t t ƒ }  t  |  ƒ |  k sK t ‚ d  S(   NR+   (   R   R   R   R,   R$   R    (   R   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_unpackD   s    $c           C   st   t  t ƒ t g k s t ‚ t  t t ƒ t t g k s< t ‚ t  t t t j t ƒ t t t j t g k sp t ‚ d  S(   N(   R   R!   R$   R"   R   t   T(    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_only_squaresJ   s    !c           C   sº   t  d t ƒ d t t  t ƒ k s* t ‚ t  d t t ƒ d t t  t ƒ t  t ƒ k sb t ‚ t  d t t t j t ƒ d t t  t ƒ t  t t j ƒ t  t ƒ k s¶ t ‚ d  S(   Ni   i   (   R   R!   R/   R$   R"   R   R5   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_determinantP   s    *8c           C   sÙ   t  t d t ƒ j t d t f k s* t ‚ t  t d t ƒ j ƒ  j d t t f k sZ t ‚ t  t t t t ƒ ƒ j t t t t ƒ f k s’ t ‚ t  t t t t ƒ ƒ j d t ƒ j t t j t j f k sÕ t ‚ d  S(   Ni   t   deep(	   R   R!   R"   t   argsR$   R%   R   t   TrueR5   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt	   test_doitV   s    *08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 t t t ƒ ƒ j ƒ  j t t j	 t j	 f k s« t ‚ d  S(   Ni   i   i   i   i   (
   R   R   R   R%   R$   R!   R   R"   R9   R5   (   t   Xt   Y(    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_doit_drills_down]   s    2c           C   sN   t  t t t t ƒ d ƒ j d t ƒ j d t t t t ƒ f k sJ t ‚ d  S(   Ni   R8   (   R   R!   R   R"   R%   R,   R9   R$   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt$   test_doit_deep_false_still_canonicald   s    (c          C   sG   t  d d g d d g g ƒ }  t d |  ƒ j ƒ  d |  k sC t ‚ d  S(   Ni   i   i   i   (   R   R   R%   R$   (   R<   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_matmul_scalar_Matrix_doiti   s    c           C   s5   t  t t d ƒ t d ƒ ƒ j d t ƒ s1 t ‚ d  S(   Ni   i    (   t
   isinstanceR   R   R9   R   R$   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_matmul_sympifyo   s    c          C   sy   t  d d g d d g g ƒ }  t  d d g d d g g ƒ } t |  | ƒ j ƒ  t d d g d d g g ƒ k su t ‚ d  S(   Ni   i   i   i   i   (   R   R   R%   R   R$   (   R   R    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_collapse_MatrixBases   s    c          C   s½   t  t t j t t j t ƒ ƒ j ƒ  t k s5 t ‚ t t }  t  |  t j t j t ƒ ƒ j ƒ  t t	 t
 ƒ k sz t ‚ t  |  |  j t j t ƒ ƒ j ƒ  t d t	 t
 ƒ k s¹ t ‚ d  S(   Ni   (   R   R!   R5   R"   R   t
   orthogonalR%   R$   R2   R   R/   (   t   kC(    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_refiney   s    5
;c           C   sZ   t  d ƒ d k s t ‚ t  t t ƒ t t k s7 t ‚ t t  t t ƒ t  ƒ sV t ‚ d  S(   Ni   (   R   R$   R/   R.   RA   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_matmul_no_matrices€   s    c           C   sp   t  t t t j ƒ j ƒ  t g t t j g g k s9 t ‚ t  t t j ƒ j ƒ  g  t t j g g k sl t ‚ d  S(   N(   R   R/   R   R5   t   args_cncR$   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_matmul_args_cnc…   s    9c          C   s¦   t  d d t ƒ\ }  } t t |  | t t j ƒ j ƒ  t g |  | t t j g g k s] t ‚ t t |  t | t j ƒ j ƒ  t g |  t | t j g g k s¢ t ‚ d  S(   Ns   a bt   commutative(   R   R,   R   R/   R   R5   RH   R$   (   t   at   b(    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_matmul_args_cnc_symbols‰   s    Ec          C   sh   t  t d ƒ g g ƒ t d d d ƒ }  t d d d ƒ j ƒ  d t d ƒ |  j ƒ  d k sd t ‚ d  S(   NR   R   i   i    (   R   R   R	   t   as_explicitR$   (   R&   (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_issue_12950   s    (c           C   sL   t  t t ƒ t t t ƒ k s$ t ‚ t  t t ƒ t t t ƒ k sH t ‚ d  S(   N(   R   R!   R"   R   R$   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   test_construction_with_Mul”   s    $N(E   t
   sympy.coreR    R   R   R   t   sympy.functionsR   R   t   sympy.matricesR   R   R   R	   R
   R   R   t   sympy.matrices.expressionsR   R   R   R   t!   sympy.matrices.expressions.matmulR   R   R   R   R   R   R   t   sympy.strategiesR   t   sympyR   R   R   t   sympy.utilities.pytestR   R:   R/   R.   t   lR2   R   R   R    R!   R"   R#   R(   R*   R-   R0   R1   R3   R4   R6   R7   R;   R>   R?   R@   RB   RC   RF   RG   RI   RM   RO   RP   (    (    (    sK   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_matmul.pyt   <module>   sF   "4"4																			