
    _Mh<              	       8   d Z ddlZddlZddlmZmZ ddlmZm	Z	m
Z
mZmZmZmZ ddlmZmZ ddlmZ ej                                        Ze                    e           eeegZej        ej        ej        gZej        d             Zej        d             Zej         !                    d	ee	e
eg          d
             Z"ej         !                    d	eeee	e
eg          d             Z#ej         !                    d	e           G d d                      Z$dS )z*Test of 1D aspects of sparse array classes    N)assert_equalassert_allclose)	bsr_array	csc_array	dia_array	lil_array	coo_array	csr_array	dok_array)supported_dtypesmatrix)ComplexWarningc                  0    t          j        g dd          S )N)   r      r   d)nparray     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_common1d.pydat1dr      s    8LLL#&&&r   c                 R      fdt           D             fdt          D             S )Nc                 <    i | ]}|                     |          S r   )astype).0dtyper   s     r   
<dictcomp>z%datsp_math_dtypes.<locals>.<dictcomp>   s'    FFF%e,,FFFr   c                 T    i | ]#fd                                  D             $S )c                 2    g | ]\  }}|| |          fS r   r   )r   r   dat	spcreators      r   
<listcomp>z0datsp_math_dtypes.<locals>.<dictcomp>.<listcomp>!   s,    VVVZUCUC30VVVr   )items)r   r"   
dat_dtypess    @r   r   z%datsp_math_dtypes.<locals>.<dictcomp>    sM        	VVVV:CSCSCUCUVVV  r   )math_dtypes
spcreators)r   r%   s   `@r   datsp_math_dtypesr(      sH    FFFF+FFFJ   #   r   r"   c                     t          j        t          d          5   | g d           d d d            d S # 1 swxY w Y   d S )Nzarrays don't support 1D inputmatchr   r      r   pytestraises
ValueErrorr"   s    r   test_no_1d_support_in_initr3   (   s    	z)H	I	I	I    	,,,                                   s   7;;c                     t          j        t          d          5   | t          j        d                     d d d            d S # 1 swxY w Y   d S )Nzarrays don't.*support 3Dr*   )r   r-      )r/   r0   r1   r   onesr2   s    r   test_no_nd_support_in_initr7   0   s     
z)C	D	D	D & &	"')$$%%%& & & & & & & & & & & & & & & & & &s   AAAc                   h   e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zej        j        ed                         Zej        j        ed                         Zej        j        ed                         Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d  Z&d!S )"TestCommon1Dz5test common functionality shared by 1D sparse formatsc                    t           |d                                          t          j        d                     t           |d          j        d           t           |d                                          d           d S )Nr   r   r   )r   toarrayr   zerosnnzcount_nonzeroselfr"   s     r   test_create_emptyzTestCommon1D.test_create_empty=   ss    YYt__,,..<<<YYt__(!,,,YYt__2244a88888r   c                     t          j        t          d          5   |d           d d d            d S # 1 swxY w Y   d S )Nzelements cannot be negativer*   )r.   r@   s     r   test_invalid_shapesz TestCommon1D.test_invalid_shapesB   s    ]:-JKKK 	 	Ie	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   599c                 6    t           ||                     d S N)reprrA   r"   r   s      r   	test_reprzTestCommon1D.test_reprF   s     YYur   c                 6    t           ||                     d S rG   )strrI   s      r   test_strzTestCommon1D.test_strI   s     IIer   c                     t          j        g dd          }t          |  ||                                                      d S )N)r      r   r   r   r   r   r   r   r   r   r   r   r<   rA   r"   As      r   test_negzTestCommon1D.test_negL   sH    H===sCCaR99Q<<-002233333r   c                 :     |g d          }|j         dk    sJ d S )Nr,   r   )ndimrT   s      r   test_1d_supported_initz#TestCommon1D.test_1d_supported_initP   s(    Illl##v{{{{{{r   c                     |g d          }|                     dd          }g dg}t          |                                |            ||          }|                     d          }t          |                                |d                    |                     d          }|j        |j        k    sJ |j                             d          }t          |                                |d                    d S )Nr   r      r   r   r   r   rD   r   r   r      r      r   r^   )reshaper   r<   shapeT)rA   r"   xydesiredy2s         r   $test_reshape_1d_tofrom_row_or_columnz1TestCommon1D.test_reshape_1d_tofrom_row_or_columnT   s    I;;;<<IIa8889QYY[['*** IgIIbMMQYY[['!*---YYuw"("""" CKKOOQYY[['!*-----r   c                 r    |g d          }|                     d          }g dg dg dg dg}t          |                                |           |                     d          }||u sJ |                     d          }t          |                                |                                           d S )	Nr[   )r5   r   )r   r   r\   r   r   r   )r   rD   r   )r   r   r]   r_   r^   )r`   r   r<   )rA   r"   rc   rd   re   s        r   test_reshapezTestCommon1D.test_reshapef   s    I;;;<<IIf99iiiYYY?QYY[['***IIeAvvvvIIbMMQYY[[!))++.....r   c                    t           j                            d           t          j        g d          }t           j                            d          }t          j        g           }t          j        d          }||||g}|D ]?} ||          }t          j        d          5  t          j        |                                          sJ t          |                                |                                           t          |                    d           |                    d                      t          |                    d          |                    d                     t          |                    d	          |                    d	                     d d d            n# 1 swxY w Y   A|                    dt          j        d
                     d S )Ni  )	r   r   r-   r   rR   r]   r\   	   r]   )(   ignore)overaxisr   rO   r   rr   out)
