ó
î&]\c           @` sv   d  d l  m Z m Z m Z d  d l Z d e f d     YZ d e f d     YZ d   Z	 d   Z
 d d	  Z d S(
   i    (   t   divisiont   print_functiont   absolute_importNt   _FakeMatrixc           B` s   e  Z d    Z RS(   c         C` s   | |  _  | j |  _ d  S(   N(   t   _datat   __array_interface__(   t   selft   data(    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyt   __init__   s    	(   t   __name__t
   __module__R   (    (    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyR      s   t   _FakeMatrix2c           B` s   e  Z d    Z d   Z RS(   c         C` s   | |  _  d  S(   N(   R   (   R   R   (    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyR      s    c         C` s   |  j  S(   N(   R   (   R   (    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyt	   __array__   s    (   R	   R
   R   R   (    (    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyR      s   	c         C` s"  t  |   d k r[ |  d d k r[ t j |  d | } d | d d d  f <d | d <| St  |   d k rő |  d |  d k rő t j |  d | } t j |  d  } d | | | f <d | | d  | d  d f <d | | d  d | d  f <| St j j d  t j j |    j |  Sd S(   sz   
    Get a test array of given shape and data type.
    Returned NxN matrices are posdef, and 2xN are banded-posdef.

    i   i    t   dtypei˙˙˙˙i   NiŇ  (   t   lent   npt   zerost   aranget   randomt   seedt   randnt   astype(   t   shapeR   t   xt   j(    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyt
   _get_array   s    "
&c         C` s   |  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyt   _id-   s    c      	   C` s  | d k r- t j t j t j t j g } n  xÜ | D]Ô } xË d d g D]˝ } x´ t t t g D]Ł } g  | D] } t	 | |  ^ qj } g  | D] } | | j
 |   ^ q }	 |  |	   d | | f }
 x6 t |	 |  D]% \ } } t j j | | d |
 q× Wq] WqG Wq4 Wd S(   sA   
    Test that a call does not overwrite its input arguments
    t   Ct   Fs   call modified inputs [%r, %r]t   err_msgN(   t   NoneR   t   float32t   float64t	   complex64t
   complex128R   R   R   R   t   copyt   zipt   testingt   assert_equal(   t   callt   shapest   dtypesR   t   ordert   fakert   st   orig_inputsR   t   inputst   msgt   at   b(    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyt   assert_no_overwrite1   s    !"(
(   t
   __future__R    R   R   t   numpyR   t   objectR   R   R   R   R   R2   (    (    (    s6   lib/python2.7/site-packages/scipy/linalg/_testutils.pyt   <module>   s   		