U
    »mœd8  ã                   @   sÔ  d dl Z d dlZd dlmZ d dlZd dlm	  m
Z dZdd„ eD ƒZe d ddd gdd d dgddd d gg¡Ze d dgdd gg¡Zejdd d dgdddd gd ddd gd d ddgged	�Zd
d„ eD ƒZdd„ eD ƒZdd„ eD ƒZe jjdeed�Ze jjdeed�Ze jjdeed�Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZ edd„ ƒZ!edd „ ƒZ"ed!d"„ ƒZ#ed#d$„ ƒZ$ed%d&„ ƒZ%ed'd(„ ƒZ&ed)d*„ ƒZ'ed+d,„ ƒZ(ed-d.„ ƒZ)ed/d0„ ƒZ*ed1d2„ ƒZ+ed3d4„ ƒZ,ed5d6„ ƒZ-ed7d8„ ƒZ.ed9d:„ ƒZ/ed;d<„ ƒZ0ed=d>„ ƒZ1d?d@„ Z2edAdB„ ƒZ3ee j dCdDdEdFdGdHdIdJdKdLdMg
¡dNdO„ ƒƒZ4ee j dCdPdQg¡dRdS„ ƒƒZ5edTdU„ ƒZ6edVdW„ ƒZ7edXdY„ ƒZ8dZd[„ Z9d\d]„ Z:ed^d_„ ƒZ;dS )`é    N)ÚbsrÚcooÚcscÚcsrÚdiaZdokZlilc                 C   s   g | ]}t tj|› d �ƒ‘qS )Z_array)ÚgetattrÚscipyÚsparse)Ú.0ÚT© r   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/sparse/tests/test_array_api.pyÚ
<listcomp>	   s    r   é   é   é   é   )Zdtypec                 C   s   g | ]}|t ƒ‘qS r   ©ÚA©r
   Zsparrayr   r   r   r       s     c                 C   s   g | ]}|t ƒ‘qS r   ©ÚBr   r   r   r   r   !   s     c                 C   s   g | ]}|t ƒ‘qS r   ©ÚXr   r   r   r   r   "   s     r   )Zidsr   r   c                 C   sL   t | jdd�tjƒrtdƒ‚| jdd�jdks2t‚| jdd�jdksHt‚d S )Nr   ©ZaxisúExpected array, got matrix)r   r   )r   )Ú
isinstanceÚsumÚnpÚmatrixÚAssertionErrorÚshaper   r   r   r   Útest_sum/   s
    ÿr"   c                 C   s    t | jdd�tjƒrtdƒ‚d S )Nr   r   r   )r   Zmeanr   r   r    r   r   r   r   Ú	test_mean7   s    ÿr#   c                 C   s   t |  ¡ tjƒrtdƒ‚d S ©Nr   )r   Útodenser   r   r    r   r   r   r   Útest_todense=   s    ÿr&   c              	   C   s   | j jd d… dkrd S t t¡� | dd d …f  W 5 Q R X t t¡� | d d …df  W 5 Q R X t t¡� | dddgf  W 5 Q R X t t¡� | ddgdf  W 5 Q R X | dg jsÄtdƒ‚| dddggf jsàtdƒ‚| ddggdf jsütdƒ‚| d d …ddgf j�stdƒ‚d S )	Nr   )r   r   r   r   r   r   z(Expected sparse array, got sparse matrixz"Expected ndarray, got sparse arrayz)Expected sparse array, got something else)Ú	__class__Ú__name__ÚpytestÚraisesÚNotImplementedErrorÚ	_is_arrayr    r   r   r   r   Útest_indexingC   s    r-   c                 C   s*   t j | j¡}t| | t jƒr&tdƒ‚d S r$   )r   Úrandomr!   r   r   r    )r   r   r   r   r   Útest_dense_additionZ   s    r/   c                 C   s   | |  j stdƒ‚d S r$   ©r,   r    r   r   r   r   Útest_sparse_addition`   s    r1   c                 C   s(   t  | |   ¡ |  d¡ ¡ k¡s$t‚d S ©Nr   )r   Úallr%   Úpowerr    r   r   r   r   Útest_elementwise_mule   s    r5   c              	   C   sœ   t  t¡� d |   W 5 Q R X t  t¡�* t d¡tj t 	d¡ 
