U
    »mœdÄ  ã                   @   sB   d dl ZG dd„ dƒZG dd„ dƒZdd„ Zdd	„ Zdd
d„ZdS )é    Nc                   @   s   e Zd Zdd„ ZdS )Ú_FakeMatrixc                 C   s   || _ |j| _d S ©N)Ú_dataZ__array_interface__©ÚselfÚdata© r   úP/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/linalg/_testutils.pyÚ__init__   s    z_FakeMatrix.__init__N)Ú__name__Ú
__module__Ú__qualname__r
   r   r   r   r	   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_FakeMatrix2c                 C   s
   || _ d S r   ©r   r   r   r   r	   r
      s    z_FakeMatrix2.__init__c                 C   s   | j S r   r   )r   r   r   r	   Ú	__array__   s    z_FakeMatrix2.__array__N)r   r   r   r
   r   r   r   r   r	   r   
   s   r   c                 C   sì   t | ƒdkrB| d dkrBtj| |d�}d|ddd…f< d|d< |S t | ƒdkrÊ| d | d krÊtj| |d�}t | d ¡}d|||f< d||dd… |dd… d f< d||dd… d |dd… f< |S tj d¡ tjj| Ž  |¡S dS )zz
    Get a test array of given shape and data type.
    Returned NxN matrices are posdef, and 2xN are banded-posdef.

    é   r   ©Údtypeéÿÿÿÿé   NiÒ  )ÚlenÚnpZzerosZarangeÚrandomÚseedZrandnZastype)Úshaper   ÚxÚjr   r   r	   Ú
_get_array   s      r   c                 C   s   | S r   r   )r   r   r   r	   Ú_id+   s    r   c              	      s¤   |dkrt jt jt jt jg}|D ]~‰ dD ]t‰tttfD ]d‰‡ fdd„|D ƒ}‡‡fdd„|D ƒ}| |Ž  dˆ ˆf }t||ƒD ]\}}t j	j
|||d� q~q6q(q dS )zA
    Test that a call does not overwrite its input arguments
    N)ÚCÚFc                    s   g | ]}t |ˆ ƒ‘qS r   )r   )Ú.0Úsr   r   r	   Ú
<listcomp>:   s     z'assert_no_overwrite.<locals>.<listcomp>c                    s   g | ]}ˆ |  ˆ¡ƒ‘qS r   )Úcopy)r!   r   )ÚfakerÚorderr   r	   r#   ;   s     zcall modified inputs [%r, %r])Úerr_msg)r   Zfloat32Zfloat64Z	complex64Z
complex128r   r   r   ÚzipÚtestingZassert_equal)ÚcallZshapesZdtypesZorig_inputsÚinputsÚmsgÚaÚbr   )r   r%   r&   r	   Úassert_no_overwrite/   s    r/   )N)Únumpyr   r   r   r   r   r/   r   r   r   r	   Ú<module>   s
   