ó
¡¼™\c           @   s¾  d  d l  m Z m Z m Z d  d l m Z m Z m Z m Z m	 Z	 m
 Z
 d  d l m Z d  d l m Z e d d d ƒ Z e d d d ƒ Z e d	 d d ƒ Z e d
 d d ƒ 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 e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# e d „  ƒ Z$ d „  Z% d  „  Z& d! „  Z' d" „  Z( d# „  Z) d$ „  Z* d% S(&   iÿÿÿÿ(   t   Qt   askt   Symbol(   t   MatrixSymbolt   Identityt
   ZeroMatrixt   Tracet   MatrixSlicet   Determinant(   t   LofLU(   t   XFAILt   Xi   t   Yi   t   Zt   A1x1i   t   B1x1t   C0x0i    t   V1t   V2c           C   s]   t  t j t ƒ ƒ s t ‚ t  t j t ƒ ƒ s7 t ‚ t  t j t t j ƒ ƒ sY t ‚ d  S(   N(   R   R    t   squareR   t   AssertionErrorR   t   T(    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_square   s    c           C   sé  t  t j t ƒ t j t ƒ ƒ s' t ‚ t  t j t ƒ ƒ t k sH t ‚ t  t j t t ƒ t j t ƒ ƒ t k sy t ‚ t  t j t t ƒ t j t ƒ ƒ d  k sª t ‚ t  t j t t ƒ t j t ƒ t j t ƒ @ƒ t	 k sè t ‚ t  t j t j
 ƒ ƒ d  k st ‚ t  t j t j
 ƒ t j t ƒ ƒ t	 k s<t ‚ t  t j t j ƒ ƒ t	 k s`t ‚ t  t j t d ƒ ƒ ƒ t	 k s‡t ‚ t  t j t d d ƒ ƒ ƒ t k s±t ‚ t  t j t ƒ t j t ƒ t j t ƒ @ƒ såt ‚ d  S(   Ni   (   R   R    t
   invertibleR   R   R   t   FalseR   t   Nonet   TrueR   t   IR   R   t   fullrankR   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_invertible   s    '!11>$0$'*c           C   s€   t  t j t ƒ ƒ d  k s! t ‚ t  t j t ƒ t j t ƒ ƒ t k sN t ‚ t  t j t ƒ t j t ƒ ƒ t k s| t ‚ d  S(   N(	   R   R    t   singularR   R   R   R   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_singular"   s    !-c           C   s1   t  t j t ƒ t j t ƒ ƒ t k s- t ‚ d  S(   N(   R   R    R   R   R   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_invertible_fullrank'   s    c           C   sÒ  t  t j t ƒ t j t ƒ ƒ s' t ‚ t  t j t t ƒ t j t ƒ ƒ d  k sX t ‚ t  t j t t ƒ t j t ƒ t j t ƒ @ƒ t k s– t ‚ t  t j t t ƒ t j t ƒ t j t ƒ @ƒ t k sÔ t ‚ t  t j t ƒ ƒ t	 k sõ t ‚ t  t j t t j
 ƒ ƒ t k st ‚ t  t j t j
 t t ƒ ƒ d  k sIt ‚ t  t j t j
 t t ƒ t j t ƒ ƒ t k st ‚ t  t j t d ƒ t j t ƒ ƒ t k s²t ‚ t  t j t ƒ ƒ t k sÓt ‚ t  t j t t ƒ ƒ t k søt ‚ t  t j t t ƒ ƒ t k st ‚ t  t j t j
 t ƒ ƒ t k sEt ‚ t  t j t j
 t t ƒ ƒ t k sqt ‚ t  t j t j
 t t t ƒ ƒ t k s¡t ‚ t  t j t t d d ƒ ƒ ƒ t k sÎt ‚ d  S(   Ni
   i    i   i   (   i    i   (   i   i   (   R   R    t	   symmetricR   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_symmetric,   s     '1>>!(,81!%%(,0c         C   sÝ  t  |  t ƒ |  t ƒ ƒ s! t ‚ t  |  t j ƒ |  t ƒ ƒ t k sK t ‚ t  |  t j ƒ |  t ƒ ƒ t k su t ‚ t  |  t d ƒ |  t ƒ ƒ sš t ‚ t  |  t ƒ ƒ t k s¸ t ‚ t  |  t ƒ ƒ d  k sÖ t ‚ t  |  t ƒ t	 j
 t ƒ ƒ t k st ‚ t  |  t t t ƒ |  t ƒ |  t ƒ @ƒ t k s:t ‚ t  |  t d ƒ ƒ ƒ t k s^t ‚ t  |  t d d ƒ ƒ ƒ t k s…t ‚ t  t	 j
 t ƒ |  t ƒ ƒ s©t ‚ t  |  t t ƒ |  t ƒ |  t ƒ @ƒ sÙt ‚ d  S(   Ni   i   (   R   R   R   R   R   R   R   R   R   R    R   R   R   R   (   t	   predicate(    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   _test_orthogonal_unitary>   s    !**%+9$'$c           C   s   t  t j ƒ d  S(   N(   R$   R    t
   orthogonal(    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_orthogonalL   s    c           C   s8   t  t j ƒ t t j t ƒ t j t ƒ ƒ s4 t ‚ d  S(   N(   R$   R    t   unitaryR   R   R%   R   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_unitaryO   s    c           C   s…  t  t j t ƒ t j t ƒ ƒ s' t ‚ t  t j t d ƒ t j t ƒ ƒ sR t ‚ t  t j t j ƒ t j t ƒ ƒ t k s‚ t ‚ t  t j t ƒ ƒ d  k s£ t ‚ t  t j t ƒ ƒ d  k sÄ t ‚ t  t j t t	 ƒ t j t ƒ t j t	 ƒ @ƒ t k st ‚ t  t j t
 d ƒ ƒ ƒ t k s)t ‚ t  t j t d d ƒ ƒ ƒ t k sSt ‚ t  t j t ƒ t j t ƒ ƒ t k st ‚ d  S(   Ni   i   (   R   R    R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_fullrankS   s    '+0!!>'*c           C   s¼  t  t j t ƒ t j t ƒ ƒ s' t ‚ t  t j t j ƒ t j t ƒ ƒ t k sW t ‚ t  t j t j ƒ t j t ƒ ƒ t k s‡ t ‚ t  t j t ƒ ƒ t	 k s¨ t ‚ t  t j t ƒ ƒ d  k sÉ t ‚ t  t j t d ƒ t j t ƒ ƒ sô t ‚ t  t j t t t ƒ t j t ƒ t j t ƒ @ƒ t k s6t ‚ t  t j t ƒ t j t ƒ ƒ s]t ‚ t  t j t j t t ƒ t j t ƒ t j t ƒ @ƒ t k s¢t ‚ t  t j t j t t ƒ t j t ƒ ƒ sÕt ‚ t  t j t d ƒ ƒ ƒ t k süt ‚ t  t j t d d ƒ ƒ ƒ t	 k s&t ‚ t  t j t t ƒ t j t ƒ t j t ƒ @ƒ t k sdt ‚ t  t j t ƒ t j t ƒ ƒ st ‚ t  t j t d ƒ t j t ƒ ƒ s¸t ‚ d  S(   Ni   i   (   i   i   (   R   R    t   positive_definiteR   R   R   R   R   R   R   R   R   R%   R   R   R   t   positive(    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_positive_definite_   s$    '00!!++'+3'*)c           C   s^  t  t j t t j t d ƒ ƒ t j t ƒ t j t ƒ @ƒ t k sK t	 ‚ t  t j t t j ƒ t j t ƒ t j t ƒ @ƒ t k sŒ t	 ‚ t  t j t d ƒ ƒ ƒ t k s³ t	 ‚ t  t j t
 d d ƒ ƒ ƒ t k sÝ t	 ‚ t  t j t ƒ t j t ƒ ƒ st	 ‚ t  t j t d ƒ t j t ƒ ƒ s/t	 ‚ t  t j t d ƒ t j t ƒ ƒ sZt	 ‚ d  S(   Ni   i   (   R   R    t   upper_triangularR   R   R   R   t   lower_triangularR   R   R   t
   triangulart   unit_triangular(    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_triangulars   s    ,"'*'+c           C   sm  t  t j t t j t d ƒ ƒ t j t ƒ t j t ƒ @ƒ t k sK t ‚ t  t j t	 d d ƒ ƒ ƒ so t ‚ t  t j
 t ƒ t j t ƒ @t j t ƒ ƒ s£ t ‚ t  t j t ƒ t j
 t ƒ t j t ƒ @ƒ s× t ‚ t  t j t ƒ t j t ƒ ƒ sþ t ‚ t  t j t ƒ t j t ƒ ƒ s%t ‚ t  t j t ƒ ƒ s@t ‚ t  t j t ƒ ƒ s[t ‚ t  t j t t ƒ ƒ szt ‚ t  t j t t ƒ ƒ s™t ‚ t  t j t j t ƒ ƒ s»t ‚ t  t j t j t t t ƒ ƒ såt ‚ t  t j t t d d ƒ ƒ ƒ t k st ‚ t  t j t j t t ƒ ƒ t k s>t ‚ t  t j t d ƒ t j t ƒ ƒ sit ‚ d  S(   Ni   i   i    i   (   i    i   (   i   i   (   R   R    t   diagonalR   R   R   R   R   R   R   R.   R-   R!   R/   R   R   R   R   R   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_diagonal   s     ,$44''"*-,c           C   s7   t  t j t t ƒ ƒ t j t t ƒ ƒ ƒ s3 t ‚ d  S(   N(   R   R    t   realR   R   R+   R   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_non_atoms’   s    c          C   sÑ   t  d d d ƒ }  t  d d d ƒ } t t j |  | ƒ t j |  ƒ t j | ƒ @ƒ t k sb t ‚ t t j |  ƒ t j |  ƒ ƒ t k s t ‚ t t j |  | ƒ t j |  ƒ t j | ƒ @ƒ t k sÍ t ‚ d  S(   NR   i   R   (   R   R   R    R.   R   R   R/   (   R   R   (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_non_trivial_implies•   s    -c          C   sÅ  t  d d d ƒ }  t |  d d ƒ } t |  d d	 ƒ } t t j | ƒ t j |  ƒ ƒ s] t ‚ t t j | ƒ t j |  ƒ ƒ s„ t ‚ t t j | ƒ t j |  ƒ ƒ s« t ‚ t t j | ƒ t j |  ƒ ƒ sÒ t ‚ t t j	 | ƒ t j	 |  ƒ ƒ sù t ‚ t t j | ƒ t j |  ƒ ƒ s!t ‚ t t j | ƒ t j |  ƒ ƒ sIt ‚ t t j | ƒ t j |  ƒ ƒ sqt ‚ t t j | ƒ t j |  ƒ ƒ s™t ‚ t t j	 | ƒ t j	 |  ƒ ƒ sÁt ‚ d  S(
   NR   i   i   i   i    (   i   i   (   i   i   (   i    i   (   i   i   (
   R   R   R   R    R!   R   R   R2   R%   R-   (   R   t   Bt   C(    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_MatrixSliceŸ   s    '''''((((c          C   sp   t  d d d ƒ }  t t j t |  ƒ ƒ t j |  ƒ ƒ s? t ‚ t t j t |  ƒ ƒ t j |  ƒ ƒ sl t ‚ d  S(   NR   i   (   R   R   R    R+   R   R*   R   R   (   R   (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_det_trace_positive¯   s    -c          C   sº  t  d d d ƒ }  t  d d d ƒ } t t j |  ƒ t j |  ƒ ƒ sK t ‚ t t j |  ƒ t j |  ƒ ƒ ss t ‚ t t j |  ƒ t j |  ƒ ƒ sš t ‚ t t j |  d ƒ t j |  ƒ ƒ sÅ t ‚ t t j |  d ƒ t j |  ƒ ƒ sð t ‚ t t j |  | ƒ t j |  ƒ ƒ d  k s!t ‚ t t j |  | ƒ t j |  ƒ t j | ƒ @ƒ sYt ‚ d d l m	 } t t j | |  | ƒ ƒ t j |  ƒ t j | ƒ @ƒ s¦t ‚ t t j |  | ƒ t j |  ƒ t j | ƒ @ƒ sÞt ‚ t t j |  j
 ƒ t j |  ƒ ƒ st ‚ t t j |  j ƒ t j |  ƒ t j |  ƒ @ƒ s?t ‚ t t j t |  ƒ ƒ t j |  ƒ ƒ slt ‚ t t j t |  ƒ ƒ t j |  ƒ ƒ s™t ‚ t t j |  j ƒ t j |  ƒ ƒ sÄt ‚ t d ƒ } t t j | |  ƒ t j |  ƒ t j | ƒ @ƒ st ‚ t t j t |  ƒ ƒ t j |  ƒ ƒ s5t ‚ t d d	 t d
 t ƒ} t t j |  | ƒ t j |  ƒ t j |  ƒ @ƒ s…t ‚ t t j |  | ƒ t j |  ƒ ƒ d  k s¶t ‚ d  S(   NR   i   R   i   iÿÿÿÿ(   t   HadamardProductt   alphat   et   integert   negative(   R   R   R    t   real_elementsR   t   integer_elementst   complex_elementsR   t#   sympy.matrices.expressions.hadamardR;   R   R   R   R   R   R   R4   R	   R   (   R   R   R;   R<   R=   (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_field_assumptions´   s0    '('++18%8*7--+8-8c          C   s  t  d d d ƒ }  t t j |  d ƒ t j |  ƒ ƒ s= t ‚ t t j |  d	 ƒ t j |  ƒ ƒ sh t ‚ t t j |  d
 ƒ t j	 |  ƒ ƒ s“ t ‚ t t j t
 d ƒ ƒ ƒ s´ t ‚ t t j t d d ƒ ƒ ƒ sØ t ‚ d d l m } t t j	 | d ƒ ƒ ƒ s	t ‚ d  S(   NR   i   i   i   i   iÿÿÿÿ(   t   DFT(   i   i   (   i   i   (   i   i   (   R   R   R    R4   R@   R   R>   RA   t   complexRB   R   R   t"   sympy.matrices.expressions.fourierRE   (   R   RE   (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   test_matrix_element_setsÏ   s    +++!$c          C   s–   d d l  m }  t d d d ƒ } t t j | d  d  … d f ƒ t j | ƒ ƒ sY t ‚ t t j |  | g | g g ƒ ƒ t j | ƒ ƒ s’ t ‚ d  S(   Niÿÿÿÿ(   t   BlockMatrixR   i   i   (   t   sympy.matrices.expressionsRI   R   R   R    RA   R   (   RI   R   (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt&   test_matrix_element_sets_slices_blocksÚ   s
    7!c           C   s^   t  t j t t ƒ ƒ t j t ƒ ƒ s- t ‚ t  t j t t ƒ ƒ t j t ƒ ƒ sZ t ‚ d  S(   N(   R   R    R>   R   R   RA   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt*   test_matrix_element_sets_determinant_traceá   s    -N(+   t   sympyR    R   R   RJ   R   R   R   R   R   R   t)   sympy.matrices.expressions.factorizationsR	   t   sympy.utilities.pytestR
   R   R   R   R   R   R   R   R   R   R   R   R    R"   R$   R&   R(   R)   R,   R1   R3   R5   R6   R9   R:   RD   RH   RK   RL   (    (    (    sD   lib/python2.7/site-packages/sympy/assumptions/tests/test_matrices.pyt   <module>   s>   .												
					