a
    
d|4                     @   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d\d] Z<e jd^ej	j=d_d`gfej	j>d_d`gfej	j?dadbgfge jdcej@ejAgddde ZBdfdg ZCdhdi ZDdjdk ZEdldm ZFdndo ZGdpdq ZHdrds ZIdtdu ZJdvdw ZKe jdxej	jLej	jMfdydz ZNd{d| ZOd}d~ ZPdd ZQdd ZRe jddej	jSfdej	jTfdej	jUfdej	jVfdej	jWfdej	jXfdej	jYffdd 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   j/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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   s   g | ]}|t qS r   Ar   Zsparrayr   r   r   r           c                 C   s   g | ]}|t qS r   Br   r   r   r   r   !   r   c                 C   s   g | ]}|t qS 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s2J | jddjdksHJ d S )Nr   Z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rLt| jddtjrLJ dt | drrt| jddtjrrJ dt | drt| jddtjrJ dd S )Nminr   r    r!   maxargminargmax)hasattrr"   r*   r$   r%   r+   r,   r-   r   r   r   r   test_min_max=   s     



r/   c                 C   s   t |  tjrJ dd S Nr!   )r"   todenser$   r%   r   r   r   r   test_todenseN   s    r2   c                 C   sv  | j jd d dv rd S tt  | dd d f  W d    n1 sH0    Y  tt  | d d df  W d    n1 s0    Y  tt  | dddgf  W d    n1 s0    Y  tt  | ddgdf  W d    n1 s0    Y  | dg jsJ d| dddggf js4J d| ddggdf jsRJ d| d d ddgf jsrJ 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    ....r9   c                 C   s*   t j| j}t| | t jr&J dd S r0   )r$   randomr&   r"   r%   )r   r   r   r   r   test_dense_additionk   s    r;   c                 C   s   | |  j sJ dd S r0   r8   r   r   r   r   test_sparse_additionq   s    r=   c                 C   s(   t | |   | d ks$J d S Nr   )r$   allr1   powerr   r   r   r   test_elementwise_mulv   s    rA   c                 C   s   t t d |   W d    n1 s(0    Y  t t4 tdtjt	d
dd  W d    n1 sv0    Y  td|  |  d ksJ t|  |  |  d ksJ d S )Nr      r   )r5   r6   	TypeError
ValueErrorr$   eyer   r   	csr_arrayarangereshaper?   r1   r   r   r   r   test_elementwise_rmul{   s    &BrI   c                 C   s,   t | | j  | | j ks(J d S N)r$   r?   r   r1   dotr   r   r   r   test_matmul   s    rL   c                 C   s(   | d j sJ d| d j s$J dd S )Nr   r!   r   r<   r   r   r   r   test_pow   s    rM   c                 C   s   t | |  tjsJ d S rJ   )r"   r$   Zndarrayr   r   r   r   test_sparse_divide   s    rN   c                 C   s@   t t" | |   jsJ W d    n1 s20    Y  d S rJ   )r5   warnsRuntimeWarningr1   r8   r   r   r   r   test_sparse_dense_divide   s    rQ   c                 C   s   | d j sJ dd S )Nr   r!   r<   r   r   r   r   test_dense_divide   s    rR   c                 C   s6   t tj | j W d    n1 s(0    Y  d S rJ   )r5   rO   r$   VisibleDeprecationWarningr   r   r   r   r   test_no_A_attr   s    rT   c                 C   s6   t tj | j W d    n1 s(0    Y  d S rJ   )r5   rO   r$   rS   Hr   r   r   r   test_no_H_attr   s    rV   c                 C   s$   |  djsJ | djs J d S )Nr   )Z_getcolr8   Z_getrowr   r   r   r   test_getrow_getcol   s    rW   c                 C   s*   t | }t|g d | g d  d S )Nr   r   r   r   )splaZaslinearoperatornptassert_allclose)r   Lr   r   r   test_as_linearoperator   s    
r]   c                 C   sL   | j jd d dkrd S t| }|js,J t| tj	|   d S Nr   r   )
r3   r4   rY   invr8   rZ   r[   r1   r$   linalgr   Cr   r   r   test_inv   s
    

rc   c                 C   sV   | j jd d dkrd S tj| }t| }|js8J t	|
 t|
  d S r^   )r3   r4   r   r   Z
csc_matrixrY   expmr8   rZ   r[   r1   )r   ZBmatrb   r   r   r   	test_expm   s    

re   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   )	r3   r4   rZ   r[   rY   Zexpm_multiplyr$   arrayrd   r   r   r   r   test_expm_multiply   s    rh   c                 C   s&   t | }t|tj|   d S rJ   )rY   normrZ   r[   r$   r`   r1   )r   rb   r   r   r   	test_norm   s    
rj   c                 C   s(   t | }t|tj|  d d S )Nr   )rY   Z
onenormestrZ   r[   r$   r`   ri   r1   ra   r   r   r   test_onenormest   s    
rk   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   )
r3   r4   rZ   r[   rY   Zspsolver$   r`   solver1   r   r   r   r   test_spsolve   s    rm   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   rX   )r   r   rF   rY   Zspsolve_triangularr   r   r   r   test_spsolve_triangular   s    ro   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 rf   )r3   r4   rY   Z
factorizedrZ   r[   r$   rg   r`   rl   r1   )r   LUr   r   r   test_factorized  s    
rq   solver)
Z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i |\}}|dksHJ tj|ddgdd d S )	Nrs   atolgh㈵>r   r   r   g?rt   )r
   rY   r$   rg   rZ   r[   )r   rr   kwargsxinfor   r   r   test_solvers  s    &ry   ZlsqrZlsmrc                 C   s0   t t|| g d^}}t| | g d d S )Nr   r   r   )r
   rY   rZ   r[   )r   rr   rw   _r   r   r   test_lstsqr  s    r|   c                 C   s.   t j| dd\}}t| | |d |  d S Nr   kr   )rY   ZeigsrZ   r[   r   evr   r   r   	test_eigs)  s
    