dd¡¡  W 5 Q R X t d|  |  ¡ d k¡svt‚t |  ¡ |  |  ¡ d k¡s˜t‚d S )Nr   é   r   )r)   r*   Ú	TypeErrorÚ
ValueErrorr   Úeyer   r	   Ú	csr_arrayZarangeZreshaper3   r%   r    r   r   r   r   Útest_elementwise_rmulj   s    .r;   c                 C   s,   t  | | j  ¡ |  | j¡ ¡ k¡s(t‚d S ©N)r   r3   r   r%   Údotr    r   r   r   r   Útest_matmulw   s    r>   c                 C   s(   | d j stdƒ‚| d j s$tdƒ‚d S )Nr   r   r   r0   r   r   r   r   Útest_pow|   s    r?   c                 C   s   t | |  tjƒst‚d S r<   )r   r   Zndarrayr    r   r   r   r   Útest_sparse_divide‚   s    r@   c                 C   s   | d j stdƒ‚d S )Nr   r   r0   r   r   r   r   Útest_dense_divide‡   s    rA   c              	   C   s"   t  tj¡� | j W 5 Q R X d S r<   )r)   Úwarnsr   ÚVisibleDeprecationWarningr   r   r   r   r   Útest_no_A_attrŒ   s    rD   c              	   C   s"   t  tj¡� | j W 5 Q R X d S r<   )r)   rB   r   rC   ÚHr   r   r   r   Útest_no_H_attr’   s    rF   c                 C   s$   |   d¡jst‚|  d¡js t‚d S )Nr   )Zgetcolr,   r    Zgetrowr   r   r   r   Útest_getrow_getcol˜   s    rG   c                 C   s2   | j d krd S | j  ¡ }dD ]}||kst‚qd S )N)r   Zmatrices)Ú__doc__Úlowerr    )r   ZdocstrÚphraser   r   r   Útest_docstrž   s
    

rK   c                 C   s2   t  | ¡}t |ddddg | ddddg ¡ d S )Nr   r   r   r   )ÚsplaZaslinearoperatorÚnptÚassert_allclose)r   ÚLr   r   r   Útest_as_linearoperatorª   s    
rP   c                 C   sL   | j jd d… dkrd S t | ¡}|js,t‚t | ¡ t	j
 |  ¡ ¡¡ d S ©Nr   r   )r'   r(   rL   Úinvr,   r    rM   rN   r%   r   Úlinalg©r   ÚCr   r   r   Útest_inv°   s
    

rV   c                 C   sV   | j jd d… dkrd S tj | ¡}t | ¡}|js8t‚t	 
| ¡ t |¡ ¡ ¡ d S rQ   )r'   r(   r   r	   Z
csc_matrixrL   Úexpmr,   r    rM   rN   r%   )r   ZBmatrU   r   r   r   Ú	test_expm»   s    

þrX   c              	   C   sH   | j jd d… dkrd S t t | t ddg¡¡t | ¡ddg ¡ d S ©Nr   r   r   r   )	r'   r(   rM   rN   rL   Zexpm_multiplyr   ÚarrayrW   r   r   r   r   Útest_expm_multiplyË   s    þr[   c                 C   s&   t  | ¡}t |tj |  ¡ ¡¡ d S r<   )rL   ÚnormrM   rN   r   rS   r%   )r   rU   r   r   r   Ú	test_normÖ   s    
r]   c                 C   s(   t  | ¡}t |tj |  ¡ d¡¡ d S )Nr   )rL   Z
onenormestrM   rN   r   rS   r\   r%   rT   r   r   r   Útest_onenormestÜ   s    
r^   c                 C   sF   | j jd d… dkrd S t t | ddg¡tj |  	¡ ddg¡¡ d S )Nr   )r   r   r   r   )
r'   r(   rM   rN   rL   Zspsolver   rS   Úsolver%   r   r   r   r   Útest_spsolveâ   s    þr`   c               	   C   sL   t j ddddgddddgddddgddddgg¡} t | ddddg¡ d S ©Nr   r   r   r   r   )r   r	   r:   rL   Zspsolve_triangularr   r   r   r   Útest_spsolve_triangularí   s    



