o
    e4                     @   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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? Z/ed@dA Z0edBdC Z1edDdE Z2dFdG Z3edHdI Z4ee jdJg dKdLdM Z5ee jdJdNdOgdPdQ Z6edRdS Z7edTdU Z8edVdW Z9dXdY Z:dZd[ Z;e jd\ej	j<d]d^gfej	j=d]d^gfej	j>d_d`gfge jdaej?ej@gdbdc ZAddde ZBdfdg ZCdhdi ZDdjdk ZEdldm ZFdndo ZGdpdq ZHdrds ZIdtdu ZJe jdvej	jKej	jLfdwdx ZMdydz ZNd{d| ZOd}d~ ZPdd ZQe jddej	jRfdej	jSfdej	jTfdej	jUfdej	jVfdej	jWfdej	jXffdd ZYd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   P/var/www/myenv/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_sum/   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_mean7   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_todenseN   s   r5   c                 C   sn  | j jd d dv rd S tt | dd d f  W d    n1 s$w   Y  tt | d d df  W d    n1 sAw   Y  tt | dddgf  W d    n1 s^w   Y  tt | ddgdf  W d    n1 s{w   Y  | dg jsJ d| dddggf jsJ d| ddggdf jsJ d| d d ddgf jsJ 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   test_indexingT   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   | |  j s	J dd S r3   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   (rD   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   )r8   r9   	TypeError
ValueErrorr'   eyer   r   	csr_arrayarangereshaperB   r4   r   r   r   r   test_elementwise_rmul{   s   
&&rL   c                 C   s,   t | | j  | | j ksJ d S N)r'   rB   r   r4   dotr   r   r   r   test_matmul   s   ,rO   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   r8   r9   r:   r   r   r   r   test_power_operator   s
   
"rS   c                 C   s   t | |  tjs
J d S rM   )r%   r'   ndarrayr   r   r   r   test_sparse_divide   s   rU   c                 C   sB   t t | |   jsJ W d    d S 1 sw   Y  d S rM   )r8   warnsRuntimeWarningr4   r;   r   r   r   r   test_sparse_dense_divide   s   "rX   c                 C   s   | d j s	J dd S )Nr   r$   r?   r   r   r   r   test_dense_divide   rA   rY   c                 C   8   t tj | j W d    d S 1 sw   Y  d S rM   )r8   rV   r'   VisibleDeprecationWarningr   r   r   r   r   test_no_A_attr      "r\   c                 C   rZ   rM   )r8   rV   r'   r[   Hr   r   r   r   test_no_H_attr   r]   r_   c                 C   s$   |  djsJ | djsJ d S )Nr   )_getcolr;   _getrowr   r   r   r   test_getrow_getcol   s   rb   c                 C   s*   t | }t|g d | g d  d S )Nr   r   r   r   )splaaslinearoperatorrQ   assert_allclose)r   Lr   r   r   test_as_linearoperator   s   
 rh   c                 C   sL   | j jd d dkrd S t| }|jsJ t| tj	|   d S Nr   r   )
r6   r7   rd   invr;   rQ   rf   r4   r'   linalgr   Cr   r   r   test_inv   s
   

 rn   c                 C   sV   | j jd d dkrd S tj| }t| }|jsJ t	|
 t|
  d S ri   )r6   r7   r   r   
csc_matrixrd   expmr;   rQ   rf   r4   )r   Bmatrm   r   r   r   	test_expm   s   

rr   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   rQ   rf   rd   expm_multiplyr'   arrayrp   r   r   r   r   test_expm_multiply   s   rv   c                 C   s&   t | }t|tj|   d S rM   )rd   normrQ   rf   r'   rk   r4   )r   rm   r   r   r   	test_norm   s   
rx   c                 C   s(   t | }t|tj|  d d S )Nr   )rd   
onenormestrQ   rf   r'   rk   rw   r4   rl   r   r   r   test_onenormest   s   
rz   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   rQ   rf   rd   spsolver'   rk   solver4   r   r   r   r   test_spsolve   s   r}   c                  C   s8   t jg dg dg dg dg} t| g d d S N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   rc   )r   r   rI   rd   spsolve_triangularr   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 rs   )r6   r7   rd   
factorizedrQ   rf   r'   ru   rk   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   atolgh㈵>r   r   r   g?r   )r
   rd   r'   ru   rQ   rf   )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
   rd   rQ   rf   )r   r   r   _r   r   r   test_lstsqr%  s   r   c                 C   s.   t j| dd\}}t| | |d |  d S Nr   kr   )rd   eigsrQ   rf   r    evr   r   r   	test_eigs/  s
   
r   c                 C   s8   | | j  } tj| dd\}}t| | |d |  d S r   )r   rd   eigshrQ   rf   r   r   r   r   
test_eigsh8  s   

r   c                 C   sZ   t j| dd\}}}tj|  \}}}t|}t|d d }tj||dd d S )Nr   r   gMbP?r   )	rd   svdsr'   rk   svdr4   sortrQ   rf   )r    usvhu2s2vh2r   r   r   	test_svdsB  s
   
r   c                  C   R   t jg dg dg dg dg} t| }t|t	g dg d d S r~   )
r   r   	csc_arrayrd   splurQ   rf   r|   r'   ru   r    r   r   r   r   	test_spluK     
$r   c                  C   r   r~   )
r   r   r   rd   spilurQ   rf   r|   r'   ru   r   r   r   r   
test_spiluV  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sJ qyd S d S )N	   r   )r   r   )r)   )r   r   	coo_arrayr'   rJ   rK   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_compresseda  s4   



r   c                  C   s   t jg d} | jrJ d S )N)r   r   r   )r   r   diagsr;   mr   r   r   test_default_is_matrix_diags  s   r   c                  C      t jd} | jrJ d S Nr   )r   r   rH   r;   r   r   r   r   test_default_is_matrix_eye     r   c                  C   s$   t jg dddd} | jrJ d S )Nr   r   r   )r   r   spdiagsr;   r   r   r   r   test_default_is_matrix_spdiags  s   r   c                  C   r   r   )r   r   identityr;   r   r   r   r   test_default_is_matrix_identity  r   r   c                  C   s@   t jtddgddggtddgddgg} | jrJ d S )Nr   r   r   r   r   r   kronr'   ru   r;   r   r   r   r   !test_default_is_matrix_kron_dense     (r   c                  C   s@   t jtddgddggtddgddgg} | 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   s@   t jtddgddggtddgddgg} | jrJ d S )Nr   r   )r   r   kronsumr'   ru   r;   r   r   r   r   test_default_is_matrix_kronsum  r   r   c                  C      t jdd} | jrJ d S 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   test_default_is_matrix_rand  r   r   fnc                 C   sD   t jtd}t jddgddgg}| ||g}|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'   rH   r;   )r   r   r   r   r   r   r   test_default_is_matrix_stacks  s   r   c                  C   sx   t jtd} t jdgdgg}t jdgg}t j| ||f}|jr)J t j| dgd|gg}|jr:J dS )z]Same idea as `test_default_construction_fn_matrices`, but for the block
    creation functionr   r   r   N)r   r   r   r'   rH   
block_diagr;   bmat)r   r   rm   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_formatr8   r9   AttributeError)fmtarr_clsMr   r   r   test_format_property  s   r   c                  C   sx   t jd} t j| }| jrJ |jsJ t j|sJ t j| s&J t j| r0J t j|  r:J d S r   )r   r   rH   rI   r;   issparser4   r   ar   r   r   test_issparse     

r   c                  C   sx   t jd} t j| }| jrJ |jsJ t j|rJ t j| s&J t j| r0J t j|  r:J d S r   )r   r   rH   rI   r;   
isspmatrixr4   r   r   r   r   test_isspmatrix  r   r   )r   r   r   r   r   r   r   r   r   c                 C   sr   t jjd| d}t j|| }|jrJ |jsJ ||r!J ||s'J || r/J || r7J d S )Nr   )r   )r   r   rH   rI   asformatr;   r4   )r   r   r   r   r   r   r   test_isspmatrix_format  s   

r   )Zr8   numpyr'   numpy.testingtestingrQ   scipy.sparser   scipy.sparse.linalgr   rk   rd   r   sparray_classesru   r   r   floatr    sparrayssquare_sparrayseig_sparraysmarkparametrizeparametrize_sparraysparametrize_square_sparraysparametrize_eig_sparraysr*   r,   r2   r5   r<   r>   r@   rD   rL   rO   rS   rU   rX   rY   r\   r_   rb   rh   rn   rr   rv   rx   rz   r}   r   r   r   r   r   r   r   r   r   rI   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>   s.   




























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