
    ge4                        d dl Z d dlZd dlmZ d dlZd dlm	c m
Z dZd eD             Z ej        g dg dg dg          Z ej        d dgdd gg          Z ej        g d	g d
g dg dge          Zd eD             Zd eD             Zd eD             Ze j                            dee          Ze j                            dee          Ze j                            dee          Zed             Zed             Zed             Zed             Zed             Zed             Z ed             Z!ed             Z"ed             Z#ed             Z$ed             Z%ed              Z&ed!             Z'ed"             Z(ed#             Z)ed$             Z*ed%             Z+ed&             Z,ed'             Z-ed(             Z.ed)             Z/ed*             Z0ed+             Z1ed,             Z2d- Z3ed.             Z4ee j                            d/g d0          d1                         Z5ee j                            d/d2d3g          d4                         Z6ed5             Z7ed6             Z8ed7             Z9d8 Z:d9 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                            d?ej?        ej@        g          d@                         ZAdA ZBdB ZCdC ZDdD ZEdE ZFdF ZGdG ZHdH ZIdI ZJe j                            dJej	        jK        ej	        jL        f          dK             ZMdL ZNdM ZOdN ZPdO ZQe j                            dPdQej	        jR        fdRej	        jS        fdSej	        jT        fdTej	        jU        fdUej	        jV        fdVej	        jW        fdWej	        jX        ff          dX             ZYdS )Y    N)bsrcoocsccsrdiadoklilc                 H    g | ]}t          t          j        | d            S )_array)getattrscipysparse).0Ts     Alib/python3.11/site-packages/scipy/sparse/tests/test_array_api.py
<listcomp>r   	   s7       ,-GELQ,,,''      )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                 .    g | ]} |t                     S  Ar   sparrays     r   r   r       s     6667GGAJJ666r   c                 .    g | ]} |t                     S r   Br   s     r   r   r   !   s     ==='771::===r   c                 .    g | ]} |t                     S r   Xr   s     r   r   r   "   s     :::w

:::r   r   )idsr!   r$   c                     t          |                     d          t          j                  r
J d            |                     d          j        dk    sJ |                     d          j        dk    sJ d S )Nr   axisExpected array, got matrix)r   r   )r   )
isinstancesumnpmatrixshaper   s    r   test_sumr/   /   s    !%%Q%--33 % %$% % %55a5==$&&&&55a5==$&&&&&&r   c                 v    t          |                     d          t          j                  r
J d            d S )Nr   r'   r)   )r*   meanr,   r-   r   s    r   	test_meanr2   7   sC    !&&a&..")44 % %$% % % % %r   c                 J   t          | d          r8t          |                     d          t          j                  r
J d            t          | d          r8t          |                     d          t          j                  r
J d            t          | d          r8t          |                     d          t          j                  r
J d            t          | d          r8t          |                     d          t          j                  rJ d            d S d S )Nminr   r'   r)   maxargminargmax)hasattrr*   r4   r,   r-   r5   r6   r7   r   s    r   test_min_maxr9   =   s@    q% )aeeemmRY77 	) 	)(	) 	) 	)q% )aeeemmRY77 	) 	)(	) 	) 	)q( )ahhAh..	:: 	) 	)(	) 	) 	)q( )ahhAh..	:: 	) 	)(	) 	) 	)) )	) 	)r   c                 r    t          |                                 t          j                  r
J d            d S Nr)   )r*   todenser,   r-   r   s    r   test_todenser=   N   s?    !))++ry11 % %$% % % % %r   c                    | j         j        d d         dv rd S t          j        t                    5  | dd d f          d d d            n# 1 swxY w Y   t          j        t                    5  | d d df          d d d            n# 1 swxY w Y   t          j        t                    5  | dddgf          d d d            n# 1 swxY w Y   t          j        t                    5  | ddgdf          d d d            n# 1 swxY w Y   | dg         j        s
J d            | dddggf         j        s
J d            | ddggdf         j        s
J d            | d d ddgf         j        s
J 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   s    r   test_indexingrE   T   s   {BQB#888	*	+	+  	!QQQ$               
*	+	+  	!!!Q$               
*	+	+  	!aV)               
*	+	+  	1a&!)               aS6GGGGGGQ!Q[>#II%IIIIq!fXq[>#II%IIIIQQQAY<!NN#NNNNNNsG   AAA/BBB,CC	C	)DD	Dc                     t           j                            | j                  }t          | |z   t           j                  r
J d            d S r;   )r,   randomr.   r*   r-   )r   r$   s     r   test_dense_additionrH   k   sD    
	!!A!a%++II-IIIIIIr   c                 .    | | z   j         s