r   c                 C   s8   | | j  } tj| dd\}}t| | |d |  d S r}   )r   rY   ZeigshrZ   r[   r   r   r   r   
test_eigsh2  s    

r   c                 C   sZ   t j| dd\}}}tj|  \}}}t|}t|d d }tj||dd d S )Nr   r~   gMbP?ru   )	rY   Zsvdsr$   r`   Zsvdr1   sortrZ   r[   )r   usZvhu2s2Zvh2r   r   r   	test_svds<  s
    
r   c                  C   sR   t jg dg dg dg dg} t| }t|t	g dg d d S rn   )
r   r   	csc_arrayrY   ZsplurZ   r[   rl   r$   rg   r   rp   r   r   r   	test_spluE  s    
r   c                  C   sR   t jg dg dg dg dg} t| }t|t	g dg d d S rn   )
r   r   r   rY   ZspilurZ   r[   rl   r$   rg   r   r   r   r   
test_spiluP  s    
r   c                 C   s    t | d  |  d  d S r>   )rZ   Zassert_equalr1   r   r   r   r   test_power_operator[  s    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sDJ qD| |dd}|D ]}t
||j|ksnJ qnt| t jjjr| }|j|j||j|f}| |}|D ]}t
||j|ksJ q| |dd}|D ]}t
||j|ksJ qd S )N	   r   )r   r   )r&   )r   r   	coo_arrayr$   rG   rH   datar   Zastyper   r
   r   
issubclassZ_compressedZ
_cs_matrixZtocsrr   r   )	clsZindices_attrsr   Zinput_arrayZ	coo_tupleresultattrZinput_array_csrZ	csr_tupler   r   r   test_index_dtype_compresseda  s0    



r   c                  C   s   t jg d} | jrJ d S )N)r   r   r   )r   r   Zdiagsr8   mr   r   r   test_default_is_matrix_diags  s    r   c                  C   s   t jd} | jrJ d S Nr   )r   r   rE   r8   r   r   r   r   test_default_is_matrix_eye  s    r   c                  C   s$   t jg dddd} | jr J d S )Nrz   r   r   )r   r   Zspdiagsr8   r   r   r   r   test_default_is_matrix_spdiags  s    r   c                  C   s   t jd} | jrJ d S r   )r   r   identityr8   r   r   r   r   test_default_is_matrix_identity  s    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   Zkronr$   rg   r8   r   r   r   r   !test_default_is_matrix_kron_dense  s    (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  s    (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   Zkronsumr$   rg   r8   r   r   r   r   test_default_is_matrix_kronsum  s    (r   c                  C   s   t jdd} | jrJ d S r   )r   r   r:   r8   r   r   r   r   test_default_is_matrix_random  s    r   c                  C   s   t jdd} | jrJ d S r   )r   r   Zrandr8   r   r   r   r   test_default_is_matrix_rand  s    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$   rE   r8   )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rRJ t j| dgd|gg}|jrtJ dS )z]Same idea as `test_default_construction_fn_matrices`, but for the block
    creation functionr   r   r   N)r   r   r   r$   rE   Z
block_diagr8   Zbmat)r   r   rb   r   r   r   r   ,test_blocks_default_construction_fn_matrices  s    
r   c               	   C   sz   t D ]p} ttj|  d}|ddgg}|j| ks6J |j| ksDJ tt d|_W d    q1 sj0    Y  qd S )Nr	   r   r   Zqqq)	sparray_typesr
   r   r   format_formatr5   r6   AttributeError)fmtZ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| sLJ t j| r`J t j|  rtJ d S r   )r   r   rE   rF   r8   issparser1   r   ar   r   r   test_issparse  s    

r   c                  C   sx   t jd} t j| }| jr"J |js,J t j|r<J t j| sLJ t j| r`J t j|  rtJ d S r   )r   r   rE   rF   r8   Z
isspmatrixr1   r   r   r   r   test_isspmatrix  s    

r   )r   r   r   r   r   r   r   r   r   c                 C   sr   t jjd| d}t j|| }|jr,J |js6J ||rBJ ||sNJ || r^J || rnJ d S )Nr   )r   )r   r   rE   rF   Zasformatr8   r1   )r   r   r   r   r   r   r   test_isspmatrix_format  s    

r   )[r5   numpyr$   Znumpy.testingZtestingrZ   Zscipy.sparser   Zscipy.sparse.linalgr   r`   rY   r   Zsparray_classesrg   r   r   floatr   ZsparraysZsquare_sparraysZeig_sparraysmarkZparametrizeZparametrize_sparraysZparametrize_square_sparraysZparametrize_eig_sparraysr'   r)   r/   r2   r9   r;   r=   rA   rI   rL   rM   rN   rQ   rR   rT   rV   rW   r]   rc   re   rh   rj   rk   rm   ro   rq   ry   r|   r   r   r   r   r   r   rF   r   r   int64int32r   r   r   r   r   r   r   r   r   r   ZhstackZvstackr   r   r   r   r   Zisspmatrix_bsrZisspmatrix_cooZisspmatrix_cscZisspmatrix_csrZisspmatrix_diaZisspmatrix_dokZisspmatrix_lilr   r   r   r   r   <module>   s0  


























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