
    (ph                     :   S SK r S SKr S SKrS SKJr  S SKJrJrJ	r	J
r
JrJrJ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  \R.                  R0                  r\\R.                  R3                  S5      \" S	S
S/S9/r\ R6                  S:H  =(       a    \R8                  S:  r\" S	SS9 " S S5      5       r " S S5      rS r S r!\R.                  RD                  S 5       r#S r$S r%S r&S r'S r(S r)S r*S r+\" S	S S9S! 5       r,S" r-S# r.\" S	S$S9S% 5       r/\" S	S$S9S& 5       r0S' r1S( r2\" S
S)S*9S+ 5       r3S, r4\" S
S-S*9 " S. S/5      5       r5S0 r6S1 r7S2 r8S3 r9S4 r:S5 r;S6 r<S7 r=S8 r>S9 r?S: r@S; rAS< rBS= rCS> rDS? rES@ rFSA rGSB rHSC rISD rJSE rKSF rLSG rMSH rNSI rOSJ rPSK rQSL rRSM rSSN rTSO rUSP rVSQ rWSR rXSS rYST rZSU r[SV r\SW r]SX r^SY r_SZ r`S[ raS\ rbS] rcS^ rdS_ reS` rfSa rgSb rhSc riSd rjSe rkSf rlSg rmSh rnSi roSj rpSk rqSl rrSm rsSn rtSo ruSp rvSq rwSr rxSs rySt rzSu r{Sv r|Sw r}Sx r~Sy rSz rS{ r\" S	S|S9S} 5       rS~ r\" S
SS*9 " S S5      5       r\" S	S9\R.                  GR                  S\GR                  \GR                  /5      S 5       5       rg)    N)suppress_warnings)is_jaxis_torcharray_namespacexp_assert_equalxp_assert_closeassert_array_almost_equalassert_almost_equal)raises   )types)array_api_compatibleskip_xp_backendsTcupyz	jax.numpy)cpu_only
exceptionsnt2z test internal numpy-only helpersnp_onlyreasonc                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
Test_measurements_stats    zndimage._measurements._stats() is a utility used by other functions.

Since internal ndimage/_measurements.py code is NumPy-only,
so is this this test class.
c           	         / SQn/ SQnSS/nS H  n[         R                  " U5      R                  U5      n[         R                  " U5      R                  U5      n[        R                  R                  X#US9u  pg[        (       a  S[         R                  0O0 n[        U[         R                  " SS/40 UD65        [        U[         R                  " S	S
/5      5        M     g )Nr   r         r   r   r   r   r   r   )   )r   r   labelsindexdtyper         ?       @
nparrayreshapendimage_measurements_statsIS_WINDOWS_AND_NP1int64r   asarray	selfxpxr#   r$   shpcountssums	dtype_args	            X/var/www/html/venv/lib/python3.13/site-packages/scipy/ndimage/tests/test_measurements.pytest_aTest_measurements_stats.test_a'   s    A!C##C(AXXf%--c2F"0077 8 /LF 0B/A"((+rIFBJJ1v$C$CDD"**c3Z"89 "    c           	         / SQn/ SQnSS/nS H  n[         R                  " U5      R                  U5      n[         R                  " U5      R                  U5      n[        R                  R                  X#US9u  pg[        (       a  S[         R                  0O0 n[        U[         R                  " SS/40 UD65        [        U[         R                  " S	S
/5      5        M     g )Nr   r   r   	   r@   r   r@   r    r"   r%   r   r&   r'   r(   r2   s	            r:   test_bTest_measurements_stats.test_b5   s     A!C##C(AXXf%--c2F"0077 8 /LF 0B/A"((+rIFBJJ1v$C$CDD"**c3Z"89 "r=   c           	         / SQn/ SQnSS/nS H  n[         R                  " U5      R                  U5      n[         R                  " U5      R                  U5      n[        R                  R                  X#USS9u  pgn[        (       a  S[         R                  0O0 n	[        U[         R                  " S	S	/40 U	D65        [        U[         R                  " S
S/5      5        [        U[         R                  " SS/5      5        M     g )Nr   r   r   r   r    Tr#   r$   centeredr%   r   r&   r'         ?r(   
r3   r4   r5   r#   r$   r6   r7   r8   centersr9   s
             r:   test_a_centered'Test_measurements_stats.test_a_centeredE       A!C##C(AXXf%--c2F$+$9$9$@$@ %A %>!F' 0B/A"((+rIFBJJ1v$C$CDD"**c3Z"89GRZZc
%;< "r=   c           	         / SQn/ SQnSS/nS H  n[         R                  " U5      R                  U5      n[         R                  " U5      R                  U5      n[        R                  R                  X#USS9u  pgn[        (       a  S[         R                  0O0 n	[        U[         R                  " S	S	/40 U	D65        [        U[         R                  " S
S/5      5        [        U[         R                  " SS/5      5        M     g )Nr   r?   r   r@   r    TrD   r%   r   r&   r'   rF   r(   rG   s
             r:   test_b_centered'Test_measurements_stats.test_b_centeredT   rK   r=   c           	         / SQn/ SQnSS/nS H  n[         R                  " U5      R                  U5      n[         R                  " U5      R                  U5      n[        R                  R                  X#USS9u  pgn[        (       a  S[         R                  0O0 n	[        U[         R                  " S	S	/40 U	D65        [        U[         R                  " S
S/5      5        [        U[         R                  " SS/5      5        M     g )Nr   )        rP         "@rQ   rP   rQ   r    TrD   r%   r   r&   r'   rF   r(   rG   s
             r:   test_nonint_labels*Test_measurements_stats.test_nonint_labelsc   s    %c
!C##C(AXXf%--c2F$+$9$9$@$@ %A %>!F' 0B/A"((+rIFBJJ1v$C$CDD"**c3Z"89GRZZc
%;< "r=    N)__name__
__module____qualname____firstlineno____doc__r;   rA   rI   rM   rR   __static_attributes__rT   r=   r:   r   r       s     
:: ===r=   r   c                       \ rS rSrSrS rSrg)Test_measurements_selects   zEndimage._measurements._select() is a utility used by other functions.c           	      ~   / SQn/ SQSS/4/ SQSS/4/ SQSS	/4/nU GH  u  pE[         R                  R                  X$US
9n[        U5      S:X  d   e[         R                  R                  X$USS9n[        U5      S:X  d   e[	        US   SS/5        [         R                  R                  X$USS9n[        U5      S:X  d   e[	        US   SS/5        [         R                  R                  X$USSS9n[        U5      S:X  d   e[	        US   SS/5        [	        US   SS/5        US   R
                  R                  S:X  d   e[         R                  R                  X$USSS9n[        U5      S:X  d   e[	        US   SS/5        [	        US   SS/5        US   R
                  R                  S:X  a  GM   e   g )N)r   r   r   r   r   r   r   r?   r@   )rP   rP         @r_   rP   r_   r"   T)r#   r$   find_maxr   )r#   r$   find_minr   )r#   r$   ra   find_min_positions   i)r#   r$   r`   find_max_positions)r,   r-   _selectlenr   r%   kind)r3   r4   r5   casesr#   r$   results          r:   
test_basic#Test_measurements_select.test_basicv   s   Aq6"Aq6"!C:.

 #MF**22 3 /Fv;!###**22 3 >Fv;!###F1I1v.**22 3 >Fv;!###F1I1v.**22#' 3 )F v;!###F1I1v.F1I1v.!9??''3...**22#' 3 )F v;!###F1I1v.F1I1v.!9??''3...3 #r=   rT   N)rU   rV   rW   rX   rY   rk   rZ   rT   r=   r:   r\   r\   s   s
    O /r=   r\   c                 v    U R                  / 5      n[        R                  " U5      u  p#US:X  d   eUS:X  d   eg Nr   )onesr,   labelr4   dataoutns       r:   test_label01ru      s5    772;D]]4 FC!8O86M6r=   c                 v    U R                  / 5      n[        R                  " U5      u  p#US:X  d   eUS:X  d   eg )Nr   )zerosr,   rp   rq   s       r:   test_label02rx      s5    88B<D]]4 FC!8O86M6r=   c                     U R                  S/5      n[        R                  " U5      u  p#[        X R	                  S/5      5        US:X  d   eg rn   ro   r,   rp   r	   r1   rq   s       r:   test_label03r{      s>    77A3<D]]4 FCc::qc?36M6r=   c                     U R                  S/5      n[        R                  " U5      u  p#[        X R	                  S/5      5        US:X  d   eg )Nr   r   )rw   r,   rp   r	   r1   rq   s       r:   test_label04r}      s>    88QC=D]]4 FCc::qc?36M6r=   c                     U R                  S/5      n[        R                  " U5      u  p#[        X R	                  / SQ5      5        US:X  d   eg )N   )r   r   r   r   r   r   rz   rq   s       r:   test_label05r      s=    77A3<D]]4 FCc::o#>?6M6r=   c                     U R                  / SQ5      n[        R                  " U5      u  p#[        X R                  / SQ5      5        US:X  d   eg )N)r   r   r   r   r   r   r   r   r   r   r   rc   rc   r1   r,   rp   r	   rq   s       r:   test_label06r      s>    ::()D]]4 FCc::.@#AB6M6r=   c                     U R                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " U5      u  p#[        X R                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      5        US:X  d   eg )Nr   r   r   r   r   r   r   r   rq   s       r:   test_label07r      sp    ::))))))+ ,D ]]4 FCc::%7%7%7%7%7%7%9$: ; 6M6r=   c                     U R                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " U5      u  p#[        X R                  / SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/5      5        US
:X  d   eg )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   rc   r   r   r   r   r   r   r   r!   r!   r   r!   r   rq   s       r:   test_label08r      ss    ::))))))+ ,D ]]4 FCc::/A/A/A/A/A/A/C $D E 6M6r=   c                 2   U R                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " SS5      nU R                  U5      n[        R                  " X5      u  p4[	        X0R                  / SQ/ SQ/ SQ/ S	Q/ S	Q/ S
Q/5      5        US:X  d   eg )Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   rc   rc   r   rc   r1   r,   generate_binary_structurerp   r	   r4   rr   structrs   rt   s        r:   test_label09r      s    ::))))))+ ,D ..q!4FZZF]]4(FCc::/A/A/A/A/A/A/C $D E 6M6r=   c           
         U R                  / SQ/ SQ/ SQ/ SQ/5      n[        R                  " SS5      nU R                  U5      n[        R                  " X5      u  p4[	        X0R                  / SQ/ SQ/ SQ/ SQ/5      5        US:X  d   eg )Nr   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   s        r:   test_label10r      s    ::))))+ ,D ..q!4FZZF]]4(FCc::/A/A/A/A/C $D E 6M6r=   c           
         [          H  n[        X5      nU R                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/US9n[        R                  " U5      u  pE/ SQ/ SQ/ SQ/ S	Q/ S	Q/ S
Q/nU R                  U5      n[        XF5        US:X  a  M   e   g )Nr   r   r   r   r   r%   r   r   r   r   r!   r   getattrr1   r,   rp   r	   r4   typer%   rr   rs   rt   expecteds          r:   test_label11r   	  s    !zz------/
 7<  = t$&&&&&&( ::h'!#0Avv# r=   z inplace output is numpy-specificc           
         [          H|  n[        X5      nU R                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/US9n[        R                  " X3S9n/ SQ/ SQ/ S	Q/ S
Q/ S
Q/ SQ/nU R                  U5      n[        X55        US:X  a  M|   e   g )Nr   r   r   r   r   r   outputr   r   r   r   r!   r   )r4   r   r%   rr   rt   r   s         r:   test_label11_inplacer     s    !zz------/
 7<  = MM$,&&&&&&( ::h'!$1Avv# r=   c           	         [          Hz  n[        X5      nU R                  / SQ/ SQ/ SQ/ SQ/ SQ/US9n[        R                  " U5      u  pE/ SQ/ SQ/ SQ/ SQ/ SQ/nU R                  U5      n[        XF5        US:X  a  Mz   e   g )N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   s          r:   test_label12r   4  s    !zz-----	/ 7<	  =
 t$&&&&&	(
 ::h'!#0Avv r=   c                     [          Ht  n[        X5      nU R                  / SQ/ SQ/ SQ/ SQ/US9n[        R                  " U5      u  pE/ SQ/ SQ/ SQ/ SQ/nU R                  U5      n[        XF5        US:X  a  Mt   e   g )N)r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s          r:   test_label13r   G  s    !zz<<<<> !&	  '
 t$55557 ::h'!#0Avv r=   zoutput=dtype is numpy-specificc           	         U R                  S/5      n[         Hi  n[        X5      nU R                  S/US9n[        R
                  " XS9n[        UU R                  UR                  UR                  S95        US:X  a  Mi   e   g )Nr   r   r   r   )	ro   r   r   rw   r,   rp   r	   shaper%   r4   rr   tr%   r   rt   s         r:   test_label_output_typedr   Y  st    77A3<D1#U+MM$.!&"$''&,,fll'"K	MAvv r=   c           	         U R                  S/5      n[         Hd  n[        X5      n[        R                  " XS9u  pE[        UU R                  UR                  UR                  S95        UR                  U:X  a  Md   e   g )Nr   r   r   )ro   r   r   r,   rp   r	   r   r%   r   s         r:   test_label_output_dtyper   e  si    77A3<DMM$5	!&"$''&,,fll'"K	M||q    r=   c                    [        U 5      (       a  [        R                  " S5        U R                  S/5      n[         HB  n[        X5      nU R                  S/US9n[        [        [        4[        R                  XS9  MD     g )NzJAX does not raiser   
   r   r   )r   pytestxfailro   r   r   rw   assert_raises
ValueError	TypeErrorr,   rp   )r4   rr   r   r%   r   s        r:   test_label_output_wrong_sizer   p  sf    bzz)*77A3<D2$e,z9-mmT	:	 r=   c           
         [         R                  " [        R                  R	                  [        R                  R                  [        5      SS5      5      n[         R                  " [        R                  R	                  [        R                  R                  [        5      SS5      5      n[         R                  " [        R                  R	                  [        R                  R                  [        5      SS5      5      nUR                  S5      nUR                  S5      nUR                  S5      nU R                  U5      nU R                  U5      nU R                  U5      nSn[        UR                  S   5       Hh  nXS S 2S S 24   n[        UR                  S   5       H>  nX'S S 2S S 24   n[        [        R                  " Xh5      S   X4S S 2S S 24   SS	9  US
-  nM@     Mj     g )Nrr   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txt)   r   )r   rc   rc   r   Fcheck_dtyper   )r)   loadtxtospathjoindirname__file__r+   r1   ranger   r   r,   rp   )	r4   rr   strelsresultsrrd   djss	            r:   test_label_structuring_elementsr   }  sl   ::bggll277??$-/ 0DZZ
!6+=? @Fjj
!6+>@ AG<<
#D^^J'Fooj)G::dDZZFjj!G	A4::a=!AqMv||A'A!QwAGMM!/2Gq!G4DRWXFA ( "r=   z2`cupyx.scipy.ndimage` does not have `find_objects`r   c                 J  ^  SU 4S jjn[         R                  " [         R                  5      [         R                  " S5      :w  a^  Sn[         R                  R	                  [         R
                  " U5      5      R                  U5      nT R                  U5      nU" U5        g g )Nc                    > X:  n[        UR                  5      n[        R                  " XD5      nT	R	                  U5      n[        R
                  " UU5      u  pg[        R                  " U5      ng )N)rg   r   r,   r   r1   rp   find_objects)
imgthreshsizemaskrankr   laco_r4   s
            r:   SEtest_ticket_742.<locals>.SE  sZ    |4::224>F#t%'  $r=   rd   )rc     r   )gffffff?r!   )r)   r%   intprandomrandprodr+   r1   )r4   r   r   as   `   r:   test_ticket_742r     sj    % 
xxBHHSM)IINN2775>*2259JJqM
1 *r=   c                     [         R                  " S5      nSUSS2SS24'   SUSS2SS24'   SUS'   SUS'   SUS'   U R                  U5      n[        R                  " XR                  S	5      5      S   S:X  d   eg)
z/Github issue #3025 - improper merging of labels)<   i@  r   N  i  )$   r   )#   i  )r   i  )rc   rc   )r)   rw   r1   r,   rp   ro   )r4   r   s     r:   test_gh_issue_3025r     s|    
AAa#gJAagJAgJAgJAgJ


1A==GGFO,Q/1444r=   z-cupyx.scipy.ndimage does not have find_objectc                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)TestFindObjectsi  c                    [         R                  R                  SS5      nUR                  U5      n[        R
                  " US:  5      u  p4UR                  UR                  UR                  4;   d   e[        R                  " U5        g )Nr   rF   )
r)   r   r   r1   r,   rp   r%   int32r0   r   )r3   r4   
test_arrayrp   no_featuress        r:   test_label_default_dtype(TestFindObjects.test_label_default_dtype  sg    YY^^B+
ZZ
+
$]]:+;<{{rxx2222U#r=   c                 v    UR                  / UR                  S9n[        R                  " U5      nUS/:X  d   eg )Nr   rT   )ro   r0   r,   r   r3   r4   rr   rs   s       r:   test_find_objects01#TestFindObjects.test_find_objects01  s6    wwrw*""4(rd{{r=   c                 t    UR                  / UR                  S9n[        R                  " U5      nU/ :X  d   eg )Nr   rw   r0   r,   r   r   s       r:   test_find_objects02#TestFindObjects.test_find_objects02  s4    xx"((x+""4(byyr=   c                     UR                  S/UR                  S9n[        R                  " U5      nU[	        SSS 5      4/:X  d   eg )Nr   r   r   ro   r0   r,   r   slicer   s       r:   test_find_objects03#TestFindObjects.test_find_objects03  G    wws"((w+""4(aD)+,,,,r=   c                 v    UR                  S/UR                  S9n[        R                  " U5      nU/ :X  d   eg )Nr   r   r   r   s       r:   test_find_objects04#TestFindObjects.test_find_objects04  s6    xx288x,""4(byyr=   c                     UR                  S/UR                  S9n[        R                  " U5      nU[	        SSS 5      4/:X  d   eg )Nr   r   r   r   r   s       r:   test_find_objects05#TestFindObjects.test_find_objects05  r   r=   c                     UR                  / SQ5      n[        R                  " U5      nU[        SSS 5      4[        SSS 5      4[        SSS 5      4/:X  d   eg )Nr   r   r   r   r!   r   r   r1   r,   r   r   r   s       r:   test_find_objects06#TestFindObjects.test_find_objects06  sd    zz,-""4(aD)+aD)+aD)+- - 	- -r=   c           	          UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " U5      nU/ :X  d   eg )Nr   )r1   r,   r   r   s       r:   test_find_objects07#TestFindObjects.test_find_objects07  sE    zz------/ 0 ""4(byyr=   c           
      N   UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " U5      nU[        SSS 5      [        SSS 5      4[        SSS 5      [        S	S
S 5      4[        SS
S 5      [        SS	S 5      4[        S
SS 5      [        SS
S 5      4/:X  d   eg )Nr   r   r   r   r   r   r   rc   r   r   r   r  r   s       r:   test_find_objects08#TestFindObjects.test_find_objects08  s    zz------/ 0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr=   c           
         UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " U5      nU[        SSS 5      [        SSS 5      4[        SSS 5      [        S	S
S 5      4S [        S
SS 5      [        SS
S 5      4/:X  d   eg )Nr   r   r   r   r   r   r   rc   r   r   r   r  r   s       r:   test_find_objects09#TestFindObjects.test_find_objects09  s    zz------/ 0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr=   rT   N)rU   rV   rW   rX   r   r   r   r   r   r  r  r	  r  r  rZ   rT   r=   r:   r   r     s6    $---CCr=   r   c           	      N   U R                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " USS9n/ SQn[        UR	                  5       5      U:X  d   e[        U 5      (       a  S	S
0O0 n0 nU H  nU R                  " X:H  40 UD6XV'   M     [        R                  " USS9nUR	                  5       UR	                  5       :X  d   eUR	                  5        HE  n[        X'   5      [        XW   5      :X  d   e[        X'   XW   5       H  u  p[        X5        M     MG     g)z Test dictionary keys and entriesr   r   r   r   r   r   )ignore_value)r   r   r!   as_tupleTN)
r1   r,   value_indiceslistkeysr   nonzerorg   zipr   )
r4   rr   vi	true_keysnnz_kwdtruevikkeyvtrue_vs
             r:   test_value_indices01r!    s
   ::))))))+ ,D 
		t!	4BI	?i'''$,RLLz4 bGFJJty4G4	  
		t!	4B779%%%wwy27|s6;////RWfk2IAA& 3 r=   c                     U R                  SU R                  S9nSn[        [        US9   [        R
                  " U5        SSS5        g! , (       d  f       g= f)zTest input checking)r   r!   r   z(Parameter 'arr' must be an integer array)matchN)rw   float32r   r   r,   r  )r4   rr   msgs      r:   test_value_indices02r&  &  sA    88F"**8-D
4C	z	-d# 
.	-	-s   A
Ac                 l   S GH(  nU R                  SS/-  SS/-  -   SS/-  -   U R                  S9nU R                  X!5      n[        U 5      (       a  SS0O0 n[	        U5      R
                  nU" U5      n[        R                  " U5      n[        UR                  5       5      [        U5      :X  d   eU Vs/ s H  n[        U5      PM     sn HV  nU R                  " X(:H  40 UD6n	[        Xh   5      [        U	5      :X  d   e[        Xh   U	5       H  u  p[        X5        M     MX     GM+     g	s  snf )
z2Test different input array shapes, from 1-D to 4-D))r   )   r   )rc   rc   r!   )rc   rc   r   r      r   r   rc   r   r  TN)r1   r   r+   r   r   unique_valuesr,   r  r  r  intr  rg   r  r   )r4   r   r   r  r*  trueKeysr  r5   r  trueNdxviktrue_viks               r:   test_value_indices03r0  .  s   :JJA3r1#vb!f,RXXJ>JJq (0:t$"'*88 #""1%BGGI$x.000"*+(Q#a&(+Ajj373Gru:W---!$RUG!4. "5 , ; ,s   9D1c                     [          H<  n[        X5      nU R                  / US9n[        R                  " U5      nUS:X  a  M<   e   g )Nr   r   )r   r   r1   r,   sumr4   r   r%   inputr   s        r:   
test_sum01r5  A  sB    !

2U
+U#{{	 r=   c                     [          H>  n[        X5      nU R                  SS/US9n[        R                  " U5      nUS:X  a  M>   e   g )Nr   r!   r   )r   r   rw   r,   r2  r3  s        r:   
test_sum02r7  I  sF    !!Qu-U#{{	 r=   c                     [          HM  n[        X5      nU R                  / US9n[        R                  " U5      n[        X@R                  S5      SS9  MO     g )Nr   r&   Fcheck_0d)r   r   ro   r,   r2  r
   r1   r3  s        r:   
test_sum03r;  Q  sH    !%(U#FJJsOeD	 r=   c                     [          HO  n[        X5      nU R                  SS/US9n[        R                  " U5      n[        X@R                  S5      SS9  MQ     g )Nr   r   r         @Fr9  r   r   r1   r,   r2  r
   r3  s        r:   
test_sum04r?  Y  sL    !

Aq6
/U#FJJsOeD	 r=   c                     [          HS  n[        X5      nU R                  SS/SS//US9n[        R                  " U5      n[        X@R                  S5      SS9  MU     g )	Nr   r   rc   r!   r   g      $@Fr9  r>  r3  s        r:   
test_sum05rA  a  sV    !

QFQF+5
9U#FJJt$4uE	 r=   c                     [         R                  " / [        S9nU R                  U5      n[         H:  n[	        X5      nU R                  / US9n[
        R                  " XAS9nUS:X  a  M:   e   g )Nr   r#   r   r)   r1   boolr   r   r,   r2  r4   r#   r   r%   r4  r   s         r:   
test_sum06rG  i  s`    ZZ$'FZZF!

2U
+U2{{	 r=   c                     [         R                  " SS/[        S9nU R                  U5      n[         H<  n[        X5      nU R                  SS/US9n[        R                  " XAS9nUS:X  a  M<   e   g )Nr   r!   r   rC  )	r)   ro   rE  r1   r   r   rw   r,   r2  rF  s         r:   
test_sum07rI  s  sh    WWaV4(FZZF!!Qu-U2{{	 r=   c                     [         R                  " SS/[        S9nU R                  U5      n[         H<  n[	        X5      nU R                  SS/US9n[
        R                  " XAS9nUS:X  a  M<   e   g )Nr   r   r   r   rC  rD  rF  s         r:   
test_sum08rK  }  sh    ZZAd+FZZF!

Aq6
/U2{{	 r=   c                    [         R                  " SS/[        S9nU R                  U5      n[         HQ  n[	        X5      nU R                  SS/SS//US9n[
        R                  " XAS9n[        XPR                  S5      S	S
9  MS     g )Nr   r   r   r   rc   r!   rC        @Fr9  )r)   r1   rE  r   r   r,   r2  r
   rF  s         r:   
test_sum09rN    sw    ZZAd+FZZF!

QFQF+5
9U2FJJsOeD	 r=   c                    [         R                  " SS/[        S9n[         R                  " SS/SS//[        S9nU R                  U5      nU R                  U5      n[        R                  " X!S9n[        X0R                  S5      S	S
9  g Nr   r   r   r   rc   r!   rC         @Fr9  )r)   r1   rE  r,   r2  r
   r4   r#   r4  r   s       r:   
test_sum10rS    so    ZZAd+FJJAA't4EZZFJJuE[[.F

3%@r=   c                     U R                  SS/U R                  S9n[         HR  n[        X5      nU R                  SS/SS//US9n[        R
                  " XASS9n[        XPR                  S5      SS	9  MT     g )
Nr   r   r   rc   r!   r"         @Fr9  )r1   int8r   r   r,   r2  r
   rF  s         r:   
test_sum11rW    st    ZZAbggZ.F!

QFQF+5
9U#$&FJJsOeD r=   c           	      $   U R                  SS/SS//U R                  S9n[         Hf  n[        X5      nU R                  SS/SS//US9n[        R
                  " XAU R                  / SQ5      S9n[        XPR                  / SQ5      5        Mh     g 	Nr   r   r!   r   rc   r!      r   r"   )rM  rP   g      @)r1   rV  r   r   r,   r2  r	   rF  s         r:   
test_sum12r\    s    ZZ!Q!Q(Z8F!

QFQF+5
9UI9NO!&**_*EF	 r=   c           	         U R                  SS/SS//U R                  S9n[         H  n[        X5      nU R                  SS/SS//US9n[        R
                  " XAU R                  / SQ5      S9n[        R                  " XAU R                  / SQ5      S9nU R                  XV:H  5      (       d   e[        X`R                  / SQ5      5        M     g rY  )	r1   rV  r   r   r,   r2  
sum_labelsallr	   )r4   r#   r   r%   r4  
output_sumoutput_labelss          r:   test_sum_labelsrb    s    ZZ!Q!Q(Z8F!

QFQF+5
9[[RZZ	=RS
**

9(=? vvj12222!-O1LM r=   c                    [         R                  " SS/[        S9nU R                  U5      n[         HQ  n[	        X5      nU R                  SS/SS//US9n[
        R                  " XAS9n[        XPR                  S5      S	S
9  MS     g rP  )r)   r1   rE  r   r   r,   meanr
   rF  s         r:   test_mean01re    sw    ZZAd+FZZF!

QFQF+5
9e3FJJsOeD	 r=   c                    [         R                  " SS/[        S9n[         R                  " SS/SS//[        S9nU R                  U5      nU R                  U5      n[        R                  " X!S9n[        X0R                  S5      S	S
9  g Nr   r   r   r   rc   r!   rC  r&   Fr9  )r)   r1   rE  r,   rd  r
   rR  s       r:   test_mean02rh    so    ZZAd+FJJAA't4EZZFJJuE\\%/F

3%@r=   c                     U R                  SS/5      n[         HR  n[        X5      nU R                  SS/SS//US9n[        R                  " XASS9n[        XPR                  S5      SS	9  MT     g )
Nr   r   rc   r!   r   r"   r=  Fr9  )r1   r   r   r,   rd  r
   rF  s         r:   test_mean03rj    sl    ZZAF!

QFQF+5
9e$%'FJJsOeD r=   c           
         U R                  SS/SS//U R                  S9n[        R                  " SS9   [         H{  n[        X5      nU R                  SS/SS//US9n[        R                  " XAU R                  / SQ5      S	9nUS
   S:X  d   eUS   S:X  d   eU R                  US   5      (       a  M{   e   S S S 5        g ! , (       d  f       g = f)Nr   r   r!   r   ignorer_  rc   rZ  r"   r   rM        @)	r1   rV  r)   errstater   r   r,   rd  isnanrF  s         r:   test_mean04rq    s    ZZ!Q!Q(Z8F		"DB%EJJAA/uJ=E\\%(*

9(=?F !9###!9###88F1I&&&&  
#	"	"s   A>C7C
Cc                    [         R                  " SS/[        S9nU R                  U5      n[         HQ  n[	        X5      nU R                  SS/SS//US9n[
        R                  " XAS9n[        XPR                  S5      S	S
9  MS     g rg  )r)   r1   rE  r   r   r,   minimumr
   rF  s         r:   test_minimum01rt    w    ZZAd+FZZF!

QFQF+5
96FJJsOeD	 r=   c                    [         R                  " SS/[        S9n[         R                  " SS/SS//[        S9nU R                  U5      nU R                  U5      n[        R                  " X!S9n[        X0R                  S5      SS	9  g 
Nr   r   r   r   r!   rC  r&   Fr9  )r)   r1   rE  r,   rs  r
   rR  s       r:   test_minimum02rx    so    ZZAd+FJJAA't4EZZFJJuE__U2F

3%@r=   c                     U R                  SS/5      n[         HR  n[        X5      nU R                  SS/SS//US9n[        R                  " XASS9n[        XPR                  S5      SS	9  MT     g )
Nr   r   rc   r!   r   r"   rQ  Fr9  )r1   r   r   r,   rs  r
   rF  s         r:   test_minimum03rz    sl    ZZAF!

QFQF+5
9'(*FJJsOeD r=   c           	         U R                  SS/SS//5      n[         Hf  n[        X5      nU R                  SS/SS//US9n[        R                  " XAU R                  / SQ5      S9n[        XPR                  / SQ5      5        Mh     g )	Nr   r   rc   r!   r   r   rc   r[  r"   )rQ  rM  rP   )r1   r   r   r,   rs  r	   rF  s         r:   test_minimum04r}    }    ZZ!Q!Q()F!

QFQF+5
9')zz)'<>!&**_*EF r=   c                    [         R                  " SS/[        S9nU R                  U5      n[         HQ  n[	        X5      nU R                  SS/SS//US9n[
        R                  " XAS9n[        XPR                  S5      S	S
9  MS     g )Nr   r   r   r   rc   r!   rC  r=  Fr9  )r)   r1   rE  r   r   r,   maximumr
   rF  s         r:   test_maximum01r    ru  r=   c                    [         R                  " SS/[        S9n[         R                  " SS/SS//[        S9nU R                  U5      nU R                  U5      n[        R                  " X!S9n[        X0R                  S5      SS	9  g rw  )r)   r1   rE  r,   r  r
   rR  s       r:   test_maximum02r    so    ZZAd+FJJAA't4EZZFJJuE__U2F

3%@r=   c                     U R                  SS/5      n[         HR  n[        X5      nU R                  SS/SS//US9n[        R                  " XASS9n[        XPR                  S5      SS	9  MT     g )
Nr   r   rc   r!   r   r"   rM  Fr9  )r1   r   r   r,   r  r
   rF  s         r:   test_maximum03r  $  sl    ZZAF!

QFQF+5
9'(*FJJsOeD r=   c           	         U R                  SS/SS//5      n[         Hf  n[        X5      nU R                  SS/SS//US9n[        R                  " XAU R                  / SQ5      S9n[        XPR                  / SQ5      5        Mh     g )	Nr   r   rc   r!   r   r|  r"   )r=  rM  rP   )r1   r   r   r,   r  r	   rF  s         r:   test_maximum04r  .  r~  r=   c                 b    U R                  / SQ5      n[        R                  " U5      S:X  d   eg )N)r   r   )r1   r,   r  )r4   r5   s     r:   test_maximum05r  8  s'    


< A??1###r=   c                     U R                  / SQ/ SQ/ SQ/ SQ/5      nU R                  / SQ/ SQ/ SQ/ SQ/5      n[        R                  " XU R                  / SQ5      S	9n[        X0R                  / S
Q5      5        g )Nr   r   r   r   r   rc   r   r!   r   r   r   r   r@   rc   r   r   r   r   r   r   r   r   r   r   rc   rc   r   r   )r   r   rc   r"   )rn  rM  rU  )r1   r,   medianr	   r4   r   r#   r   s       r:   test_median01r  >  sl    


L   " 	#A ZZ%%%' (F ^^ABJJy4IJFfjj&ABr=   c                     U R                  / SQ/ SQ/ SQ/ SQ/5      n[        R                  " U5      n[        X R                  S5      SS9  g )Nr  r  r  r  r&   Fr9  r1   r,   r  r
   r4   r   r   s      r:   test_median02r  K  sB    


L   " 	#A ^^AF

3%@r=   c                     U R                  / SQ/ SQ/ SQ/ SQ/5      nU R                  / SQ/ SQ/ SQ/ SQ/5      n[        R                  " XS9n[        X0R                  S	5      S
S9  g )Nr  r  r  r  r  r  r  rC  r=  Fr9  r  r  s       r:   test_median03r  T  sb    


L   " 	#A ZZ%%%' (F ^^A-F

3%@r=   c                     [         R                  " SS/[        S9nU R                  U5      n[        R                  " XR                  S5      U R                  S/5      S9n[        X R                  S/5      5        g )Nr   r   r   r"   r&   )r)   r1   rE  r,   r  ro   r	   r  s      r:   test_median_gh12836_boolr  a  sX    


Aq6&A


1A^^Aggdm2::qc?KFfjj#&78r=   c                     U R                  SS/U R                  S9n[        R                  " XR	                  S5      U R                  S/5      S9n[        X R                  S/5      5        g )NA   F   r   r  r   r"   g     P@)r1   rV  r,   r  ro   r	   r  s      r:   test_median_no_int_overflowr  i  sQ    


B8277
+A^^Aggdm2::qc?KFfjj$&89r=   c                    [         R                  " SS9   [         Hu  n[        X5      nU R	                  / US9n[        5        nUR                  [        S5        [        R                  " U5      nS S S 5        U R                  W5      (       a  Mu   e   S S S 5        g ! , (       d  f       N3= f! , (       d  f       g = fNrl  rm  r   zMean of empty slice)r)   ro  r   r   r1   r   filterRuntimeWarningr,   variancerp  r4   r   r%   r4  supr   s         r:   test_variance01r  p  s    		"DB%EJJrJ/E"$

>+@A ))%0 % 88F####  
#	" %$	 
#	")   /B/-B1B/B/
B,(B//
B=c                     [          HN  n[        X5      nU R                  S/US9n[        R                  " U5      n[        X@R                  S5      SS9  MP     g Nr   r   rP   Fr9  r   r   r1   r,   r  r
   r3  s        r:   test_variance02r  {  sL    !

A3e
,!!%(FJJsOeD	 r=   c                     [          HO  n[        X5      nU R                  SS/US9n[        R                  " U5      n[        X@R                  S5      SS9  MQ     g Nr   rc   r   r&   Fr9  r  r3  s        r:   test_variance03r    sN    !

Aq6
/!!%(FJJsOeD	 r=   c                     [         R                  " SS/[        S9nU R                  U5      n[        R                  " U5      n[        X R                  S5      SS9  g )Nr   r   r   g      ?Fr9  )r)   r1   rE  r,   r  r
   r4   r4  r   s      r:   test_variance04r    sG    JJ1vT*EJJuEe$F

4 05Ar=   c                     U R                  / SQ5      n[         HP  n[        X5      nU R                  / SQUS9n[        R                  " XAS5      n[        XPR                  S5      SS9  MR     g N)r   r   rc   )r   rc   r[  r   r   r&   Fr9  )r1   r   r   r,   r  r
   rF  s         r:   test_variance05r    sZ    ZZ	"F!

9E
2!!%3FJJsOeD r=   c           
      b   U R                  / SQ5      n[        R                  " SS9   [         Hd  n[	        X5      nU R                  / SQUS9n[
        R                  " XAU R                  / SQ5      5      n[        XPR                  / SQ5      5        Mf     S S S 5        g ! , (       d  f       g = fN)r   r   rc   rc   r!   rl  rm  )r   rc   r[  r   r[  r   )r   rc   r!   )r&   r&   rP   )r1   r)   ro  r   r   r,   r  r	   rF  s         r:   test_variance06r    s{    ZZ(F		"DB%EJJ/uJ=E%%eRZZ	5JKF%fjj.IJ	  
#	"	"   A/B  
B.c                    [         R                  " SS9   [         Hu  n[        X5      nU R	                  / US9n[        5        nUR                  [        S5        [        R                  " U5      nS S S 5        U R                  W5      (       a  Mu   e   S S S 5        g ! , (       d  f       N3= f! , (       d  f       g = fr  )r)   ro  r   r   r1   r   r  r  r,   standard_deviationrp  r  s         r:   test_standard_deviation01r    s    		"DB%EJJrJ/E"$

>+@A 33E: % 88F####  
#	" %$	 
#	"r  c                     [          HN  n[        X5      nU R                  S/US9n[        R                  " U5      n[        X@R                  S5      SS9  MP     g r  r   r   r1   r,   r  r
   r3  s        r:   test_standard_deviation02r    sL    !

A3e
,++E2FJJsOeD	 r=   c                     [          HO  n[        X5      nU R                  SS/US9n[        R                  " U5      n[        X@R                  S5      SS9  MQ     g r  r  r3  s        r:   test_standard_deviation03r    sN    !

Aq6
/++E2FJJsOeD	 r=   c                     [         R                  " SS/[        S9nU R                  U5      n[        R                  " U5      n[        X R                  S5      SS9  g )Nr   r   r   rF   Fr9  )r)   r1   rE  r,   r  r
   r  s      r:   test_standard_deviation04r    sF    JJ1vT*EJJuE''.F

3%@r=   c                     U R                  / SQ5      n[         HP  n[        X5      nU R                  / SQUS9n[        R                  " XAS5      n[        XPR                  S5      SS9  MR     g r  )r1   r   r   r,   r  r
   rF  s         r:   test_standard_deviation05r    sZ    ZZ	"F!

9E
2++E1=FJJsOeD	 r=   c           
      b   U R                  / SQ5      n[        R                  " SS9   [         Hd  n[	        X5      nU R                  / SQUS9n[
        R                  " XAU R                  / SQ5      5      n[        XPR                  / SQ5      5        Mf     S S S 5        g ! , (       d  f       g = fr  )r1   r)   ro  r   r   r,   r  r	   rF  s         r:   test_standard_deviation06r    s    ZZ(F		"DB%EJJ/uJ=E//rzz)4F &fjj.IJ  
#	"	"r  c           	         U R                  S/5      n[        R                  " SS9   [         H  n[	        U 5      (       a  US:X  a  [
        R                  " S5        [        X5      nU R                  S/US9n[        R                  " XAU R                  S/5      5      n[        XPR                  S/5      5        M     S S S 5        g ! , (       d  f       g = f)	Nr   rl  rm  uint8z8value cannot be converted to type uint8 without overflowgl `yr   r   )r1   r)   ro  r   r   r   r   r   r,   r  r	   rF  s         r:   test_standard_deviation07r    s    ZZ_F		"D|| 0 1B%EJJ}EJ:E//rzz1#OF%fjj!o>  
#	"	"s   BC
Cc                     [         R                  " SS/[        S9nU R                  U5      n[         H@  n[	        X5      nU R                  SS/SS//US9n[
        R                  " XAS9nUS:X  a  M@   e   g )	Nr   r   r   r   rc   r!   rC  r   r   )r)   r1   rE  r   r   r,   minimum_positionrF  s         r:   test_minimum_position01r    su    ZZAd+FZZF!

QFQF+5
9))%?	 r=   c                     [          HE  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " U5      nUS:X  a  ME   e   g Nr   r!   r   r   rc   r   r   r   r   r   r   r   r   r   r   )r   r   r1   r,   r  r3  s        r:   test_minimum_position02r    Y    !

L((*16  8 ))%0 r=   c                     [         R                  " / SQ/ SQ/ SQ/[        S9nU R                  U5      n[        R                  " U5      nUS:X  d   eg r  r)   r1   rE  r,   r  r  s      r:   test_minimum_position03r    N    JJ$$&-13E JJuE%%e,FVr=   c                     [         R                  " / SQ/ SQ/ SQ/[        S9nU R                  U5      n[        R                  " U5      nUS:X  d   eg )Nr  )rc   r   r   r   r  r   r  r  r  s      r:   test_minimum_position04r    r  r=   c                     U R                  / SQ5      n[         HE  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " XA5      nUS:X  a  ME   e   g )Nr   r   r   r!   r  r  )r   r   r   rc   r   )r   r   r1   r   r   r,   r  rF  s         r:   test_minimum_position05r    g    ZZ%F!

L((*16  8 ))%8 r=   c                     U R                  / SQ5      n[         HF  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " XAS5      nUS:X  a  MF   e   g )Nr   r   rc   r!   r  r  r  r   r   r   r   r  rF  s         r:   test_minimum_position06r    i    ZZ%F!

L((*16  8 ))%; r=   c           	         U R                  / SQ5      n[         He  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " XAU R                  SS/5      5      nUS   S	:X  d   eUS
   S:X  a  Me   e   g )Nr  r  r  r  r   r   rc   r   r  r   r  r  rF  s         r:   test_minimum_position07r  &      ZZ%F!

L((*16  8 ))%*,**aV*<>ayF"""ayF""" r=   c                     [         R                  " SS/[        S9nU R                  U5      n[         HA  n[	        X5      nU R                  SS/SS//US9n[
        R                  " UUS9nUS:X  a  MA   e   g )	Nr   r   r   r   rc   r!   rC  r   r   )r)   r1   rE  r   r   r,   maximum_positionrF  s         r:   test_maximum_position01r  3  sz    ZZAd+FZZF!

QFQF+5
9))%179 r=   c                     [          HE  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " U5      nUS:X  a  ME   e   g )Nr  rc   r   r[  r   r  r   r  )r   r   r1   r,   r  r3  s        r:   test_maximum_position02r  >  r  r=   c                     [         R                  " / SQ/ SQ/ SQ/[        S9nU R                  U5      n[        R                  " U5      nUS:X  d   eg )Nr  r  r  r   r  )r)   r1   rE  r,   r  r  s      r:   test_maximum_position03r  H  r  r=   c                     U R                  / SQ5      n[         HE  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " XA5      nUS:X  a  ME   e   g )Nr  r  r  r  r   r   r   r1   r   r   r,   r  rF  s         r:   test_maximum_position04r  Q  r  r=   c                     U R                  / SQ5      n[         HF  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " XAS5      nUS:X  a  MF   e   g )Nr  r  r  r  r   r   r  r  rF  s         r:   test_maximum_position05r  \  r  r=   c           	         U R                  / SQ5      n[         He  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " XAU R                  SS/5      5      nUS   S	:X  d   eUS   S
:X  a  Me   e   g )Nr  r  r  r  r   r   r   r   r  r  r  rF  s         r:   test_maximum_position06r  g  r  r=   c           	      T   [        U 5      (       a  [        R                  " S5        U R                  / SQ5      n[         He  n[        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " XAU R                  SS/5      5      nUS	   S
:X  d   eUS   S:X  a  Me   e   g )Nzoutput[1] is wrong on pytorch)r&   rn  rP         @r  r  r  r   r&   r   r   r  r   )r   rc   )r   r   r   r1   r   r   r,   r  rF  s         r:   test_maximum_position07r  t  s    ||45ZZ,-F!

L((*16  8 ))%*,**c3Z*@BayF"""ayF""" r=   c                    [         R                  " SS/[        S9nU R                  U5      n[         H  n[	        X5      nU R                  SS/SS//US9n[
        R                  " XAS9n[
        R                  " XAS9n[
        R                  " XAS9n[
        R                  " UUS9n[
        R                  " UUS9n	XVXxU	4:X  a  M   e   g )Nr   r   r   r   rc   r!   rC  )r)   r1   rE  r   r   r,   extremars  r  r  r  
r4   r#   r   r%   r4  output1output2output3output4output5s
             r:   test_extrema01r
    s    ZZAd+FZZF!

QFQF+5
9//%7//%7//%7**528:**528:Gg>>>> r=   c                 p   U R                  SS/5      n[         H  n[        X5      nU R                  SS/SS//US9n[        R                  " XASS9n[        R
                  " XASS9n[        R                  " XASS9n[        R                  " UUSS9n[        R                  " UUSS9n	XVXxU	4:X  a  M   e   g )Nr   r   rc   r!   r   r"   )	r1   r   r   r,   r  rs  r  r  r  r  s
             r:   test_extrema02r    s    ZZAF!

QFQF+5
9//%()+//%()+//%()+**528C**528CGg>>>> r=   c           	         U R                  SS/SS//5      n[         GHG  n[        U 5      (       a  US;   a  [        R                  " S5        [        X5      nU R                  SS/SS//US9n[        R                  " UUU R                  / SQ5      S	9n[        R                  " UUU R                  / SQ5      S	9n[        R                  " XAU R                  / SQ5      S	9n[        R                  " UUU R                  / SQ5      S	9n[        R                  " UUU R                  / SQ5      S	9n	[        US
   U5        [        US   U5        US   U:X  d   eUS   U	:X  a  GMH   e   g )Nr   r   rc   uint16uint32uint64/https://github.com/pytorch/pytorch/issues/58734r!   r   r|  r"   r   r1   r   r   r   r   r   r,   r  rs  r  r  r  r	   r  s
             r:   test_extrema03r    sV   ZZ!Q!Q()FB<<D$BB\\KL!

QFQF+5
9//%)/(*

9(=? //%)/(*

9(=? //%(*

9(=?**52813I1FH **52813I1FH 	"'!*g6!'!*g6qzW$$$qzW$$$/ r=   c           	         U R                  / SQ5      n[         GHP  n[        U 5      (       a  US;   a  [        R                  " S5        [        X5      nU R                  / SQ/ SQ/ SQ/US9n[        R                  " XAU R                  SS	/5      5      n[        R                  " XAU R                  SS	/5      5      n[        R                  " XAU R                  SS	/5      5      n[        R                  " XAU R                  SS	/5      5      n[        R                  " XAU R                  SS	/5      5      n	[        US
   U5        [        US   U5        US	   U:X  d   eUS   U	:X  a  GMQ   e   g )Nr  r  r  r  r  r  r   r   r   r   rc   r  r  s
             r:   test_extrema04r    sD   ZZ%FB<<D$BB\\KL!

L((*16  8 //%QF1CD//%QF1CD//%QF1CD**5+-::q!f+=?**5+-::q!f+=?!'!*g6!'!*g6qzW$$$qzW$$$% r=   c                     Sn[          HA  n[        X5      nU R                  SS/SS//US9n[        R                  " U5      nXQ:X  a  MA   e   g )N)rP   rP   r   r   r   r   r   r1   r,   center_of_massr4   r   r   r%   r4  r   s         r:   test_center_of_mass01r    V    H!

QFQF+5
9''.!!!	 r=   c                     Sn[          HA  n[        X5      nU R                  SS/SS//US9n[        R                  " U5      nXQ:X  a  MA   e   g )Nr  r   r   r   r  r  s         r:   test_center_of_mass02r    V    H!

QFQF+5
9''.!!!	 r=   c                     Sn[          HA  n[        X5      nU R                  SS/SS//US9n[        R                  " U5      nXQ:X  a  MA   e   g )Nr  r   r   r   r  r  s         r:   test_center_of_mass03r!    r  r=   c                     Sn[          HA  n[        X5      nU R                  SS/SS//US9n[        R                  " U5      nXQ:X  a  MA   e   g )Nr  r   r   r   r  r  s         r:   test_center_of_mass04r#    r  r=   c                     Sn[          HA  n[        X5      nU R                  SS/SS//US9n[        R                  " U5      nXQ:X  a  MA   e   g )NrF   rF   r   r   r  r  s         r:   test_center_of_mass05r&    r  r=   c                     Sn[         R                  " SS/SS//[        S9nU R                  U5      n[        R                  " U5      nX1:X  d   eg )Nr%  r   r   rc   r   )r)   r1   rE  r,   r  r4   r   r4  r   s       r:   test_center_of_mass06r)    sN    HJJAA't4EJJuE##E*Fr=   c                     U R                  SS/5      nSn[        R                   " SS/SS//[        S9nU R                  U5      n[        R                  " X15      nXB:X  d   eg )Nr   r   rF   rP   r   rc   r   r1   r)   rE  r,   r  r4   r#   r   r4  r   s        r:   test_center_of_mass07r.    s`    ZZAFHJJAA't4EJJuE##E2Fr=   c                     U R                  SS/5      nSn[        R                   " SS/SS//[        S9nU R                  U5      n[        R                  " X1S5      nXB:X  d   eg )Nr   r   rF   r&   r   rc   r   r,  r-  s        r:   test_center_of_mass08r1    sb    ZZAFHJJAA't4EJJuE##E15Fr=   c                 b   U R                  S5      nU R                  SS/U R                  S9n[        R                   " SS/SS//[        S9nU R                  U5      n[        R
                  " X1U R                  SS/5      5      n[        U R                  U5      U R                  U5      5        g )Nr  r+  r0  r   r   r   )r1   float64r)   rE  r,   r  r   r-  s        r:   test_center_of_mass09r4  !  s    ZZFzz:z2"**zEHJJAA't4EJJuE##E2::q!f3EFFBJJv&

8(<=r=   c                     U R                  S5      nU R                  S5      n[        R                  " USSS5      n[	        X15        g )Nr   r   )ro   aranger,   	histogramr	   r(  s       r:   test_histogram01r8  *  s:    wwr{HIIbMEuaR0Ff/r=   c                     U R                  / SQ5      nU R                  / SQ5      nU R                  / SQ5      n[        R                  " USSSUS5      n[        XB5        g )N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   rc   r!   rc   rc   rc   rc   r   r!   r   r   r1   r,   r7  r	   r-  s        r:   test_histogram02r;  1  sP    ZZ01Fzz/*HJJ/0EuaAvq9Ff/r=   zobject arraysc                    U R                  / SQ5      nU R                  / SQ5      nU R                  / SQ5      nU R                  / SQ5      n[        R                  " USSSUS5      n[        US   U5        [        US	   U5        g )
N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   rc   r   )r   r   rc   r!   rc   r   rc   rc   r   r!   r   r  r   r:  )r4   r#   	expected1	expected2r4  r   s         r:   test_histogram03r?  9  sr    ZZ01F

?+I

?+IJJ/0EuaAvv>FfQi3fQi3r=   c           
         U R                  / SQ/ SQ/ SQ/5      nU R                  / SQ/ SQ/ SQ/5      n[        R                  " XU R                  SS/5      S9n[        X0R                  S	S
/U R                  S95        [        R
                  " XU R                  SS/5      S9n[        X@R                  SS/U R                  S95        [        R                  " XU R                  SS/5      S9n[        XPR                  U R                  SS/U R                  S95      5        [        R                  " XU R                  SS/5      S9n[        X`R                  S	S
/U R                  S95        [        R                  " XU R                  SS/5      S9n[        XpR                  SS/5      SS9  [        R                  " XU R                  SS/5      S9n[        XR                  SS/5      SS9  g )N)r   r   r   r   r   )r[  r@   r   r   r   )r   r   r   rc   r   )r   r   r   r   r   )r   r   r   r   r   r   r   r"   r_   rM  r   rn  r&   r   rc   Fr   r@   )r1   r,   rd  r   r3  r  r  r	   sqrtr  rs  r  )	r4   r   lblrd  varstdmedminmaxs	            r:   test_stat_funcs_2drH  F  s   


O_oFGA
**oH
IC<<RZZA-?@DD**c3Zrzz*BC


1

Aq60B
CCCS#JbjjAB

$
$Q"**aV:L
MCc772::sCj

:+S#TU
..bjj!Q.@
ACCS#JbjjAB
//!rzz1a&/A
BCCQF+?
//!rzz1a&/A
BCCQF+?r=   no watershed_ift on CuPyc                       \ rS rSrS rS rS rS rS rS r	\
" SS	S
9S 5       r\
" SSS9S 5       r\
" SSS9S 5       rSrg)TestWatershedIfti]  c                    UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/5      n[        R                  " X#US9n/ S	Q/ S
Q/ S
Q/ S
Q/ S
Q/ S
Q/ S	Q/ S	Q/n[        XQR                  U5      5        g )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	structurer   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r  rV  r,   watershed_iftr	   r3   r4   rr   markersrT  rs   r   s          r:   test_watershed_ift01%TestWatershedIft.test_watershed_ift01`  s    zz000000002 :<  C **433333335 =?GG  E **i'') *	 ##DYG0+++++002 	"#zz(';<r=   c                 `   UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9n[        R                  " X#5      n/ SQ/ SQ/ S	Q/ S	Q/ S	Q/ SQ/ SQ/ SQ/n[        XAR                  U5      5        g )
NrM  rN  rO  r   rP  rQ  rU  )r   r   r   r   r   r   r   rV  rW  r3   r4   rr   rZ  rs   r   s         r:   test_watershed_ift02%TestWatershedIft.test_watershed_ift02  s    zz000000002 :<  C **433333335 =?GG  E ##D20-+++-002 	"#zz(';<r=   c           
      N   UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9n[        R                  " X#5      n/ SQ/ SQ/ S	Q/ S	Q/ S	Q/ SQ/ SQ/n[        XAR                  U5      5        g )
NrM  rN  r   r   r   r   r   r   r   r   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   rU  )r   r   r   r   rc   r   r   r   r   r   rc   rc   rc   r   rW  r^  s         r:   test_watershed_ift03%TestWatershedIft.test_watershed_ift03  s    zz00000002 :<  C **33333346 >@WW  F ##D20.+++.02 	"#zz(';<r=   c           
         UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/5      n[        R                  " X#US9n/ S	Q/ S
Q/ S
Q/ S
Q/ S
Q/ S
Q/ S	Q/n[        XQR                  U5      5        g )NrM  rN  rb  r   rc  rd  rR  rS  rU  re  rW  rY  s          r:   test_watershed_ift04%TestWatershedIft.test_watershed_ift04  s    zz00000002 :<  C **33333346 $&77  , **i'') *	 ##DYG0+++++02 	"#zz(';<r=   c           
         UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/5      n[        R                  " X#US9n/ S	Q/ S
Q/ S
Q/ S
Q/ S
Q/ S
Q/ S	Q/n[        XQR                  U5      5        g )NrM  rN  rb  r   )r   r   rc   r   r   r   r   rd  rR  rS  rU  )r   rc   rc   r   r   r   r   rW  rY  s          r:   test_watershed_ift05%TestWatershedIft.test_watershed_ift05  s    zz00000002 :<  C **33333346 $&77  , JJ	 ) ) + ,	 ##DYG0+++++02 	"#zz(';<r=   c           	      n   UR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR                  S9nUR                  / SQ/ SQ/ SQ/5      n[        R                  " X#US9n/ S	Q/ S	Q/ S	Q/ S	Q/ S
Q/ S
Q/n[        XQR                  U5      5        g )NrO  rN  rM  r   rP  rQ  rR  rS  rV  rU  rW  rY  s          r:   test_watershed_ift06%TestWatershedIft.test_watershed_ift06  s    zz0000002
 :<  C **4333335
 =?GG  E **i'') *	 ##DYG++++002 	"#zz(';<r=   Tzinplace ops are numpy-specificr   c           	      ^   Sn[         R                  " U[         R                  S9nUR                  5       n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/[         R                  S9US'   UR	                  U5      nUR	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/UR
                  S9nUR                  X!R                  S9nUR                  nUR	                  / S	Q/ S	Q/ S	Q/5      n[        R                  " X4UUS
9  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        XQR	                  U5      5        g )N)r   r   r   rO  rN  rM  .rP  rQ  rR  )rT  r   rV  rU  )r)   rw   r  	transposer1   rV  int16Tr,   rX  r	   )r3   r4   r   rr   rZ  rs   rT  r   s           r:   test_watershed_ift07%TestWatershedIft.test_watershed_ift07  s   xxRXX.~~JJ 5 5 5 5 5 5 7
 ?AhhHS	 zz$**4333335
 =?GG  E hhuHHh-ee**i'') *	 	dy%(	*++++002 	"#zz(';<r=   r   rI  r   c                     UR                  SS/SS//UR                  S9nUR                  SS/SS//UR                  S9n[        R                  " X#5      nSS/SS//n[        XAR                  U5      5        g )N   r   r   r   )r1   r  rV  r,   rX  r	   r^  s         r:   test_watershed_ift08%TestWatershedIft.test_watershed_ift08)  s     zzC8q6#*,))  5**q!f !f&-/WW  6##D2FF!#zz(';<r=   c                 8   UR                  UR                  UR                  5      R                  S/SS//UR                  S9nUR                  SS/SS//UR                  S9n[
        R                  " X#5      nSS/SS//n[        XAR                  U5      SS9  g )Nr   r   r   Fr   )r1   iinfor  rG  rV  r,   rX  r   r^  s         r:   test_watershed_ift09%TestWatershedIft.test_watershed_ift095  s     zzBHHRYY/33Q7q6#*,))  5**q!f !f&-/WW  6##D2FFZZ1uEr=   rT   N)rU   rV   rW   rX   r[  r_  rf  ri  rl  ro  r   ru  ry  r}  rZ   rT   r=   r:   rK  rK  ]  sz    =>=8=2=<=:=2 d+KL= M=@ f%?@	= A	= f%?A	F B	Fr=   rK  )r   dtc                     [         R                  R                  S5      nSnUR                  SUSS9R	                  U S9n[
        R                  " U5      n[        UR                  5       5      U:X  d   eg )N{   r[  r   )r   r)  )lowhighr   r   )	r)   r   default_rngintegersastyper,   r  rg   r  )r  r4   rngmax_valimageval_idxs         r:   test_gh_19423r  B  sh     ))


$CGLLQW8L<CC"CME##E*Gw||~')))r=   )r   os.pathnumpyr)   numpy.testingr   scipy._lib._array_apir   r   r   r   r   r	   r
   r   r   r   scipy.ndimager,    r   scipy.conftestr   markr   usefixtures
pytestmarkname__version__r/   r   r\   ru   rx   thread_unsafer{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!  r&  r0  r5  r7  r;  r?  rA  rG  rI  rK  rN  rS  rW  r\  rb  re  rh  rj  rq  rt  rx  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r!  r#  r&  r)  r.  r1  r4  r8  r;  r?  rH  rK  parametrizeintcuintcr  rT   r=   r:   <module>r     s   	   +    *   /;;// "FKK$;$;<N$O&+9NPR
 WW_=#)=  $'IJO= O= KO=d#/ #/L  $"&* $'IJ K*&$ $'GH I $'GH! I!
:, &M$	5 &!PQTC TC RTCn'4$/&EEFEAEG
NEAE'EAEGEAEG$
CA
A9:$EEBEK$EEAE	K
?    
#    
##"? ?$%8%.""""">00 $7	4 8	4@. &!;<aF aF =aFH $23* 4  *r=   