r   randomseedr   randr=   errstateisscalarsumr   )	rA   r"   dat_1dat_2dat_3dat_4arraysr!   datsps	            r   test_sumzTestCommon1D.test_sumr   s   
	t66677	q!!u- 	F 	FCIcNNE(+++ F F{599;;/////		599;;777T 2 2EII4I4H4HIIIQ1B1BCCCR 0 0%)))2D2DEEEF F F F F F F F F F F F F F F 			qbhrll	+++++s   (DF99F=	 F=	c                    t          j        d          }t          j        g d          } ||          }t          j        t
          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                    d
           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Nr;   r   r   r-   zaxis must be None, -1 or 0r*   r   rq   Tuples are not acceptedr   r   axis must be an integer      ?"output parameter.*wrong.*dimensionr   rs   )r   r=   r   r/   r0   r1   rz   	TypeErrorrA   r"   rt   r!   r   s        r   test_sum_invalid_paramsz$TestCommon1D.test_sum_invalid_params   s<   htnnhyyy!!	#]:-IJJJ 	 	II1I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,EFFF 	# 	#II6I"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#]9,EFFF 	  	 II3I	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:-QRRR 	' 	'II1#I&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sH   A44A8;A8B==CC#DD
D
,EEEc                     t          j        g d          } ||          }t          j        |          }t          j        |          }t          ||           d S Nr   )r   r   rz   r   )rA   r"   r!   r   dat_sum	datsp_sums         r   test_numpy_sumzTestCommon1D.test_numpy_sum   sR    hyyy!!	#&++F5MM	+++++r   c                 z   t          j        g d          } ||          }t          |                                |                                           t          j        |                    d                     sJ t          |                    d           |                    d                      t          |                    d          |                    d                     t          |                    d          |                    d                     t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr   rq   r   rO   rr   r*   r   )r   r   r   meanry   r/   r0   r1   )rA   r"   r!   r   s       r   	test_meanzTestCommon1D.test_mean   s   hyyy!!	#

