
    sh=                     ,   S r SSKrSSKr\R                  R                  SS5      S 5       r\R                  R                  SS5      S 5       r\R                  R                  SS5      S	 5       r\R                  R                  SS
5      S 5       r	\R                  R                  S/ SQ5      S 5       r
S r\R                  R                  SS5      S 5       r\R                  R                  S/ SQ5      S 5       rS r\R                  R                  S\R                  \R                   \R"                  45      S 5       r\R                  R                  S\R                  \R                   \R"                  45      S 5       rS rS rS rS rg)z?Unit tests for the :mod:`networkx.generators.expanders` module.    Nn)            
   c                    [         R                  " U 5      nUR                  5       X -  :X  d   eU HW  nUR                  U5      S:X  d   e[	        U5      S:X  d   eU H&  n[        U5      U:X  d   eSUs=::  a	  U :  a  M#   e   e   MY     g )N   r   r   )nxmargulis_gabber_galil_graphnumber_of_nodesdegreelenint)r   gnodeis       |/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/networkx/generators/tests/test_expanders.py+test_margulis_gabber_galil_graph_propertiesr      s    
&&q)A!%'''xx~"""4yA~~Aq6Q;;:A:::      c                 N   [         R                  " S5      n[         R                  " S5      n[        R                  " U 5      n[	        UR
                  R                  [        R                  " U5      R                  5       5      5      nUS   SUR                  S5      -  :  d   eg )Nnumpyscipyr   r   )
pytestimportorskipr   r   sortedlinalgeigvalshadjacency_matrixtoarraysqrt)r   npspr   ws        r   (test_margulis_gabber_galil_graph_eigvalsr&      s    			W	%B			W	%B
&&q)A 	ryy!!""5"5a"8"@"@"BCDAR51rwwqz>!!!r   p)r   r         c                 R    [         R                  " U 5      n[        U5      U :X  d   eg)z;Test for the :func:`networkx.chordal_cycle_graph` function.N)r   chordal_cycle_graphr   )r'   Gs     r   test_chordal_cycle_graphr-       s$     	q!Aq6Q;;r   )r   r   r(   r)      c                    [         R                  " U 5      n[        U5      U :X  d   eUR                   Vs1 s H  o!R	                  U5      iM     nnUR                   Vs1 s H  o!R                  U5      iM     nn[        U5      S:X  a  UR                  5       U S-
  S-  :X  d   e[        U5      S:X  a  UR                  5       U S-
  S-  :X  d   eU S-  S:X  a)  UR                   H  u  pVXe4UR                  ;   a  M   e   ggs  snf s  snf )z3Test for the :func:`networkx.paley_graph` function.   r      N)r   paley_graphr   nodes	in_degree
out_degreepopedges)r'   r,   r   
in_degreesout_degreesuvs          r   test_paley_graphr<   -   s     	qAq6Q;;018++d#J823'':'$<<%'K:z?aJNN$4Q1$DDD{q [__%61q5Q,%FFF 	1uzGGDA6QWW$$$   9:s   D D
zd, n)r   r(   r1   r   r1      c                    [         R                  " S5        [        R                  " XSS9n[	        U5      U:X  d   S5       e[	        UR
                  5      X-  S-  :X  d   S5       e[        R                  " X 5      (       d   S5       eg )Nr     seedShould have n nodesr   Should have n*d/2 edgesShould be d-regular)r   r   r   maybe_regular_expanderr   r7   is_k_regulardr   r,   s      r   test_maybe_regular_expanderrL   @   su    
 
!!!T2Aq6Q;---;qww<1519$?&??$??1  7"77 r   c                     [         R                  " S5        Su  pSn[         R                  " [        R                  US9   [        R
                  " XSSS9  S S S 5        [        R
                  " XSSS9  g ! , (       d  f       N%= f)	Nr   r>   z-Too many iterations in maybe_regular_expandermatchd   i  )	max_triesrD      r   r   raisesr   NetworkXErrorrH   )rK   r   msgs      r   %test_maybe_regular_expander_max_triesrW   J   sd    
 DA
9C	r''s	3
!!!#DA 
4 ac= 
4	3s    A66
B)r   r   r   r   c                     [         R                  " S5        [         R                  " S5        [        R                  " U 5      n[        R                  " U5      (       d   S5       eg )Nr   r   Should be a regular expander)r   r   r   complete_graphis_regular_expander)r   r,   s     r   test_is_regular_expanderr\   T   sK    
 
 
!A!!!$$D&DD$r   )r=   r>   r?   )r1   i  c                    [         R                  " S5        [         R                  " S5        [        R                  " XSS9n[	        U5      U:X  d   S5       e[	        UR
                  5      X-  S-  :X  d   S5       e[        R                  " X 5      (       d   S5       e[        R                  " U5      (       d   S	5       eg )
Nr   r   rB   rC   rE   r   rF   rG   rY   )r   r   r   random_regular_expander_graphr   r7   rI   r[   rJ   s      r   test_random_regular_expanderr_   ]   s    
 
 
((D9Aq6Q;---;qww<1519$?&??$??1  7"77 !!!$$D&DD$r   c                      [         R                  " S5        [         R                  " S5        [        R                  " SSSS9n [	        U 5      S:X  a  [	        U R
                  5      S:X  d   S5       eg )	Nr   r   r1   r   rB   )rK   r   rD   r   zShould be a complete graph)r   r   r   r^   r   r7   )r,   s    r   2test_random_regular_expander_explicit_constructionra   i   s[    
 
 
((1=Aq6Q;3qww<2-K/KK--r   
graph_typec                     [         R                  " [        R                  SS9   [        R                  " SU S9  S S S 5        g ! , (       d  f       g = fNz/`create_using` must be an undirected multigraphrN   r   create_using)r   rT   r   rU   r   rb   s    r   )test_margulis_gabber_galil_graph_badinputrh   q   s<    	
 Q
 	&&qzB
 
 
   A
Ac                     [         R                  " [        R                  SS9   [        R                  " SU S9  S S S 5        g ! , (       d  f       g = frd   )r   rT   r   rU   r+   rg   s    r   !test_chordal_cycle_graph_badinputrk   y   s<    	
 Q
 	qz:
 
 
ri   c                      [         R                  " [        R                  SS9   [        R                  " S[        R
                  S9  S S S 5        g ! , (       d  f       g = f)Nz&`create_using` cannot be a multigraph.rN   r   re   )r   rT   r   rU   r2   
MultiGraph r   r   test_paley_graph_badinputro      s>    	
 H
 	qr}}5
 
 
s   $A
Ac                     [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SS	S9  S S S 5        [         R                  " [        R                  S
S9   [        R
                  " SSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Na= f! , (       d  f       g = f)Nr   n must be a positive integerrN   r   r   rK   $d must be greater than or equal to 2r   r   Need n-1>= d to have roomr   r   rS   rn   r   r   $test_maybe_regular_expander_badinputrv      s    
 	r''/M	N
!!B!, 
O 
r''/U	V
!!B!, 
W 
r''/J	K
!!A+ 
L	K 
O	N 
W	V 
L	Ks#   C;C,<C=
C),
C:=
Dc                  &   [         R                  " S5        [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " [        R                  " 5       SS9  S S S 5        g ! , (       d  f       g = f)Nr   r   epsilon must be non negativerN   rr   )epsilon)r   r   rT   r   rU   r[   Graphrn   r   r   !test_is_regular_expander_badinputr{      sV    
 
 	r''/M	N
rxxz26 
O	N	Ns   )B
Bc                     [         R                  " S5        [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " S	S
S9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SSSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       g = f)Nr   r   rq   rN   rr   r   rs   rt   r   r   ru   r   r   rx   r1   )r   rK   ry   )r   r   rT   r   rU   r^   rn   r   r   %test_random_regular_expander_badinputr}      s    
 
 	r''/M	N
((23 
O 
r''/U	V
((23 
W 
r''/J	K
((12 
L 
r''/M	N
((12> 
O	N 
O	N 
W	V 
L	K 
O	Ns0   D3EEE&3
E
E
E#&
E4)__doc__r   networkxr   markparametrizer   r&   r-   r<   rL   rW   r\   r_   ra   rz   DiGraphMultiDiGraphrh   rk   ro   rv   r{   r}   rn   r   r   <module>r      s   E   ./ 0 ./" 0" m, - /0% 1%$ !;<8 =8> m,E -E !FGE HEL "**boo'NOC PC "**boo'NO; P;6
,7?r   