U
    O8c                     @   sf   d Z ddlZddlZddlmZmZmZmZmZm	Z	 ddl
mZmZmZmZmZmZ G dd dZdS )z" Test functions for linalg module
    N)linalgarangefloat64arraydot	transpose)assert_assert_raisesassert_equalassert_array_equalassert_array_almost_equalassert_array_lessc                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestRegressionc                 C   sh   t ddddddddd	d
dddg}tdtd}d|_|d }t|\}}|  |  t|| d S )Nyӝ'Y@        yF.<2/3        yʹLTW9>/@yʹLTW9>/y=J&        ytV)忷B$@ytV)忷B$yZynFr62@        y(3%@        y:@        yCr~        yYqs`<        yt&Aۼ           dtype)   r      )r   r   r   shaper   Zeigsortr   )selfZrvaavave r   F/tmp/pip-unpacked-wheel-fd_gsd75/numpy/linalg/tests/test_regression.pytest_eig_build   s*    zTestRegression.test_eig_buildc                 C   sF   dddg}t dddgdddgddd	gg}t|\}}t|| d S )
Ng"&Q@ggdV@g7Z@g'UlS@g4h@g%pJ/@g+>V@gqi0gJ%~X@)r   r   Zeighr   )r   ZrvalsZcovvalsZvecsr   r   r   test_eigh_build&   s    

zTestRegression.test_eigh_buildc                 C   sl   t ddgddgddgddgg}|j\}}t|\}}}tt|d d |d f |}t|td d S )Ng              ?       @      @)   r"   )	r   r   r   svdr   r   r   npzeros)r   r   mnusZvhbr   r   r   test_svd_build1   s
     
zTestRegression.test_svd_buildc                 C   s   t ttjtdddgd d S )Nr   r    r!   fro)r	   
ValueErrorr   normr   )r   r   r   r   test_norm_vector_badarg;   s    z&TestRegression.test_norm_vector_badargc                 C   sF   t ddgddggdd}t |dd}t|}t|}t|| d S )NgC$ 3@g&ug.ܷ#@z>f8r   z<f8)r   r   Zcholeskyr   )r   r   r*   ZapZbpr   r   r   test_lapack_endian@   s    

z!TestRegression.test_lapack_endianc                 C   s   t dd}t j| d S )Ni  B   )r$   Zeyer   r#   )r   xr   r   r   test_large_svd_32bitJ   s    z#TestRegression.test_large_svd_32bitc                 C   s~   dD ]t}t tfD ]f}tj||d}tj|dd}tt|dk}t|d ttj	|d t
dtjj|dd qqd S )	N))      )r5   r5   )r5   r4   r   F)Z
compute_uvg      ?   r"   ord)floatcomplexr$   Zonesr   r#   Zcount_nonzeroabsoluter
   Zmatrix_rankr   r.   )r   r   tr   wcr   r   r   test_svd_no_uvO   s    
zTestRegression.test_svd_no_uvc              	   C   s  t jt ddgddgtd}t|}t|ddg t|jt dk tj|dd}t|ddg t|jt dk tj|dd}t|ddg t|jt dk tt	tj|dd tt	tj|dd tt	tj|t j
d tt	tj|t j
 d t ( td	t tttftj|dd W 5 Q R X tt	tj|d
d tt	tj|dd t jt ddgddgdddggtd}t|}t|ddg t|jt dk tj|dd}t|ddg t|jt dk tttj|dd tt	tj|t j
d tt	tj|t j
 d tt	tj|dd tt	tj|dd tt	tj|d
d tttj|dd tttj|dd tt	tj|dd d S )Nr   r6   r   r   r7   r"   r,   Znucerrorr4   )r$   r   objectr   r.   r   r   r   r	   r-   infwarningscatch_warningssimplefilterDeprecationWarningAttributeError	TypeError)r   Z
testvectorr.   Z
testmatrixr   r   r   test_norm_object_arrayZ   sV    

  
z%TestRegression.test_norm_object_arrayc           
      C   sx   d}d}t j||dt j||  }t j||dt j||  }||}tj||d d\}}}}	t|| d S )N   F   y              ?)Zrcond)r$   randomZrandnr   r   Zlstsqr   )
r   sizeZn_rhsGr(   r*   Zu_lstsqresZranksvr   r   r   test_lstsq_complex_larger_rhs   s      
z,TestRegression.test_lstsq_complex_larger_rhsN)__name__
__module____qualname__r   r   r+   r/   r0   r3   r?   rK   rS   r   r   r   r   r      s   

0r   )__doc__rE   Znumpyr$   r   r   r   r   r   r   Znumpy.testingr   r	   r
   r   r   r   r   r   r   r   r   <module>   s
     