
    S_f8                        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 dlmZ dZeD  cg c]  }  eej                  |  d       c} 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eD cg c]
  } |e       c}ZeD cg c]
  } |e       c}ZeD cg c]
  } |e       c}Ze j2                  j5                  dee      Ze j2                  j5                  dee      Ze j2                  j5                  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%        Z0ed&        Z1ed'        Z2ed(        Z3ed)        Z4ed*        Z5d+ Z6ed,        Z7ee j2                  j5                  d-g d.      d/               Z8ee j2                  j5                  d-d0d1g      d2               Z9ed3        Z:ed4        Z;ed5        Z<d6 Z=d7 Z>e j2                  j5                  d8ej                  j~                  d9d:gfej                  j                  d9d:gfej                  j                  d;d<gfg      e j2                  j5                  d=ej                  ej                  g      d>               ZDd? ZEd@ ZFdA ZGdB ZHdC ZIdD ZJdE ZKdF ZLdG ZMe j2                  j5                  dHej                  j                  ej                  j                  f      dI        ZPdJ ZQdK ZRdL ZSdM ZTe j2                  j5                  dNdOej                  j                  fdPej                  j                  fdQej                  j                  fdRej                  j                  fdSej                  j                  fdTej                  j                  fdUej                  j                  ff      dV        Z\yc c} w c c}w c c}w c c}w )W    N)VisibleDeprecationWarning)bsrcoocsccsrdiadoklil_array)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   dtypeA)idsBXc                     t        | j                  d      t        j                        rJ d       | j                  d      j                  dk(  sJ | j                  d      j                  dk(  sJ y )Nr   axisExpected array, got matrix)r   r   )r   )
