o
    Ö­jy7  ã                   @   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 g d¢g d¢g d¢g¡Ze d dgd	d gg¡Zejg d
¢g d¢g d¢g d¢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e jj'd.d/„ ƒƒZ(ed0d1„ ƒZ)ed2d3„ ƒZ*ed4d5„ ƒZ+ed6d7„ ƒZ,ed8d9„ ƒZ-ed:d;„ ƒZ.ed<d=„ ƒZ/ed>d?„ ƒZ0ed@dA„ ƒZ1edBdC„ ƒZ2edDdE„ ƒZ3e j dFdGdHg¡dIdJ„ ƒZ4edKdL„ ƒZ5ee j dMg dN¢¡dOdP„ ƒƒZ6ee j dMdQdRg¡dSdT„ ƒƒZ7edUdV„ ƒZ8edWdX„ ƒZ9edYdZ„ ƒZ:d[d\„ Z;d]d^„ Z<e j d_ej	j=d`dagfej	j>d`dagfej	j?dbdcgfg¡e j ddej@ejAg¡dedf„ ƒƒZBdgdh„ ZCdidj„ ZDdkdl„ ZEdmdn„ ZFdodp„ ZGdqdr„ ZHdsdt„ ZIdudv„ ZJdwdx„ ZKe j dyej	jLej	jMf¡dzd{„ ƒZNd|d}„ ZOd~d„ ZPd€d�„ ZQd‚dƒ„ ZRe j d„d…ej	jSfd†ej	jTfdHej	jUfdGej	jVfd‡ej	jWfdˆej	jXfd‰ej	jYff¡dŠd‹„ ƒZZdS )Œé    N)ÚbsrÚcooÚcscÚcsrÚdiaÚdokÚlilc                 C   s   g | ]}t tj|› d �ƒ‘qS )Ú_array)ÚgetattrÚscipyÚsparse)Ú.0ÚT© r   ú^/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/sparse/tests/test_array_api.pyÚ
<listcomp>
   s    ÿr   )r   é   é   r   )r   r   r   é   )r   é   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   ©Údtypec                 C   ó   g | ]}|t ƒ‘qS r   ©ÚA©r   Úsparrayr   r   r   r   !   ó    c                 C   r   r   ©ÚBr   r   r   r   r   "   r   c                 C   r   r   )ÚXr   r   r   r   r   #   r   r   )Úidsr   r    c                 C   sL   t | jdd�tjƒrJ dƒ‚| jdd�jdksJ ‚| jdd�jdks$J ‚d S )Nr   ©ÚaxisúExpected array, got matrix)r   r   )r   )Ú
isinstanceÚsumÚnpÚmatrixÚshaper   r   r   r   Útest_sum0   s
   ÿr*   c                 C   s    t | jdd�tjƒrJ dƒ‚d S )Nr   r"   r$   )r%   Úmeanr'   r(   r   r   r   r   Ú	test_mean8   s   ÿr,   c                 C   s    t | dƒrt| jdd�tjƒrJ dƒ‚t | dƒr&t| jdd�tjƒr&J dƒ‚t | dƒr9t| jdd�tjƒr9J dƒ‚t | dƒrLt| jdd�tjƒrNJ dƒ‚d S d S )NÚminr   r"   r$   ÚmaxÚargminÚargmax)Úhasattrr%   r-   r'   r(   r.   r/   r0   r   r   r   r   Útest_min_max>   s$   
