
    -i*              
          S SK r S SKrS SKJr  S SK Jr  S SKJr  S SK	J
r
  S SKJrJr  S rS rS"S
 jrS#S jrS rS rS rS r\R,                  \\R.                  4r\R2                  \R4                  \R6                  4r\R:                  \R<                  \R>                  4r \\-   \ -   r!\ RD                  RG                  S\!5      \ RD                  RG                  S\RH                  \RJ                  \RL                  \RN                  \RP                  /5      \ RD                  RG                  SSS	/5      \ RD                  RG                  SSS	/5      \ RD                  RG                  SSS	/5      S 5       5       5       5       5       r)\ RD                  RG                  S/ SQ5      \ RD                  RG                  SSS	/5      \ RD                  RG                  SSS	/5      S 5       5       5       r*\ RD                  RG                  S\RV                  \RJ                  \RL                  \RN                  \RP                  /5      \ RD                  RG                  S/ SQ5      S 5       5       r,\ RD                  RG                  S\RV                  \RJ                  \RL                  \RN                  \RP                  /5      \ RD                  RG                  S\!5      \ RD                  RG                  SSS	/5      \ RD                  RG                  SSS	/5      \ RD                  RG                  SSS	/5      \ RD                  RG                  SSS/5      S  5       5       5       5       5       5       r-S! r.g)$    N)assert_allclose)raises)sparse)csgraph)np_longnp_ulongc                     [         R                  " U R                  [         R                  5      =(       d%    [         R                  " U R                  [        5      $ N)np
