ó
àÆ÷Xc           @` s  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m	 Z	 m
 Z
 m Z d  d l m Z d  d l m Z d  d l Z d  d l m Z m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z 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) m* Z* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 m1 Z1 m2 Z2 m3 Z3 m4 Z4 d  d l5 m6 Z6 d  d l7 m8 Z8 d  d l9 m: Z: d „  Z; d e j< f d „  ƒ  YZ= d „  Z> d „  Z? d „  Z@ d „  ZA d „  ZB d „  ZC d „  ZD d „  ZE d „  ZF d e jG f d „  ƒ  YZH d „  ZI d e j< f d  „  ƒ  YZJ d! eJ f d" „  ƒ  YZK d# eK f d$ „  ƒ  YZL d% e jG f d& „  ƒ  YZM d' e jG f d( „  ƒ  YZN d) e jG f d* „  ƒ  YZO d+ e j< f d, „  ƒ  YZP d S(-   i    (   t   absolute_importt   print_functiont   divisionN(   t   assert_array_almost_equal(   t   dect   assert_array_equalt   assert_allclose(   t   inf(   t   xrange(   t   tensort   function(   t	   _allclose(   t   break_op(   t   unittest_tools(   t   config(   t   MatrixInverset   matrix_inverset
   MatrixPinvt   pinvt	   AllocDiagt
   alloc_diagt   ExtractDiagt   extract_diagt   diagt   tracet   Dett   dett   Eigt   eigt   Eight   EighGradt   eight
   matrix_dott   _zero_disconnectedt   qrt   matrix_powert   normt   svdt	   TensorInvt	   tensorinvt   tensorsolve(   t   attr(   t   SkipTest(   t   assert_raisesc          C` s  t  j j t j ƒ  ƒ }  |  j d ƒ d } |  j d ƒ d } |  j | | ƒ j t j	 j
 ƒ } t j ƒ  } t | ƒ } t | g | ƒ | ƒ } | j d | j d k s¯ t ‚ | j d | j d k sÏ t ‚ | j | j k sç t ‚ t | t  j j | ƒ ƒ st ‚ d  S(   Ni   i   i    i   (   t   numpyt   randomt   RandomStatet   uttt
   fetch_seedt   randintt   randnt   astypet   theanoR   t   floatXR	   t   matrixR   R
   t   shapet   AssertionErrort   dtypeR   t   linalg(   t   rngt   d1t   d2t   rt   xt   xit   ri(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_pseudoinverse_correctness   s    !  t   test_MatrixInversec           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` sD   t  t |  ƒ j ƒ  t |  _ t |  _ t j j	 t
 j ƒ  ƒ |  _ d  S(   N(   t   superRC   t   setUpR   t   op_classR   t   opR,   R-   R.   R/   R0   R;   (   t   self(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRE   1   s    		c         C` s÷   |  j  j d d ƒ j t j j ƒ } t j ƒ  } |  j | ƒ } t	 | g | ƒ | ƒ } | j
 | j
 k so t ‚ | j | j k s‡ t ‚ t j | | ƒ } t j | | ƒ } t t j d ƒ | ƒ sÏ t | ƒ ‚ t t j d ƒ | ƒ só t | ƒ ‚ d  S(   Ni   (   R;   R2   R3   R4   R   R5   R	   R6   RG   R
   R7   R8   R9   R,   t   dotR   t   identity(   RH   R>   R?   R@   RA   t   rirt   rri(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_inverse_correctness7   s    $$c         C` sk   |  j  j d d ƒ j t j j ƒ } t j ƒ  } |  j | ƒ } |  j	 | g | g | g |  j
 d t ƒd  S(   Ni   t   warn(   R;   R2   R3   R4   R   R5   R	   R6   RG   t   _compile_and_checkRF   t   False(   RH   R>   R?   R@   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_infer_shapeH   s
    $(   t   __name__t
   __module__RE   RM   RQ   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRC   0   s   		c    	      C` sô   t  j j t j ƒ  ƒ }  |  j d ƒ d } g  } g  } xO t | ƒ D]A } | |  j d d ƒ j t	 j
 j ƒ g 7} | t j ƒ  g 7} qD Wt | Œ  } t | | ƒ | Œ  } | d } x$ | d D] } t  j | | ƒ } q¿ Wt | | ƒ sð t ‚ d  S(   Ni   i   i    i   (   R,   R-   R.   R/   R0   R1   R   R2   R3   R4   R   R5   R	   R6   R    R
   RI   R   R8   (	   R;   t   nt   rst   xst   kt   solt
   theano_solt	   numpy_solR>   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_matrix_dotS   s    (
c          C` sã  t  j j t j ƒ  ƒ }  t j d d t j j	 ƒ} |  j
 d d ƒ j t j j	 ƒ } t | g t | ƒ ƒ } | | ƒ } t  j j | ƒ } t | | ƒ sŸ t ‚ xº d d d g D]© } t | g t | | ƒ ƒ } | | ƒ } t  j j | | ƒ } t | t t f ƒ rCt | d | d ƒ s#t ‚ t | d | d ƒ sXt ‚ q¯ t | | ƒ s¯ t ‚ q¯ WyU t  j j | d	 ƒ } t | g t | d	 ƒ ƒ } | | ƒ } t | | ƒ s°t ‚ Wn+ t k
 rÞ} d
 t | ƒ k sßt ‚ n Xd  S(   Nt   AR9   i   t   reducedR>   t   rawi    i   t   completes   name 'complete' is not defined(   R,   R-   R.   R/   R0   R	   R6   R4   R   R5   t   randR3   R
   R"   R:   R   R8   t
   isinstancet   listt   tuplet	   TypeErrort   str(   R;   R\   t   at   ft   t_qrt   n_qrt   modet   e(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_qr_modese   s,    ! c          C` s÷   t  j j t j ƒ  ƒ }  t j d d t j j	 ƒ} t
 | ƒ \ } } } t | g | | | g ƒ } |  j d d ƒ j t j j	 ƒ } t  j j
 | ƒ \ } } }	 | | ƒ \ }
 } } t | |
 ƒ sÉ t ‚ t | | ƒ sÞ t ‚ t |	 | ƒ só t ‚ d  S(   NR\   R9   i   (   R,   R-   R.   R/   R0   R	   R6   R4   R   R5   R%   R
   R`   R3   R:   R   R8   (   R;   R\   t   Ut   Vt   Tt   fnRf   t   n_ut   n_vt   n_tt   t_ut   t_vt   t_t(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_svdƒ   s    !c          C` sÔ  t  j j t j ƒ  ƒ }  t j d d t j j	 ƒ} t j
 d d t j j	 ƒ} t | | ƒ } t | | g | g ƒ } t  j d ƒ j t j j	 ƒ } d d d d f | _ |  j d d ƒ j t j j	 ƒ } t  j j | | ƒ } | | | ƒ } t | | ƒ st ‚ t j d d d ƒ}	 t j
 d	 d d
 ƒ}
 t |	 |
 ƒ } t |	 |
 g | g ƒ } t  j d d d ƒ} d d d d f | _ |  j d d ƒ j d
 ƒ } t  j j | | ƒ } | | | ƒ } t | | ƒ sÑt ‚ | j | j k sét ‚ t j d d d ƒ} t j
 d d d
 ƒ} t | | ƒ } t | | g | g ƒ } t  j d d d ƒ} d d d d f | _ |  j d d ƒ j d
 ƒ } t  j j | | ƒ } | | | ƒ } t | | ƒ s¸t ‚ | j | j k sÐt ‚ d  S(   NR\   R9   t   Bi   i   i   t   Ct   float32t   Dt   float64t   Et   int32t   Fi   i   i   i   i   i   i   i   i   i   i   i   i   i   i   (   R,   R-   R.   R/   R0   R	   t   tensor4R4   R   R5   R6   R(   R
   t   eyeR3   R7   R`   R:   R   R8   R9   (   R;   R\   Rx   t   XRp   Rf   t   bt   n_xt   t_xRy   R{   t   Yt   ct   dt   n_yt   t_yR}   R   t   ZRk   Rg   t   n_zt   t_z(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_tensorsolve‘   sB    !c          C` s˜   t  j d d d g g d d d g g d d t j j ƒ}  t j ƒ  } t | g t | ƒ ƒ } y | |  ƒ Wn t  j	 j
 k
 r‡ d  SXt s” t ‚ d  S(   Ni   i    i   R9   (   R,   t   arrayR4   R   R5   R	   R6   R
   R   R:   t   LinAlgErrorRP   R8   (   t   singularRf   Rg   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_inverse_singular¿   s    ,c          C` s   t  j j t j ƒ  ƒ }  |  j d d ƒ } t j t | g d t  j ƒt  j j t j ƒ  ƒ }  |  j d d ƒ } t j t | g d t  j ƒd  S(   Ni   R;   (	   R,   R-   R.   R/   R0   R2   R	   t   verify_gradR   (   R;   R>   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_inverse_gradË   s    c          C` s‹   t  j j t j ƒ  ƒ }  |  j d d ƒ j t j ƒ } t	 j
 ƒ  } t j | g t | ƒ ƒ } t  j t  j j | ƒ | | ƒ ƒ s‡ t ‚ d  S(   Ni   (   R,   R-   R.   R/   R0   R2   R3   R   R5   R	   R6   R4   R
   R   t   allcloseR:   R8   (   R;   R>   R?   Rg   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_detÖ   s
    c          C` sV   t  j j t j ƒ  ƒ }  |  j d d ƒ j t j ƒ } t	 j
 t | g d t  j ƒd  S(   Ni   R;   (   R,   R-   R.   R/   R0   R2   R3   R   R5   R	   R“   R   (   R;   R>   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_det_gradß   s    c          C` s©   t  j j t j ƒ  ƒ }  |  j d d ƒ j t j ƒ } t	 j
 ƒ  } t j | g t | ƒ ƒ } t j | g t | ƒ j ƒ } t  j | | ƒ j | | ƒ k ƒ s¥ t ‚ d  S(   Ni   (   R,   R-   R.   R/   R0   R2   R3   R   R5   R	   R6   R4   R
   R   R7   t   allR8   (   R;   R>   R?   Rg   t   f_shape(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_det_shapeæ   s    t	   test_diagc           B` sk   e  Z d  Z d	 e j d	 e j d „ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z e d ƒ d „  ƒ Z RS(
   sÞ  
    Test that linalg.diag has the same behavior as numpy.diag.
    numpy.diag has two behaviors:
    (1) when given a vector, it returns a matrix with that vector as the
    diagonal.
    (2) when given a matrix, returns a vector which is the diagonal of the
    matrix.

    (1) and (2) are tested by test_alloc_diag and test_extract_diag
    respectively.

    test_diag test makes sure that linalg.diag instantiates
    the right op based on the dimension of the input.
    c         C` sV   | |  _  | |  _ | d  k r* t j } n  | |  _ | |  _ t t |  ƒ j | ƒ d  S(   N(	   Rj   t   sharedt   NoneR   R5   t   typeRD   R›   t   __init__(   RH   t   nameRj   Rœ   R5   Rž   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRŸ   ÿ   s    				c         C` sÆ  t  j j t j ƒ  ƒ } t j j ƒ  } t | ƒ } t j	 | g | ƒ } xe d d d g D]T } | j
 | ƒ j |  j ƒ } t  j | ƒ } | | ƒ } | | k j ƒ  sX t ‚ qX Wt j j ƒ  }	 t }
 y t |	 ƒ Wn t k
 rì t }
 n X|
 sù t ‚ t j	 | g | j ƒ } | j j j ƒ  } t j d k rlt g  | D] } | j j t k ^ q<ƒ d k slt ‚ n  xS d d d g D]B } | j
 | ƒ j |  j ƒ } | | ƒ | j k j ƒ  s|t ‚ q|Wd  S(   Ni   i    i   t   FAST_COMPILE(   R,   R-   R.   R/   R0   R4   R	   t   vectorR   R
   R`   R3   R5   R   R˜   R8   R6   RP   Rd   t   TrueR7   t   makert   fgrapht   toposortR   Rj   t   sumRG   t	   __class__R   (   RH   R;   R?   t   gRg   t   shpt   mt   vR>   t   xxt   okt   topot   node(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_alloc_diag	  s.    
:c         C` sD   t  j j t j ƒ  ƒ } | j d ƒ } t j t | g d | ƒd  S(   Ni   R;   (	   R,   R-   R.   R/   R0   R`   R	   R“   R   (   RH   R;   R?   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_alloc_diag_grad)  s    c         C` s»   t  j j ƒ  } t | ƒ } | j j j t k s6 t ‚ t  j j	 ƒ  } t
 | ƒ } | j j j t k sl t ‚ t  j j ƒ  } t } y t
 | ƒ } Wn t k
 rª t } n X| s· t ‚ d  S(   N(   R4   R	   R¢   R   t   ownerRG   R¨   R   R8   R6   R   R   t   tensor3RP   Rd   R£   (   RH   R?   t   yR®   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyR›   .  s    
c         C` sQ  t  j j t j ƒ  ƒ } | j d d ƒ j |  j ƒ } |  j | ƒ } t	 | ƒ } t
 j g  | ƒ } g  | j j j ƒ  D]4 } t | j t ƒ rv t | j d j |  j ƒ ^ qv t g k s¿ t ‚ xu d d d d	 d
 g D]^ } | j | Œ  j |  j ƒ } | j | ƒ t  j | ƒ } | ƒ  }	 |	 | k j ƒ  sÕ t ‚ qÕ Wt
 j j ƒ  }
 t } y t	 |
 ƒ Wn t k
 rst } n X| s€t ‚ t
 j g  | j ƒ } | j j j ƒ  } t j d k rðt  g  | D] } | j j! t k ^ qÀƒ d k sðt ‚ n  xZ d d d g D]I } | j | Œ  j |  j ƒ } | j | ƒ | ƒ  t" | ƒ k s t ‚ q Wd  S(   Ni   i   i    i   R¡   (   i   i   (   i   i   (   i   i   (   i   i   (   i    i    (   i   i   (   i   i   (   i   i   (#   R,   R-   R.   R/   R0   R`   R3   R5   Rœ   R   R4   R
   R¤   R¥   R¦   Ra   RG   R   t   inputsRž   R£   R8   t	   set_valueR   R˜   R	   R¢   RP   Rd   R7   R   Rj   R§   R¨   t   min(   RH   R;   R«   R?   R©   Rg   R°   Rª   R¬   R>   R­   R®   R¯   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_extract_diagD  s<    C	
4c         C` sS   t  j j t j ƒ  ƒ } | j d d ƒ j |  j ƒ } t j	 t
 | g d | ƒd  S(   Ni   i   R;   (   R,   R-   R.   R/   R0   R`   R3   R5   R	   R“   R   (   RH   R;   R?   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_extract_diag_gradj  s    t   slowc         C` s¥   |  j  t j g  g  g |  j ƒ ƒ } t j g  t | ƒ d |  j ƒ} g  | j j	 j
 ƒ  D]4 } t | j t ƒ rX t | j d j |  j ƒ ^ qX t g k s¡ t ‚ d  S(   NRj   i    (   Rœ   R,   R   R5   R4   R
   R   Rj   R¤   R¥   R¦   Ra   RG   R   R¶   Rž   R£   R8   (   RH   R‡   Rg   R°   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_extract_diag_emptyo  s
    $!N(   RR   RS   t   __doc__R   R	   t   _sharedt
   TensorTypeRŸ   R±   R²   R›   R¹   Rº   R)   R¼   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyR›   ð   s   			 			&	c    	      C` sñ   t  j j t j ƒ  ƒ }  t j j ƒ  } t | ƒ } t j	 | g | ƒ } xY d d d g D]H } |  j
 | Œ  j t j ƒ } t  j | ƒ } | | | ƒ k sX t ‚ qX Wt j j ƒ  } t } y t | ƒ Wn t k
 rà t } n X| sí t ‚ d  S(   Ni   i   (   i   i   (   i   i   (   i   i   (   R,   R-   R.   R/   R0   R4   R	   R6   R   R
   R`   R3   R   R5   R8   R¢   RP   Rd   R£   (	   R;   R?   R©   Rg   Rª   R«   R¬   R­   R®   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt
   test_tracey  s    
t   test_Eigc           B` s5   e  Z e Z e Z d  Z d „  Z d „  Z d „  Z	 RS(   R|   c         C` s’   t  t |  ƒ j ƒ  t j j t j ƒ  ƒ |  _ t	 j
 j d |  j ƒ |  _ t j |  j j d d ƒ d |  j ƒ|  _ |  j j |  j j ƒ |  _ d  S(   NR9   i   (   RD   RÁ   RE   R,   R-   R.   R/   R0   R;   R4   R	   R6   R9   R\   t   asarrayR`   R‚   RI   Ro   t   S(   RH   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRE   ’  s    c         C` sD   |  j  } |  j } |  j | g |  j | ƒ | g |  j d t ƒd  S(   NRN   (   R\   RÃ   RO   RG   RF   RP   (   RH   R\   RÃ   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRQ   š  s    			c         C` sÚ   t  j j d |  j ƒ } |  j g  |  j | ƒ D]" } | j i d g g | 6ƒ ^ q. d g d g g g ƒ d d g d d g g } g  |  j | ƒ D] } | j i | | 6ƒ ^ q‘ \ } } t t j	 | | ƒ | | ƒ d  S(   NR9   i   g      ð?i    (
   R4   R	   R6   R9   t   assertEqualRG   t   evalR   R,   RI   (   RH   R\   Rk   R?   t   wR¬   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt	   test_eval¤  s    ;8(
   RR   RS   R   RF   R   RG   R9   RE   RQ   RÇ   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÁ     s   		
t	   test_Eighc           B` s&   e  Z e e ƒ Z d  „  Z d „  Z RS(   c         C` sï   |  j  } t j j d |  j ƒ } g  |  j | d ƒ D] } | j i | | 6ƒ ^ q4 \ } } g  |  j | d ƒ D] } | j i | | 6ƒ ^ qo \ } } t | | ƒ t | t j	 | d d  d  … f ƒ | t j	 | d d  d  … f ƒ ƒ d  S(   NR9   Rm   t   Li    (
   RÃ   R4   R	   R6   R9   RG   RÅ   R   R,   t   sign(   RH   RÃ   Rf   t   outt   wut   vut   wlt   vl(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt	   test_uplo°  s    	;;#c         ` s¡   ˆ  j  } t j ‡  f d †  | g d ˆ  j ƒt j ‡  f d †  | g d ˆ  j ƒt j ‡  f d †  | g d ˆ  j ƒt j ‡  f d †  | g d ˆ  j ƒd  S(   Nc         ` s   ˆ  j  |  j |  j ƒ ƒ d S(   Ni    (   RG   RI   Ro   (   R?   (   RH   (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   <lambda>½  s    R;   c         ` s   ˆ  j  |  j |  j ƒ ƒ d S(   Ni   (   RG   RI   Ro   (   R?   (   RH   (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÑ   ¾  s    c         ` s    ˆ  j  |  j |  j ƒ d ƒ d S(   NRm   i    (   RG   RI   Ro   (   R?   (   RH   (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÑ   ¿  s    c         ` s    ˆ  j  |  j |  j ƒ d ƒ d S(   NRm   i   (   RG   RI   Ro   (   R?   (   RH   (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÑ   À  s    (   R‚   R/   R“   R;   (   RH   R‚   (    (   RH   s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt	   test_grad¹  s
    	%%%(   RR   RS   t   staticmethodR   RG   RÐ   RÒ   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÈ   ­  s   		t   test_Eigh_float32c           B` s    e  Z d  Z d „  Z d „  Z RS(   Rz   c         C` s   t  t |  ƒ j ƒ  d  S(   N(   RD   RÔ   RÐ   (   RH   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÐ   Æ  s    c         C` s   t  t |  ƒ j ƒ  d  S(   N(   RD   RÔ   RÒ   (   RH   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÒ   É  s    (   RR   RS   R9   RÐ   RÒ   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÔ   Ã  s   	t   T_lstsqc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c   
      C` s  t  j ƒ  } t  j ƒ  } t  j ƒ  } t j  j j ƒ  | | | ƒ } t | | | g | ƒ } t j d d g d d g g ƒ } t j d d g d d g g ƒ } t j d ƒ } t | | | g | ƒ } | | | | ƒ }	 |  j	 t j
 | t j | |	 d	 ƒ ƒ ƒ d  S(
   Ni   i   i   i   i   i   i+   i2   i    (   R	   t   lmatrixt   lscalarR4   t   nlinalgt   lstsqR
   R,   RÂ   t
   assertTrueR•   RI   (
   RH   R?   Rµ   t   zRƒ   Rg   t   TestMatrix1t   TestMatrix2t
   TestScalarR«   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_correct_solutionÏ  s    !!c         C` sŒ   t  j ƒ  } t  j ƒ  } t  j ƒ  } t j  j j ƒ  | | | ƒ } t | | | g | ƒ } |  j t j	 j	 j
 | d d g d d g d ƒ d  S(   Ni   i   (   R	   R¢   t   scalarR4   RØ   RÙ   R
   t   assertRaisesR,   R:   R   (   RH   R?   Rµ   RÛ   Rƒ   Rg   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_wrong_coefficient_matrixÜ  s    c         C` s   t  j ƒ  } t  j ƒ  } t  j ƒ  } t j  j j ƒ  | | | ƒ } t | | | g | ƒ } |  j t j j	 | d d g d d g d d g ƒ d  S(   Ni   i   (
   R	   R¢   R4   RØ   RÙ   R
   Rá   R,   R:   R   (   RH   R?   Rµ   RÛ   Rƒ   Rg   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_wrong_rcond_dimensionä  s    (   RR   RS   Rß   Râ   Rã   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÕ   Í  s   		t   Matrix_powerc           B` s   e  Z d  „  Z d „  Z RS(   c         C` sµ   t  j j t j ƒ  ƒ } t j d d t j j	 ƒ} t
 | d ƒ } t | g | g ƒ } | j d d ƒ j t j j	 ƒ } t  j j
 | d ƒ } | | ƒ } t  j | | ƒ s± t ‚ d  S(   NR\   R9   i   i   (   R,   R-   R.   R/   R0   R	   R6   R4   R   R5   R#   R
   R`   R3   R:   R•   R8   (   RH   R;   R\   t   QRp   Rf   t   n_pt   t_p(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_numpy_compareï  s    !c         C` s   t  j j t j ƒ  ƒ } t j d d t j j	 ƒ} t
 | d ƒ } t | g | g ƒ } | j d d ƒ j t j j	 ƒ } |  j t | | ƒ d  S(   NR\   R9   i   i   (   R,   R-   R.   R/   R0   R	   R6   R4   R   R5   R#   R
   R`   R3   Rá   t
   ValueError(   RH   R;   R\   Rå   Rg   Rf   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_non_square_matrixú  s    !(   RR   RS   Rè   Rê   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRä   í  s   	t   T_NormTestsc           B` s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s    |  j  t t d d g d ƒ d  S(   Ni   i   t   fro(   Rá   Ré   R$   (   RH   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt!   test_wrong_type_of_ord_for_vector  s    c         C` s,   |  j  t t d d g d d g g d ƒ d  S(   Ni   i   i   i   i    (   Rá   Ré   R$   (   RH   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt!   test_wrong_type_of_ord_for_matrix  s    c         C` s   |  j  t t d d  ƒ d  S(   Ni   (   Rá   Ré   R$   R   (   RH   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_non_tensorial_input  s    c         C` s,   |  j  t t t j j d d d ƒ d  ƒ d  S(   Ni   i   i   (   Rá   t   NotImplementedErrorR$   R,   R-   R`   R   (   RH   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   test_tensor_input  s    c         C` sè  t  j j t j ƒ  ƒ } t j d d t j j	 ƒ} t j
 d d t j j	 ƒ} | j d d ƒ j t j j	 ƒ } | j d ƒ j t j j	 ƒ } d  d d d d d	 d  d d d
 d d	 d d g | | | | | | | | | | | | | | g | | | | | | | | | | | | | | g d  d t t d d	 d  t t d
 d d	 d d g f } x˜ t d
 d ƒ D]‡ } t | d | g t | d | | d
 | ƒ ƒ } | | d | ƒ }	 t  j j | d | | d | ƒ }
 t |
 |	 ƒ sYt ‚ qYWd  S(   NR\   R9   Rn   i   Rì   R   s   -infi   iÿÿÿÿi    i   iþÿÿÿi   i   (   R,   R-   R.   R/   R0   R	   R6   R4   R   R5   R¢   R`   R3   R   R   t   rangeR
   R$   R:   R   R8   (   RH   R;   t   MRn   Rf   Rƒ   R\   t   iRg   t   t_nt   n_n(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRè     s    !---53%(   RR   RS   Rí   Rî   Rï   Rñ   Rè   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRë     s
   				t   test_TensorInvc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` sÔ   t  t |  ƒ j ƒ  t j d d t j j ƒ|  _ t j	 d d t j j ƒ|  _
 t j j d d d d ƒ j t j j ƒ |  _ t j j d d	 d
 ƒ j t j j ƒ |  _ t j j d
 d d	 ƒ j t j j ƒ |  _ d  S(   NR\   R9   Rx   i   i   i   i   i   i   i   (   RD   R÷   RE   R	   R€   R4   R   R5   R\   R´   Rx   R,   R-   R`   R3   Rf   Rƒ   t   b1(   RH   (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRE   '  s    -*c         C` s;   |  j  } t | ƒ } |  j | g | g |  j g t ƒ d  S(   N(   R\   R'   RO   Rf   R&   (   RH   R\   t   Ai(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRQ   /  s    		c         C` s0  |  j  } t | ƒ } t j j |  j ƒ } t | g | g ƒ } | |  j ƒ } t | | ƒ sc t ‚ |  j } t | ƒ } t | d d ƒ} t j j |  j	 ƒ }	 t j j |  j
 d d ƒ}
 t | g | g ƒ } t | g | g ƒ } | |  j	 ƒ } | |  j
 ƒ } t | |	 ƒ st ‚ t | |
 ƒ s,t ‚ d  S(   Nt   indi   (   R\   R'   R,   R:   Rf   R
   R   R8   Rx   Rƒ   Rø   (   RH   R\   Rù   t   n_ainvt   tf_at   t_ainvRx   t   Bit   Bi1t   n_binvt   n_binv1t   tf_bt   tf_b1t   t_binvt   t_binv1(    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyRÇ   7  s"    		(   RR   RS   RE   RQ   RÇ   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyR÷   &  s   		(Q   t
   __future__R    R   R   t   unittestR,   t   numpy.linalgt   numpy.testingR   R   R   R   R   t	   six.movesR   R4   R	   R
   t   theano.tensor.basicR   t   theano.tests.test_ropR   t   theano.testsR   R/   R   t   theano.tensor.nlinalgR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   t   nose.plugins.attribR)   t   nose.plugins.skipR*   t
   nose.toolsR+   RB   t   InferShapeTesterRC   R[   Rl   Rw   RŽ   R’   R”   R–   R—   Rš   t   TestCaseR›   RÀ   RÁ   RÈ   RÔ   RÕ   Rä   Rë   R÷   (    (    (    s@   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_nlinalg.pyt   <module>   sJ   ¦	#				.						
‰	 
 #