EJJLL111{5::4:0011111d++UZZTZ-B-BCCCa((%**!**<*<===b))5::2:+>+>???]:V444 	 	JJAJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:V444 	  	 JJBJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s$   E&&E*-E*F00F47F4c                    t          j        t          j        d                    }t          j        g dg dg dg          } ||          }t	          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t	          j        t          d	          5  |                    d
           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )N)r   r   r   )r   rR   r]   )rl   r\   rm   zaxis out of ranger*   r   rq   r   r   r   r   r   r   rs   )	r   asarrayr=   r   r/   r0   r1   r   r   r   s        r   test_mean_invalid_paramsz%TestCommon1D.test_mean_invalid_params   sW   j&))**h			:::zzz:;;	#]:-@AAA 	 	JJAJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,EFFF 	$ 	$JJFJ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$]9,EFFF 	! 	!JJCJ   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!]:-QRRR 	( 	(JJA3J'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(sH   *BBB3CCC<DD#&D#E**E.1E.c                    t          j        g d          } ||          }t          D ]X}|                    |          }|                    |          }t	          ||           t          |j        |j                   Yd S Nr   r   )r   r   r   rz   r   r   r   )rA   r"   r!   r   r   r   r   s          r   test_sum_dtypezTestCommon1D.test_sum_dtype   s    hyyy!!	#% 	9 	9EggEg**G			..IGY///	8888	9 	9r   c                    t          j        g d          } ||          }t          D ]X}|                    |          }|                    |          }t	          ||           t          |j        |j                   Yd S r   )r   r   r   r   r   r   r   )rA   r"   r!   r   r   dat_mean
datsp_means          r   test_mean_dtypezTestCommon1D.test_mean_dtype   s    hyyy!!	#% 	; 	;Exxex,,H%00JHj111)9::::	; 	;r   c                     t          j        g d          } ||          }t          j        d          }t          j        d          }|                    |           |                    |           t          ||           |                    d|           |                    d|           t          ||           t	          j        t          d          5  |                    t          j        dg                     d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    t          j        dgg                     d d d            d S # 1 swxY w Y   d S )Nr   r   rt   rs   zoutput parameter.*dimensionr*   )r   r   r   r   r/   r0   r1   )rA   r"   r!   r   dat_out	datsp_outs         r   test_mean_outzTestCommon1D.test_mean_out   s   hyyy!!	#(1++HQKK	W

y
!!!+++aW%%%

y
)))+++]:-JKKK 	* 	*JJ28QC==J)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]:-JKKK 	, 	,JJ28aSE??J+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s$   *DDD;+E33E7:E7c                     t          j        g d          } ||          }t          j        |          }t          j        |          }t          ||           t	          |j        |j                   d S r   )r   r   r   r   r   r   )rA   r"   r!   r   r   r   s         r   test_numpy_meanzTestCommon1D.test_numpy_mean   sg    hyyy!!	#73<<WU^^
*---X^Z%566666r   c                    t          j        g d          }t           ||                                          |           t          j        g d          }t           ||                                          |           t           ||d                                          |                    d                     d S N)r-   r   r5   y      ?      @r   rO   int16r   )r   r   r   r<   r   rT   s      r   test_from_arrayzTestCommon1D.test_from_array   s     HYYYYYq\\))++Q///H&&&''YYq\\))++Q///YYq00088::AHHW<M<MNNNNNr   c                    g d}t           ||                                          |           g d}t           ||                                          t          j        |                     t           ||d                                          t          j        |                              d                     d S r   )r   r<   r   r   r   rT   s      r   test_from_listzTestCommon1D.test_from_list   s     IIYYq\\))++Q///YYq\\))++RXa[[999Iaw'''//1128A;;3E3Eg3N3N	
 	
 	
 	
 	
r   c                    t          j        g d          }t          |          }t           ||                                          |            ||          }t           ||                                          |           t          j        g d          }t          |          }t           ||                                          |           t           ||d                                          |                    d                      ||          }t           ||                                          |           t           ||d                                          |                    d                     d S )N)r   r   r   r   r   r   )r   r   r	   r   r<   r   rA   r"   DSs       r   test_from_sparsezTestCommon1D.test_from_sparse  sa    HYYYaLLYYq\\))++Q///IaLLYYq\\))++Q///H&&&''aLLYYq\\))++Q///YYq00088::AHHW<M<MNNNIaLLYYq\\))++Q///YYq00088::AHHW<M<MNNNNNr   c                     ||          }|                                 }t          ||           |j        j        |j        j        k    sJ |                     d          }t          ||           |j        j        sJ |j        j        sJ |                     d          }t          ||           |j        j        sJ |j        j        sJ t          j        |j        |j                  }|                     |           t          ||           d|d<   |                     |           t          ||           t          j	        g d          }t          j
        ||          }t          j
        ||                                           }t          ||           t          j	        g d          }	t          j
        ||	          }t          j
        |                                 |	          }t          ||            ||t                    }
