
    tKg8                        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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 j.                  j1                  dee      Ze j.                  j1                  dee      Ze j.                  j1                  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&        Z0ed'        Z1ed(        Z2ed)        Z3e j.                  j1                  d*d+d,g      d-        Z4ed.        Z5ee j.                  j1                  d/g d0      d1               Z6ee j.                  j1                  d/d2d3g      d4               Z7ed5        Z8ed6        Z9ed7        Z:d8 Z;d9 Z<e j.                  j1                  d:ej                  jz                  d;d<gfej                  j|                  d;d<gfej                  j~                  d=d>gfg      e j.                  j1                  d?ej                  ej                  g      d@               ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKe j.                  j1                  dJej                  j                  ej                  j                  f      dK        ZNdL ZOdM ZPdN ZQdO ZRe j.                  j1                  dPdQej                  j                  fdRej                  j                  fd,ej                  j                  fd+ej                  j                  fdSej                  j                  fdTej                  j                  fdUej                  j                  ff      dV        ZZyc c} w c c}w c c}w c c}w )W    N)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    e/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/sparse/tests/test_array_api.pytest_sumr    0   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$   8   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_todenser/   O   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_indexingr9   U   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<   p   s;    
		!A!a%+I-II++r!   c                 `    t        | | z   t        j                  j                        sJ d       y r-   r   r6   r7   r8   r   s    r   test_sparse_additionr?   v   &    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_mulrD   {   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   )r3   r4   	TypeError
ValueErrorr   eyer6   r7   	csr_arrayarangereshaperB   r.   r   s    r   test_elementwise_rmulrM      s    	y	!q 
" 
z	"
q	ELL**299Q<+?+?1+EFF 
# 661q5aiikAo.///66199;?		q(89::: 
"	! 
#	"s   DADDD"c                     t        j                  | | j                  z  j                         | j	                  | j                        j                         k(        sJ y N)r   rB   Tr.   dotr   s    r   test_matmulrR      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   r6   r7   r8   nptassert_equalr.   r3   r4   r5   r   s    r   test_power_operatorrW      ss    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 rO   )r   r   ndarrayr   s    r   test_sparse_dividerZ      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rO   )r3   warnsRuntimeWarningr   r.   r6   r7   r8   r   s    r   test_sparse_dense_divider^      s>    	n	%1qyy{?U\\-A-ABBB 
&	%	%s   8AA%c                 `    t        | dz  t        j                  j                        sJ d       y )Nr   r   r>   r   s    r   test_dense_divider`      r@   r!   c                 x    t        j                  t              5  | j                   d d d        y # 1 sw Y   y xY wrO   )r3   r4   AttributeErrorr   r   s    r   test_no_A_attrrc      !    	~	&	 
'	&	&   09c                 x    t        j                  t              5  | j                   d d d        y # 1 sw Y   y xY wrO   )r3   r4   rb   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   _getcolr6   r7   r8   _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aslinearoperatorrU   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   )r1   r2   ro   invr   r6   r7   r8   rU   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   )r1   r2   r6   r7   
csc_matrixro   expmr   r8   rU   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   )	r1   r2   rU   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 rO   )ro   normrU   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   
onenormestrU   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   )
r1   r2   rU   rq   ro   spsolver   rw   solver.   r   s    r   test_spsolver      sZ    {{BQ~5QA
				aV,r!   fmtr   r   c                     g dg dg dg dg}| dk(  r t         j                  j                  |      }nt         j                  j                  |      }t	        j
                  |g d       y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   )r6   r7   rJ   	csc_arrayro   spsolve_triangular)r   arrr   s      r   test_spsolve_triangularr     sX     		C e|
,,
 
 
%a
,,
 
 
%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   )r1   r2   ro   
factorizedrU   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   rU   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   rU   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   eigsrU   rq   r   evs      r   	test_eigsr   9  s6    99Q!DAq	A	!qr!   c                     | | j                   z   } t        j                  | d      \  }}t        j                  | |z  |d   |z         y r   )rP   ro   eigshrU   rq   r   s      r   
test_eigshr   B  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.   sortrU   rq   )r   usvhu2s2vh2s          r   	test_svdsr   L  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   )r6   r7   r   ro   splurU   rq   r   r   r   asarrayfloat64r   r   s     r   	test_splur   U  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   )r6   r7   r   ro   spilurU   rq   r   r   r   r   r   r   s     r   
test_spilur   d  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   )r6   r7   	coo_arrayr   rK   rL   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   s  s   & ,,((1)=)=a)CDKOO"">2OO"">2	
I ^Fvt$**n<<<  &)Fvt$**n<<<  #u||//::;%++-  ##**>:"")).9
	 Y!D64(...@@@ " Yf-!D64(...@@@ " <r!   c                      t         j                  j                  g d      } t        | t         j                  j                        rJ y )N)r   r   r   )r6   r7   diagsr   r8   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   )r6   r7   rI   r   r8   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   )r6   r7   spdiagsr   r8   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   )r6   r7   identityr   r8   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   r6   r7   kronr   r   r   r8   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   )r6   r7   kronsumr   r   r   r8   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   )r6   r7   r;   r   r8   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   )r6   r7   randr   r8   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)r6   r7   
coo_matrixr   rI   r   r8   )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)	r6   r7   r  r   rI   
block_diagr   r8   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   r6   r7   format_formatr3   r4   rb   )r   arr_clsMs      r   test_format_propertyr    sx    %,,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   )r6   r7   rI   rJ   r   r8   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   )r6   r7   rI   rJ   r   r8   
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	   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  )r6   r7   rI   rJ   asformatr   r8   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!   )[r3   numpyr   numpy.testingtestingrU   scipy.sparser6   scipy.sparse.linalgr7   rw   ro   r  r   sparray_classesr   r   r   floatr   sparrayssquare_sparrayseig_sparraysmarkparametrizeparametrize_sparraysparametrize_square_sparraysparametrize_eig_sparraysr    r$   r+   r/   r9   r<   r?   rD   rM   rR   rW   rZ   r^   r`   rc   rh   rl   rs   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   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'  )rP   r8   s   00r   <module>rB     s$       " " B 2?1>AGELLQCv,' BHH  BHHFF 
 BHH	
 
 '66o7GAJo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
 ; ;
   e}-- .-   
. . 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 	++,	++,	++,	++,	++,	++,	++,. 7=:s   Q&Q+/Q0Q5