
    > j*              
          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    ڀ/root/GenerationalWealth/GenerationalWealth/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      ?)
r   issparsetoarrayr   asarrayrangeshapesumdiagcopy)xnormedyjds        r   _explicit_laplacianr5      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   )r1   )r1   r/   coo)axis)hasattrevaldictr   r   r(   r)   	csr_arrayr/   r,   r5   r   r!   r   _assert_allclose_sparser   formatr-   zerosT)r   r1   r/   sp_matmat_copysp_mat_copyn_nodesexplicit_laplacianr!   sp_laplaciantesteds              r    _check_symmetric_graph_laplacianrH   *   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.0, 1.0], [-1, 1], shape=(4, 4))z9sparse.diags([1.0, 1.0], [-1, 1], shape=(4, 4)).toarray()z9sparse.diags([1.0, 1.0], [-1, 1], shape=(4, 4)).todense()z3np.vander(np.arange(4)) + np.vander(np.arange(4)).T)TF)rH   )symmetric_matsr   r1   r/   s       r   test_symmetric_graph_laplacianrK   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)r1   return_diaguse_out_degreer/   r   g-q=)atolr7   )r   r!   r   r   r   float64r=   r*   astypetypendarrayr   r>   r$   	desired_L	desired_dr1   rS   r/   r   arr_typer   Lr4   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 rQ   )r   r!   r   r   r*   rV   r=   r   rW   rX   r   r>   rY   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/   r1   rS   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   re   r   )rf   r   r   )r   r   r   )r   r   r   )r1   rS   r/   r   r\   )r   r   r/   r^   r`   )	rS   r1   r/   r   r\   r$   A_copyr]   r4   s	            r   test_asymmetric_laplacianri      s     
			A 	!E*AVVXFn . . n 			%	 		%	r   fmt)csrcscr7   lildokdiabsrc                 R    [         R                  " SS/SS/SU S9n[        X1U5        g )Nr'   re   r   )r   r   )offsetsr,   r>   )r   diags_arrayrH   )rj   r1   r/   r   s       r   test_sparse_formatsrt      s,    
 

c3Z"as
SC$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)rR   ru   )rR   rS   ru   )rR   symmetrizedru   )rR   ry   r1   ru   )rR   r1   ru   )L_inL_outLs	Ls_normedLss
Lss_normedr   r   r|   rz   r{   r~   r}   r   )r   arangereshaper   r!   r@   r   r:   eyer   r=   )r\   ru   nr   rz   d_inr{   d_outr|   dsr}   	ds_normedr~   dssr   
dss_normedr4   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   ry   rv   rw   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   rb   rc   rd   r   T)rR   r1   ry   rS   r   r   )rR   r1   ry   rS   r   ru   gH׊>)rtolrT   r   r   )r   r   r   r!   r   r=   r   r   rV   r   r   
INT_DTYPES)r   r\   r1   ry   rS   ru   r   r   LodoLadar]   r4   Lmr0   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)ru   )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%   r5   rH   rK   r=   r^   r`   intclonglongr   float32rU   
longdoubleREAL_DTYPES	complex64
complex128clongdoubleCOMPLEX_DTYPESDTYPESmarkparametrizer   
csr_matrix
coo_matrixr<   	coo_arrayri   rt   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   