|                    t                    }t          |
                                 |           d S )	NC)orderFr   r         ?.)r          @      @g      @)r<   r   flagsc_contiguousf_contiguousr   r=   ra   r   r   dotboolr   )rA   r"   r   r   chkrt   adense_dot_densecheckbspboolarrbools               r   test_toarrayzTestCommon1D.test_toarray  s-   	%  mmooS%   y%)????? mm#m&&S%   y%%%%y%%%% mm#m&&S%   y%%%%y%%%% hu{%+666#S%    C#S%    H)))**&E**q%--//**_e,,,H)))**&**u}}**_e,,, 5---,,t$$V^^%%w/////r   c                    ||         D ]\  }}}|                                 }d|d<   |}||z   }t          ||                                |z              ||dd         z   }t          ||                                |d         z              d S )Nr   r   r   copyr   r<   	rA   r"   r(   r   r!   r   r   r   cs	            r   test_addzTestCommon1D.test_addC  s    !29!= 
	0 
	0E3

AAaDAAAAIIKK!O,,, AacF
AAIIKK!A$.////
	0 
	0r   c                     ||         D ]K\  }}}|                                 }d|d<   |}||z   }t          |||                                z              Ld S )Nr   r   r   r   s	            r   	test_raddzTestCommon1D.test_raddP  sj    !29!= 	- 	-E3

AAaDAAAA		O,,,,	- 	-r   c                    ||         D ]i\  }}}|t          j        d          k    r t          ||z
  g d           t          ||z
  g d           t          d|z
                                  |             |g dd          }t          ||z
  ||                                z
             t          ||z
  |                                |z
             t          |                                |z
  |                                |z
             t          ||                                z
  ||                                z
             t          |d d         |z
  |d d         |z
             kd S )Nr   )r   r   r   r   r   )r   rR   r   r-   r   r   r   )r   r   r   r<   )rA   r"   r(   r   r!   r   rU   s          r   	test_rsubzTestCommon1D.test_rsubX  sl   !29!= 	9 	9E3((((#+555%#+555!e),,..555	---s333A#'C!))++$5666!c'AIIKK#$5666u,aiikkC.?@@@,cAIIKK.?@@@ RaR5#bqb'C-8888!	9 	9r   c                    t          j        g dg dg dg          }t          j        g d          } ||          } ||          }t          ||z                                  ||z             t          ||z  ||z             t          ||z  ||z             t          ||z                                  ||z             t          ||z  ||z             t          ||z  ||z             t          ||z  ||z             t          ||z  ||z             t          ||z  ||z             t          ||z                                  ||z             t          ||z  ||z             t          ||z  ||z             d S )Nr-   r   r   ri   r   r   r   r   rS   )rA   r"   rU   vAspvsps         r   test_matmul_basiczTestCommon1D.test_matmul_basick  s   Hkkk999iii899HYYYillill 	cCi((**AE222QWa!e$$$S1Wa!e$$$cCi((**AE222S1Wa!e$$$QWa!e$$$S3YA&&&QWa!e$$$S1Wa!e$$$cCi((**AE222QWa!e$$$S1Wa!e$$$$$r   c                 2   t          j        g d          } ||          }t          j        g dg          j        }t          ||z  |                                |z             |t          j        g d          z  j        dk    sJ |t          j        g d          z  dk    sJ |t          j        g d          z  j        dk    sJ |t          j        dgdgdgg          z  j        dk    sJ t          |t          g dg          j        z  t           j                  sJ t          j        ddg          t          j        g d	          t          j        dgdgg          g}|D ]:}t          j
        t          d
          5  ||z   d d d            n# 1 swxY w Y   ;t          j        |                                g d          }t          |t          j        g d          z  |           t          |dgdgdggz  |j                   d S )Nr   )r   r-   r   r      r   r-   r   )r   r   r-   r   r5   zdimension mismatchr*   )r   r   rb   r   r<   ra   