isinstancesumnpmatrixshaper   s    Alib/python3.12/site-packages/scipy/sparse/tests/test_array_api.pytest_sumr!   1   sf    !%%Q%-3 %$%355a5=$&&&55a5=$&&&    c                 f    t        | j                  d      t        j                        rJ d       y )Nr   r   r   )r   meanr   r   r   s    r    	test_meanr%   9   s-    !&&a&."))4 %$%44r"   c                    t        | d      r1t        | j                  d      t        j                        rJ d       t        | d      r1t        | j                  d      t        j                        rJ d       t        | d      r1t        | j                  d      t        j                        rJ d       t        | d      r2t        | j                  d      t        j                        rJ d       y y )Nminr   r   r   maxargminargmax)hasattrr   r'   r   r   r(   r)   r*   r   s    r    test_min_maxr,   ?   s     q%aeeemRYY7 	)(	)7q%aeeemRYY7 	)(	)7q(ahhAh.		: 	)(	):q(ahhAh.		: 	)(	):: r"   c                 b    t        | j                         t        j                        rJ d       y Nr   )r   todenser   r   r   s    r    test_todenser0   P   s)    !))+ryy1 %$%11r"   c                    | j                   j                  d d dv ry t        j                  t              5  | dd d f    d d d        t        j                  t              5  | d d df    d d d        t        j                  t              5  | dddgf    d d d        t        j                  t              5  | ddgdf    d d d        t        | dg   t        j                  j                        sJ d       t        | dddggf   t        j                  j                        sJ d       t        | ddggdf   t        j                  j                        sJ d       t        | d d ddgf   t        j                  j                        sJ d       y # 1 sw Y   UxY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w)	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NotImplementedErrorr   scipysparsesparrayr   s    r    test_indexingr:   V   s   {{BQ#88	*	+ 	!Q$ 
*	+ 	!Q$ 
*	+ 	!aV) 
*	+ 	1a&!) afell223 6563aQF8nell&:&:; 0/0;a!Q!nell&:&:; 0/0;aAq6	lELL$8$89 7679%    s/   
F!
F 
F-7
F:F F*-F7:Gc                     t         j                  j                  | j                        }t        | |z   t         j                        rJ d       y r.   )r   randomr   r   r   )r   r   s     r    test_dense_additionr=   q   s;    
		!A!a%+I-II++r"   c                 `    t        | | z   t        j                  j                        sJ d       y r.   r   r7   r8   r9   r   s    r    test_sparse_additionr@   w   &    q1uu||334R6RR4r"   c                     t        j                  | | z  j                         | j                  d      j                         k(        sJ y )Nr   )r   allr/   powerr   s    r    test_elementwise_mulrE   |   s5    661q5//#qwwqz'9'9';;<<<r"   c                 J   t        j                  t              5  d | z   d d d        t        j                  t              5  t	        j
                  d      t        j                  j                  t	        j                  d      j                  dd            z   d d d        t	        j                  d| z  | j                         dz  k(        sJ t	        j                  | j                         | z  | j                         dz  k(        sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr      r   )r4   r5   	TypeError
ValueErrorr   eyer7   r8   	csr_arrayarangereshaperC   r/   r   s    r    test_elementwise_rmulrN      s    	y	! q 
z	" G
q	ELL**299Q<+?+?1+EFFG 661q5aiikAo.///66199;?		q(89::: G Gs   DADDD"c                     t        j                  | | j                  z  j                         | j	                  | j                        j                         k(        sJ y N)r   rC   Tr/   dotr   s    r    test_matmulrS      s?    661qss7##%qss););)==>>>r"   c                 :   t        | dz  t        j                  j                        sJ d       t	        j
                  | dz  j                         | j                         dz         t        j                  t        d      5  | dz   d d d        y # 1 sw Y   y xY w)Nr   r   z
zero power)matchr   )
r   r7   r8   r9   nptassert_equalr/   r4   r5   r6   r   s    r    test_power_operatorrX      s{    q!tell223Q5QQ3 ad^^%		a'78 
*,	? 	1  s   BBc                 B    t        | | z  t        j                        sJ y rP   )r   r   ndarrayr   s    r    test_sparse_divider[      s    a!eRZZ(((r"   c                     t        j                  t              5  t        | | j	                         z  t
        j                  j                        sJ 	 d d d        y # 1 sw Y   y xY wrP   )r4   warnsRuntimeWarningr   r/   r7   r8   r9   r   s    r    test_sparse_dense_divider_      sK    	n	% C1qyy{?U\\-A-ABBBC C Cs   8AA%c                 `    t        | dz  t        j                  j                        sJ d       y )Nr   r   r?   r   s    r    test_dense_dividera      rA   r"   c                 x    t        j                  t              5  | j                   d d d        y # 1 sw Y   y xY wrP   )r4   r]   r   r   r   s    r    test_no_A_attrrc      +    	/	0 	     09c                 x    t        j                  t              5  | j                   d d d        y # 1 sw Y   y xY wrP   )r4   r]   r   Hr   s    r    test_no_H_attrrh      rd   re   c                     t        | j                  d      t        j                  j                        sJ t        | j                  d      t        j                  j                        sJ y )Nr   )r   _getcolr7   r8   r9   _getrowr   s    r    test_getrow_getcolrl      sF    aiilELL$8$8999aiilELL$8$8999r"   c                 n    t        j                  |       }t        j                  |g dz  | g dz         y )Nr   r   r   r   )splaaslinearoperatorrV   assert_allclose)r   Ls     r    test_as_linearoperatorrs      s,    a AL(!l*:;r"   c                 R   | j                   j                  d d dk7  ry t        j                  |       }t	        |t
        j                  j                        sJ t        j                  |j                         t        j                  j                  | j                                      y Nr   r   )r2   r3   ro   invr   r7   r8   r9   rV   rq   r/   r   linalgr   Cs     r    test_invrz      sn    {{BQ5(Aa--...		RYY]]199;%?@r"   c                 |   | j                   j                  d d dk7  ry t        j                  j	                  |       }t        j                  |       }t        |t        j                  j                        sJ t        j                  |j                         t        j                  |      j                                y ru   )r2   r3   r7   r8   
csc_matrixro   expmr   r9   rV   rq   r/   )r   Bmatry   s      r    	test_expmr      s    {{BQ5(<<""1%D		!Aa--...					$!r"   c           	          | j                   j                  d d dk7  ry t        j                  t	        j
                  | t        j                  ddg            t	        j                  |       ddgz         y Nr   r   r   r   )	r2   r3   rV   rq   ro   expm_multiplyr   arrayr}   r   s    r    test_expm_multiplyr      s]    {{BQ5(1bhh1v./		!1vr"   c                     t        j                  |       }t        j                  |t        j
                  j                  | j                                      y rP   )ro   normrV   rq   r   rw   r/   )r   ry   s     r    	test_normr      s2    		!A299>>!))+67r"   c                     t        j                  |       }t        j                  |t        j
                  j                  | j                         d             y )Nr   )ro   