J d            d S r;   rD   r   s    r   test_sparse_additionrK   q   $    E::::::::r   c                     t          j        | | z                                  |                     d                                          k              sJ d S )Nr   )r,   allr<   powerr   s    r   test_elementwise_mulrP   v   sG    61q5//##qwwqzz'9'9';';;<<<<<<<r   c                 t   t          j        t                    5  d | z   d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        d          t          j                            t	          j	        d          
                    dd                    z   d d d            n# 1 swxY w Y   t	          j        d| z  |                                 dz  k              sJ t	          j        |                                 | z  |                                 dz  k              sJ d S )Nr      r   )rA   rB   	TypeError
ValueErrorr,   eyer   r   	csr_arrayarangereshaperN   r<   r   s    r   test_elementwise_rmulrY   {   s   	y	!	!  q               
z	"	" G G
q		EL**29Q<<+?+?1+E+EFFFFG G G G G G G G G G G G G G G 61q5aiikkAo./////6199;;?		q(89:::::::s   ,00AB77B;>B;c                     t          j        | | j        z                                  |                     | j                                                  k              sJ d S N)r,   rN   r   r<   dotr   s    r   test_matmulr]      sM    61qs7##%%qs););)=)==>>>>>>>r   c                 N   t          | dz  t          j        j                  s
J d            t	          j        | dz                                  |                                 dz             t          j        t          d          5  | dz   d d d            d S # 1 swxY w Y   d S )Nr   r)   z
zero power)matchr   )
r*   r   r   r   nptassert_equalr<   rA   rB   rC   r   s    r   test_power_operatorrb      s    q!tel233QQ5QQQQ ad^^%%		a'7888 
*,	?	?	?  	1                 s   BB!Bc                 D    t          | | z  t          j                  sJ d S r[   )r*   r,   ndarrayr   s    r   test_sparse_dividere      s$    a!eRZ(((((((r   c                     t          j        t                    5  | |                                 z  j        sJ 	 d d d            d S # 1 swxY w Y   d S r[   )rA   warnsRuntimeWarningr<   rD   r   s    r   test_sparse_dense_divideri      s    	n	%	% + +AIIKK*****+ + + + + + + + + + + + + + + + + +s   AAAc                 .    | dz  j         s
J d            d S )Nr   r)   rJ   r   s    r   test_dense_dividerk      rL   r   c                     t          j        t          j                  5  | j         d d d            d S # 1 swxY w Y   d S r[   )rA   rg   r,   VisibleDeprecationWarningr   r   s    r   test_no_A_attrrn          	b2	3	3  	                    488c                     t          j        t          j                  5  | j         d d d            d S # 1 swxY w Y   d S r[   )rA   rg   r,   rm   Hr   s    r   test_no_H_attrrs      ro   rp   c                 v    |                      d          j        sJ |                     d          j        sJ d S )Nr   )_getcolrD   _getrowr   s    r   test_getrow_getcolrw      s:    99Q<<!!!!99Q<<!!!!!!r   c                 l    t          j        |           }t          j        |g dz  | g dz             d S )Nr   r   r   r   )splaaslinearoperatorr`   assert_allclose)r   Ls     r   test_as_linearoperatorr~      s=    a  ALLL(!lll*:;;;;;r   c                     | j         j        d d         dk    rd S t          j        |           }|j        sJ t          j        |                                t          j	                            |                                                      d S Nr   r   )
r?   r@   rz   invrD   r`   r|   r<   r,   linalgr!   Cs     r   test_invr      sr    {BQB5((A;		RY]]199;;%?%?@@@@@r   c                 H   | j         j        d d         dk    rd S t          j                            |           }t          j        |           }|j        sJ t          j	        |
                                t          j        |          
                                           d S r   )r?   r@   r   r   
csc_matrixrz   expmrD   r`   r|   r<   )r!   Bmatr   s      r   	test_expmr      s    {BQB5((<""1%%D	!A;				$!!    r   c           	          | j         j        d d         dk    rd S t          j        t	          j        | t          j        ddg                    t	          j        |           ddgz             d S Nr   r   r   r   )	r?   r@   r`   r|   rz   expm_multiplyr,   arrayr   r    s    r   test_expm_multiplyr      sq    {BQB5((1bh1v..//	!1v    r   c                     t          j        |           }t          j        |t          j                            |                                                      d S r[   )rz   normr`   r|   r,   r   r<   )r   r   s     r   	test_normr      s>    	!A29>>!))++6677777r   c                     t          j        |           }t          j        |t          j                            |                                 d                     d S )Nr   )rz   
onenormestr`   r|   r,   r   r   r<   r   s     r   test_onenormestr      sB    A29>>!))++q99:::::r   c                     | j         j        d d         dvrd S t          j        t	          j        | ddg          t          j                            | 	                                ddg                     d S )Nr   )r   r   r   r   )
r?   r@   r`   r|   rz   spsolver,   r   solver<   r    s    r   test_spsolver      sq    {BQB~55QA
			aV,,    r   c                      t           j                            g dg dg dg dg          } t          j        | g d           d S N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   ry   )r   r   rV   rz   spsolve_triangularr#   s    r   test_spsolve_triangularr      sY    	  	 	A 	A|||,,,,,r   c                 *   | j         j        d d         dk    rd S t          j        |           }t	          j         |t          j        ddg                    t          j        	                    | 
                                ddg                     d S r   )r?   r@   rz   
