3
OdB                 @   sx  d dl Z d dlZd dljZd dljjZd dl	m
Z
 yd dlZW n ek
rV   dZY nX e jjedkddZdZe jde jde jjedgdg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.dS )2    N)assert_allclosezpydata/sparse not installed)reasonz;pydata/sparse (0.8) does not implement necessary operationsZCOOZDOK)Zmarks)paramsc             C   s   t t| jS )N)getattrsparseparam)request r	   `/var/www/html/virt/lib64/python3.6/site-packages/scipy/sparse/linalg/tests/test_pydata_sparse.py
sparse_cls"   s    r   c             C   s   | j S )N)r   )r   r	   r	   r
   sp_sparse_cls'   s    r   c             C   s*   t jjd t j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jd t jjdd}||j }| |}t jjd}|||fS )Ni  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*tt|tjs:tt|| | d S )NgV瞯<)atolr   )splinZgmresAssertionError
isinstancer   ndarrayr   )r   r   r   r   xinfor	   r	   r
   test_isolve_gmres=   s
    
r   c             C   s<   | \}}}t j||}t j||}t|d |d dd d S )Nr   g?̔>)r   )r   Zlsmrr   )r   r   r   r   res0resr	   r	   r
   	test_lsmrG   s    
r"   c             C   s<   | \}}}t j||}t j||}t|d |d dd d S )Nr   gh㈵>)r   )r   Zlsqrr   )r   r   r   r   r    r!   r	   r	   r
   	test_lsqrN   s    
r#   c             C   s   | \}}}t j|d }|j|}tj|d|d\}}tj|d|d\}}	t|| t|	| x||gD ]}
tj||d|d\}}tj||
d|d\}}	t|| t|	| tj||d|d\}}tj||
d|d\}}	t|| t|	| qhW d S )N      )kv0)Mr&   r'   )r   Zdiag	__class__r   Zeigsr   Zeigsh)r   r   r   r'   ZM_denseZM_sparsew_densev_densewvr(   r	   r	   r
   	test_eigsU   s     






r.   c       
      C   sX   | \}}}t j|d|d\}}}t j|d|d\}}}	t|| t|| t|	| d S )Nr$   )r&   r'   )r   Zsvdsr   )
r   r   r   r'   Zu0s0Zvt0usZvtr	   r	   r
   	test_svdso   s    


r2   c       	      C   sR   | \}}}|d d d f }t j||\}}t j||\}}t|| t|| d S )N)r   Zlobpcgr   )	r   r   r   r   Xr*   r+   r,   r-   r	   r	   r
   test_lobpcgz   s    

r4   c             C   s  | \}}}t jjt|d}tjtj||}tj||}t|t j	sJt
t|| tjtj||}tj||dd}t|t j	st
t|| tjtj||}tj||}t|t j	st
t|| tjtj|tj|}tj||}t|t|st
t|j |j  d S )Nr%   T)Zuse_umfpack)r   r   r   lenr   Zspsolvesp
csc_matrixr   r   r   r   typetodense)r   r   r   r   Zb2x0r   r	   r	   r
   test_spsolve   s&    



r;   c             C   s   | \}}}t |}t|}tj|}t|j|s4tt|j|sDt|tj	t
j||jt
j|ff}|tj	t
j|t
j||jff}|j|j |j |j }	t|	j |j  |j|j }
t|
t
j|dd d S )Ng|=)r   )r5   r8   r   Zsplur   Lr   Ur6   r7   r   ZonesZperm_rZarangeZperm_cr   r   r9   solveeye)r   r   r   r   nr   luZPrZPcA2zr	   r	   r
   	test_splu   s    

$$rD   c             C   sf   | \}}}t |}tj|}t|j|s,tt|j|s<t|j|j }t	|t
jt|dd d S )NgMbP?)r   )r8   r   Zspilur   r<   r   r=   r>   r9   r   r   r?   r5   )r   r   r   r   r   rA   rC   r	   r	   r
   
test_spilu   s    

rE   c             C   s2   | \}}}t j|}tj||}t|| | d S )N)r   Ztrilr   Zspsolve_triangularr   )r   r   r   r   r   r	   r	   r
   test_spsolve_triangular   s    

rF   c             C   s,   | \}}}t j|}t j|}t|| d S )N)r   Z
onenormestr   )r   r   r   r   Zest0Zestr	   r	   r
   test_onenormest   s    


rG   c             C   s:   | \}}}t jtj|}t j|}t|j |j  d S )N)r   invr6   r7   r   r9   )r   r   r   r   r:   r   r	   r	   r
   test_inv   s    

rI   c             C   s:   | \}}}t jtj|}t j|}t|j |j  d S )N)r   Zexpmr6   r7   r   r9   )r   r   r   r   r:   r   r	   r	   r
   	test_expm   s    

rJ   c             C   s0   | \}}}t j||}t j||}t|| d S )N)r   Zexpm_multiplyr   )r   r   r   r   r:   r   r	   r	   r
   test_expm_multiply   s    
rK   c             C   s   | \}}||kj  std S )N)allr   )r   	sp_sparse	pd_sparser	   r	   r
   test_eq   s    rO   c             C   s   | \}}||kj   std S )N)anyr   )r   rM   rN   r	   r	   r
   test_ne   s    rQ   )/ZpytestZnumpyr   Zscipy.sparser   r6   Zscipy.sparse.linalgZlinalgr   Znumpy.testingr   	ExceptionmarkZskipifZ
pytestmarkmsgr   ZxfailZsparse_paramsZ
bsr_matrixZ
csr_matrixZ
coo_matrixr7   Z
dia_matrixZ
dok_matrixZscipy_sparse_classesZfixturer   r   r   r   r   r"   r#   r.   r2   r4   r;   rD   rE   rF   rG   rI   rJ   rK   rO   rQ   r	   r	   r	   r
   <module>   sN   