onenormestrV   rq   r   rw   r   r/   rx   s     r    test_onenormestr      s5    A299>>!))+q9:r"   c                     | j                   j                  d d dvry t        j                  t	        j
                  | ddg      t        j                  j                  | j                         ddg             y )Nr   )r   r   r   r   )
r2   r3   rV   rq   ro   spsolver   rw   solver/   r   s    r    test_spsolver      sZ    {{BQ~5QA
				aV,r"   c                      t         j                  j                  g dg dg dg dg      } t        j                  | g d       y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   )r7   r8   rK   ro   spsolve_triangular)r   s    r    test_spsolve_triangularr     s9    	  	A 	A|,r"   c                 &   | j                   j                  d d dk7  ry t        j                  |       }t	        j
                   |t        j                  ddg            t        j                  j                  | j                         ddg             y r   )r2   r3   ro   
factorizedrV   rq   r   r   rw   r   r/   )r   LUs     r    test_factorizedr     sk    {{BQ5(		B
288Q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       y )	Nr   atolgh㈵>r   r   r   g?r   )getattrro   r   r   rV   rq   )r   r   kwargsxinfos        r    test_solversr     sg     $#gdF#ArxxA'7B6BGAt199Aq6-r"   lsqrlsmrc                 p     t        t        |      | g d      ^}}t        j                  | |z  g d       y )Nr   r   r   )r   ro   rV   rq   )r   r   r   _s       r    test_lstsqrr   +  s1     "GD&!!Y/EAAy)r"   c                 v    t        j                  | d      \  }}t        j                  | |z  |d   |z         y Nr   kr   )ro   eigsrV   rq   r   evs      r    	test_eigsr   5  s6    99Q!DAq	A	!qr"   c                     | | j                   z   } t        j                  | d      \  }}t        j                  | |z  |d   |z         y r   )rQ   ro   eigshrV   rq   r   s      r    
test_eigshr   >  sC    	ACCA::a1DAq	A	!qr"   c                 &   t        j                  | d      \  }}}t        j                  j	                  | j                               \  }}}t        j                  |      }t        j                  |d d       }t        j                  ||d       y )Nr   r   gMbP?r   )	ro   svdsr   rw   svdr/   sortrV   rq   )r   usvhu2s2vh2s          r    	test_svdsr   H  sh    yya HAq"))--		,KBC

A	BQB2D)r"   c                  H   t         j                  j                  g dg dg dg dg      } t        j                  |       }t        j                  |j                  t        j                  g d            t        j                  g dt        j                        dd	       y 
Nr   r   r   r   rn   r   g+=gMg<)rtolr   )r7   r8   	csc_arrayro   splurV   rq   r   r   r   asarrayfloat64r   r   s     r    	test_splur   Q  sp    	  	A 
1B
,'(


