o
    h!                     @   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                   @   s   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ejdddgdd Zejdddgd edgdd Zdd Zd S )!TestRegressionc                 C   sR   t g d}tdtd}d|_|d }t|\}}|  |  t|| d S )N)yӝ'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   eigsortr   )selfrvaavave r   v/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/numpy/linalg/tests/test_regression.pytest_eig_build   s   zTestRegression.test_eig_buildc                 C   s>   g d}t g dg dg dg}t|\}}t|| d S )N)g"&Q@ggdV@g7Z@)g'UlS@4h@%pJ/@)r   g+>V@研qi0)r    r!   gJ%~X@)r   r   eighr   )r   rvalscovvals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 )N              ?       @      @)   r,   )	r   r   r   svdr   r   r   npzeros)r   r   mnusvhbr   r   r   test_svd_build2   s
    
zTestRegression.test_svd_buildc                 C   s   t ttjtg dd d S )N)r)   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   choleskyr   )r   r   r5   apbpr   r   r   test_lapack_endianA   s   

z!TestRegression.test_lapack_endianc                 C   s   t dd}t j| d S )Ni  B   )r.   eyer   r-   )r   xr   r   r   test_large_svd_32bitK   s   z#TestRegression.test_large_svd_32bitc                 C   s   dD ]D}t tfD ]=}tj||d}tj|dd}tt|dk}t|d ttj	|d t
dtjj|dd t|}t|| qqd S )	N))      )rD   rD   )rD   rC   r   F)
compute_uvg      ?   r,   ord)floatcomplexr.   onesr   r-   count_nonzeroabsoluter
   matrix_rankr   r9   svdvalsr   )r   r   tr   wc	w_svdvalsr   r   r   test_svd_no_uvP   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	tj|dd tt	tj|d	d tt	tj|d
d t jt ddgddgg 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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   rF   r   r   rG   r,   r7   nuc)r   r   r   rC   )r.   r   objectr   r9   r   r   r   r	   r8   inf	TypeError)r   
testvectorr9   
testmatrixr   r   r   test_norm_object_array^   sJ   

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              ?)rcond)r.   randomrandnr   r   lstsqr   )
r   sizen_rhsGr2   r5   u_lstsqresranksvr   r   r   test_lstsq_complex_larger_rhs   s     
z,TestRegression.test_lstsq_complex_larger_rhsupperTFc                 C   s(   t jjt d|d}|jdksJ d S )N)r   r   )rl   r   )r.   r   r;   r/   rd   )r   rl   rh   r   r   r   test_cholesky_empty_array   s   z(TestRegression.test_cholesky_empty_arrayrtolr(   rD   rD   c                 C   s,   t d}t jj||d}|jdksJ d S )N)rD   rC   r,   )rn   ro   )r.   r/   r   rN   r   )r   rn   rA   rh   r   r   r   test_matrix_rank_rtol_argument   s   
z-TestRegression.test_matrix_rank_rtol_argumentc                 C   s   t jdt jd}t |d| fj}t ddgddgg}t d| |fj}tdD ]}|| }t ||  }|dkrBJ dq+d S )	Ni  r   ir   rF      FzHunexpected result from matmul, probably due to OpenBLAS threading issues)	r.   r   r   vstackTr   rangeisclosesum)r   rA   srcmatrixexpectediresult
mismatchesr   r   r   test_openblas_threading   s   z&TestRegression.test_openblas_threadingN)__name__
__module____qualname__r   r'   r6   r:   r>   rB   rT   r]   rk   pytestmarkparametrizerm   r.   r/   rp   r}   r   r   r   r   r      s    

-

r   )__doc__r   numpyr.   r   r   r   r   r   r   numpy.testingr   r	   r
   r   r   r   r   r   r   r   r   <module>   s      