issubdtypedtypesignedintegerr   )mats    b/var/www/html/venv/lib/python3.13/site-packages/scipy/sparse/csgraph/tests/test_graph_laplacian.pycheck_int_typer      s8    ==B$4$45 		8:     c                      [         [        [        4 HW  n SS/S//// SQ/ SQ/SS/SS/SS//4 H6  n[        R                  " XS9n[        [        [        R                  U5        M8     MY     g )	N   )r         )         r   r   r   r   r   )	intfloatcomplexr   arrayassert_raises
ValueErrorr   	laplacian)tmAs      r   test_laplacian_value_errorr%      so    % a&C5'i(q6Aq6Aq6*,A $A*g&7&7;, !r   Fc                    [         R                  " U 5      (       a  U R                  5       n [        R                  " U 5      n SU -  n[        UR                  S   5       H7  nXUS-   S 24   R                  5       XS U24   R                  5       -   X#U4'   M9     U(       aG  [        R                  " U5      R                  5       nSXDS:H  '   X$S S 2S 4   S-  -  nX$S S S 24   S-  -  nU$ )Ng      r   r   g      ?g      ?)
r   issparsetoarrayr   asarrayrangeshapesumdiagcopy)xnormedyjds        r   _explicit_laplacianr4      s    qIIK


1AqA1771:QqST61rrT7;;=0A# GGAJOOq&		qvY]	tAvY]Hr   Tc                    [        U S5      (       d  [        U [        [        [        S95      n [        R
                  " U 5      (       a  U nUR                  5       n O[        R                  " U 5      n[        R                  " U 5      n[        R                  " USS9nU R                  S   n[        XS9n[        R                  " XUS9n[        R                  " X1US9n	U(       a  [        X5        [        X55        O=U(       a  [        U 5      (       d&  [        X5        UR                   S:X  a  [        X5        [        XR                  5       5        XR                  5       4 HX  n
U(       d-  [        U
R#                  SS	9[        R$                  " U5      5        [        U
R&                  U
5        [        X5        MZ     g )
Nr+   )r   r   T)r.   r   )r0   )r0   r.   coo)axis)hasattrevaldictr   r   r'   r(   	csr_arrayr.   r+   r4   r   r!   r   _assert_allclose_sparser   formatr,   zerosT)r   r0   r.   sp_matmat_copysp_mat_copyn_nodesexplicit_laplacianr!   sp_laplaciantesteds              r    _check_symmetric_graph_laplacianrG   *   sL   3  3623snn!!#&wws|H""65KiilG,S@!!#4@I$$V*.0L &4>#..I+}}%'=I33562245FJJAJ.0AB&)3	 6r   c                  V    Sn U  H!  nS H  nS H  n[        XU5        M     M     M#     g )N)z,np.arange(10) * np.arange(10)[:, np.newaxis]znp.ones((7, 7))z
np.eye(19)z+sparse.diags([1, 1], [-1, 1], shape=(4, 4))z5sparse.diags([1, 1], [-1, 1], shape=(4, 4)).toarray()z5sparse.diags([1, 1], [-1, 1], shape=(4, 4)).todense()z3np.vander(np.arange(4)) + np.vander(np.arange(4)).T)TF)rG   )symmetric_matsr   r0   r.   s       r   test_symmetric_graph_laplacianrJ   O   s3    N !F#0dC $ " r   c                     [         R                  " U 5      (       a  U R                  5       n [         R                  " U5      (       a  UR                  5       n[        X40 UD6  g r
   )r   r'   r(   r   )abkwargss      r   r<   r<   _   sC    qIIKqIIKA#F#r   c           	         U" XS9n[         R                  " UUSUUS S9u  pU(       ae  [        U5      (       aU  U	R                  [        R
                  :X  d   eU
R                  [        R
                  :X  d   e[        XSS9  [        XSS9  OU	R                  U:X  d   eU
R                  U:X  d   e[        R                  " U5      R                  U5      n[        R                  " U5      R                  U5      n[        XSS9  [        XSS9  U(       d]  U(       a  [        U5      (       dE  [        U5      [        R                  L a  [        X5        g UR                  S:X  a  [        X5        g g g g Nr   T)r0   return_diaguse_out_degreer.   r   g-q=)atolr6   )r   r!   r   r   r   float64r<   r)   astypetypendarrayr   r=   r$   	desired_L	desired_dr0   rR   r.   r   arr_typer   Lr3   s              r   _check_laplacian_dtype_noner]   h   s6    1
"C%DA .%%ww"**$$$ww"**$$$5959ww%ww%JJy)007	JJy)007	5959>#..CyBJJ&'u$'/ % / r   c           	         U" XS9n[         R                  " UUSUUUS9u  pU	R                  U:X  d   eU
R                  U:X  d   e[        R                  " U5      R                  U5      n[        R                  " U5      R                  U5      n[        XSS9  [        XSS9  U(       d]  U(       a  [        U5      (       dE  [        U5      [        R                  L a  [        X5        g UR                  S:X  a  [        X5        g g g g rP   )r   r!   r   r   r)   rU   r<   r   rV   rW   r   r=   rX   s              r   _check_laplacian_dtyper_      s     1
"C%DA 77e77e

9%,,U3I

9%,,U3IAu5Au5>#..CyBJJ&'u$'/ % / r   r   r[   r.   r0   rR   c                    / SQ/ SQ/ SQ/nU" [         R                  " U5      US9nUR                  5       nU(       d  U (       a  / SQ/ SQ/ SQ/n/ SQnU(       a  U (       a  / SQ/ S	Q/ SQ/n/ S
QnU(       d  U (       d  / SQ/ SQ/ SQ/n/ SQnU(       a  U (       d  / SQ/ S	Q/ SQ/n/ SQn[        UWWUU UUUS9  [	        UUUUU UUUS9  g )Nr   r   r   r   r   r   r   r   r   r   )r   r   )r   r   )r   r   r   )r   g      r   )r   r   )r   r   r   )r   rd   r   )re   r   r   )r   r   r   )r   r   r   )r0   rR   r.   r   r[   )r   r   r.   r]   r_   )	rR   r0   r.   r   r[   r$   A_copyr\   r3   s	            r   test_asymmetric_laplacianrh      s     
			A 	!E*AVVXFn . . n 			%	 		%	r   fmt)csrcscr6   lildokdiabsrc                 R    [         R                  " SS/SS/SU S9n[        X1U5        g )Nr   rd   )r   r   )offsetsr+   r=   )r   diags_arrayrG   )ri   r0   r.   r   s       r   test_sparse_formatsrs      s,    
 

aVb!WF3
OC$S$7r   form)r   functionloc                    SnU " [         R                  " X"-  5      R                  X"5      5      n[        R                  " USUS9u  pE[        R                  " USSUS9u  pg[        R                  " USSUS9u  p[        R                  " USSSUS9u  pX3R
                  -  n[        R                  " USUS9u  p[        R                  " USSUS9u  p[        XU-   5        [        X5        [        X5        0 nS HI  nUS	:X  a  [        U5      UU'   M  [        U5      " [         R                  " X#R                  S
95      UU'   MK     [        US   US   US   R
                  -   5        [        US   US   5        [        US   US   5        g )Nr   T)rQ   rt   )rQ   rR   rt   )rQ   symmetrizedrt   )rQ   rx   r0   rt   )rQ   r0   rt   )L_inL_outLs	Ls_normedLss
Lss_normedr   r   r{   ry   rz   r}   r|   r~   )r   arangereshaper   r!   r?   r   r9   eyer   r<   )r[   rt   nr   ry   d_inrz   d_outr{   dsr|   	ds_normedr}   dssr~   
dss_normedr3   r\   s                     r   test_laplacian_symmetrizedr      s    	
A
299QU#++A1
2C""JD
 $$	LE 	FB #,,I 55LC  $TBHC$..	J Bu%BI*
AF7?7AaD7266!9956AaD	 G AdGQvY7%=>AdGQuX.AkNAlO<r   rx   ru   rv   c           
      t   Sn/ SQ/ SQ/ SQ/nU" [         R                  " U5      U S9n[        R                  " USUUUU S9u  p[        R                  " USUUUU SS	9u  p[	        X5        [        X5        [        R                  " USUUUU US	9u  p[	        X5        UR                  U :X  d   eU" [         R                  " XgR                  S95      R                  U 5      n[        XS
S
S9  [         R                  " S5      R                  SS5      nU(       a
  U [        ;   d  [	        U" U5      X-  5        g g )Nr   ra   rb   rc   r   T)rQ   r0   rx   rR   r   r   )rQ   r0   rx   rR   r   rt   gH׊>)rtolrS   r   r   )r   r   r   r!   r   r<   r   r   rU   r   r   
INT_DTYPES)r   r[   r0   rx   rR   rt   r   r   LodoLadar\   r3   Lmr/   s                   r   test_formatr   5  s2    	
Ai
+C
288C=
.C%FB %FB BB#%DA A77e	
266!99%	&	-	-e	4BBD9
		!Q"Au
*!bf% 	r   c                      [         R                  " [        SS9   [        R                  " [
        R                  " S5      SS9n S S S 5        g ! , (       d  f       g = f)NzInvalid form: 'toto')matchr   toto)rt   )pytestr   r    r   r!   r   r   )_s    r   test_format_error_messager   n  s8    	z)?	@bffQif5 
A	@	@s   *A
A)F)T)/r   numpyr   numpy.testingr   r   r   scipyr   scipy.sparser   scipy._lib._utilr   r   r   r%   r4   rG   rJ   r<   r]   r_   intclonglongr   float32rT   
longdoubleREAL_DTYPES	complex64
complex128clongdoubleCOMPLEX_DTYPESDTYPESmarkparametrizer   
csr_matrix
coo_matrixr;   	coo_arrayrh   rs   r)   r   r   r    r   r   <module>r      s$     ) *    .<"4JD $0B06 ggw,
zz2::r}}5,,r~~>	k	!N	2 &)bhh&,&7&7&,&7&7&,&6&6&,&6&6	&8 9
 $/D%=1)D%=99 : 2 09 *9x  !6 7D%=1$/8 0 278
 """"!!!!	# !<=2= >2=j """"!!!!	# &)D%=1u6)D%=9*d!34* 5 : 7 2 **Z6r   