<rzz2r"   c                  H   t         j                  j                  g dg dg dg dg      } t        j                  |       }t        j                  |j                  t        j                  g d            t        j                  g dt        j                        dd	       y r   )r7   r8   r   ro   spilurV   rq   r   r   r   r   r   r   s     r    
test_spilur   `  sp    	  	A 
AB
,'(


<rzz2r"   zcls,indices_attrsindicesindptrrowcolexpected_dtypec                 d   t         j                  j                  t        j                  d      j                  dd            }|j                  |j                  j                  |      |j                  j                  |      ff} | |      }|D ]  }t        ||      j                  |k(  rJ   | |d      }|D ]  }t        ||      j                  |k(  rJ  t        | t         j                  j                  j                        r|j                         }|j                  |j                   j                  |      |j"                  j                  |      f} | |      }|D ]  }t        ||      j                  |k(  rJ   | |d      }|D ]  }t        ||      j                  |k(  rJ  y y )N	   r   )r   r   )r   )r7   r8   	coo_arrayr   rL   rM   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   o  s   & ,,((1)=)=a)CDKOO"">2OO"">2	
I ^F =vt$**n<<<= &)F =vt$**n<<<= #u||//::;%++-  ##**>:"")).9
	 Y! 	AD64(...@@@	A Yf-! 	AD64(...@@@	A <r"   c                      t         j                  j                  g d      } t        | t         j                  j                        rJ y )N)r   r   r   )r7   r8   diagsr   r9   ms    r    test_default_is_matrix_diagsr     s3    9%A!U\\112222r"   c                      t         j                  j                  d      } t        | t         j                  j                        rJ y Nr   )r7   r8   rJ   r   r9   r   s    r    test_default_is_matrix_eyer     s3    A!U\\112222r"   c                      t         j                  j                  g dddd      } t        | t         j                  j                        rJ y )Nr   r   r   )r7   r8   spdiagsr   r9   r   s    r    test_default_is_matrix_spdiagsr     s9    Y1a0A!U\\112222r"   c                      t         j                  j                  d      } t        | t         j                  j                        rJ y r   )r7   r8   identityr   r9   r   s    r    test_default_is_matrix_identityr     s3    a A!U\\112222r"   c                      t         j                  j                  t        j                  ddgddgg      t        j                  ddgddgg            } t        | t         j                  j                        rJ y )Nr   r   r   r   r7   r8   kronr   r   r   r9   r   s    r    !test_default_is_matrix_kron_denser     f    
1a&1a&!"BHHq!fq!f-=$>	A !U\\112222r"   c                      t         j                  j                  t        j                  ddgddgg      t        j                  ddgddgg            } t        | t         j                  j                        rJ y )Nr   r   r   r   r   r   r   s    r    "test_default_is_matrix_kron_sparser    r   r"   c                      t         j                  j                  t        j                  ddgddgg      t        j                  ddgddgg            } t        | t         j                  j                        rJ y )Nr   r   )r7   r8   kronsumr   r   r   r9   r   s    r    test_default_is_matrix_kronsumr    sf    
1a&1a&!"BHHq!fq!f-=$>	A !U\\112222r"   c                      t         j                  j                  dd      } t        | t         j                  j                        rJ y r   )r7   r8   r<   r   r9   r   s    r    test_default_is_matrix_randomr    s5    Aq!A!U\\112222r"   c                      t         j                  j                  dd      } t        | t         j                  j                        rJ y r   )r7   r8   randr   r9   r   s    r    test_default_is_matrix_randr
    s5    !QA!U\\112222r"   fnc                    t         j                  j                  t        j                  d            }t         j                  j                  ddgddgg      } | ||g      }t        |t         j                  j                        rJ y)zbSame idea as `test_default_construction_fn_matrices`, but for the
    stacking creation functions.r   r   r   N)r7   r8   
coo_matrixr   rJ   r   r9   )r  r   r   r   s       r    test_default_is_matrix_stacksr    sk     	q	*A!Q!Q 01A
Aq6
A!U\\112222r"   c                     t         j                  j                  t        j                  d            } t         j                  j                  dgdgg      }t         j                  j                  dgg      }t         j                  j                  | ||f      }t        |t         j                  j                        rJ t         j                  j                  | dgd|gg      }t        |t         j                  j                        rJ y)z]Same idea as `test_default_construction_fn_matrices`, but for the block
    creation functionr   r   r   N)	r7   r8   r  r   rJ   
block_diagr   r9   bmat)r   r   ry   r   s       r    ,test_blocks_default_construction_fn_matricesr    s     	q	*A!qc
+A!&A 	Aq	*A!U\\11222 	At9tQi01A!U\\112222r"   c                     t         D ]u  } t        t        j                  |  d      } |ddgg      }|j                  | k(  sJ |j
                  | k(  sJ t        j                  t              5  d|_        d d d        w y # 1 sw Y   xY w)Nr   r   r   qqq)	sparray_typesr   r7   r8   format_formatr4   r5   AttributeError)fmtarr_clsMs      r    test_format_propertyr    s     %,,3%v7aVHxx3yyC]]>* 	AH	 	
	 	s   -B  B		c                  X   t         j                  j                  d      } t         j                  j                  |       }t	        | t         j                  j
                        rJ t	        |t         j                  j
                        sJ t         j                  j                  |      sJ t         j                  j                  |       sJ t         j                  j                  |j                               rJ t         j                  j                  | j                               rJ y r   )r7   r8   rJ   rK   r   r9   issparser/   r   as     r    test_issparser!    s    Aq!A!U\\11222a--... <<  ###<<  ### ||$$QYY[111||$$QYY[1111r"   c                  X   t         j                  j                  d      } t         j                  j                  |       }t	        | t         j                  j
                        rJ t	        |t         j                  j
                        sJ t         j                  j                  |      rJ t         j                  j                  |       sJ t         j                  j                  |j                               rJ t         j                  j                  | j                               rJ y r   )r7   r8   rJ   rK   r   r9   
isspmatrixr/   r  s     r    test_isspmatrixr$  
  s    Aq!A!U\\11222a--... ||&&q)))<<""1%%% ||&&qyy{333||&&qyy{3333r"   )r  r  r   r   r   r   r   r	   r
   c                    t         j                  j                  d|       }t         j                  j                  |      j	                  |       }t        |t         j                  j                        rJ t        |t         j                  j                        sJ  ||      rJ  ||      sJ  ||j                               rJ  ||j                               rJ y )Nr   )r  )r7   r8   rJ   rK   asformatr   r9   r/   )r  r  r   r   s       r    test_isspmatrix_formatr'    s     	3'Aq!**3/A!U\\11222a--... !u9a5L5 !))+!))+r"   )]r4   numpyr   numpy.testingtestingrV   scipy.sparser7   scipy.sparse.linalgr8   rw   ro   scipy._lib._utilr   r  r   sparray_classesr   r   r   floatr   sparrayssquare_sparrayseig_sparraysmarkparametrizeparametrize_sparraysparametrize_square_sparraysparametrize_eig_sparraysr!   r%   r,   r0   r:   r=   r@   rE   rN   rS   rX   r[   r_   ra   rc   rh   rl   rs   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   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'  )rQ   r9   s   00r    <module>rC     s       " " 6 B 2?,-GELLQCv,' BHH  BHHFF 
 BHH	
 
 '667GAJ6-<='71:=*9:w
:{{..} /   %kk55m 6   ";;22= 3  
 ' ' % %
 ) )  % %
 7 74 J J
 S S = = 	; 	; ? ?   ) ) C C S S  
  
 : : < <
 A A     8 8
 ; ;
  -   
. . V*	 
*
     * *  LL""!	

 LL""!	

 LL""EN	
" )BHHbhh+?@ A A#$ AF3
3
3
3
3333
3
  3 3U\\5H5HIJ3 K33 24 	++,	++,	++,	++,	++,	++,	++,u. 7=:s   QQ5QQ