factorizedr`   r|   r,   r   r   r   r<   )r!   LUs     r   test_factorizedr     s    {BQB5((			B
28QF
			aV,,    r   solver)
bicgbicgstabcgcgsgmreslgmresminresqmrgcrotmktfqmrc                     |dk    ri }nddi} t          t          |          | t          j        ddg          fi |\  }}|dk    sJ t	          j        |ddgd           d S )	Nr   atolgh㈵>r   r   r   g?r   )r   rz   r,   r   r`   r|   )r!   r   kwargsxinfos        r   test_solversr     s     $#gdF##ArxA'7'7BB6BBGAt19999Aq6------r   lsqrlsmrc                      t          t          |          | g d          ^}}t          j        | |z  g d           d S )Nr   r   r   )r   rz   r`   r|   )r   r   r   _s       r   test_lstsqrr   %  sH     "GD&!!!YYY//EAAyyy)))))r   c                 z    t          j        | d          \  }}t          j        | |z  |d         |z             d S Nr   kr   )rz   eigsr`   r|   r$   evs      r   	test_eigsr   /  sK    9Q!DAq	A	!q    r   c                     | | j         z   } t          j        | d          \  }}t          j        | |z  |d         |z             d S r   )r   rz   eigshr`   r|   r   s      r   
test_eigshr   8  sV    	ACA:a1DAq	A	!q    r   c                 2   t          j        | d          \  }}}t          j                            |                                           \  }}}t          j        |          }t          j        |d d                   }t          j        ||d           d S )Nr   r   gMbP?r   )	rz   svdsr,   r   svdr<   sortr`   r|   )r$   usvhu2s2vh2s          r   	test_svdsr   B  s}    ya   HAq")--		,,KBC


A	BQBB2D))))))r   c                      t           j                            g dg dg dg dg          } t          j        |           }t          j        |                    t          j	        g d                    g d           d S r   )
r   r   	csc_arrayrz   splur`   r|   r   r,   r   r$   r   s     r   	test_splur   K  s    	  	 	A 
1B,,,!7!788,,,GGGGGr   c                      t           j                            g dg dg dg dg          } t          j        |           }t          j        |                    t          j	        g d                    g d           d S r   )
r   r   r   rz   spilur`   r|   r   r,   r   r   s     r   
test_spilur   V  s    	  	 	A 
AB,,,!7!788,,,GGGGGr   zcls,indices_attrsindicesindptrrowcolexpected_dtypec                 N   t           j                            t          j        d                              dd                    }|j        |j                            |          |j	                            |          ff} | |          }|D ]}t          ||          j        |k    sJ  | |d          }|D ]}t          ||          j        |k    sJ t          | t           j        j        j                  r|                                }|j        |j                            |          |j                            |          f} | |          }|D ]}t          ||          j        |k    sJ  | |d          }|D ]}t          ||          j        |k    sJ d S d S )N	   r   )r   r   )r.   )r   r   	coo_arrayr,   rW   rX   datar   astyper   r   r   
issubclass_compressed
_cs_matrixtocsrr   r   )	clsindices_attrsr   input_array	coo_tupleresultattrinput_array_csr	csr_tuples	            r   test_index_dtype_compressedr   a  s   & ,((1)=)=a)C)CDDKO"">22O"">22	
I S^^F = =vt$$*n<<<<<S&)))F = =vt$$*n<<<<<#u|/:;; A%++-- #**>::")).99
	 Y! 	A 	AD64((..@@@@@Yf---! 	A 	AD64((..@@@@@A A	A 	Ar   c                  Z    t           j                            g d          } | j        rJ d S )N)r   r   r   )r   r   diagsrD   ms    r   test_default_is_matrix_diagsr     s/    999%%A{r   c                  V    t           j                            d          } | j        rJ d S Nr   )r   r   rU   rD   r   s    r   test_default_is_matrix_eyer     s+    A{r   c                  `    t           j                            g dddd          } | j        rJ d S )Nr   r   r   )r   r   spdiagsrD   r   s    r   test_default_is_matrix_spdiagsr     s5    YYY1a00A{r   c                  V    t           j                            d          } | j        rJ d S r   )r   r   identityrD   r   s    r   test_default_is_matrix_identityr     s+    a  A{r   c                      t           j                            t          j        ddgddgg          t          j        ddgddgg                    } | j        rJ d S )Nr   r   r   r   r   r   kronr,   r   rD   r   s    r   !test_default_is_matrix_kron_denser    b    