ürb   c                 C   sR   | j jd d… dkrd S t | ¡}t |t ddg¡ƒtj 	|  
¡ ddg¡¡ d S rY   )r'   r(   rL   Z
factorizedrM   rN   r   rZ   rS   r_   r%   )r   ÚLUr   r   r   Útest_factorized÷   s    
þrd   ÚsolverZbicgZbicgstabZcgZcgsZgmresZlgmresÚminresZqmrZgcrotmkZtfqmrc                 C   s\   |dkri }nddi}t t|ƒ| t ddg¡f|Ž\}}|dksDt‚tj|ddgdd� d S )	Nrf   Úatolgñhãˆµøä>r   r   r   gš™™™™™¹?©rg   )r   rL   r   rZ   r    rM   rN   )r   re   ÚkwargsÚxÚinfor   r   r   Útest_solvers  s    "rl   ZlsqrZlsmrc                 C   s4   t t|ƒ| dddgƒ^}}t | | dddg¡ d S )Nr   r   r   )r   rL   rM   rN   )r   re   rj   Ú_r   r   r   Útest_lstsqr  s    rn   c                 C   s.   t j| dd�\}}t | | |d | ¡ d S ©Nr   ©Úkr   )rL   ZeigsrM   rN   ©r   ÚeÚvr   r   r   Ú	test_eigs  s
    
þru   c                 C   s8   | | j  } tj| dd�\}}t | | |d | ¡ d S ro   )r   rL   ZeigshrM   rN   rr   r   r   r   Ú
test_eigsh'  s    

þrv   c                 C   sZ   t j| dd�\}}}tj |  ¡ ¡\}}}t |¡}t |d d… ¡}tj||dd� d S )Nr   rp   gü©ñÒMbP?rh   )	rL   Zsvdsr   rS   Zsvdr%   ÚsortrM   rN   )r   ÚuÚsZvhÚu2Ús2Zvh2r   r   r   Ú	test_svds1  s
    
r|   c               
   C   sj   t j ddddgddddgddddgddddgg¡} t | ¡}t | t 	ddddg¡¡ddddg¡ d S ra   )
r   r	   Ú	csc_arrayrL   ZsplurM   rN   r_   r   rZ   ©r   rc   r   r   r   Ú	test_splu:  s    



ü
r   c               
   C   sj   t j ddddgddddgddddgddddgg¡} t | ¡}t | t 	ddddg¡¡ddddg¡ d S ra   )
r   r	   r}   rL   ZspilurM   rN   r_   r   rZ   r~   r   r   r   Ú
test_spiluE  s    



ü
r€   c                 C   s    t  | d  ¡ |  ¡ d ¡ d S r2   )rM   Zassert_equalr%   r   r   r   r   Útest_power_operatorP  s    r�   )<r)   Únumpyr   Znumpy.testingÚtestingrM   Zscipy.sparser   Zscipy.sparse.linalgr	   rS   rL   Zsparray_typesZsparray_classesrZ   r   r   Úfloatr   ZsparraysZsquare_sparraysZeig_sparraysÚmarkZparametrizeZparametrize_sparraysZparametrize_square_sparraysZparametrize_eig_sparraysr"   r#   r&   r-   r/   r1   r5   r;   r>   r?   r@   rA   rD   rF   rG   rK   rP   rV   rX   r[   r]   r^   r`   rb   rd   rl   rn   ru   rv   r|   r   r€   r�   r   r   r   r   Ú<module>   sê   ÿ


ýþ



üû  ÿ  ÿ  ÿ



























 ÿþþ

	
