ó
Ë½÷Xc           @` 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   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_testutils.pyt   __init__   s    	(   t   __name__t
   __module__R   (    (    (    s6   /tmp/pip-build-7oUkmx/scipy/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   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_testutils.pyR      s    c         C` s   |  j  S(   N(   R   (   R   (    (    s6   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_testutils.pyt	   __array__   s    (   R	   R
   R   R   (    (    (    s6   /tmp/pip-build-7oUkmx/scipy/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   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_testutils.pyt
   _get_array   s    "
&c         C` s   |  S(   N(    (   R   (    (    s6   /tmp/pip-build-7oUkmx/scipy/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   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_testutils.pyt   assert_no_overwrite1   s    !"(
(   t
   __future__R    R   R   t   numpyR   t   objectR   R   R   R   R   R2   (    (    (    s6   /tmp/pip-build-7oUkmx/scipy/scipy/linalg/_testutils.pyt   <module>   s   		