o
    i                     @   s  d dl Z d dlZd dlmZ d dlm  mZ d dl	m
Z
mZ zd dlZW n ey0   dZY nw e jjedu ddZdZe de jde jjedgdfZejejejejejejgZe jed	d
d Ze jed	dd Ze jdd Ze j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"d# Z(d$d% Z)d&d' Z*d(d) Z+d*d+ Z,d,d- Z-d.d/ Z.d0d1 Z/d2d3 Z0dS )4    N)assert_allcloseassert_equalzpydata/sparse not installed)reasonz;pydata/sparse (0.8) does not implement necessary operationsCOODOK)marks)paramsc                 C   s   t t| jS N)getattrsparseparamrequest r   g/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/scipy/sparse/linalg/tests/test_pydata_sparse.py
sparse_cls"   s   r   c                 C   s   | j S r	   )r   r   r   r   r   sp_sparse_cls'   s   r   c                 C   s*   t jd t jdd}||| |fS Ni  	   )nprandomseedrand)r   r   A_denser   r   r   same_matrix,   s   r   c                 C   sB   t jd t jdd}||j }| |}t jd}|||fS r   )r   r   r   r   T)r   r   A_sparsebr   r   r   matrices3   s   

r   c                 C   sL   | \}}}t j||dd\}}|dksJ t|tjsJ t|| | d S )NgV瞯<atolr   )splingmres
isinstancer   ndarrayr   )r   r   r   r   xinfor   r   r   test_isolve_gmres=   s
   
r'   c                 C   <   | \}}}t ||}t ||}t|d |d dd d S )Nr   g?̔>r   )r!   lsmrr   r   r   r   r   res0resr   r   r   	test_lsmrG      
r-   c                  C   s6   t jtdtdtddd } t| jd d S )N)
      r/   r0   )Ar   x0r   )r0   )r!   r)   r   oneszerosr   shape)r%   r   r   r   test_lsmr_output_shapeO   s   &r6   c                 C   r(   )Nr   gh㈵>r   )r!   lsqrr   r*   r   r   r   	test_lsqrT   r.   r8   c                 C   s   | \}}}t |d }||}tj|d|d\}}tj|d|d\}}	t|| t|	| ||fD ]B}
tj||d|d\}}tj||
d|d\}}	t|| t|	| tj||d|d\}}tj||
d|d\}}	t|| t|	| q3d S )N      kv0)Mr<   r=   )r   diag	__class__r!   eigsr   eigsh)r   r   r   r=   M_denseM_sparsew_densev_densewvr>   r   r   r   	test_eigs[   s"   






rI   c           
      C   sX   | \}}}t j|d|d\}}}t j|d|d\}}}	t|| t|| t|	| d S )Nr9   r;   )r!   svdsr   )
r   r   r   r=   u0s0vt0usvtr   r   r   	test_svdsu   s   


rQ   c           	      C   sR   | \}}}|d d d f }t ||\}}t ||\}}t|| t|| d S r	   )r!   lobpcgr   )	r   r   r   r%   XrE   rF   rG   rH   r   r   r   test_lobpcg   s   

rT   c                 C   s  | \}}}t jt|d}tt||}t||}t|t j	s%J t
|| tt||}tj||dd}t|t j	sCJ t
|| tt||}t||}t|t j	s_J t
|| tt|t|}t||}t|t|sJ t
| |  d S )Nr:   T)use_umfpack)r   r   r   lenr!   spsolvesp
csc_matrixr#   r$   r   typetoarray)r   r   r   r   b2r2   r%   r   r   r   test_spsolve   s(   



r]   c                 C   s   | \}}}t |}t|}t|}t|j|sJ t|j|s"J |tt	
||jt	|ff}|tt	
|t	||jff}|j|j |j |j }	t|	 |  || }
t|
t	|dd d S )Ng|=r   )rV   rZ   r!   splur#   LUrX   rY   r   r3   perm_rarangeperm_cr   r   r[   solveeye)r   r   r   r   nr   luPrPcA2zr   r   r   	test_splu   s   

$$rl   c                 C   sf   | \}}}t |}t|}t|j|sJ t|j|sJ || }t|t	
t|dd d S )NgMbP?r   )rZ   r!   spilur#   r_   r`   rd   r[   r   r   re   rV   )r   r   r   r   r   rg   rk   r   r   r   
test_spilu   s   

rn   c                 C   s2   | \}}}t |}t||}t|| | d S r	   )r   trilr!   spsolve_triangularr   )r   r   r   r   r%   r   r   r   test_spsolve_triangular   s   

rq   c                 C   s,   | \}}}t |}t |}t|| d S r	   )r!   
onenormestr   )r   r   r   r   est0estr   r   r   test_onenormest   s   


ru   c                 C   :   | \}}}t t|}t |}t| |  d S r	   )r!   invrX   rY   r   r[   r   r   r   r   r2   r%   r   r   r   test_inv      

ry   c                 C   rv   r	   )r!   expmrX   rY   r   r[   rx   r   r   r   	test_expm   rz   r|   c                 C   s0   | \}}}t ||}t ||}t|| d S r	   )r!   expm_multiplyr   rx   r   r   r   test_expm_multiply   s   
r~   c                 C   s   | \}}||k  sJ d S r	   )allr   	sp_sparse	pd_sparser   r   r   test_eq      r   c                 C   s   | \}}||k  rJ d S r	   )anyr   r   r   r   test_ne   r   r   )1pytestnumpyr   scipy.sparser   rX   scipy.sparse.linalglinalgr!   numpy.testingr   r   	Exceptionmarkskipif
pytestmarkmsgr   xfailsparse_params
bsr_matrix
csr_matrix
coo_matrixrY   
dia_matrix
dok_matrixscipy_sparse_classesfixturer   r   r   r   r'   r-   r6   r8   rI   rQ   rT   r]   rl   rn   rq   ru   ry   r|   r~   r   r   r   r   r   r   <module>   sb    






	
