ó
¡¼™\c           @   sü  d  d l  m Z m Z m Z m Z m Z m Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z m Z d  d l m Z m Z m Z d  d l m Z e d d e g d e d g g ƒ Z e d e d g d	 e d g g ƒ Z e d
 ƒ \ Z Z Z Z 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 „  Z0 d „  Z1 d „  Z2 d  „  Z3 d! „  Z4 d" S(#   iÿÿÿÿ(   t   It   symbolst   Matrixt   eyet   Modt   floor(   t
   ShapeErrort   MatrixSymbolt   Identity(   t   dett   trace(   t   KroneckerProductt   kronecker_productt   combine_kronecker(   t   Tri   i   i   i   s   i,j,k,n,m,o,p,xt   Zt   Wt   At   Bt   Cc           C   sÏ   t  t t t ƒ t ƒ s t ‚ t t t ƒ j t t ƒ t t t ƒ k sN t ‚ t t t ƒ j t t	 t	 t
 f k sz t ‚ t t t ƒ t t t ƒ j s  t ‚ t t t ƒ t t j t j ƒ j sË t ‚ d  S(   N(   t
   isinstanceR   R   R   t   AssertionErrort   subsR   t   shapet   nt   mt   kt   is_ZeroMatrixR   R   R    t   is_Identity(    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_KroneckerProduct   s
    0,&c           C   sb   t  t t ƒ t t ƒ ƒ t t t ƒ k s1 t ‚ t  t d ƒ t d ƒ ƒ t d ƒ k s^ t ‚ d  S(   Ni   i   i   (   R   R   R   R   R   R   (    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_KroneckerProduct_identity   s    1c          C   sf  t  d d d ƒ }  t  d d d ƒ } t |  | ƒ } | j d k sH t ‚ | j ƒ  t |  d | d	 |  d
 | d |  d | d |  d | d g |  d | d |  d | d |  d | d |  d | d g |  d | d |  d | d |  d | d |  d | d g |  d  | d! |  d" | d# |  d$ | d% |  d& | d' g g ƒ k sbt ‚ d  S((   Nt   Xi   t   Yi   i    i   (   i   i   (   i    i    (   i    i    (   i    i    (   i    i   (   i    i   (   i    i    (   i    i   (   i    i   (   i    i    (   i   i    (   i    i    (   i   i   (   i    i   (   i   i    (   i    i   (   i   i   (   i   i    (   i    i    (   i   i    (   i    i   (   i   i   (   i    i    (   i   i   (   i    i   (   i   i    (   i   i    (   i   i    (   i   i   (   i   i   (   i   i    (   i   i   (   i   i   (   R   R   R   R   t   as_explicitR   (   R   R    t   kp(    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_KroneckerProduct_explicit"   s    ???c           C   sy   t  t t t ƒ j ƒ  t t  t j ƒ  t j ƒ  ƒ k s? t ‚ t  t t ƒ j ƒ  t t j ƒ  t j ƒ  ƒ k su t ‚ d  S(   N(	   R   R    R   R   t   adjointR   t   mat1t   mat2R   (    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_tensor_product_adjoint1   s    )c           C   sy   t  t t t ƒ j ƒ  t t  t j ƒ  t j ƒ  ƒ k s? t ‚ t  t t ƒ j ƒ  t t j ƒ  t j ƒ  ƒ k su t ‚ d  S(   N(	   R   R    R   R   t	   conjugateR   R%   R&   R   (    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_tensor_product_conjugate8   s    )c           C   sx   t  t t t ƒ j ƒ  t t  t j ƒ  t j ƒ  ƒ k s> t ‚ t  t t ƒ j ƒ  t t j ƒ  t j ƒ  ƒ k st t ‚ d  S(   N(	   R   R    R   R   t	   transposeR   R%   R&   R   (    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_tensor_product_transpose?   s    (c           C   sj   t  t t  t t ƒ ƒ t  t  t t ƒ t ƒ k s6 t ‚ t  t t  t t ƒ ƒ t t t t ƒ k sf t ‚ d  S(   N(   R   R   R   R   R   R   (    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt$   test_KroneckerProduct_is_associativeF   s    	-	c           C   s\   t  t t t ƒ t t  t t ƒ k s, t ‚ t  t t t ƒ t t  t t ƒ k sX t ‚ d  S(   N(   R   t   xR   R   R   (    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt!   test_KroneckerProduct_is_bilinearM   s    ,c          C   sC   t  t t ƒ }  t |  ƒ t t ƒ t t t ƒ t k s? t ‚ d  S(   N(   R   R   R   R	   R   R   R   (   R"   (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt!   test_KroneckerProduct_determinantR   s    c          C   s;   t  t t ƒ }  t |  ƒ t t ƒ t t ƒ k s7 t ‚ d  S(   N(   R   R   R   R
   R   (   R"   (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_KroneckerProduct_traceW   s    c           C   sF   t  t t ƒ t  t t ƒ k s$ t ‚ t  t t ƒ j t k sB t ‚ d  S(   N(   R   R   R   R   t   is_commutativet   False(    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt&   test_KroneckerProduct_isnt_commutative\   s    $c           C   s8   t  t t d t ƒ t d t t t ƒ k s4 t ‚ d  S(   Ni   (   R   R-   R   R   R   R   (    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt/   test_KroneckerProduct_extracts_commutative_parta   s    c          C   s@   t  t t ƒ }  |  j ƒ  t  t j ƒ  t j ƒ  ƒ k s< t ‚ d  S(   N(   R   R   R   t   inverseR   (   R"   (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_KroneckerProduct_inversef   s    c          C   sO   t  t t ƒ }  t  t t ƒ } t |  | ƒ t  t t t t ƒ k sK t ‚ d  S(   N(   R   R   R   R   R   R   R   (   t   kp1t   kp2(    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt!   test_KroneckerProduct_combine_addk   s    c          C   ss   t  d t t ƒ }  t  d t t ƒ } t t |  ƒ } t t | ƒ } t | | ƒ t t t |  | ƒ k so t ‚ d  S(   NR   R    (   R   R   R   R   R   R   R   R   (   R   R    R7   R8   (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt!   test_KroneckerProduct_combine_mulq   s
    c          C   sï   t  d t t ƒ }  t  d t t ƒ } t t |  | ƒ t ƒ t |  t | t ƒ k sZ t ‚ t t t |  | ƒ d ƒ t t |  d | d ƒ k s˜ t ‚ t t t |  | ƒ d t t t ƒ ƒ t t |  d t | d t ƒ k së t ‚ d  S(   NR   R    i   (   R   R   R   R   R-   R   R   R   (   R   R    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt!   test_KroneckerProduct_combine_powy   s    0,c          C   s‡   t  d t t ƒ }  t  d t t ƒ } t |  | | t ƒ j d t ƒ t |  | ƒ t |  t ƒ t | | ƒ t | t ƒ k sƒ t ‚ d  S(   NR   R    t   kroneckerproduct(   R   R   R   R   t   expandt   TrueR   (   R   R    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_KroneckerProduct_expand„   s     c          C   sŸ   t  d t t ƒ }  t  d t t ƒ } t |  | ƒ j t t ƒ |  t	 t
 t t ƒ t ƒ t	 t
 t t ƒ t ƒ f | t	 t t ƒ t	 t t ƒ f k s› t ‚ d  S(   NR   R   (   R   R   R   t   ot   pR   t   _entryt   it   jR   R   R   (   R   R   (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   test_KroneckerProduct_entryŒ   s    N(5   t   sympyR    R   R   R   R   R   t   sympy.matricesR   R   R   t   sympy.matrices.expressionsR	   R
   t$   sympy.matrices.expressions.kroneckerR   R   R   t   sympy.core.traceR   R%   R&   RC   RD   R   R   R   R@   RA   R-   R   R   R   R   R   R   R   R#   R'   R)   R+   R,   R.   R/   R0   R3   R4   R6   R9   R:   R;   R?   RE   (    (    (    sN   lib/python2.7/site-packages/sympy/matrices/expressions/tests/test_kronecker.pyt   <module>   s<   .&&$																	