ÿ
ÿ
ÿ
ÿÿr2   c                 C   s   t |  ¡ tjƒrJ dƒ‚d S ©Nr$   )r%   Útodenser'   r(   r   r   r   r   Útest_todenseO   s   ÿr5   c                 C   sÎ   | j jd d… dv rd S | dd d …f | d d …df | dddgf | ddgdf | dg | d d …ddgf | ddgd d …f | dddggf | ddggdf f	}|D ]}t|tjjƒsdJ d|jj› �ƒ‚qRd S )Nr   )r   r   r   r   r   r   zExpected sparse array, got )Ú	__class__Ú__name__r%   r   r   r   Ú_class__)r   Úall_resÚresr   r   r   Útest_indexingU   s"   ÷ÿÿr;   c                 C   s*   t j | j¡}t| | t jƒrJ dƒ‚d S r3   )r'   Úrandomr)   r%   r(   )r   r    r   r   r   Útest_dense_additionk   s   r=   c                 C   s   t | |  tjjƒsJ dƒ‚d S r3   ©r%   r   r   r   r   r   r   r   Útest_sparse_additionq   ó   r?   c                 C   s(   t  | |   ¡ |  d¡ ¡ k¡sJ ‚d S )Nr   )r'   Úallr4   Úpowerr   r   r   r   Útest_elementwise_mulv   s   (rC   c                 C   sÄ   t  t¡� d |   W d   ƒ n1 sw   Y  t  t¡� t d¡tj t 	d¡ 
dd¡¡  W d   ƒ n1 s;w   Y  t d|  |  ¡ d k¡sOJ ‚t |  ¡ |  |  ¡ d k¡s`J ‚d S )Nr   é   r   )ÚpytestÚraisesÚ	TypeErrorÚ
ValueErrorr'   Úeyer   r   Ú	csr_arrayÚarangeÚreshaperA   r4   r   r   r   r   Útest_elementwise_rmul{   s   
ÿ&ÿ&rM   c                 C   s,   t  | | j  ¡ |  | j¡ ¡ k¡sJ ‚d S ©N)r'   rA   r   r4   Údotr   r   r   r   Útest_matmulˆ   s   ,rP   c                 C   sr   t | d tjjƒsJ dƒ‚t | d  ¡ |  ¡ d ¡ tjt	dd�� | d  W d   ƒ d S 1 s2w   Y  d S )Nr   r$   z
zero power)Úmatchr   )
r%   r   r   r   ÚnptÚassert_equalr4   rE   rF   ÚNotImplementedErrorr   r   r   r   Útest_power_operator�   s
   
"ÿrU   c                 C   s   t | |  tjƒs
J ‚d S rN   )r%   r'   Úndarrayr   r   r   r   Útest_sparse_divide™   s   rW   c                 C   sJ   t  t¡� t| |  ¡  tjjƒsJ ‚W d   ƒ d S 1 sw   Y  d S rN   )rE   ÚwarnsÚRuntimeWarningr%   r4   r   r   r   r   r   r   r   Útest_sparse_dense_divide�   s   "ÿrZ   c                 C   s   t | d tjjƒsJ dƒ‚d S )Nr   r$   r>   r   r   r   r   Útest_dense_divide£   r@   r[   c                 C   ó6   t  t¡� | j W d   ƒ d S 1 sw   Y  d S rN   )rE   rF   ÚAttributeErrorr   r   r   r   r   Útest_no_A_attr¨   ó   "ÿr^   c                 C   r\   rN   )rE   rF   r]   ÚHr   r   r   r   Útest_no_H_attr®   r_   ra   c                 C   s4   t |  d¡tjjƒsJ ‚t |  d¡tjjƒsJ ‚d S )Nr   )r%   Ú_getcolr   r   r   Ú_getrowr   r   r   r   Útest_getrow_getcol´   s   rd   c                 C   s*   t  | ¡}t |g d¢ | g d¢ ¡ d S )N©r   r   r   r   )ÚsplaÚaslinearoperatorrR   Úassert_allclose)r   ÚLr   r   r   Útest_as_linearoperator¼   s   
 rj   c                 C   sT   | j jd d… dkrd S t | ¡}t|tjjƒsJ ‚t 	| 
¡ tj |  
¡ ¡¡ d S ©Nr   r   )r6   r7   rf   Úinvr%   r   r   r   rR   rh   r4   r'   Úlinalg©r   ÚCr   r   r   Útest_invÂ   s
   
 rp   c                 C   s^   | j jd d… dkrd S tj | ¡}t | ¡}t|tjjƒs J ‚t	 
| ¡ t |¡ ¡ ¡ d S rk   )r6   r7   r   r   Ú
csc_matrixrf   Úexpmr%   r   rR   rh   r4   )r   ÚBmatro   r   r   r   Ú	test_expmÍ   s   
þrt   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   )	r6   r7   rR   rh   rf   Úexpm_multiplyr'   Úarrayrr   r   r   r   r   Útest_expm_multiplyÝ   s   þrx   c                 C   s&   t  | ¡}t |tj |  ¡ ¡¡ d S rN   )rf   ÚnormrR   rh   r'   rm   r4   )r   ro   r   r   r   Ú	test_normè   s   
rz   c                 C   s(   t  | ¡}t |tj |  ¡ d¡¡ d S )Nr   )rf   Ú
onenormestrR   rh   r'   rm   ry   r4   rn   r   r   r   Útest_onenormestî   s   
r|   c                 C   sF   | j jd d… dvrd S t t | ddg¡tj |  	¡ ddg¡¡ d S )Nr   )r   r   r   r   )
r6   r7   rR   rh   rf   Úspsolver'   rm   Úsolver4   r   r   r   r   Útest_spsolveô   s   þr   Úfmtr   r   c                 C   sR   g d¢g d¢g d¢g d¢g}| dkrt j |¡}nt j |¡}t |g d¢¡ d S )N©r   r   r   r   ©r   r   r   r   ©r   r   r   r   ©r   r   r   r   r   re   )r   r   rJ   Ú	csc_arrayrf   Úspsolve_triangular)r€   Úarrr    r   r   r   Útest_spsolve_triangularÿ   s   ürˆ   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 ru   )r6   r7   rf   Ú
factorizedrR   rh   r'   rw   rm   r~   r4   )r   ÚLUr   r   r   Útest_factorized  s   
þr‹   Úsolver)
ÚbicgÚbicgstabÚcgÚcgsÚgmresÚlgmresÚminresÚqmrÚgcrotmkÚtfqmrc                 C   s`   |dkri }nddi}t t|ƒ| t ddg¡fi |¤Ž\}}|dks$J ‚tj|ddgdd� d S )	Nr“   Úatolgñhãˆµøä>r   r   r   gš™™™™™¹?©r—   )r
   rf   r'   rw   rR   rh   )r   rŒ   ÚkwargsÚxÚinfor   r   r   Útest_solvers  s   &rœ   ÚlsqrÚlsmrc                 C   s0   t t|ƒ| g d¢ƒ^}}t | | g d¢¡ d S )N©r   r   r   )r
   rf   rR   rh   )r   rŒ   rš   Ú_r   r   r   Útest_lstsqr+  s   r¡   c                 C   s.   t j| dd�\}}t | | |d | ¡ d S ©Nr   ©Úkr   )rf   ÚeigsrR   rh   ©r    ÚeÚvr   r   r   Ú	test_eigs5  s
   