1a&1a&!""BHq!fq!f-=$>$>	 	A {r   c                      t           j                            t          j        ddgddgg          t          j        ddgddgg                    } | j        rJ d S )Nr   r   r   r   r   r   r   s    r   "test_default_is_matrix_kron_sparser    r  r   c                      t           j                            t          j        ddgddgg          t          j        ddgddgg                    } | j        rJ d S )Nr   r   )r   r   kronsumr,   r   rD   r   s    r   test_default_is_matrix_kronsumr    sb    
1a&1a&!""BHq!fq!f-=$>$>	 	A {r   c                  X    t           j                            dd          } | j        rJ d S r   )r   r   rG   rD   r   s    r   test_default_is_matrix_randomr	    s-    Aq!!A{r   c                  X    t           j                            dd          } | j        rJ d S r   )r   r   randrD   r   s    r   test_default_is_matrix_randr    s-    !QA{r   fnc                     t           j                            t          j        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,   rU   rD   )r  r   r!   r   s       r   test_default_is_matrix_stacksr    sh     	q		**A!Q!Q 011A
Aq6

A{r   c                     t           j                            t          j        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,   rU   
block_diagrD   bmat)r   r!   r   r   s       r   ,test_blocks_default_construction_fn_matricesr    s     	q		**A!qc
++A!&&A 	Aq	**A{ 	At9tQi011A{r   c                     t           D ]} t          t          j        |  d          } |ddgg          }|j        | k    sJ |j        | k    sJ t          j        t                    5  d|_        d d d            n# 1 swxY w Y   d S )Nr   r   r   qqq)	sparray_typesr   r   r   format_formatrA   rB   AttributeError)fmtarr_clsMs      r   test_format_propertyr    s      %,377GaVHx3yC]>** 	 	AH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   (A<<B 	B 	c                     t           j                            d          } t           j                            |           }| j        rJ |j        sJ t           j                            |          sJ t           j                            |           sJ t           j                            |                                          rJ t           j                            |                                           rJ d S r   )r   r   rU   rV   rD   issparser<   r   as     r   test_issparser#    s    Aq!!A{; <  #####<  ##### |$$QYY[[11111|$$QYY[[1111111r   c                     t           j                            d          } t           j                            |           }| j        rJ |j        sJ t           j                            |          rJ t           j                            |           sJ t           j                            |                                          rJ t           j                            |                                           rJ d S r   )r   r   rU   rV   rD   
isspmatrixr<   r!  s     r   test_isspmatrixr&    s    Aq!!A{; |&&q)))))<""1%%%%% |&&qyy{{33333|&&qyy{{3333333r   )r  r  r   r   r   r   r   r   r	   c                    t           j                            d|           }t           j                            |                              |           }|j        rJ |j        sJ  ||          rJ  ||          sJ  ||                                          rJ  ||                                          rJ d S )Nr   )r  )r   r   rU   rV   asformatrD   r<   )r  r  r   r"  s       r   test_isspmatrix_formatr)    s     	3''Aq!!**3//A{; r!uu2a55LLL r!))++r!))++r   )ZrA   numpyr,   numpy.testingtestingr`   scipy.sparser   scipy.sparse.linalgr   r   rz   r  sparray_classesr   r   r!   floatr$   sparrayssquare_sparrayseig_sparraysmarkparametrizeparametrize_sparraysparametrize_square_sparraysparametrize_eig_sparraysr/   r2   r9   r=   rE   rH   rK   rP   rY   r]   rb   re   ri   rk   rn   rs   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rV   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   <module>rD     s                  " " " " " " " " "A 1>   BHLLLLLL   BHFF  
 BHLLLLLLLL	
 
   76o666==_===::/:::{..} /    %k55m 6    ";22= 3   
 ' ' ' % % %
 ) ) )  % % %
 O O O, J J J
 ; ; ; = = = 	; 	; 	; ? ? ?    ) ) ) + + + ; ; ;   
   
 " " " < < <
 A A A       8 8 8
 ; ; ;
   - - -       
. .  . V * *	  
*
       * * *H H HH H H  L"!	

 L"!	

 L"EN	
 " )BHbh+?@@ A  A A@# $ AF  
  
  
  
        
  
  3U\5HIJJ  KJ     2 2 24 4 4 	+,	+,	+,	+,	+,	+,	+,     r   