o
    g8                     @   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 Z1dDdE Z2edFdG Z3ee jdHg dIdJdK Z4ee jdHdLdMgdNdO Z5edPdQ Z6edRdS Z7edTdU Z8dVdW Z9dXdY Z:edZd[ Z;d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   _/home/ubuntu/cloudmapper/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_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 |  tjrJ dd S Nr$   )r%   todenser'   r(   r   r   r   r   test_todense=   s   r/   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_indexingC   s$   "r6   c                 C   s*   t j| j}t| | t jrJ dd S r-   )r'   randomr)   r%   r(   )r   r    r   r   r   test_dense_additionZ   s   r8   c                 C   s   | |  j s	J dd S r-   r5   r   r   r   r   test_sparse_addition`      r:   c                 C   s(   t | |   | d ksJ d S Nr   )r'   allr.   powerr   r   r   r   test_elementwise_mule   s   (r?   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   )r2   r3   	TypeError
ValueErrorr'   eyer   r   	csr_arrayarangereshaper=   r.   r   r   r   r   test_elementwise_rmulj   s   
&&rG   c                 C   s,   t | | j  | | j ksJ d S N)r'   r=   r   r.   dotr   r   r   r   test_matmulw   s   ,rJ   c                 C   s(   | d j s	J d| d j sJ dd S )Nr   r$   r   r9   r   r   r   r   test_pow|   s   rK   c                 C   s   t | |  tjs
J d S rH   )r%   r'   ndarrayr   r   r   r   test_sparse_divide   s   rM   c                 C   s   | d j s	J dd S )Nr   r$   r9   r   r   r   r   test_dense_divide   r;   rN   c                 C   8   t tj | j W d    d S 1 sw   Y  d S rH   )r2   warnsr'   VisibleDeprecationWarningr   r   r   r   r   test_no_A_attr      "rR   c                 C   rO   rH   )r2   rP   r'   rQ   Hr   r   r   r   test_no_H_attr   rS   rU   c                 C   s$   |  djsJ | djsJ d S )Nr   )getcolr5   getrowr   r   r   r   test_getrow_getcol   s   rX   c                 C   s2   | j d u rd S | j  }dD ]}||vsJ qd S )N)r(   matrices)__doc__lower)r   docstrphraser   r   r   test_docstr   s   

r^   c                 C   s*   t | }t|g d | g d  d S )Nr   r   r   r   )splaaslinearoperatornptassert_allclose)r   Lr   r   r   test_as_linearoperator   s   
 re   c                 C   sL   | j jd d dkrd S t| }|jsJ t| tj	|   d S Nr   r   )
r0   r1   r`   invr5   rb   rc   r.   r'   linalgr   Cr   r   r   test_inv   s
   

 rk   c                 C   sV   | j jd d dkrd S tj| }t| }|jsJ t	|
 t|
  d S rf   )r0   r1   r   r   
csc_matrixr`   expmr5   rb   rc   r.   )r   Bmatrj   r   r   r   	test_expm   s   

ro   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   )	r0   r1   rb   rc   r`   expm_multiplyr'   arrayrm   r   r   r   r   test_expm_multiply   s   rs   c                 C   s&   t | }t|tj|   d S rH   )r`   normrb   rc   r'   rh   r.   )r   rj   r   r   r   	test_norm   s   
ru   c                 C   s(   t | }t|tj|  d d S )Nr   )r`   
onenormestrb   rc   r'   rh   rt   r.   ri   r   r   r   test_onenormest   s   
rw   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   )
r0   r1   rb   rc   r`   spsolver'   rh   solver.   r   r   r   r   test_spsolve   s   rz   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   r_   )r   r   rD   r`   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 rp   )r0   r1   r`   
factorizedrb   rc   r'   rr   rh   ry   r.   )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
   r`   r'   rr   rb   rc   )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
   r`   rb   rc   )r   r   r   _r   r   r   test_lstsqr  s   r   c                 C   s.   t j| dd\}}t| | |d |  d S Nr   kr   )r`   eigsrb   rc   r    evr   r   r   	test_eigs  s
   
r   c                 C   s8   | | j  } tj| dd\}}t| | |d |  d S r   )r   r`   eigshrb   rc   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   gMbP?r   )	r`   svdsr'   rh   svdr.   sortrb   rc   )r    usvhu2s2vh2r   r   r   	test_svds1  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_arrayr`   splurb   rc   ry   r'   rr   r    r   r   r   r   	test_splu:     
$r   c                  C   r   r{   )
r   r   r   r`   spilurb   rc   ry   r'   rr   r   r   r   r   
test_spiluE  r   r   c                 C   s    t | d  |  d  d S r<   )rb   assert_equalr.   r   r   r   r   test_power_operatorP  s    r   )<r2   numpyr'   numpy.testingtestingrb   scipy.sparser   scipy.sparse.linalgr   rh   r`   sparray_typessparray_classesrr   r   r   floatr    sparrayssquare_sparrayseig_sparraysmarkparametrizeparametrize_sparraysparametrize_square_sparraysparametrize_eig_sparraysr*   r,   r/   r6   r8   r:   r?   rG   rJ   rK   rM   rN   rR   rU   rX   r^   re   rk   ro   rs   ru   rw   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    





























	