isinstancer   ndarrayr/   r0   r1   r   )rA   r"   rU   r   colbad_vecsrc   
dot_results           r   test_matveczTestCommon1D.test_matvec  sU   H[[[!!illh			{##%c	3;;==3#6777BHYYY'''."4444RXiii(((B....bhyyy)))0B6666bhaS1#///6$>>>>#			{ 3 3 55rzBBBBB HaV$$bh|||&<&<bhaSz>R>RS 	 	Az1EFFF  a              
 VCKKMM99955
bhyyy111:>>>sQC!o-z|<<<<<s   FF!	$F!	c                     ||          }t          g d|z  t          j        g d|                                                     t          j        g dg          }t          ||z  ||                                z             d S )Nr   )r   r   r   r<   r   )rA   r"   r   Mrows        r   test_rmatveczTestCommon1D.test_rmatvec  s~    Ieq("&qyy{{*K*KLLLh~&&aqyy{{!233333r   c                 .   |t          j        g           fD ]}} ||          }t          |                                |           t          |                                                                |           t          |j        |j                   ~d S rG   )r   r   r   r<   	transposer   )rA   r"   r   rU   Bs        r   test_transposezTestCommon1D.test_transpose  s    "& 	+ 	+A	!Aa(((..00!444!'****		+ 	+r   c                     ||         D ]6\  }}}||z   }t          |||z              ||z   }t          |||z              7d S rG   )r   )rA   r"   r(   r   r!   r   sum1sum2s           r   test_add_dense_to_sparsez%TestCommon1D.test_add_dense_to_sparse  sd    !29!= 	* 	*E3;DsSy)))3;DsSy))))		* 	*r   c                     t          j        d          } ||          }|j        dvr&t          ||          D ]\  }}t	          ||           d S d S )Nr]   )coodiabsr)r   arangeformatzipr   )rA   r"   r   rU   rc   rd   s         r   test_iteratorzTestCommon1D.test_iterator  sj    IaLLIaLL8000Aq		 # #1Q"""" 10# #r   c                 0   t          j        g d          } ||          }|                    d          J t          |                                g d           |                    d           t          |                                g d           d S )N)r   r   r   r5   r;   r   )r]   )r   r   r   r   r   )r   r   resizer   r<   r   s       r   test_resizezTestCommon1D.test_resize  s    H\\\""IaLLxx~~%%%QYY[[))),,,	QYY[[///22222r   N)'__name__
__module____qualname____doc__rB   rE   rJ   rM   rV   rY   rg   rj   r   r   r   r   r   r   r   r   r   r/   markthread_unsafesup_complexr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   r9   9   sF       ??9 9 9
      4 4 4  . . .$
/ 
/ 
/, , ,(' ' ', , ,     ( ( (	9 	9 	9	; 	; 	;, , ,(7 7 7 [O O [ O [
 
 [ 
 [O O [ O,0 ,0 ,0\0 0 0- - -9 9 9&% % %*= = =64 4 4+ + +* * *# # #3 3 3 3 3r   r9   )%r   r/   numpyr   numpy.testingr   r   scipy.sparser   r   r   r   r	   r
   r   scipy.sparse._sputilsr   r   scipy._lib._utilr   testingsuppress_warningsr   filterr'   int64float64
complex128r&   fixturer   r(   r   parametrizer3   r7   r9   r   r   r   <module>r     s   0 0      7 7 7 7 7 7 7 7                  ; : : : : : : : + + + + + + j**,,   > " " " I.
xR]3 ' ' '    y)Y	&RSS    TS  )Y	9iS & & & j11E3 E3 E3 E3 E3 E3 E3 21E3 E3 E3r   