þr©   c                 C   s8   | | j  } tj| dd�\}}t | | |d | ¡ d S r¢   )r   rf   ÚeigshrR   rh   r¦   r   r   r   Ú
test_eigsh>  s   

þr«   c                 C   sZ   t j| dd�\}}}tj |  ¡ ¡\}}}t |¡}t |d d… ¡}tj||dd� d S )Nr   r£   gü©ñÒMbP?r˜   )	rf   Úsvdsr'   rm   Úsvdr4   ÚsortrR   rh   )r    ÚuÚsÚvhÚu2Ús2Úvh2r   r   r   Ú	test_svdsH  s
   
rµ   c                  C   ód   t j g d¢g d¢g d¢g d¢g¡} t | ¡}tj| t 	g d¢¡¡tj
g d¢tjd�ddd	� d S ©
Nr�   r‚   rƒ   r„   re   r   g›+¡†›„=gMgâñžµ<)Úrtolr—   )r   r   r…   rf   ÚsplurR   rh   r~   r'   rw   ÚasarrayÚfloat64©r    rŠ   r   r   r   Ú	test_spluQ  ó   ü

ýr½   c                  C   r¶   r·   )r   r   r…   rf   ÚspilurR   rh   r~   r'   rw   rº   r»   r¼   r   r   r   Ú
test_spilu`  r¾   rÀ   zcls,indices_attrsÚindicesÚindptrÚrowÚcolÚexpected_dtypec           	      C   s  t j t d¡ dd¡¡}|j|j |¡|j	 |¡ff}| |ƒ}|D ]}t
||ƒj|ks.J ‚q"| |dd�}|D ]}t
||ƒj|ksCJ ‚q7t| t jjjƒr†| ¡ }|j|j |¡|j |¡f}| |ƒ}|D ]}t
||ƒj|kspJ ‚qd| |dd�}|D ]}t
||ƒj|ks…J ‚qyd S d S )Né	   r   )r   r   )r)   )r   r   Ú	coo_arrayr'   rK   rL   ÚdatarÃ   ÚastyperÄ   r
   r   Ú
issubclassÚ_compressedÚ
_cs_matrixÚtocsrrÁ   rÂ   )	ÚclsÚindices_attrsrÅ   Úinput_arrayÚ	coo_tupleÚresultÚattrÚinput_array_csrÚ	csr_tupler   r   r   Útest_index_dtype_compressedo  s4   

þþ

ýòrÖ   c                  C   s&   t j g d¢¡} t| t jjƒrJ ‚d S )N)r   r   r   )r   r   Údiagsr%   r   ©Úmr   r   r   Útest_default_is_matrix_diags¤  s   rÚ   c                  C   ó"   t j d¡} t| t jjƒrJ ‚d S ©Nr   )r   r   rI   r%   r   rØ   r   r   r   Útest_default_is_matrix_eye©  ó   rÝ   c                  C   s,   t j g d¢ddd¡} t| t jjƒrJ ‚d S )NrŸ   r   r   )r   r   Úspdiagsr%   r   rØ   r   r   r   Útest_default_is_matrix_spdiags®  s   rà   c                  C   rÛ   rÜ   )r   r   Úidentityr%   r   rØ   r   r   r   Útest_default_is_matrix_identity³  rÞ   râ   c                  C   sH   t j t ddgddgg¡t ddgddgg¡¡} t| t jjƒr"J ‚d S )Nr   r   r   r   ©r   r   Úkronr'   rw   r%   r   rØ   r   r   r   Ú!test_default_is_matrix_kron_dense¸  ó   (ÿrå   c                  C   sH   t j t ddgddgg¡t ddgddgg¡¡} t| t jjƒr"J ‚d S )Nr   r   r   r   r   rã   rØ   r   r   r   Ú"test_default_is_matrix_kron_sparse¿  ræ   rç   c                  C   sH   t j t ddgddgg¡t ddgddgg¡¡} t| t jjƒr"J ‚d S )Nr   r   )r   r   Úkronsumr'   rw   r%   r   rØ   r   r   r   Útest_default_is_matrix_kronsumÆ  ræ   ré   c                  C   ó$   t j dd¡} t| t jjƒrJ ‚d S rÜ   )r   r   r<   r%   r   rØ   r   r   r   Útest_default_is_matrix_randomÍ  ó   rë   c                  C   rê   rÜ   )r   r   Úrandr%   r   rØ   r   r   r   Útest_default_is_matrix_randÒ  rì   rî   Úfnc                 C   sL   t j t d¡¡}t j ddgddgg¡}| ||gƒ}t|t jjƒr$J ‚dS )zbSame idea as `test_default_construction_fn_matrices`, but for the
    stacking creation functions.r   r   r   N)r   r   Ú
coo_matrixr'   rI   r%   r   )rï   r   r   rÙ   r   r   r   Útest_default_is_matrix_stacks×  s   rñ   c                  C   sˆ   t j t d¡¡} t j dgdgg¡}t j dgg¡}t j | ||f¡}t|t jjƒr-J ‚t j | dgd|gg¡}t|t jjƒrBJ ‚dS )z]Same idea as `test_default_construction_fn_matrices`, but for the block
    creation functionr   r   r   N)	r   r   rð   r'   rI   Ú
block_diagr%   r   Úbmat)r   r   ro   rÙ   r   r   r   Ú,test_blocks_default_construction_fn_matricesá  s   rô   c               	   C   sz   t D ]8} ttj| › d�ƒ}|ddggƒ}|j| ksJ ‚|j| ks"J ‚t t¡� d|_W d   ƒ n1 s5w   Y  qd S )Nr	   r   r   Úqqq)	Úsparray_typesr
   r   r   ÚformatÚ_formatrE   rF   r]   )r€   Úarr_clsÚMr   r   r   Útest_format_propertyñ  s   ÿ€ûrû   c                  C   sˆ   t j d¡} t j | ¡}t| t jjƒrJ ‚t|t jjƒsJ ‚t j |¡s&J ‚t j | ¡s.J ‚t j | ¡ ¡r8J ‚t j |  ¡ ¡rBJ ‚d S rÜ   )r   r   rI   rJ   r%   r   Úissparser4   ©rÙ   Úar   r   r   Útest_issparseû  ó   rÿ   c                  C   sˆ   t j d¡} t j | ¡}t| t jjƒrJ ‚t|t jjƒsJ ‚t j |¡r&J ‚t j | ¡s.J ‚t j | ¡ ¡r8J ‚t j |  ¡ ¡rBJ ‚d S rÜ   )r   r   rI   rJ   r%   r   Ú
isspmatrixr4   rý   r   r   r   Útest_isspmatrix
  r   r  )r€   rï   r   r   r   r   r   c                 C   s‚   t jjd| d�}t j |¡ | ¡}t|t jjƒrJ ‚t|t jjƒs#J ‚||ƒr)J ‚||ƒs/J ‚|| ¡ ƒr7J ‚|| ¡ ƒr?J ‚d S )Nr   )r÷   )r   r   rI   rJ   Úasformatr%   r   r4   )r€   rï   rÙ   rþ   r   r   r   Útest_isspmatrix_format  s   r  )[rE   Únumpyr'   Únumpy.testingÚtestingrR   Úscipy.sparser   Úscipy.sparse.linalgr   rm   rf   rö   Úsparray_classesrw   r   r   Úfloatr    ÚsparraysÚsquare_sparraysÚeig_sparraysÚmarkÚparametrizeÚparametrize_sparraysÚparametrize_square_sparraysÚparametrize_eig_sparraysr*   r,   r2   r5   r;   r=   r?   rC   rM   rP   rU   rW   Úthread_unsaferZ   r[   r^   ra   rd   rj   rp   rt   rx   rz   r|   r   rˆ   r‹   rœ   r¡   r©   r«   rµ   r½   rÀ   rJ   r…   rÇ   Úint64Úint32rÖ   rÚ   rÝ   rà   râ   rå   rç   ré   rë   rî   ÚhstackÚvstackrñ   rô   rû   rÿ   r  Úisspmatrix_bsrÚisspmatrix_cooÚisspmatrix_cscÚisspmatrix_csrÚisspmatrix_diaÚisspmatrix_dokÚisspmatrix_lilr  r   r   r   r   Ú<module>   s2   ÿýþüûÿÿÿ



























þþ

	
þþþ÷þ#
	







ùþ