
    9icT              	          S SK rS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  S)S jrS*S jr\R"                  " S	\R$                  \R&                  \R(                  /5      \R*                  R-                  S
5      S 5       5       r\R*                  R-                  S5      \R*                  R-                  S
5      \R*                  R-                  S5      \R"                  " S	\R$                  \R&                  \R(                  /5      S 5       5       5       5       r\R*                  R-                  S5      \R*                  R-                  S
5      \R*                  R-                  S5      \R"                  " S	\R$                  \R&                  \R(                  /5      S 5       5       5       5       r\R"                  " S	\R$                  \R&                  \R(                  /5      \R*                  R-                  S
5      S 5       5       r\R*                  R-                  S
5      \R*                  R-                  S5      S 5       5       r\R*                  R-                  S
5      S 5       r\R*                  R-                  S
5      S 5       r\R*                  R-                  S
5      S 5       r\R"                  " S	\R&                  \R(                  /5      S 5       rS r \R"                  " S/ SQ5      \R"                  " S	\R&                  \R(                  /5      S 5       5       r!\R"                  " S	\R&                  \R(                  /5      S 5       r"S r#\" \	=(       a    \
(       + SS9S 5       r$S  r%\R*                  R-                  S
5      S! 5       r&S" r'S# r(S$ r)\R*                  R-                  S
5      S% 5       r*S& r+\R*                  R-                  S
5      S' 5       r,\R*                  R-                  S
5      S( 5       r-g)+    N)testing)expected_warnings)xfailarch32is_wasm)random_walker)resizec                    Uc  U n[         R                  R                  S5        [         R                  " X45      S[         R                  R	                  X5      -  -   n[        U S-  5      nSUU S-  U-
  U S-  U-   2US-  U-
  US-  U-   24'   S[         R                  R	                  SU-  S-
  SU-  S-
  5      -  UU S-  U-
  S-   U S-  U-   S-
  2US-  U-
  S-   US-  U-   S-
  24'   SX S-  U-
  US-  US-  -
  US-  US-  -   24'   [         R                  " U5      nSX@S-  US-  4'   SX@S-  US-  -   US-  US-  -
  4'   X$4$ 	Ni  皙?         r         )nprandomseedzerosrandnint
zeros_like)lxlydatasmall_lseedss        m/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/segmentation/tests/test_random_walker.pymake_2d_syntheticdatar      s   	zIINN488RHbiioob&= ==D"'lG 	
 	
a'B!Gg--rQw/@27WCT/TT 	biiooa'kAoq7{Q?? 	
a'Aa' 1A 55
a'Aa' 1A 55	7 PQDq7	B!Ggl2R1Ww!|5KK	KLMM$EE'27
<=E'GqL
 "'GqL"8
89;    c                    Uc  U nUc  U n[         R                  R                  S5        [         R                  " XU45      S[         R                  R	                  XU5      -  -   n[        U S-  5      nSUU S-  U-
  U S-  U-   2US-  U-
  US-  U-   2US-  U-
  US-  U-   24'   SUU S-  U-
  S-   U S-  U-   S-
  2US-  U-
  S-   US-  U-   S-
  2US-  U-
  S-   US-  U-   S-
  24'   [         R                  " SUS-  /5      nSUU S-  U-
  US-  U-
  US-  U-   2US-  U-
  US-  U-   24'   [         R                  " U5      nSX`S-  US-  US-  4'   SX`S-  US-  -   US-  US-  -
  US-  US-  -
  4'   X64$ r   )r   r   r   r   r   r   maxr   )r   r   lzr   r   	hole_sizer   s          r   make_3d_syntheticdatar%      s   	z	zIINN488RRL!C"))//""*E$EED"'lG
 	
	 	
a'B!Gg--
a'B!Gg--
a'B!Gg--	/ 	
	 	
a'Aa' 1A 55
a'Aa' 1A 55
a'Aa' 1A 55	7 7a<()I
 	
	 	
a'
a)bAg	11
a)bAg	11	3
 MM$E'(E'27B!G
#$TUE'GqL
 "'GqL"8"'GqL:P
PQ;r    dtypezhignore:Changing the sparsity structure of a csr_matrix is expensive:scipy.sparse.SparseEfficiencyWarningc                    SnSnU [         R                  :X  a  SOSn[        X5      u  pEUR                  U SS9n[	        XEUSS9nUSS	2S
S24   S:H  R                  5       (       d   eUR                  UR                  :X  d   e[	        XEUSSS9nUSSS	2S
S24   USSS	2S
S24   :  R                  5       (       d   eUR                  UR                  :X  d   eSUS'   [	        XEUSSS9nUSSS	2S
S24   USSS	2S
S24   :  R                  5       (       d   e[        U5      S:X  d   eUR                  UR                  :X  d   eg )NF   d   Z      Fcopybfbetamode-   (   <   r   Tr0   r1   return_full_probr   r      )7   P   )r   float64r   astyper   allshapelen)r&   r   r   r0   r   labels	labels_bffull_prob_bfs           r   
test_2d_bfrB   >   s   
 
B	B "**$2"D(0LD;;u5;)DdDAIbeRUl#q(--////::%%% 4dTL BrE2b5)\!RUBrE/-JJOOQQQQ::%%%F6N 4dTL BrE2b5)\!RUBrE/-JJOOQQQQ|!!!::%%%r    z0ignore:"cg" mode may be slow:UserWarning:skimagezrignore:"cg_mg" not available, it requires pyamg to be installed. The "cg_j" mode will be used instead.:UserWarningc                    SnSn[        X5      u  p4UR                  U SS9n[        X4SSS9nUSS	2S
S24   S:H  R                  5       (       d   eUR                  UR                  :X  d   e[        X4SSSS9nUSSS	2S
S24   USSS	2S
S24   :  R                  5       (       d   eUR                  UR                  :X  d   eg )Nr(   r)   Fr,   r*   cgr/   r+   r2   r3   r4   r   Tr5   r   r   r   r;   r   r<   r=   r&   r   r   r   r?   	labels_cg	full_probs          r   
test_2d_cgrI   ]   s     
B	B(0LD;;u5;)Dd$?IbeRUl#q(--////::%%%d$QUVIaB2o&)Ar"ubeO*DDIIKKKK::%%%r    z-ignore:Implicit conversion of A to CSR::pyamgc                    SnSn[        X5      u  p4UR                  U SS9n[        X4SSS9nUSS	2S
S24   S:H  R                  5       (       d   eUR                  UR                  :X  d   e[        X4SSSS9nUSSS	2S
S24   USSS	2S
S24   :  R                  5       (       d   eUR                  UR                  :X  d   eg )Nr(   r)   Fr,   r*   cg_mgr/   r+   r2   r3   r4   r   Tr5   r   r   rE   )r&   r   r   r   r?   labels_cg_mgrH   s          r   test_2d_cg_mgrM   t   s     
B	B(0LD;;u5;)D BWELB2&!+002222::%%%2GdI aB2o&)Ar"ubeO*DDIIKKKK::%%%r    c                    SnSn[        X5      u  p4UR                  U SS9n[        X4SSS9nUSS	2S
S24   S:H  R                  5       (       d   eUR                  UR                  :X  d   e[        X4SSSS9nUSSS	2S
S24   USSS	2S
S24   :  R                  5       (       d   eUR                  UR                  :X  d   eg )Nr(   r)   Fr,   r*   cg_jr/   r+   r2   r3   r4   r   Tr5   r   r   rE   rF   s          r   test_2d_cg_jrP      s    
 
B	B(0LD;;u5;)Dd&AIbeRUl#q(--////::%%%d&SWXIaB2o&)Ar"ubeO*DDIIKKKK::%%%r    c                  f   Sn Sn[        X5      u  p#SX"R                  5       -
  -  UR                  5       UR                  5       -
  -  nUR                  [        R
                  5      n[        X#SSS9nUSS2S	S
24   S:H  R                  5       (       d   eUR                  UR                  :X  d   eg )Nr(   r)      r*   rK   r/   r+   r2   r3   r4   r   )	r   minr"   r;   r   uint8r   r<   r=   )r   r   r   r?   rL   s        r   
test_typesrU      s     
B	B(0LD$#$dhhj)@AD;;rxx D BWELB2&!+002222::%%%r    c                      Sn Sn[        X5      u  p#SX3S:H  '   [        X#SSS9nUSS	2S
S24   S:H  R                  5       (       d   eUR                  UR                  :X  d   eg )Nr(   r)   r   r   r*   r.   r/   r+   r2   r3   r4   )r   r   r<   r=   )r   r   r   r?   r@   s        r   test_reorder_labelsrW      su     
B	B(0LDFQ;d$?IbeRUl#q(--////::%%%r    c                     Sn Sn[        X5      u  p#SUSS2SS24'   SUSS2S	S
24'   [        X#SS9nUR                  X45      SS2SS24   S:H  R                  5       (       d   eUR                  UR                  :X  d   eg )Nr(   r)   
      .   2   !   &   r*   r0   r+   r2   r3   r4   r   )r   r   reshaper<   r=   )r   r   r   r?   s       r   test_2d_inactiverc      s     
B	B(0LDF2b5"R%<F2b5"R%<4b1FNNB8$RUBrE\2a7<<>>>>::%%%r    c                     [         R                  " / SQ/ SQ/ SQ/5      n [         R                  " / SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/5      n[        XS	S
9n[         R                  R	                  X25        g )N)i2  i1  i1  )iS2  iq4  i#/  )i.  i.  i0  )r   rY   r   )r   rY   r   )r   r   rY   )r   rY   r   )r   r   rY   rZ   ra   )r   asarrayr   r   assert_array_equal)r   markersexpected_labelsr?   s       r   test_2d_laplacian_sizeri      sh     ::	 57LMD jj*j*=>Gjj*j*!EFO4r2FJJ!!&:r    c                 b   SnXUpCn[        X#U5      u  pVUR                  U SS9n[        S/5         [        XVSS9nS S S 5        UR	                  UR
                  5      SS2SS2SS24   S	:H  R                  5       (       d   eUR
                  UR
                  :X  d   eg ! , (       d  f       Nj= f)
N   Fr,   @Changing the sparsity structure|"cg" mode|scipy.sparse.linalg.cgrD   r1         r   )r%   r;   r   r   rb   r=   r<   )r&   nr   r   r#   r   r?   s          r   test_3drq      s    
AqBB(4LD;;u5;)D		KL
 t$7
 NN4::&r"ubeRU':;q@EEGGGG::%%%
 
s   B  
B.c                  ^   Sn X U p2n[        XU5      u  pESUSS2SS2SS24'   [        S/5         [        XESS	9nS S S 5        UR                  UR                  5      S
S2S
S2S
S24   S:H  R                  5       (       d   eUR                  UR                  :X  d   eg ! , (       d  f       Nj= f)Nrk   rY   r   r+         zMChanging the sparsity structure|"cg" mode|CObject type|scipy.sparse.linalg.cgrD   rm   rn   ro   r   )r%   r   r   rb   r=   r<   )rp   r   r   r#   r   r?   s         r   test_3d_inactiveru      s    
AqBB(4LD!#F1R4B2	[	


 t$7
 NN4::&r"ubeRU':;q@EEGGGG::%%%
 
s   B
B,channel_axis)r   r   rY   c                    Su  p#[        X#5      u  pEUR                  U SS9nUS[        R                  4   R	                  SSS9n[        R
                  " USU5      n[        SS	/5         [        XES
US9nS S S 5        [        R
                  " XAS5      nUS   R                  UR                  :X  d   e[        S/5         [        US   US
S9  S S S 5        WR                  UR                  5      SS2SS24   S:H  R                  5       (       d   eUS   R                  UR                  :X  d   eg ! , (       d  f       N= f! , (       d  f       N{= f)N)r(   r)   Fr,   .r   rY   axisrl   z The probability range is outsiderD   r1   rv   .r   rm   r+   r2   r3   r4   )r   r;   r   newaxisrepeatmoveaxisr   r   r=   rb   r<   )r&   rv   r   r   r   r?   multi_labelss          r   test_multispectral_2dr      sF    FB(0LD;;u5;)DRZZ '''3D;;tR.D	N.	

 %T<X
 ;;t2.D<---		KL
 	d6lF6
   .r"ube|<AFFHHHH<---
 

 
s   *D3 E3
E
Ec                    SnXUpCn[        X#U5      u  pVUR                  U SS9nUS[        R                  4   R	                  SSS9n[        S/5         [        XVS	SS
9nS S S 5        US   R                  UR                  :X  d   e[        S/5         [        US   US	S9nS S S 5        WR                  UR                  5      SS2SS2SS24   S:H  R                  5       (       d   eWR                  UR                  5      SS2SS2SS24   S:H  R                  5       (       d   eUS   R                  UR                  :X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)Nrk   Fr,   .r   rY   rx   rl   rD   rz   r{   rm   rn   ro   )
r%   r;   r   r|   r}   r   r   r=   rb   r<   )	r&   rp   r   r   r#   r   r?   r   single_labelss	            r   test_multispectral_3dr     sp   
AqBB(4LD;;u5;)DRZZ '''3D		KL
 %T2N
 <---		KL
 &d6lFF
   .r"ubeRU/BCqHMMOOOO!!&,,/2r"ube0CDINNPPPP<---
 


 
s   EE
E
E'c                     Sn X U p2n[        XU5      u  pE[        R                  " X U S-  45      n[        U5       H  u  px[	        XU S-  4SSS9XgS S 2S S 24'   M      [        US-  5      n	[        R                  " U5      n
SXS-  US-  US-  4'   SU
US-  U	S-  -   US-  U	S-  -
  US-  U	S	-  -
  4'   [        S
/5         [        XjSSS9n
S S S 5        U
SS2SS2SS24   S:H  R                  5       (       d   eg ! , (       d  f       N5= f)Nrk   r   constantFr1   anti_aliasingr   r   r   r   rl   rD   )      ?r   g      ?r1   spacingrn   ro      	   )
r%   r   r   	enumerater	   r   r   r   r   r<   )rp   r   r   r#   r   _
data_anisoiyzr   labels_anisos              r   test_spacing_0r   '  sG   
AqBB#BB/GD 1a.)J4$AF*E

a7 ! "'lG==,L./Lq"'27*+ 	
 
a'Q,a'Q, 6a'Q,8NN
 
	KL
 %4

 B2qs*+q0557777
 
s    C;;
D	zKnown test failure on 32-bit platforms. See links for details: https://github.com/scikit-image/scikit-image/issues/3091 https://github.com/scikit-image/scikit-image/issues/3092)	conditionreasonc                      Sn X U p2n[        XU5      u  pE[        R                  " X S-  U 45      n[        U5       H  u  px[	        XS-  U 4SSS9XgS S 2S S 24'   M      [        US-  5      n	[        R                  " U5      n
SXS-  US-  US-  4'   SXS-  U	S-  -   X)S-  -
  US-  U	S-  -
  4'   [        S	/5         [        XjS
SS9n
S S S 5        U
SS2SS2SS24   S:H  R                  5       (       d   e[        R                  " X S-  U 45      n[        UR                  S   5       H'  n[	        US S 2SS S 24   U S-  U 4SSS9XgS S 2S S 24'   M)     [        US-  5      n	[        R                  " U5      nSXS-  US-  US-  4'   SXU	S-  -
  US-  U	S-  -   US-  U	S-  -
  4'   [        S	/5         [        XkS
SS9nS S S 5        USS2SS2SS24   S:H  R                  5       (       d   eg ! , (       d  f       GN-= f! , (       d  f       NG= f)Nrk   r   r   Fr   r   r   r   rl   rD   )r          @r   r   rn   ro   rs   "   )r   r   r   )r%   r   r   r   r	   r   r   r   r   r<   ranger=   )rp   r   r   r#   r   r   r   r   r   r   r   labels_aniso2s               r   test_spacing_1r   G  si    	AqBB#BB/GD 1!eQ-(J4$Q
5

a7 ! "'lG==,L./Lq"'27*+VWLq7a<'l):B!GgQRl<RRS 
	KL
 %4

 B2r"u,-2779999 1!eQ-(J4::a=!$AqMAE1:Je

a7 " "'lGMM*-M/0M'27B!G+,WXMw!|#R1Ww!|%;R1WwRS|=SST 
	KL
 &D/

 "R%B2-.!388::::;
 
.
 
s   ;G-2G?-
G<?
Hc                     [         R                  " S5      n [         R                  " S5      n[        S/5         [        X5      nS S S 5        [         R                  R                  WU5        SUS S 2S S24'   [         R                  " US:H  S[         R                  4   US:H  S[         R                  4   4SS9n[        S/5         [        XS	S
9nS S S 5        [         R                  R                  WU5        [         R                  " SS5      n [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " XV45       H  u  pxS	X   U'   M     [         R                  " S[         R                  S9n	U H  u  pxSX   U'   M     SXS:H  '   [        S/5         [        X	5      n
S S S 5        [         R                  " W
U	S:H     S:H  5      (       d   e[         R                  " XS:H     S:H  5      (       d   e[        S/5         [        X	S	S
9nS S S 5        g ! , (       d  f       GN= f! , (       d  f       GNv= f! , (       d  f       N= f! , (       d  f       g = f)NrZ   rZ   zReturning provided labelsr7   r   r   .r   rx   Tr6   F))   r   r   r   r   r   )r   r   ))r7   r   )r   r   )r   r   )r7   r   )r   r   )r   r7   r7   r7   r&   rY   r   z!All unlabeled pixels are isolated)r   onesr   r   r   rf   concatenater|   fullarrayvstackr   int8r<   )imgr?   pass_throughexpectedtestobject_Aobject_Bxyrg   output_labelss              r   test_trivial_casesr     s   
''(
CWWXF	78	9$S1 
:JJ!!,7 F1bqb5M~~
A+sBJJ	'&A+sBJJ)GHqH 
78	9S4@ 
:JJ!!$1 ''(E
"Cxx89HxxPQH		8./q	 0 hhxrww/G
1  G1H	?@	A%c3 
B66-1-2333366-1-34444	?@	ASDA 
B	A= 
:	9 
:	9  
B	A
 
B	As/   H/I0II$/
H>
I
I!$
I2c                     [         R                  R                  S5        [         R                  " S5      S[         R                  R	                  SS9-  -   n [         R
                  " S[         R                  S9nSUS'   SUS	'   [        XS
S9  g )N*   r   g?sizer   r   r   r   r   r   )r   r   r   )r   r   r   r   normalr   rT   r   r   r?   s     r   test_length2_spacingr     sn     IINN2
''(
cBII$4$4($4$CC
CCXXhbhh/FF4LF4L#z2r    c                     [         R                  " S5      n [         R                  " S5      n[        R                  " [
        5         [        X5        S S S 5        [        R                  " [
        5         [        XSS9  S S S 5        [         R                  R                  S5        [         R                  R                  SS9n [         R                  " S5      R                  U R                  5      n[        R                  " [
        5         [        X5        S S S 5        [        R                  " [
        5         [        XSS9  S S S 5        [         R                  R                  SS9n [         R                  " S5      nS	US
'   SUS'   [        R                  " [
        5         [        XSS9  S S S 5        [         R                  R                  SS9n [         R                  " S5      n[        R                  " [
        5         [        XSS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN+= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)NrZ   rY   )rv   r   )r7   r7   r7   r7   r7   r      r   r   r   r   r   )r   r   badrm   )r   r   aranger   raises
ValueErrorr   r   r   r   rb   r=   r   r   s     r   test_bad_inputsr     s   
''"+CYYr]F	
	#c" 
$	
	#c3 
$ IINN2
))



0CYYt_$$SYY/F	
	#c" 
$	
	#c3 
$ ))



)CXXhFF4LF4L	
	#c40 
$ ))



)CXXhF	
	#c. 
$	#3 
$	#	#	# 
$	#	#	# 
$	# 
$	#sH   H5H+H=;I%I!I2
H(+
H:=
I
I!
I/2
J c                     [         R                  R                  S5        [         R                  R                  S5      n [         R                  " U R                  5      * nSUS'   SUSS 2SS 24'   SUS'   SUS'   [        S	/5         [        X5      nS S S 5        WS   S:X  d   e[        S	/5         [        XS
S9nS S S 5        US   S:X  d   eUS   S:X  d   eg ! , (       d  f       NO= f! , (       d  f       N6= f)Nr   r   r   r   r   r7   r   r   r   r   r   WChanging the sparsity structure|The probability range is outside|scipy.sparse.linalg.cgTr   r   r   r   r   r   r   r   r   r   r   r=   r   r   amaskress      r   test_isolated_seedsr         IINN1
		 AGGAGGDDJDQRLDJDJ 
e	


 A$
 t9>>	e	


 Ad;
 w<1w<1
 

 
   C1C,
C),
C:c                     [         R                  R                  S5        [         R                  R                  S5      n [         R                  " U R                  5      * nSUS'   SUSS 2SS 24'   SUS'   SUS'   [        S	/5         [        X5      nS S S 5        WS   S:X  d   e[        S	/5         [        XS
S9nS S S 5        US   S:X  d   eUS   S:X  d   eg ! , (       d  f       NO= f! , (       d  f       N6= f)Nr   r   r   r7   r   r   r   r   r   Tr   r   r   r   r   s      r   test_isolated_arear     r   r   c                     [         R                  R                  S5        [         R                  R                  S5      n [         R                  " U R                  5      * nSUS'   SUSS 2SS 24'   SUS'   SUS'   [        S	/5         [        XS
S9nS S S 5        [        XS
SS9nUS   S:X  d   eUS   S:X  d   e[        XS
SS9nUS   S:X  d   eUS   S:X  d   e[        XS
SS9nUS   S:X  d   eUS   S:X  d   eg ! , (       d  f       Nr= f)Nr   r   r   r   r7   r   r   r   r   Tr   rZ   )r6   r0   r   r   r   )r6   prob_tolg&.>)r6   tolr   r   s      r   test_prob_tolr     s3    IINN1
		 AGGAGGDDJDQRLDJDJ	e	


 Ad;
 $R
@Cw<1w<1 $
FCw<1w<1 $D
ACw<1w<1)
 
s   C==
Dc                  f    SSK Jn   U R                  n SS KnUc   eg ! [         a    Ub   e g f = f)Nr   )random_walker_segmentation)skimage.segmentationr   UmfpackContextscikits.umfpackImportError)r   r   scikitss      r   test_umfpack_importr   =  s?    ?/>>N&))) &%%%&s   	 00c                     [         R                  R                  S5      n [         R                  " S[        S9n[        R
                  " [        SS9   [        X5        S S S 5        SUS'   [        R
                  " [        SS9   [        X5        S S S 5        SUS'   [        X5        g ! , (       d  f       NQ= f! , (       d  f       N0= f)	N)r   r   r   zNo seeds provided)matchrY   r   r   r   )r   r   r   r   r   r   r   r   )imager?   s     r   test_empty_labelsr   J  s     IIV$EXXfC(F	
*=	>e$ 
? F4L	
*=	>e$ 
? F4L%  
?	> 
?	>s   B)B:)
B7:
Cc                  4   [        SSS9u  pU R                  [        R                  SS9n [        R                  " S[        R                  S9n[        XUSS	S
9nUSS2SS24   S:H  R                  5       (       d   eU R                  UR                  :X  d   eg )Nr(   r)   )r   r   Fr,   r   r   r*   rO   )r   r0   r1   r+   r2   r3   r4   )r   r;   r   float16r   r   r<   r=   )r   r?   r   rG   s       r   test_float16_upcastingr   ]  s     )B37LD;;rzz;.Dggarzz*GdG"6RIbeRUl#q(--////::%%%r    )N)NN).numpyr   pytestskimage._sharedr   skimage._shared._warningsr   skimage._shared.testingr   r   r   r   r   skimage.transformr	   r   r%   parametrizer   float32r:   markfilterwarningsrB   rI   rM   rP   rU   rW   rc   ri   rq   ru   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r   <module>r      s     # 7 : : . $(> 	Wrzz2::rzzBCn& D&6 NOn x 	Wrzz2::rzzBC& D P& KLn x 	Wrzz2::rzzBC& D M&" 	Wrzz2::rzzBCn
& D
& n x&& n&& n&& n
;
; 	Wrzz2::67
& 8
&& 	^Z0Wrzz2::67. 8 1.2 	Wrzz2::67. 8.(8@ $W	C2;2;j$BN n33/B<< n  F
& n!!  n&&r    