
    (phTW                    t   S SK r S SKrS SKJrJr  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Jr  S SKrS SKrS SKJrJrJrJrJrJrJrJrJ r   S SKJ!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5  S SK6J7r7J8r8  \Rr                  " \ SS	9S
 5       r:/ SQr;\Rx                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/SS9r=\" \=5      r>0 r?S r@\@" 5         S rAS]S jrB     S^S jrCS rDS rES]S jrF\" \SS9rG\GS S4S  jrHS!SS" S#SSSSSSSSSSS$S \G4S% jrI " S& S'5      rJS(\K4S) jrL\I" \S*SS+9rM\I" \S*SSS,9rN\I" \S*SS*S-9rO\I" \S*SSS*S.9rP\I" \/5      rQ\I" \)SS/9=rRrS\I" \55      rT\I" \'5      rU\I" \$5      rV\I" \#5      rW\I" \&5      rX\I" \%5      rY\I" \,5      rZ\I" \*5      r[\I" \(SS09r\\I" \4SS09r]\I" \!5      r^\I" \"SS09r_\I" \35      r`\I" \25      ra\I" \05      rb " S1 S25      rc " S3 S45      rd " S5 S65      re " S7 S85      rf " S9 S:5      rg " S; S<5      rhS= ri " S> S?5      rjS@ rk " SA SB5      rl\R                  R                  SC/ SDQ5      SE 5       roSF rpSG rqSH rrSI rsSJ rtSK ruSL rvSM rwSN rx\R                  R                  SO 5       rz\R                  R                  SP 5       r{\R                  R                  SQ 5       r|\R                  R                  SR 5       r}\R                  R                  SS 5       r~ST rSU rSV rSW r\R                  R                  SX 5       r " SY SZ5      r " S[ S\5      rg)_    N)wrapspartial)norm)verboseassert_assert_array_equalassert_equalassert_almost_equalassert_allclosebreak_cyclesIS_PYPY)	
squareformpdistcdist	num_obs_y
num_obs_dmis_valid_dm
is_valid_y_validate_vector_METRICS_NAMES)
braycurtiscanberra	chebyshev	cityblockcorrelationcosinedice	euclideanhammingjaccardjensenshannonkulczynski1mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalmichenersokalsneathsqeuclideanyule)np_longnp_ulongsession)paramsscopec                     U R                   $ )z3
Fixture for all metrics in scipy.spatial.distance
)param)requests    T/var/www/html/venv/lib/python3.13/site-packages/scipy/spatial/tests/test_distance.pymetricr5   D   s    
 ==    )zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r     m         )r7   r   '        )r8   r<   r     4     )r9   r=   r@   r      e  )r:   r>   rA   rC   r     )r;   r?   rB   rD   rE   r   doubledtypec                     [          H  n U R                  SS5      R                  SS5      n[        R                  R	                  [        R                  R                  [        5      SU 5      n[        U5      n[        R                  " U5      [        U'   UR                  5         M     [        R                  " [        S   5      [        S'   [        R                  " [        S   5      [        S'   [        R                  " [        S   5      [        S'   [        [        S	   5      [        S	'   [        [        S
   5      [        S
'   g )Nz.txt z-mldatapdist-boolean-inprandom-bool-datarandom-double-datarandom-float32-datarandom-int-datarandom-uint-data)
_filenamesreplaceospathjoindirname__file__opennploadtxteoclosebool_float32r,   r-   )fnnamefqfnfps       r4   load_testing_filesrd   {   s    zz&"%--eR8ww||BGGOOH5vrB$Z::b>4

  !hhr*='>?BXXb);&<=B "

2.B+C DB#B'8$9:B%b);&<=Br6   c                  H    [         R                  " S5      R                  S:  $ )Nr      )rZ   intpitemsize r6   r4   	_is_32bitrj      s    771:""r6   c                   ^  T  Vs/ s H  n[         R                  " U5      PM     snm Uc;  T  Vs/ s H+  nUR                  S:w  a  [         R                  " U5      OUPM-     snm Sn[	        S T  5       5      m US:  a@  [        U 4S jT  5       5      (       d  [        S5      e[        T S   R                  5      U   nT U4-   $ s  snf s  snf )N   r   c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fN)rZ   
atleast_1d.0as     r4   	<genexpr> _chk_asarrays.<locals>.<genexpr>   s     4V2==##Vs   #%c              3   Z   >#    U  H   oR                   TS    R                   :H  v   M"     g7f)r   N)ndim)rq   rr   arrayss     r4   rs   rt      s      <V66VAY^^+Vs   (+z(array ndim must be the same for neg axis)rZ   
asanyarrayrv   raveltupleall
ValueErrorrange)rw   axisrr   s   `  r4   _chk_asarraysr      s    (./1bmmA/F| "#!a "#1"((1+!3!#4V44Fax<V<<<GHHVAY^^$T*TG 0#s
    C2C
FTc
                   ^^^ [        U TS9n
U
S S U
S   sn mU=(       a    U(       + nU(       d  U(       a  [        S U  5       5      nU(       ai  U  Vs/ s H-  n[        R                  " [        R                  " U5      5      PM/     nn[        U5      (       a  SnSn[        S [        X5       5       5      n Tb  [        R                  " T5      mO5U(       a'  [        R                  " U S   R                  T   5      mOU TT4-   $ U	(       a  [        T5      mU(       a  [        U TT5      m[        UU4S jU  5       5      (       d  [        S5      eU(       a#  TS:  R                  5       (       a  [        S	5      eU(       aQ  [        R                  " TS:  5      S   mTR                  TR                  :  a  [        UU4S
 jU  5       5      n TT   mU(       a  TS:H  R                  5       (       a  S mU TT4-   $ s  snf )Nr~   c              3      #    U  H>  n[         R                  R                  U5      [         R                  R                  Lv   M@     g 7frn   )rZ   magetmasknomaskrp   s     r4   rs   _chk_weights.<locals>.<genexpr>   s*     Q&QBEEMM!,BEELL@&s   AATc              3   v   #    U  H/  u  pU(       a  [         R                  R                  U5      OUv   M1     g 7frn   )rZ   r   masked_invalid)rq   rr   has_nans      r4   rs   r      s0      D-Bzq 7>255//21D-Bs   79r   c              3   ^   >#    U  H"  nTR                   UR                   T   4:H  v   M$     g 7frn   shape)rq   rr   r~   weightss     r4   rs   r      s%     A&Qw}} 00&s   *-z*weights shape must match arrays along axiszweights cannot be negativec              3   P   >#    U  H  n[         R                  " UTTS 9v   M     g7f)r   N)rZ   take)rq   rr   r~   pos_weightss     r4   rs   r      s     Nv!2771k=vs   #&rl   )r   anyrZ   isnansumrz   ziprx   onesr   _freq_weights_weight_maskedr{   r|   nonzerosize)rw   r   r~   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedrr   has_nansr   s    ``          @r4   _chk_weightsr      s   
 &t,E":uRyLFD'=,=[Q&QQ178ABHHRVVAY'8x==K M D-0-BD DF --(	''&)//$/0$''( $7A&AAAEFFgk&&((566jj1-a0gll*NvNNFk*GW\..00WdO##A 9s   4G>c                     U c  U $ U R                  [        5      nX:g  R                  5       (       a  [        SU  35      eU$ )Nz0frequency (integer count-type) weights required )astypeintr   r|   )r   int_weightss     r4   r   r      sE    ..%K##%%KG9UVVr6   c                   ^ Tc  Sm[         R                  " U5      nU  H  n[         R                  R                  U5      nU[         R                  R                  L a  MA  UR
                  S:  a7  [        U4S j[        UR
                  5       5       5      nUR                  US9nUSUR                  [        5      -
  -  nM     U$ )Nr   rl   c              3   6   >#    U  H  oT:w  d  M
  Uv   M     g 7frn   ri   )rq   ir~   s     r4   rs   !_weight_masked.<locals>.<genexpr>   s     C1dQQs   		r   )rZ   rx   r   r   r   rv   rz   r}   r   r   r   )rw   r   r~   rr   	axis_masknot_axess     `   r4   r   r      s    |mmG$GEEMM!$	$66A:CaffCCH!84I1y'',,,  Nr6   c                   ^^ U  Vs/ s HX  n[         R                  " UR                  [         R                  5      (       a  UR	                  [         R
                  5      OUPMZ     n n[         R                  " U[         R
                  S9n[         R                  R                  U5      nS nU S   R                  T   m[        UU4S jU  5       5      (       d   S5       e[        [        U5      T-  5       Hx  nUR                  TU-   5      n	X   n
UR                  5       nX-  X'   [         R                  " USU-
  U
-  5      nU  Vs/ s H  n[         R                  " X" XTS9TS9PM     n nMz     X4$ s  snf s  snf )NrG   c                     [         R                  " [         R                  " XUS95      nUR                  [	        U R
                  5       Vs/ s H  nXB:w  a  U R                  U   OSPM     sn5      $ s  snf )Nr   rl   )rZ   rx   r   reshaper}   rv   r   )rr   ixr~   recordr   s        r4   mytake_rand_split.<locals>.mytake   se    rwwq489~~(-aff7(51 ./YqwwqzA=(57 8 	8 7s    A3r   c              3   F   >#    U  H  oR                   T   T:H  v   M     g 7frn   r   )rq   rr   r~   n_obss     r4   rs   _rand_split.<locals>.<genexpr>   s     6v!wwt}%vs   !z#data must be aligned on sample axis      ?r   )rZ   
issubdtyperH   integerr   float64arrayrandomRandomStater   r{   r}   r   randintrandappend)rw   r   r~   	split_perseedarrseeded_randr   r   split_ixprev_wqrr   r   s     `          @r4   _rand_splitr      sh    #)*"(3 )+cii(L(Lcjj$"(  * hhwbjj1G))''-K8
 1IOOD!E6v666 10163y>E)*&&uqy1"J))Gb1f%67068061 ))Ava=!%'06 	 8 + ?/**8s   AE7
$E<h㈵>atolc                     U $ rn   ri   xs    r4   <lambda>r     s    r6   c                    U" U 5      nU" U5      n [         R                  " XV:g  5      R                  5       (       a	  U" XV5        g g ! [         a    U" XV5         g [        [
        4 a!    [        XV5       H  u  px[        XxUS9  M      g f = f)N)compare_assert)rZ   r   r   AttributeError	TypeErrorr|   r   _rough_check)	rr   br   keywcheck_acheck_ba_ib_is	            r4   r   r     s    !fG!fGB88G&'++--7, . )w(z" BG-HC.A .Bs   3A B-B
B   c                     U $ rn   ri   r   s    r4   r   r     s    1r6   r   r   c                 p   ^ ^^^^^^^^^	^
^^^^^^ [        T 5      UUUU	U UUUUUUUUUU
UU4S j5       nU$ )zruns fn on its arguments 2 or 3 ways, checks that the results are the same,
then returns the same thing it would have returned beforec            	        > T" U 0 UD6nU S T nU TS  nUR                  T%S 5      nUR                  ST5      n[        X5USSS9nUS S US   US   penT$(       a4  U Vs/ s H'  n[        R                  " UR	                  5       5      PM)     nn [        U5      U-   n T(       a  XQT%'   [        UT" U 0 UD6TS9  T(       a3  US-  UT%'   [        UT" U 0 UD6TS9  US-  UT%'    [        UT" U 0 UD6TS9  T(       Ga  [        X5UT"T S	9u  pX[S UR                  & S
XR                  S & [        U
5      U-   nXT%'   [        UT" U0 UD6TS9  U
 HH  n[        S 5      /UR                  -  n[        UR                  S 5      X'   [        U5      nX   S-  X'   MJ     [        U
5      U-   n[        UT" U0 UD6TS9  U
 HV  n[        S 5      /UR                  -  n[        UR                  S 5      X'   [        U5      nX   [        R                  -  X'   MX     UR                  SS 5      S:X  a&  T(       a  [        U
5      U-   n[        UT" U0 UD6TS9  T(       ak  U
 Vs/ s H"  n[        R                  R                  U5      PM$     n
n[        U
5      U-   n[        UT" U0 UD6TS9  T(       a  S UT%'   [        UT" U0 UD6TS9  A
AAT(       ad  U Vs/ s H  n[        R                   " XUS9PM     nn[        R                   " XU5      S-  n[        U5      U-   nXT%'   [        UT" U0 UD6TS9  AAAT#(       a;  T"S
:  a5  [        X5UT"T S	9nUu  nn[        U5      U-   nUUT%'   [        UT" U0 UD6TS9  U$ s  snf ! [         a  n	[        U	5      " XU45      U	eS n	A	ff = fs  snf s  snf ! ["         a6  n	T!(       d$  [$        R&                  " TR(                   SU	 3SS9   S n	A	U$ S n	A	ff = f)Nr~   T)r   r~   r   r   r   )r   g     @Y@gB`"۹?)r   r   r   e   
nan_policyomitr          @z NotImplemented weights:    )
stacklevel)getr   rZ   ro   squeezerz   r   	Exceptiontyper   r   slicerv   nanr   r   r   NotImplementedErrorwarningswarn__name__)&argskwargsresultrw   restr   r~   r   rr   e
dud_arraysdud_weightsdud_argsindexer
dup_arraysdup_weightsdup_argssplitsplit_arrayssplit_weights
split_args
const_testdefault_axisdud_testdup_testr`   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args&                        r4   wrapped _weight_checked.<locals>.wrapped  s3   T$V$gvFG}**Z.zz&,/V4+/TC %cr
E"IuRy:@A&QbmmAIIK0&FAJ	,=4'D%,z"VR%8%8cB%,u_z"VR%8%8cB%,u_z"? T)<V)<#F
 *5ft@IPT+V'
-4MW\\*-.LLM* ,t3%0z"VR%<V%<#F#A$T{maff4G$)',,$=GM#GnG!"c!1AJ	 $
 !,t3VR%<V%<#F#A$T{maff4G$)',,$=GM#GnG!"bff!4AJ	 $
 ::lD1V;$Z047H X)@)@cJCM!N:a"%%"6"6q"9:J!N$Z047H X)@)@cJ#-1z*$VR-DV-D#N+ BHI&Qbii48&
I ii9C? ,t3%0z"VR%<V%<#Fj+ i!m#FT.7dD.3+m"<047
%2z"VR%>v%>CH [ B ! ?q'1g"67Q>?@ "O J # 	, -FqcJ)*,	,s^   .M0AN% !M5 2E%N% )N AN% N +BN% 5
N?NNN% %
O%/+O  O%)r   )r`   r	  r  r   r  r   r  r  r  r  r  r  r  r  r
  r   r   r   r  s   `````````````````  r4   _weight_checkedr    s3     2YY Y Y Yt Nr6   c                        \ rS rSrS rS rSrg)DummyContextManageri|  c                     g rn   ri   selfs    r4   	__enter__DummyContextManager.__enter__}      r6   c                     g rn   ri   )r  r   s     r4   __exit__DummyContextManager.__exit__  r  r6   ri   N)r   
__module____qualname____firstlineno__r  r  __static_attributes__ri   r6   r4   r  r  |  s    r6   r  r5   c                 L    U S;   a  [         R                  " 5       $ [        5       $ )N)r"   r(   )pytestdeprecated_callr  r5   s    r4   maybe_deprecatedr%    s#    11%%''"$$r6   rl   )r  r   )r  r   r  )r  r   r	  )r  r   r  r	  )r  )r  c                      \ rS rSrS r\R                  R                  S 5       rS r	S r
\R                  R                  SSSS	S
SSS\R                  /5      S 5       rS rS rS rSS jrS rS r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R                  S 5       rSrg)	TestCdisti  c                    / SQU l         [        [        [        R                  [        R
                  /[        [        R                  [        R
                  /[        R                  [        R
                  /[        R
                  /S.U l        g N)rO   rP   rQ   rN   rM   )booluintr   r_   rnd_eo_namesr-   r,   rZ   r_   r   valid_upcastsr  s    r4   setup_methodTestCdist.setup_method  W    1 (0"**bjj&Q'.

BJJ&G&(jj"**%=*,**7r6   c           	         / SQ/ SQ/ SQ/n/ SQ/ SQ/ SQ/nS[         R                  " S5      S	.nS/S
-  n[        R                  " [        5         [        U5         [        X#4SU0UD6  S S S 5        S S S 5        [        R                  " [        5         [        U5         [        X#4S[        U5      0UD6  S S S 5        S S S 5        [        R                  " [        5         [        U5         [        X#4SSU-   0UD6  S S S 5        S S S 5        [        R                  " [        5         [        X#/UQ7SU06  S S S 5        [        R                  " [        5         [        X#/UQ7S[        U5      06  S S S 5        [        R                  " [        5         [        X#/UQ7SSU-   06  S S S 5        g ! , (       d  f       GNP= f! , (       d  f       GNZ= f! , (       d  f       GN&= f! , (       d  f       GN0= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r         @333333?ffffff@333333@皙@r7  皙@g      @      @g       @g      @333333@g @g      @r?  r;  Q	@r   N0tV4l1D_p4raMr      r5   test_)rZ   aranger"  raisesr   r%  r   eval)r  r5   X1X2r   r   s         r4   test_cdist_extra_argsTestCdist.test_cdist_extra_args  s    O_=O_=$(ryy|<v|]]9%!&)b6V6v6 * & ]]9%!&)b<T&\<V< * & ]]9%!&)b@Wv%5@@ * & ]]9%"/$// &]]9%"55f5 &]]9%"9D96!19 &% *) &% *) &% *) &% &%%%%%s   GF4+GG*!G9G*#H/G<H+H H1I4
G	>G
G
G'	"G**
G9<
H	H
H 
H.1
H?
Ic           
         SS jn/ SQ/ SQ/ SQ/n/ SQ/ SQ/ S	Q/nS
[         R                  " S5      S.nS
/S-  n[        R                  " [        5         [        X#U5        S S S 5        [        R                  " [        5         [        X#U/UQ76   S S S 5        [        R                  " [        5         [        X#U40 UD6  S S S 5        [        R                  " [        5         [        X#USSS9  S S S 5        [        R                  " [        5         [        X#USSSS9  S S S 5        [        R                  " [        5         [        X#USSSS9  S S S 5        [        R                  " [        5         [        X#USSS5        S S S 5        [        R                  " [        5         [        X#USS5        S S S 5        [        R                  " [        5         [        X#US5        S S S 5        [        R                  " [        5         [        X#USSSS9  S S S 5        [        [        X#USSS9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       GNa= f! , (       d  f       GNC= f! , (       d  f       GN#= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)Nrl   r   c                     X#-   U-   $ rn   ri   r   yargkwargkwarg2s        r4   
_my_metric:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r6   r3  r5  r9  r<  r>  r@  rA  r   rB  rD  r:  ffffff
@rR  rS  rR  皙?r5   rQ  rS  皙@rl   r   )rZ   rF  r"  rG  r   r   r   )r  rT  rI  rJ  r   r   s         r4   test_cdist_extra_args_custom&TestCdist.test_cdist_extra_args_custom  s   	( O_=O_=$(ryy|<v|]]9%"*% &]]9%"*,t, &]]9%"*// &]]9%"*C< &]]9%"*a#6 &]]9%"*a#6 &]]9%"*c34 &]]9%"*c3/ &]]9%"*c* &]]9%"*cSA & 	bZ"%c347	9- &%%%%%%%%%%%%%%%%%%%sx   H3I4I$I)I;J3J%J1KK3
I
I
I&)
I8;
J

J
J.1
K 
K
K"c                     Sn[         S   n[         S   n[        X#S5      n[        X#S5      n[        XEU[        S:  S9  g )NV瞯<cdist-X1cdist-X2r   test_euclideanr   rtolr   r\   wcdist_no_constr   r   )r  epsrI  rJ  Y1Y2s         r4   #test_cdist_euclidean_random_unicode-TestCdist.test_cdist_euclidean_random_unicode  sB    
^
^R[1R%56S'A+>r6   p皙?      ?r   Gz?r   gffffff@gffffff@c                 ~    Sn[         S   n[         S   n[        X4SUS9n[        X4SUS9n[        XVSU[        S:  S	9  g )
NvIh%<=rb  rc  r$   rn  test_minkowskir   r   )r   rf  r   rg  )r  rn  ri  rI  rJ  rj  rk  s          r4   test_cdist_minkowski_random%TestCdist.test_cdist_minkowski_random  sJ     
^
^R[A6R%5;QS'A+Fr6   c                     Sn[         S   n[         S   n[        X#S5      nS nS[        R                  " X%" U5      -  X5" U5      -  R                  5      -
  n[        XFU[        S:  S9  g )	N+=rb  rc  r   c                 ^    [         R                  R                  U SS9R                  SS5      $ )Nrl   r   r   )rZ   linalgr   r   )Xs    r4   norms1TestCdist.test_cdist_cosine_random.<locals>.norms  s&    99>>!!>,44R;;r6   rl   r   re  )r\   wcdistrZ   dotTr   r   )r  ri  rI  rJ  rj  r}  rk  s          r4   test_cdist_cosine_random"TestCdist.test_cdist_cosine_random  sg    
^
^BH%	< eBi2b	>*<*<==S'A+>r6   c                    [         R                  " S/S//5      n[         R                  " S/S//5      n[        XSS9n[        US[         R                  " S5      /[         R                  " S5      [         R                  " S5      //5        [         R                  " S	S	/S
S	//5      n[         R                  " S	S/SS	/S	S//5      n[        XSS9n[         R                  " S5      n[        X4XD/SSU-  S//5        [
        R                  " [        5         [        S	S//SS//SS9  S S S 5        g ! , (       d  f       g = f)Nr   r      r#   r$                @      ?r   r   rl   r   )rZ   r   r   r   sqrtr"  rG  r|   )r  x1x2distrt2s        r4   test_cdist_mahalanobis TestCdist.test_cdist_mahalanobis  s   XXsQCj!XXsQCj!RM2RWWS\2RWWS\2771:4NOP XX1vAw'(XX1v1v2w/0RM2ggajSAGQ@A ]]:&Aq6(aVH]; '&&s   D22
E c                    ^  " S S5      mU4S jn[         R                  " T" 5       //[        S9n[        X"US9nSn[	        X4[
        S:  S9  g )	Nc                       \ rS rSrSrg)6TestCdist.test_cdist_custom_notdouble.<locals>.myclassi  ri   Nr   r  r  r  r   ri   r6   r4   myclassr        r6   r  c                 l   > [        U S   T5      (       a  [        US   T5      (       d  [        S5      egNr   zType has been changed+?
isinstancer|   r   rP  r  s     r4   rT  9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric!  3    adG,,JqtW4M4M !899r6   rG   r$  r  r   r   )rZ   r   objectr   r	   r   )r  rT  rK   cdist_yright_yr  s        @r4   test_cdist_custom_notdouble%TestCdist.test_cdist_custom_notdouble  sI    	 		 xx')V4:6Ww{;r6   c           	          [        X4SU0UD6n[        X4S[        U5      0UD6n[        X4SSU-   0UD6n[        XgU[        S:  S9  [        XhU[        S:  S9  g ! [         Ga  n	U	R
                  n
[        S:  a   [        U
R                  5        [        U	5        [        R                  " U
5         [        X4SU0UD6  S S S 5        O! , (       d  f       O= f[        R                  " U
5         [        X4S[        U5      0UD6  S S S 5        O! , (       d  f       O= f[        R                  " U
5         [        X4SSU-   0UD6  S S S 5         S n	A	g ! , (       d  f        S n	A	g = fS n	A	ff = fNr5   rE  r   re  )
r   rH  r   r   r   	__class__printr   r"  rG  )r  rI  rJ  r5   ri  r   y1y2y3r   e_clss              r4   _check_calling_conventions$TestCdist._check_calling_conventions*  s/   	Cr7f77Br=d6l=f=BrAg&6A&AB BgkBBgkB  
	AKKE{enn%au%b6V6v6 &%%u%b<T&\<V< &%%u%b@Wv%5@@ &%%%
	Af   6A E4(AE/4C	E/
C	E/3D	E/
D"	E/;EE/
E,	$E/,E//E4c                 ,   U R                    GH  n[        U   S S S2S S S24   n[        U   SS S2S S S24   n[        S:  a  [        SUSU5        US;   a  SU;  a  MR  U R	                  X4U5        US	:X  a\  [
        R                  " X4/5      R                  [
        R                  5      n[
        R                  " US
SS9nU R	                  X4XS9  M  US:X  d  M  [
        R                  " X4/5      R                  [
        R                  5      n[
        R                  " [
        R                  " UR                  5      5      n[
        R                  " [
        R                  R                  U5      R                  5      nU R	                  X4XS9  GM     g )Nr  r   rl   r   	testing:  with: >   r   r+   r&   r"   r)   r(   r%   r*  r'   r   r~   r   Vr#   VI)r-  r\   r   r  r  rZ   vstackr   r   var
atleast_2dcovr  r   r{  inv)r  r5   eo_namerI  rJ  X12r  r  s           r4   test_cdist_calling_conventions(TestCdist.test_cdist_calling_conventions?  sN    ((G GSqS$B$Y'BGQTT3Q3Y'B{k69g> ) ) .47-B++BF; %ii)00<FF3QQ////D=(ii)00<MM"&&-0XXbiimmA.001///F3 )r6   c           
         Sn[         S   U R                  S   4[         S   U R                  S   4[         S   U R                  S   4[         S   U R                  S	   4/nU Hc  nUS
   S S S2S S S24   nUS
   SS S2S S S24   n [        XVUS9nUS    H,  n[        U" U5      U" U5      US9n	[        XyU[        S:  S9  M.     Me     g ! [
         a  n
U
R                  n[        S:  a   [        UR                  5        [        U
5        US    HN  nU" U5      nU" U5      n[        R                  " U5         [        XUS9  S S S 5        M>  ! , (       d  f       MM  = f    S n
A
GM  S n
A
ff = f)NHz>rM   r*  rQ   r+  rP   r   rO   r_   r   r  r   rl   r   r$  re  )r\   r.  r   r   r   r   r  r  r   r"  rG  )r  r5   ri  teststestrI  rJ  r  new_typer  r   r  X1newX2news                 r4   test_cdist_dtype_equivalence&TestCdist.test_cdist_dtype_equivalence^  sy   '($*<*<V*DE'($*<*<V*DE&'););E)BC*+T-?-?	-JKM Da1dd#BaAss#BK2&1 !%QHx|Xb\&IB#BgkJ !(! 
  	;Q;%..)!H $QH$RLE$RLEu-e6: .--- !(	;s1   
C
E.A$E)9E	
E)
E
E))E.c                    Sn[         S   n[         S   nUR                  S   UR                  S   pe[        5       nUS:X  a  SUS'   [        R                  " XV4[        R
                  S9n[        U5         [        X4U40 UD6n	S S S 5        [        U5         [        X4U4S	U0UD6n
S S S 5        [        W	W
U[        S
:  S9  [        XL 5        [        R                  " US-
  US-   4[        R
                  S9n[        R                  " [        5         [        U5         [        X4U4S	U0UD6  S S S 5        S S S 5        [        R                  " S
U-  S
U-  4[        R
                  S9S S S
2S S S
24   n[        R                  " XV4[        R
                  SS9n[        R                  " [        5         [        U5         [        X4U4S	U0UD6  S S S 5        S S S 5        [        R                  " [        5         [        U5         [        X4U4S	U0UD6  S S S 5        S S S 5        [        R                  " XV4[        R                  S9n[        R                  " [        5         [        U5         [        X4U4S	U0UD6  S S S 5        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       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nra  rb  rc  r   r$   rq  rn  rG   outr   re  rl   F)rH   order)r\   r   dictrZ   emptyr   r%  r   r   r   r   r"  rG  r|   int64)r  r5   ri  rI  rJ  out_rout_cr   out1rj  rk  out2out3out4out5s                  r4   test_cdist_outTestCdist.test_cdist_outy  st    
^
^xx{BHHQKu[ F3Kxxbjj9f%rv00B &f%rv:4:6:B & 	BS'A+> 	
 xxq%'*"**=]]:&!&)bf9$9&9 * '
 xxYE	""**669c3Q3h@xxbjjD]]:&!&)bf9$9&9 * ' ]]:&!&)bf9$9&9 * '
 xxbhh7]]:&!&)bf9$9&9 * '&= &%%% *) '& *) '& *) '& *) '&s   6JJ#KJ5/K4K+ KK+:LK=L$L00L L0
J #
J25
K	?K
K
K(	#K++
K:=
L	L
L
L-	)L00
L>c                    Sn[         S   S S S2S S S24   n[         S   S S S2S S S24   nUR                  5       nUR                  5       n[        X55        [        XF5        [        UR                  R
                  (       + 5        [        UR                  R
                  (       + 5        [        UR                  R
                  5        [        UR                  R
                  5        [        5       nUS:X  a  SUS'   [        U5         [        X4U40 UD6nS S S 5        [        U5         [        XVU40 UD6n	S S S 5        [        WW	U[        S:  S9  g ! , (       d  f       NC= f! , (       d  f       N3= f)	Nra  rb  r   rc  r$   rq  rn  re  )r\   copyr	   r   flagsc_contiguousr  r%  r   r   r   )
r  r5   ri  rI  rJ  X1_copyX2_copyr   rj  rk  s
             r4   test_stridingTestCdist.test_striding  s+    
^CaC1H%
^CaC1H%'')'') 	R!R!BHH)))*BHH)))***+**+[ F3Kf%rv00B &f%w:6:B & 	BS'A+> &%%%s   E(E#
E #
E1c                    [         R                  R                  SS5      n[         R                  R                  SS5      n[        5       nUS:X  a  SUS'   [	        U5         [        X#4SU0UD6nS S S 5        X#W4 Vs/ s H  n[        R                  " U5      PM     nnAAA[        (       a
  [        5         [        S U 5       5      (       d   eg ! , (       d  f       Nh= fs  snf )N
   r$   rq  rn  r5   c              3   2   #    U  H  o" 5       S L v   M     g 7frn   ri   )rq   weak_refs     r4   rs   0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s     @i(8:%is   )rZ   r   r   r  r%  r   weakrefrefr   r   r{   )r  r5   r  r  r   r  v	weak_refss           r4   test_cdist_refcountTestCdist.test_cdist_refcount  s    YY^^B#YY^^B#[ F3Kf%8v88C &
 /1c];]W[[^]	;C7N@i@@@@@ &%
 <s   !C> C#
C r-  r.  Nr  )r   r  r  r  r/  r"  markthread_unsaferK  r^  rl  parametrizerZ   infrv  r  r  r  r  r  r  r  r  r  r   ri   r6   r4   r'  r'    s    7 [[: :0"9H? [[S3c4#&S"&&#: ;G;G?<$<C*G>K6 [[+: +:Z [[? ?8 [[A Ar6   r'  c            	          \ rS rSrS r\R                  R                  S 5       rS r	S r
S rS rS r\R                  R                  S	 5       r\R                  R                  S
 5       r\R                  R                  S 5       rS rS rS rS rS rS rS rS rS r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R                  S 5       rS rS rS r S r!\R                  R                  S 5       r"\R                  R                  S 5       r#\R                  R                  S 5       r$S r%S  r&S! r'\R                  R                  S" 5       r(\R                  R                  S# 5       r)\R                  R                  S$ 5       r*\R                  RW                  S%S&S'S(S)S*\,RZ                  /5      S+ 5       r.S, r/S- r0S. r1\R                  R                  S/ 5       r2\R                  R                  S0 5       r3\R                  R                  S1 5       r4\R                  R                  S2 5       r5\R                  R                  S3 5       r6\R                  R                  S4 5       r7S5 r8S6 r9S7 r:S8 r;S9 r<S: r=S; r>S< r?S= r@S> rAS? rBS@ rCSA rDSB rESC rFSD rGSE rHSF rISG rJSH rKSI rLSJ rMSK rNSL rOSM rP\R                  R                  SN 5       rQSO rRSP rSSXSQ jrTSR rUSS rV\R                  R                  ST 5       rW\R                  R                  SU 5       rXSVrYgW)Y	TestPdisti  c                    / SQU l         [        [        [        R                  [        R
                  /[        [        R                  [        R
                  /[        R                  [        R
                  /[        R
                  /S.U l        g r)  r,  r  s    r4   r/  TestPdist.setup_method  r1  r6   c           	         SS/SS/SS//nS[         R                  " S5      S.nS/S	-  n[        R                  " [        5         [        U5         [        U4S
U0UD6  S S S 5        S S S 5        [        R                  " [        5         [        U5         [        U4S
[        U5      0UD6  S S S 5        S S S 5        [        R                  " [        5         [        U5         [        U4S
SU-   0UD6  S S S 5        S S S 5        [        R                  " [        5         [        U/UQ7S
U06  S S S 5        [        R                  " [        5         [        U/UQ7S
[        U5      06  S S S 5        [        R                  " [        5         [        U/UQ7S
SU-   06  S S S 5        g ! , (       d  f       GNP= f! , (       d  f       GNZ= f! , (       d  f       GN&= f! , (       d  f       GN0= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r6  r7  r:  rA  r   rB  rD  r5   rE  )rZ   rF  r"  rG  r   r%  r   rH  )r  r5   rI  r   r   s        r4   test_pdist_extra_argsTestPdist.test_pdist_extra_args  s    2hc
S#J/$(ryy|<v|]]9%!&)b2262 * & ]]9%!&)b8f88 * & ]]9%!&)b<6!1<V< * & ]]9%"+d+V+ &]]9%"1D1T&\1 &]]9%"55Wv-5 &% *) &% *) &% *) &% &%%%%%s   F;F) F;
GG.GH$G16H HH&H7)
F8	3F;;
G

G	G
G.1
H 	;H
H
H#&
H47
Ic           	         SS jnSS/SS/SS//nS	[         R                  " S5      S
.nS	/S-  n[        R                  " [        5         [        X!5        S S S 5        [        R                  " [        5         [        X!/UQ76   S S S 5        [        R                  " [        5         [        X!40 UD6  S S S 5        [        R                  " [        5         [        X!SSS9  S S S 5        [        R                  " [        5         [        X!SSSS9  S S S 5        [        R                  " [        5         [        X!SSSS9  S S S 5        [        R                  " [        5         [        X!SSS5        S S S 5        [        R                  " [        5         [        X!SS5        S S S 5        [        R                  " [        5         [        X!S5        S S S 5        [        R                  " [        5         [        X!SSSS9  S S S 5        [        [        X!SSS9S5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNx= f! , (       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       N= f)Nrl   r   c                     X#-   U-   $ rn   ri   rO  s        r4   rT  :TestPdist.test_pdist_extra_args_custom.<locals>._my_metric  rV  r6   r   r   r6  r7  r:  rA  rB  rD  rW  rX  rY  rZ  r[  r\  r]  )rZ   rF  r"  rG  r   r   r   )r  rT  rI  r   r   s        r4   test_pdist_extra_args_custom&TestPdist.test_pdist_extra_args_custom  s   	( 2hc
S#J/$(ryy|<v|]]9%"! &]]9%"(4( &]]9%"+F+ &]]9%"C8 &]]9%"!Qc2 &]]9%"!Qc2 &]]9%"#sC0 &]]9%"#s+ &]]9%"#& &]]9%"#S= & 	b"%c347	9- &%%%%%%%%%%%%%%%%%%%sx   
H8H/'III%3I7"J	JJ-2J>
H,/
H>
I
I"%
I47
J	
J
J*-
J;>
Kc                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  pdist-double-inppdist-euclideanr   rf  r\   wpdist_no_constr   r  ri  r|  Y_rightY_test1s        r4   test_pdist_euclidean_random%TestPdist.test_pdist_euclidean_random  3    !"&'!![1s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g r  r  r  s        r4   test_pdist_euclidean_random_u'TestPdist.test_pdist_euclidean_random_u&  r
  r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rZ   r_   r\   r  r   r  s        r4   #test_pdist_euclidean_random_float32-TestPdist.test_pdist_euclidean_random_float32-  s<    JJr,-.&'!![1s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   r  rd  r  r  r  ri  r|  r  Y_test2s        r4    test_pdist_euclidean_random_nonC*TestPdist.test_pdist_euclidean_random_nonC4  s4    !"&'!!%56s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  irispdist-euclidean-irisr   r  r  r  s        r4    test_pdist_euclidean_iris_double*TestPdist.test_pdist_euclidean_iris_double;  s1    vJ+,!![1s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr   r  r  r   r   re  rZ   r_   r\   r  r   r   r  s        r4   !test_pdist_euclidean_iris_float32+TestPdist.test_pdist_euclidean_iris_float32C  @    JJr&z"+,!![1sGaKHr6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  r  rd  r  r  r  s        r4   test_pdist_euclidean_iris_nonC(TestPdist.test_pdist_euclidean_iris_nonCK  s4     vJ+,!!%56s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   pdist-seuclideanr'   r  r\   r   r   r  s        r4   test_pdist_seuclidean_random&TestPdist.test_pdist_seuclidean_randomU  s3    !"'(<(s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  [         R
                  " USSS9n[        USUS	9n[	        XcUS9  g )
Nr  r   r%  r'   r  r   rl   r  r  )rZ   r_   r\   r   r   r  )r  ri  r|  r  r  r  r  s          r4   $test_pdist_seuclidean_random_float32.TestPdist.test_pdist_seuclidean_random_float32\  sh    JJr,-.'(<(s3 FF111%<1-s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   r%  test_seuclideanr  r&  r  s        r4   !test_pdist_seuclidean_random_nonC+TestPdist.test_pdist_seuclidean_random_nonCh  s4    !"'(,-s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  pdist-seuclidean-irisr'   r  r&  r  s        r4   test_pdist_seuclidean_iris$TestPdist.test_pdist_seuclidean_irisp  s1    vJ,-<(s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g )Nr   r  r1  r'   r  )rZ   r_   r\   r   r   r  s        r4   "test_pdist_seuclidean_iris_float32,TestPdist.test_pdist_seuclidean_iris_float32w  s:    JJr&z",-<(s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  r1  r-  r  r&  r  s        r4   test_pdist_seuclidean_iris_nonC)TestPdist.test_pdist_seuclidean_iris_nonC  s4     vJ,-,-s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  r   pdist-cosiner   r  r\   wpdistr   r  s        r4   test_pdist_cosine_random"TestPdist.test_pdist_cosine_random  s2    !"^$H%s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r;  rZ   r_   r\   r>  r   r  s        r4    test_pdist_cosine_random_float32*TestPdist.test_pdist_cosine_random_float32  s;    JJr,-.^$H%s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   r<  test_cosiner  r=  r  s        r4   test_pdist_cosine_random_nonC'TestPdist.test_pdist_cosine_random_nonC  s2    !"^$M*s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr   r  pdist-cosine-irisr   r   r=  r  s        r4   test_pdist_cosine_iris TestPdist.test_pdist_cosine_iris  s1    vJ()H%s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr   r  rJ  r   r   r   r   )rZ   r_   r\   r>  r   r   r  s        r4   test_pdist_cosine_iris_float32(TestPdist.test_pdist_cosine_iris_float32  s@    JJr&z"()H%sGaKHr6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr   r  rJ  rF  r   r=  r  s        r4   test_pdist_cosine_iris_nonC%TestPdist.test_pdist_cosine_iris_nonC  s1    vJ()M*s3r6   c                     [         R                  " [         R                  R                  S5      R	                  S5      5      n[         R
                  " X/5      n[        [        US5      S   S:  SS9  g )Ni9  [   r   r   z&cosine distance should be non-negative)msg)rZ   absr   r   r   r  r   r>  )r  r   r|  s      r4   test_pdist_cosine_bounds"TestPdist.test_pdist_cosine_bounds  sZ     FF299((.33B78IIqfq(#A&!+<	>r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  r   pdist-cityblockr   r  r  r  s        r4   test_pdist_cityblock_random%TestPdist.test_pdist_cityblock_random  s3    !"&'!![1s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r[  r  r  s        r4   #test_pdist_cityblock_random_float32-TestPdist.test_pdist_cityblock_random_float32  s<    JJr,-.&'!![1s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   r\  test_cityblockr  r  r  s        r4    test_pdist_cityblock_random_nonC*TestPdist.test_pdist_cityblock_random_nonC  s4    !"&'!!%56s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nry  r  pdist-cityblock-irisr   r  r  r  s        r4   test_pdist_cityblock_iris#TestPdist.test_pdist_cityblock_iris  s1    vJ+,!![1s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr   r  rg  r   r   re  r  r  s        r4   !test_pdist_cityblock_iris_float32+TestPdist.test_pdist_cityblock_iris_float32  r   r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nry  r  rg  rc  r  r  r  s        r4   test_pdist_cityblock_iris_nonC(TestPdist.test_pdist_cityblock_iris_nonC  s4     vJ+,!!%56s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  r   pdist-correlationr   r  r=  r  s        r4   test_pdist_correlation_random'TestPdist.test_pdist_correlation_random  s3    !"()M*s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g rq  rB  r  s        r4   %test_pdist_correlation_random_float32/TestPdist.test_pdist_correlation_random_float32  s<    JJr,-.()M*s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   rr  test_correlationr  r=  r  s        r4   "test_pdist_correlation_random_nonC,TestPdist.test_pdist_correlation_random_nonC  s4    !"()./s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  pdist-correlation-irisr   r  r=  r  s        r4   test_pdist_correlation_iris%TestPdist.test_pdist_correlation_iris  s1    vJ-.M*s3r6   c                     Sn[         S   n[        R                  " [         S   5      n[        US5      n[	        XCU[
        S:  S9  g )Nr  r  r}  r   r   re  )r\   rZ   r_   r>  r   r   r  s        r4   #test_pdist_correlation_iris_float32-TestPdist.test_pdist_correlation_iris_float32  s@    vJ**R 89:M*sGaKHr6   c                     [         R                  S:  a  SnO[        R                  " S5        [        S   n[        S   n[        US5      n[        XCWS9  g )Nl        r  zsee gh-16456r  r}  ry  r  )sysmaxsizer"  skipr\   r>  r   r  s        r4    test_pdist_correlation_iris_nonC*TestPdist.test_pdist_correlation_iris_nonC  sJ    ;;CKK'vJ-../s3r6   rn  ro  rp  r   r   皙	@c                 \    Sn[         S   n[        USUS9n[        USUS9n[        XESUS9  g )Nrs  r   r$   rt  ru  r   )r   rf  r  )r  rn  ri  r|  rj  rk  s         r4   test_pdist_minkowski_random_p'TestPdist.test_pdist_minkowski_random_p  s;    !"Qq1Q 0A6QS1r6   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g Nr  r   pdist-minkowski-3.2r$   r  rt  r  r  r  s        r4   test_pdist_minkowski_random%TestPdist.test_pdist_minkowski_random&  s5    !"*+!![C8s3r6   c                 ~    Sn[         R                  " [        S   5      n[        S   n[        USSS9n[	        XCUS9  g r  r  r  s        r4   #test_pdist_minkowski_random_float32-TestPdist.test_pdist_minkowski_random_float32-  s>    JJr,-.*+!![C8s3r6   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g )Nr  r   r  ru  r  rt  r  r  r  s        r4    test_pdist_minkowski_random_nonC*TestPdist.test_pdist_minkowski_random_nonC4  s6    !"*+!!%5=s3r6   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g )Nr  r  pdist-minkowski-3.2-irisr$   r  rt  r  r  r  s        r4   test_pdist_minkowski_3_2_iris'TestPdist.test_pdist_minkowski_3_2_iris;  3    vJ/0!![C8s3r6   c                 ~    Sn[         R                  " [        S   5      n[        S   n[        USSS9n[	        XCUS9  g )Nr   r  r  r$   r  rt  r  r  r  s        r4   %test_pdist_minkowski_3_2_iris_float32/TestPdist.test_pdist_minkowski_3_2_iris_float32C  s<    JJr&z"/0!![C8s3r6   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g )Nr  r  r  ru  r  rt  r  r  r  s        r4   "test_pdist_minkowski_3_2_iris_nonC,TestPdist.test_pdist_minkowski_3_2_iris_nonCK  4    vJ/0!!%5=s3r6   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g )Nr  r  pdist-minkowski-5.8-irisr$   r?  rt  r  r  r  s        r4   test_pdist_minkowski_5_8_iris'TestPdist.test_pdist_minkowski_5_8_irisS  r  r6   c                     Sn[         R                  " [        S   5      n[        S   n[        USSS9n[	        XCU[
        S:  S9  g )	Nr   r  r  r$   r?  rt  r   re  r  r  s        r4   %test_pdist_minkowski_5_8_iris_float32/TestPdist.test_pdist_minkowski_5_8_iris_float32[  sB    JJr&z"/0!![C8sGaKHr6   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g )Nr  r  r  ru  r?  rt  r  r  r  s        r4   "test_pdist_minkowski_5_8_iris_nonC,TestPdist.test_pdist_minkowski_5_8_iris_nonCc  r  r6   c                    [         R                  " / SQ5      R                  SS5      n[        USS9n[	        US[         R
                  " S5      [         R
                  " S5      [         R
                  " S5      [         R
                  " S5      [         R
                  " S	5      /5        [         R                  " S
S
/SS
/S
S/SS
/S
S//5      n[        USS9n[         R
                  " S5      n[	        X#X3USSU-  SSSU-  S/
5        [        R                  " [        5         [        S
S/SS//SS9  S S S 5        g ! , (       d  f       g = f)N)r   r   r4  r=  r   rl   r#   r$  r  r  r  r   r   r   r   r   )
rZ   r   r   r   r   r  r"  rG  r|   r>  )r  r   r  r  s       r4   test_pdist_mahalanobis TestPdist.test_pdist_mahalanobisk  s   HH)*222q9Q}-sBGGCL"''#,!wws|RWWS\2773<I 	J HHq!fr1g1v1v2w?@Q}-ggajCc1a#gq!QWaPQ ]]:&QFQF#M: '&&s   "D<<
E
c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nra  rL   pdist-hammingr   r  r=  r  s        r4   test_pdist_hamming_random#TestPdist.test_pdist_hamming_random|  s2    "#_%I&s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rB  r  s        r4   !test_pdist_hamming_random_float32+TestPdist.test_pdist_hamming_random_float32  ;    JJr-./_%I&s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nra  rL   r  test_hammingr  r=  r  s        r4   test_pdist_hamming_random_nonC(TestPdist.test_pdist_hamming_random_nonC  s2    "#_%N+s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rZ   r   r\   r>  r   r  s        r4   test_pdist_dhamming_random$TestPdist.test_pdist_dhamming_random  r  r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rB  r  s        r4   "test_pdist_dhamming_random_float32,TestPdist.test_pdist_dhamming_random_float32  r  r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  r  r  s        r4   test_pdist_dhamming_random_nonC)TestPdist.test_pdist_dhamming_random_nonC  s;    JJr-./_%N+s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Ndy=r   pdist-jensenshannonr!   r  r&  r  s        r4   test_pdist_jensenshannon_random)TestPdist.test_pdist_jensenshannon_random  s3    !"*+?+s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )N:0yE>r   r  r!   r   re  rZ   r_   r\   r   r   r   r  s        r4   'test_pdist_jensenshannon_random_float321TestPdist.test_pdist_jensenshannon_random_float32  sB    JJr,-.*+?+sGaKHr6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   r  test_jensenshannonr  r&  r  s        r4   $test_pdist_jensenshannon_random_nonC.TestPdist.test_pdist_jensenshannon_random_nonC  s4    !"*+/0s3r6   c                 |    [        5       (       a  SnOSn[        S   n[        S   n[        US5      n[        XCUS9  g )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )rj   r\   r   r   r  s        r4   test_pdist_jensenshannon_iris'TestPdist.test_pdist_jensenshannon_iris  s=    ;;CCvJ/0?+s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Ngư>r  r  r!   r   rN  r  r  s        r4   %test_pdist_jensenshannon_iris_float32/TestPdist.test_pdist_jensenshannon_iris_float32  s@    JJr&z"/0?+sGaKHr6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Ng-C6
?r  r  r  r  r&  r  s        r4   "test_pdist_jensenshannon_iris_nonC,TestPdist.test_pdist_jensenshannon_iris_nonC  s2    vJ/0/0s3r6   c                     [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[	        USSSS9  [	        USSSS9  g Nrl   r   rl   rl   r   rl   rl   r   rl   rl   rG   333333?r   绽|=rf  r   	wmatchingrZ   r   r*  r   r  mm2s      r4   test_pdist_matching_mtica1$TestPdist.test_pdist_matching_mtica1  sd    bhh/hh/1rxxt<xxt<>3QU3Cae4r6   c                     [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[	        USSSS9  [	        USSSS9  g Nrl   r   rl   rl   rl   r   rG   UUUUUU?r   r  r  r  r  s      r4   test_pdist_matching_mtica2$TestPdist.test_pdist_matching_mtica2  sd    bhhy)XXi(*rxx	6hhy575qu5E6r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g )Nr  r  rG   r   r   r  r  wyulerZ   r   r*  r   r  r   r  s      r4   test_pdist_yule_mtica1 TestPdist.test_pdist_yule_mtica1  sr    "((?+((?+-288O4888O48:Q;!H1151AAE2r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g )Nr  r  rG   r   r   r  r  r  r  s      r4   test_pdist_yule_mtica2 TestPdist.test_pdist_yule_mtica2  sr    "((9%((9%'288IT288IT24Q;!H1151AAE2r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g )	Nr  r  rG   r   g۶m۶m?r   r  r  wdicerZ   r   r*  r   r  r   r  s      r4   test_pdist_dice_mtica1 TestPdist.test_pdist_dice_mtica1  sr    "((?+((?+-288O4888O48:Q;!H5qu5E6r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g )	Nr  r  rG   r   r  r   r  r  r  r  s      r4   test_pdist_dice_mtica2 TestPdist.test_pdist_dice_mtica2  sr    "((9%((9%'288IT288IT24Q;!H3QU3Cae4r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g 	Nr  r  rG   r   g      ?r   r  r  )r)   rZ   r   r*  r   r  r   r  s      r4   test_pdist_sokalsneath_mtica1'TestPdist.test_pdist_sokalsneath_mtica1  s    113/>/>@Q;!H5qu5E6r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g 	Nr  r  rG   r   g?r   r  r  )wsokalsneathrZ   r   r*  r   r  r   r  s      r4   test_pdist_sokalsneath_mtica2'TestPdist.test_pdist_sokalsneath_mtica2  sr    ),),."((9D9((9D9;Q;!H5qu5E6r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g r  wrogerstanimotorZ   r   r*  r   r  r   r  s      r4    test_pdist_rogerstanimoto_mtica1*TestPdist.test_pdist_rogerstanimoto_mtica1#  ss    BHH_5HH_57RXXoTBXXoTBDQ;!H5qu5E6r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g r  r  r  s      r4    test_pdist_rogerstanimoto_mtica2*TestPdist.test_pdist_rogerstanimoto_mtica2-  sr    BHHY/HHY/1RXXit<XXit<>Q;!H5qu5E6r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g )	Nr  r  rG   r   r  r   r  r  wrussellraorZ   r   r*  r   r  r   r  s      r4   test_pdist_russellrao_mtica1&TestPdist.test_pdist_russellrao_mtica17  r
  r6   c                 J   [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[        S:  a  [        U5        [        USSSS9  [        USSSS9  g )	Nr  r  rG   r   r  r   r  r  r  r  s      r4   test_pdist_russellrao_mtica2&TestPdist.test_pdist_russellrao_mtica2A  sr    ++-)48)48:Q;!H5qu5E6r6   c                     [         S   n[        S:  a   [        UR                  UR                  5        Sn[        US5      n[        US5      n[        X4U[        S:  S9  g )Nr  r   ra  r   test_canberrare  )r\   r   r  r   rH   r  r   )r  Dri  r  r  s        r4   test_pdist_canberra_match#TestPdist.test_pdist_canberra_matchK  sQ    vJQ;!''177#Q
+Q0S'A+>r6   c                 P    Sn[        S/S/4S5      nSn[        X#U[        S:  S9  g )Nr  rW  r8  r   gd>@1?r   rN  )r  r   r   )r  ri  pdist_yr  s       r4   test_pdist_canberra_ticket_711(TestPdist.test_pdist_canberra_ticket_711U  s2     !C53%.*=sGaKHr6   c                    ^  " S S5      mU4S jn[         R                  " T" 5       /T" 5       //[        S9n[        X!S9nSn[	        X4[
        S:  S9  g )	Nc                       \ rS rSrSrg)6TestPdist.test_pdist_custom_notdouble.<locals>.myclassi_  ri   Nr  ri   r6   r4   r  r+  _  r  r6   r  c                 l   > [        U S   T5      (       a  [        US   T5      (       d  [        S5      egr  r  r  s     r4   rT  9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricb  r  r6   rG   r$  r  r   r  )rZ   r   r  r   r	   r   )r  rT  rK   r&  r  r  s        @r4   test_pdist_custom_notdouble%TestPdist.test_pdist_custom_notdouble]  sN    	 		 xx')wyk2&A0Ww{;r6   c           	          [        U4SU0UD6n[        U4S[        U5      0UD6n[        U4SSU-   0UD6n[        XVU[        S:  S9  [        XWU[        S:  S9  g ! [         Ga  nUR
                  n	[        S:  a   [        U	R                  5        [        U5        [        R                  " U	5         [        U4SU0UD6  S S S 5        O! , (       d  f       O= f[        R                  " U	5         [        U4S[        U5      0UD6  S S S 5        O! , (       d  f       O= f[        R                  " U	5         [        U4SSU-   0UD6  S S S 5         S nAg ! , (       d  f        S nAg = fS nAff = fr  )
r   rH  r   r   r   r  r  r   r"  rG  )
r  r|  r5   ri  r   r  r  r  r   r  s
             r4   r  $TestPdist._check_calling_conventionsk  s-   	Cq2262Bq8f88Bq<6!1<V<B BgkBBgkB  
	<KKE{enn%au%a11&1 &%%u%a7V77 &%%u%a;& 0;F; &%%%
	<r  c                    U R                    GH@  n[        U   S S S2S S S24   n[        S:  a  [        SUSU5        US;   a  SU;  a  M>  U R	                  X15        US:X  aE  [
        R                  " UR                  [
        R                  5      SS	S
9nU R	                  X1US9  M  US:X  d  M  [
        R                  " [
        R                  " UR                  [
        R                  5      R                  5      5      n[
        R                  " [
        R                  R                  U5      R                  5      nU R	                  X1US9  GMC     g )Nr  r   r  r  >   r   r+   matchingr&   r"   r)   r(   r%   r*  r'   r   rl   r  r  r#   r  )r-  r\   r   r  r  rZ   r  r   r   r  r  r  r   r{  r  )r  r5   r  r|  r  r  s         r4   test_pdist_calling_conventions(TestPdist.test_pdist_calling_conventions  s   
 ((G 7CaC1H%A{k69g> ) ) .47-B++A6 %FF188BJJ/aa@//Q/?=(MM"&&"**)=)?)?"@AXXbiimmA.001//b/A+ )r6   c           	         Sn[         S   U R                  S   4[         S   U R                  S   4[         S   U R                  S   4[         S   U R                  S	   4/nU HK  nUS
   S S S2S S S24   n [        XQS9nUS    H%  n[        U" U5      US9n[        XhU[        S:  S9  M'     MM     g ! [
         a  n	U	R                  n
[        S:  a   [        U
R                  5        [        U	5        US    HE  nU" U5      n[        R                  " U
5         [        XS9  S S S 5        M5  ! , (       d  f       MD  = f    S n	A	M  S n	A	ff = f)Nr  rM   r*  rQ   r+  rP   r   rO   r_   r   r  r   r$  rl   re  )r\   r.  r   r   r   r   r  r  r   r"  rG  )r  r5   ri  r  r  rI  r  r  r  r   r  rJ  s               r4   test_pdist_dtype_equivalence&TestPdist.test_pdist_dtype_equivalence  sH   '($*<*<V*DE'($*<*<V*DE&'););E)BC*+T-?-?	-JKM Da1cc"BK2- !%QHx|F;B#BgkJ !(   1Q;%..)!H $QH!"Bu-b0 .--- !(1s1   7	B33
E=AE
D-	#
E-
D<7
EEc                 N   Sn[         S   S S S2S S S24   n[        UR                  S   UR                  S   S-
  -  S-  5      n[        5       nUS:X  a  SUS	'   [        R
                  " U[        R                  S
9n[        U5         [        X140 UD6nS S S 5        [        U5         [        X14SU0UD6nS S S 5        [        WWUS9  [        XL 5        [        R
                  " US-   [        R                  S
9n	[        R                  " [        5         [        U5         [        X14SU	0UD6  S S S 5        S S S 5        [        R
                  " SU-  [        R                  S
9S S S2   n
[        R                  " [        5         [        U5         [        X14SU
0UD6  S S S 5        S S S 5        [        R
                  " U[        R                  S
9n[        R                  " [        5         [        U5         [        X14SU0UD6  S S S 5        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       N= f! , (       d  f       N= f! , (       d  f       g = f)Nra  rO   r  r   r   rl   r$   rq  rn  rG   r  r  r   )r\   r   r   r  rZ   r  r   r%  r   r   r   r"  rG  r|   r  )r  r5   ri  r|  out_sizer   r  r  r  r  r  r  s               r4   test_pdist_outTestPdist.test_pdist_out  s    $%cc3Q3h/
aggaj1n5:;[ F3Kxx

3f%A00G &f%A:4:6:G & 	s3 	  xx1BJJ7]]:&!&)a4T4V4 * '
 xxHBJJ7!<]]:&!&)a4T4V4 * '
 xx1]]:&!&)a4T4V4 * '&3 &%%% *) '& *) '& *) '&s   H(H-I"H?1II4I#"I4/J;J
J
H*-
H<?
I		I
I #
I1	-I44
J
J	J
J$c                    Sn[         S   S S S2S S S24   nUR                  5       n[        UR                  R                  (       + 5        [        UR                  R                  5        [        5       nUS:X  a  SUS'   [        U5         [        X140 UD6nS S S 5        [        U5         [        XA40 UD6nS S S 5        [        WWU[        S:  S9  g ! , (       d  f       NB= f! , (       d  f       N3= f)	Nra  rO   r  r   r$   rq  rn  re  )
r\   r  r   r  r  r  r%  r   r   r   )r  r5   ri  r|  X_copyr   rj  rk  s           r4   r  TestPdist.test_striding  s     $%cc3Q3h/ 	AGG((()))*[ F3Kf%q+F+B &f%v00B & 	BS'A+> &%%%s   
C*C$
C!$
C2r  Nr  )Zr   r  r  r  r/  r"  r  r  r  r  r  r  r  r  slowr  r  r"  r'  r*  r.  r2  r5  r8  r?  rC  rG  rK  rO  rR  rX  r]  r`  rd  rh  rk  rn  rs  rv  rz  r~  r  r  r  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  r4  r7  r;  r  r   ri   r6   r4   r  r    s   7 [[6 6,!9F4444 [[4 4 [[I I [[4 44
44444444 [[4 4 [[I I [[4 4>444 [[4 4 [[I I [[4 4444 [[4 4 [[I I [[4 4 [[S3c3RVV"DE2 F2444 [[4 4 [[4 4 [[4 4 [[4 4 [[I I [[4 4;"4444444I4
4I4573375777777 [[? ?I<C*B8K2 [[%5 %5N [[? ?r6   r  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  \R                  R                  S
5      \R                  R!                  S\\/5      S 5       5       5       rS rSrg)TestSomeDistanceFunctionsi  c                 v    [         R                  " / SQ5      n[         R                  " / SQ5      nX4/U l        g )Nr3  r   r   r=  )rZ   r   cases)r  r   rP  s      r4   r/  &TestSomeDistanceFunctions.setup_method  s)    HH_%HH_%fX
r6   c           	         U R                    H]  u  p[        XSS9n[        US5        [        XSS9n[        US5        [        XSS9n[        US5        [        XSS9n[        US	5        M_     [        R                  " S
S/5      n[        R                  " SS/5      n[        [        Xx5      [        UR                  S5      UR                  S5      5      5        g )Nrl   rt  r4        ?gqaz@r   gw@rp  gR"6@i`  i  i^  i  uint16)rE  r$   r
   rZ   r   r	   r   )	r  r   rP  dist1dist1p5dist2dist0p25rr   r   s	            r4   ru  (TestSomeDistanceFunctions.test_minkowski  s    JJDAaa(Es+,G)CDaa(Ez2 .H*BC  HHc3Z HHc3Z Yq_qxx1188H3EF	Hr6   c                     U R                    H0  u  p[        X5      n[        U[        R                  " S5      5        M2     g )Nr  )rE  
weuclideanr
   rZ   r  r  r   rP  r  s       r4   rd  (TestSomeDistanceFunctions.test_euclidean  s.    JJDAa#Dbggaj1 r6   c                 \    U R                    H  u  p[        X5      n[        US5        M     g )Nr=  )rE  wsqeuclideanr
   rQ  s       r4   test_sqeuclidean*TestSomeDistanceFunctions.test_sqeuclidean  s&    JJDA%Dc* r6   c           
          U R                    HM  u  p[        X5      n[        USS[        R                  " S5      [        R                  " S5      -  -  -
  5        MO     g )Nr   g      2@      )rE  wcosiner
   rZ   r  rQ  s       r4   rF  %TestSomeDistanceFunctions.test_cosine  sD    JJDA1=DcDBGGBK"''"+4M,N&NO r6   c                     [        [        SS/SS/SS9[        5      (       d   e[        [        SS/SS/5      [        5      (       d   eg )Nrl   F)centered)r  wcorrelationfloatrZ  r  s    r4   test_cosine_output_dtype2TestSomeDistanceFunctions.test_cosine_output_dtype  sH    ,1v1vFNNNN'1a&1a&159999r6   c           
         [         R                  " / SQ5      n[         R                  " / SQ5      nU R                   HK  u  p4[        X45      n[	        US[         R
                  " X5      [        U5      [        U5      -  -  -
  5        MM     g )N)      r   r   )UUUUUUrd  gUUUUUU@r   )rZ   r   rE  r^  r
   r  r   )r  xmymr   rP  r  s         r4   ry  *TestSomeDistanceFunctions.test_correlation#  sb    XXn%XX9:JJDA%DcBFF2Nd2hb>Q,R&RS r6   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      nSUs=::  a6  S[         R                  " [         R                  5      R
                  -  ::  d   e   eg )N)%r  r  r  r  r  r         r  r  r  ri  ri  ri  r  ri  r  ri  r  r  rc  ri  r  r   r  r  ri  r  r  ri  r  ri  ri  ri  ri  ri  ri  r  )%r   r   r   r   r   r   rc  r   r   r   rc  rc  rc  r   rc  r   rc  r   r   r  rc  r   r   r   r   rc  r   r   rc  r   rc  rc  rc  rc  rc  rc  r   r   r  )rZ   r   r   finfor   ri  rQ  s       r4   test_correlation_positive3TestSomeDistanceFunctions.test_correlation_positive*  sk    HH I J HH I J 1 D9B"**!5!9!9999999r6   zignore:Casting complexfuncc                     SS/nSS/n[         R                  " SS9   U" X#5        S S S 5        g ! , (       d  f       g = f)Ny      ?        y       @        y      @        y      @        z"Complex `u` and `v` are deprecatedmatch)r"  r#  )r  rm  r   rP  s       r4   test_corr_dep_complex/TestSomeDistanceFunctions.test_corr_dep_complex5  s9     4L4L##*NOJ POOs   	/
=c                 $   [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ/ SQ/ SQ/5      nU R                   H1  u  p[        XU5      n[	        U[         R
                  " S5      5        M3     g )Nr3  rD  )r   r   r  )r   r   r   )r  r   r   g      @)rZ   r   rE  r#   r
   r  )r  r   rP  vir  s        r4   test_mahalanobis*TestSomeDistanceFunctions.test_mahalanobis>  sa    HH_%HH_%XXIJJJDAqR(Dbggcl3 r6   )rE  N)r   r  r  r  r/  ru  rd  rU  rF  r`  ry  rk  r"  r  r  filterwarningsr  r   r   rq  ru  r   ri   r6   r4   rB  rB    s    H&2
+
P
:
T	: [[[[ 89[[Vk6%:; < : 4r6   rB  c                       \ rS rSr\R
                  \R                  \R                  \R                  \	/r
S rS rS rS rS rS rSrg	)
TestSquareFormiG  c                 L    U R                    H  nU R                  U5        M     g rn   )checked_dtypescheck_squareform_matrixr  rH   s     r4   test_squareform_matrix%TestSquareForm.test_squareform_matrixJ       ((E((/ )r6   c                 L    U R                    H  nU R                  U5        M     g rn   )r{  check_squareform_vectorr}  s     r4   test_squareform_vector%TestSquareForm.test_squareform_vectorN  r  r6   c                    [         R                  " SUS9n[        U5      n[        UR                  S5        [        UR
                  U5        [         R                  " SUS9n[        U5      n[        UR                  S5        [        UR
                  U5        [         R                  " SS/SS//US9n[        U5      n[        UR                  S5        [        UR
                  U5        [        U[         R                  " S/US95        g )N)r   r   rG   r   rl   rl   r   g@)rl   )rZ   zerosr   r	   r   rH   r   r   )r  rH   ArAs       r4   r|  &TestSquareForm.check_squareform_matrixR  s    HHV5)]RXXt$RXXu%HHV5)]RXXt$RXXu%HHq#ha)7]RXXt$RXXu%2rxxU;<r6   c                    [         R                  " SUS9n[        U5      n[        UR                  S5        [        UR
                  U5        [        US//5        [         R                  " S/US9n[        U5      n[        UR                  S5        [        UR
                  U5        [        U[         R                  " SS/SS//US95        g )Nr  rG   r  r   g @)r   r   )rZ   r  r   r	   r   rH   r   r   )r  rH   r  rvs       r4   r  &TestSquareForm.check_squareform_vectorc  s    HHT']RXXv&RXXu%2u%HHcU%(]RXXv&RXXu%2rxx!SC8(<EJKr6   c                 L    [        SS5       H  nU R                  U5        M     g )Nr   r  )r}   check_squareform_multi_matrixr  ns     r4   test_squareform_multi_matrix+TestSquareForm.test_squareform_multi_matrixp  s     q!A..q1 r6   c                    [         R                  R                  US5      n[        U5      n[	        [        UR                  5      S5        [        U5      n[        U5      nUR                  nSn[        S:  a+  [        UR                  UR                  UR                  5        [	        [        U5      S5        [	        [        UR                  5      S5        [	        US   US   5        [        SUS   5       HJ  n[        US-   US   5       H1  n	X:w  a  [	        XHU	4   X7   5        US-  nM!  [	        XHU	4   S5        M3     ML     g )N   rl   r   r   r   )rZ   r   r   r  r	   lenr   r   r   r  r}   )
r  r  r|  Yr  Yrskr   js
             r4   r  ,TestSquareForm.check_squareform_multi_matrixt  s    IINN1a AS\1%qM]GGa<!''177BHH-SVQS]A&QqT1Q4 q!A$A1q5!A$'6 a4!$/FA a4!, (  r6   ri   N)r   r  r  r  rZ   r   r_   int32int8r*  r{  r~  r  r|  r  r  r  r   ri   r6   r4   ry  ry  G  sA    jj"**bhhFN00="L2-r6   ry  c                   V    \ 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Srg)TestNumObsYi  c                     [        SS5       HC  n[        R                  R                  US5      n[	        U5      n[        [        U5      U5        ME     g )Nr   r  r  )r}   rZ   r   r   r  r	   r   )r  r  r|  r  s       r4   test_num_obs_y_multi_matrix'TestNumObsY.test_num_obs_y_multi_matrix  s>    q"A		q!$A"A1q) r6   c                     [         R                  " [        5         U R                  S5        S S S 5        g ! , (       d  f       g = fNrl   )r"  rG  r|   check_yr  s    r4   test_num_obs_y_1TestNumObsY.test_num_obs_y_1  s'     ]]:&LLO '&&s	   6
Ac                 8    [        U R                  S5      5        g Nr   r   r  r  s    r4   test_num_obs_y_2TestNumObsY.test_num_obs_y_2  s     	Q r6   c                 8    [        U R                  S5      5        g )Nr   r  r  s    r4   test_num_obs_y_3TestNumObsY.test_num_obs_y_3      Q r6   c                 8    [        U R                  S5      5        g Nr  r  r  s    r4   test_num_obs_y_4TestNumObsY.test_num_obs_y_4  r  r6   c                 L    [        SS5       H  nU R                  U5        M     g )Nr     )r}   minit)r  r   s     r4   test_num_obs_y_5_10TestNumObsY.test_num_obs_y_5_10  s    q"AJJqM r6   c                 0   [        5       n[        SS5       H  nUR                  X"S-
  -  S-  5        M     [        SS5       H>  nX1;  d  M
  [        R                  " [
        5         U R                  U5        S S S 5        M@     g ! , (       d  f       MR  = fNr   r  rl   r  i   setr}   addr"  rG  r|   bad_yr  rr   r  r   s       r4   test_num_obs_y_2_100 TestNumObsY.test_num_obs_y_2_100  sl     Eq"AEE!1u+/" q#Az]]:.JJqM /. ..   'B
B	c                 8    [        U R                  U5      5        g rn   r  r  s     r4   r  TestNumObsY.minit  r  r6   c                 V    [         R                  R                  U5      n[        U5      $ rn   )rZ   r   r   r   r  r  rP  s      r4   r  TestNumObsY.bad_y  s    IINN1|r6   c                 <    [        U R                  U5      5      U:H  $ rn   )r   make_yr  s     r4   r  TestNumObsY.check_y  s    Q(A--r6   c                 P    [         R                  R                  XS-
  -  S-  5      $ Nrl   r   rZ   r   r   r  s     r4   r  TestNumObsY.make_y  s     yy~~qE{q011r6   ri   N)r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ri   r6   r4   r  r    s9    *!
!!	"!.2r6   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestNumObsDMi  c                    [        SS5       Hx  n[        R                  R                  US5      n[	        U5      n[        U5      n[        S:  a   [        UR                  UR                  5        [        [        U5      U5        Mz     g )Nrl   r  r  r   )r}   rZ   r   r   r  r   r   r  r   r	   r   )r  r  r|  r  r  s        r4   test_num_obs_dm_multi_matrix)TestNumObsDM.test_num_obs_dm_multi_matrix  s`    q"A		q!$A"A1A!|aggqww'A* r6   c                 8    [        U R                  S5      5        g )Nr   r   check_Dr  s    r4   test_num_obs_dm_0TestNumObsDM.test_num_obs_dm_0      Q r6   c                 8    [        U R                  S5      5        g r  r  r  s    r4   test_num_obs_dm_1TestNumObsDM.test_num_obs_dm_1  r  r6   c                 8    [        U R                  S5      5        g r  r  r  s    r4   test_num_obs_dm_2TestNumObsDM.test_num_obs_dm_2  r  r6   c                 8    [        U R                  S5      5        g r  r  r  s    r4   test_num_obs_dm_3TestNumObsDM.test_num_obs_dm_3  r  r6   c                 8    [        U R                  S5      5        g r  r  r  s    r4   test_num_obs_dm_4TestNumObsDM.test_num_obs_dm_4  r  r6   c                 <    [        U R                  U5      5      U:H  $ rn   )r   make_Dr  s     r4   r  TestNumObsDM.check_D  s    $++a.)Q..r6   c                 @    [         R                  R                  X5      $ rn   r  r  s     r4   r  TestNumObsDM.make_D  s    yy~~a##r6   ri   N)r   r  r  r  r  r  r  r  r  r  r  r  r   ri   r6   r4   r  r    s*    +!!!!!/$r6   r  c                     [        U SS9$ NT)throw)r   )r"  s    r4   is_valid_dm_throwr    s    q%%r6   c                   b    \ 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S rS rSrg)TestIsValidDMi  c                     [         R                  " S[         R                  S9n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr  rG   rZ   r  r   r"  rG  r|   r  r  r"  s     r4   $test_is_valid_dm_improper_shape_1D_E2TestIsValidDM.test_is_valid_dm_improper_shape_1D_E  s6    HHT,]]:&a  '&&   A
A!c                 t    [         R                  " S[         R                  S9n[        [	        U5      S5        g )Nr  rG   FrZ   r  r   r	   r   r  s     r4   $test_is_valid_dm_improper_shape_1D_F2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s$    HHT,[^U+r6   c                     [         R                  " S[         R                  S9n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = fNr   r   r   rG   r  r  s     r4   $test_is_valid_dm_improper_shape_3D_E2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s6    HHYbjj1]]:&a  '&&r  c                 t    [         R                  " S[         R                  S9n[        [	        U5      S5        g Nr  rG   Fr  r  s     r4   $test_is_valid_dm_improper_shape_3D_F2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s$    HHYbjj1[^U+r6   c                    [         R                  R                  S5      n[        U5      n[	        SS5       H	  nSX#U4'   M     [
        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr  r   r  r   )	rZ   r   r   r   r}   r"  rG  r|   r  r  rP  r"  r   s       r4   #test_is_valid_dm_nonzero_diagonal_E1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_E  sX    IINN2qMq!AAdG ]]:&a  '&&s   A33
Bc                     [         R                  R                  S5      n[        U5      n[	        SS5       H	  nSX#U4'   M     [        [        U5      S5        g )Nr  r   r  r   F)rZ   r   r   r   r}   r	   r   r
  s       r4   #test_is_valid_dm_nonzero_diagonal_F1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sF    IINN2qMq!AAdG [^U+r6   c                     [         R                  R                  S5      n[        U5      nUS   S-   US'   [        R
                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr  r   rl   rl   rl   r   )rZ   r   r   r   r"  rG  r|   r  r  rP  r"  s      r4   test_is_valid_dm_asymmetric_E+TestIsValidDM.test_is_valid_dm_asymmetric_E
  sN    IINN2qMD'A+$]]:&a  '&&s   A%%
A3c                     [         R                  R                  S5      n[        U5      nUS   S-   US'   [	        [        U5      S5        g )Nr  r  rl   r  FrZ   r   r   r   r	   r   r  s      r4   test_is_valid_dm_asymmetric_F+TestIsValidDM.test_is_valid_dm_asymmetric_F  s<    IINN2qMD'A+$[^U+r6   c                 t    [         R                  " S[         R                  S9n[        [	        U5      S5        g )Nr  rG   Tr  r  s     r4   test_is_valid_dm_correct_1_by_1-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s$    HHV2::.[^T*r6   c                     [         R                  R                  S5      n[        U5      n[	        [        U5      S5        g )Nrl   Tr  r  s      r4   test_is_valid_dm_correct_2_by_2-TestIsValidDM.test_is_valid_dm_correct_2_by_2  +    IINN1qM[^T*r6   c                     [         R                  R                  S5      n[        U5      n[	        [        U5      S5        g Nr   Tr  r  s      r4   test_is_valid_dm_correct_3_by_3-TestIsValidDM.test_is_valid_dm_correct_3_by_3   r   r6   c                     [         R                  R                  S5      n[        U5      n[	        [        U5      S5        g )N   Tr  r  s      r4   test_is_valid_dm_correct_4_by_4-TestIsValidDM.test_is_valid_dm_correct_4_by_4%  r   r6   c                     [         R                  R                  S5      n[        U5      n[	        [        U5      S5        g )Nr  Tr  r  s      r4   test_is_valid_dm_correct_5_by_5-TestIsValidDM.test_is_valid_dm_correct_5_by_5*  s+    IINN2qM[^T*r6   ri   N)r   r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r*  r   ri   r6   r4   r  r    sC    !
,!
,!,!,++
+
+
+r6   r  c                     [        U SS9$ r  )r   )rP  s    r4   is_valid_y_throwr-  0  s    at$$r6   c                   V    \ 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Srg)TestIsValidYi4  c                     [         R                  " S[         R                  S9n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr   r   rG   rZ   r  r   r"  rG  r|   r-  r  rP  s     r4   #test_is_valid_y_improper_shape_2D_E0TestIsValidY.test_is_valid_y_improper_shape_2D_E9  s6    HHWBJJ/]]:&Q '&&r  c                 t    [         R                  " S[         R                  S9n[        [	        U5      S5        g )Nr1  rG   FrZ   r  r   r	   r   r3  s     r4   #test_is_valid_y_improper_shape_2D_F0TestIsValidY.test_is_valid_y_improper_shape_2D_F>  s$    HHWBJJ/Z]E*r6   c                     [         R                  " S[         R                  S9n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = fr  r2  r3  s     r4   #test_is_valid_y_improper_shape_3D_E0TestIsValidY.test_is_valid_y_improper_shape_3D_EB  s6    HHYbjj1]]:&Q '&&r  c                 t    [         R                  " S[         R                  S9n[        [	        U5      S5        g r  r7  r3  s     r4   #test_is_valid_y_improper_shape_3D_F0TestIsValidY.test_is_valid_y_improper_shape_3D_FG  s$    HHYbjj1Z]E*r6   c                 P    U R                  S5      n[        [        U5      S5        g )Nr   Tcorrect_n_by_nr	   r   r3  s     r4   test_is_valid_y_correct_2_by_2+TestIsValidY.test_is_valid_y_correct_2_by_2K       "Z]D)r6   c                 P    U R                  S5      n[        [        U5      S5        g r"  rA  r3  s     r4   test_is_valid_y_correct_3_by_3+TestIsValidY.test_is_valid_y_correct_3_by_3O  rE  r6   c                 P    U R                  S5      n[        [        U5      S5        g )Nr  TrA  r3  s     r4   test_is_valid_y_correct_4_by_4+TestIsValidY.test_is_valid_y_correct_4_by_4S  rE  r6   c                 P    U R                  S5      n[        [        U5      S5        g )Nr  TrA  r3  s     r4   test_is_valid_y_correct_5_by_5+TestIsValidY.test_is_valid_y_correct_5_by_5W  rE  r6   c                 0   [        5       n[        SS5       H  nUR                  X"S-
  -  S-  5        M     [        SS5       H>  nX1;  d  M
  [        R                  " [
        5         U R                  U5        S S S 5        M@     g ! , (       d  f       MR  = fr  r  r  s       r4   test_is_valid_y_2_100"TestIsValidY.test_is_valid_y_2_100[  sj    Eq"AEE!1u+/" q#Az]]:.JJqM /. ..r  c                 T    [         R                  R                  U5      n[        USS9$ r  )rZ   r   r   r   r  s      r4   r  TestIsValidY.bad_yd  s!    IINN1!4((r6   c                 T    [         R                  R                  XS-
  -  S-  5      nU$ r  r  r  s      r4   rB  TestIsValidY.correct_n_by_nh  s$    IINNAQKA-.r6   ri   N)r   r  r  r  r4  r8  r;  r>  rC  rG  rJ  rM  rP  r  rB  r   ri   r6   r4   r/  r/  4  s9    
 
+ 
+****")r6   r/  rn  )g      $g      r  c                    [         R                  " [        5         [        SS/SS/U 5        S S S 5        [         R                  " [        5         [        SS/SS/U SS/5        S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)Nrl   r   r   r  )r"  rG  r|   r$   rt  s    r4   
test_bad_prW  m  sg     
z	"1a&1a&!$ 
#	z	"1a&1a&!aV, 
#	" 
#	"	"	"s   A-A>-
A;>
Bc                      [         R                  " [        5         [        / SQ/ SQ5        S S S 5        g ! , (       d  f       g = f)N)FFF)r"  rG  r|   r)   ri   r6   r4   test_sokalsneath_all_falserY  v  s&    	z	")+@A 
#	"	"s	   5
Ac                  l    [        [        / SQ/ SQ5      S5        [        [        / SQ/ SQ5      S5        g )Nrl   r   r   r   r  r&  rl   rl   rl   r   r   rl   r   rl   r   r   )r	   	wcanberrari   r6   r4   r!  r!  |  s$    9i0!4<6:r6   c                  h    [        [        / SQ/ SQ5      SSS9  [        [        / SQ/ SQ5      SSS9  g )	Nr[  r\  UUUUUU?   decimalr]  r^  r  )r
   wbraycurtisri   r6   r4   test_braycurtisrf    s(    Iy962NL,?bQr6   c                     [         R                  " / SQ5      n [         R                  " / SQ5      n[        [        X5      SSS9  [        [	        X5      [         R
                  " S5      SS9  [        R                  " [        SS9   [	        U [         R                  S S 24   U[         R                  S S 24   5      [         R
                  " S5      4  S S S 5        [        R                  " [        SS9   [        U [         R                  S S 24   U[         R                  S S 24   5        S S S 5        [        R                  " [        SS9   [        U S S 2[         R                  4   US S 2[         R                  4   5        S S S 5        [         R                  " S	5      R                  S
S
5      n[        R                  " [        5         [	        X"5        S S S 5        [        R                  " [        5         [        X"5        S S S 5        [         R                  R                  S5      nUR                  S5      nUR                  S5      n[	        X$5      n[        X$5      n[        US
-  USS9  g ! , (       d  f       GN= f! , (       d  f       GNa= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)N)rl   rl   rl   r   r   r   r4  rX  rc  r   Input vector should be 1-Dro  r  r   iIr  )rZ   r   r
   rT  rP  r  r"  rG  r|   newaxisrF  r   r   r   r   )r  r  r   rsrP  d1d2s          r4   test_euclideansrn    s   	)	B	)	B R,c2>
2*BGGAJC 
z)E	F2bjj!m$bQ&78"''!*D 
G	z)E	FR

A&2::q=(9: 
G	z)E	FR2::&1bjj=(9: 
G 			!Q"A	z	"1 
#	z	"Q 
# 
		z	*B
A
A	A	B	a	BAr2.) 
G	F	F	F	F	F
 
#	"	"	"s=   AI347J7JJ)9J:3
J
J
J&)
J7:
Kc                      / SQn / SQn[         R                  " [        5         [        X5        S S S 5        g ! , (       d  f       g = f)Nr   r   rl   r^  r"  rG  r|   whammingr   rP  s     r4   test_hamming_unequal_lengthrt    s+    AA	z	" 
#	"	"s	   8
Ac                      / SQn / SQn/ SQnSn[         R                  " [        US9   [        XU5        S S S 5        g ! , (       d  f       g = f)Nrp  r^  z/'w' should have the same length as 'u' and 'v'.ro  rq  )ur  r   rV  s       r4   "test_hamming_unequal_length_with_wrw    s:    AAA
;C	z	-q 
.	-	-s	   >
Ac                      [         R                  " / SQSS9n [         R                  " / SQSS9nSn[        [        X5      U5        g )N)eggsspamrz  ry  rz  rz  rz  rz  rz  rz  rz  ry  ry  rz  ry  ry  ry  ry  ry  rz  z|S4rG   )ry  rz  rz  ry  ry  rz  rz  rz  rz  ry  rz  ry  rz  ry  rz  rz  ry  rz  rz  ry  g?)rZ   r   r   rr  )rr   r   desireds      r4   test_hamming_string_arrayr|    sK    
 B 	A 	 B 	A GHQNG,r6   c                      [         R                  " / SQ/ SQ/5      n [        U SSS S9n[        X SSS S9n[        U SSS9n[        X SSS9n[	        XSS9  [	        X$SS9  g )N)
QUUT@      Y@r~  r  g      B@g      N@g     V@g     b@g      8@g      H@r$   rl   )r5   rn  r   )r5   rn  ra  r  )rZ   r   r   r   r   )arr_inp0c0p1c1s        r4   test_minkowski_wr    sq    XX 223 4F 
vkQ$	7B	vkQ$	?B	vkQ	/B	vkQ	7BB'B'r6   c            	         / SQn / SQn[         R                  [         R                  [         R                  [         R                  4 Hk  n[        [         R                  " XS9[         R                  " XS95      n[        [         R                  " UR                  [         R                  5      5        Mm     [         R                  [         R                  [         R                  [         R                  4 H  n[         R                  " U5      R                   n[        S/[         R                  " U/US95      n[        [         R                  " U/US9S/5      n[#        XV5        [#        U[         R$                  " U5      S-  5        M     [         R&                  [         R$                  [         R(                  [         R*                  /nS H9  n[-        [         U5      (       d  M  UR/                  [1        [         U5      5        M;     U HI  n[        [         R                  " XS9[         R                  " XS95      n[#        UR                  U5        MK     g )Nr[  )r  r  r&  rG   r   r   )float16float128)rZ   r  int16r  r  rT  asarrayr   r   rH   floatinguint8rI  uint32uint64iinfomaxr	   r   r_   	complex64
complex128hasattrr   getattr)r   rP  rH   dumaxrl  rm  dtypess           r4   test_sqeuclidean_dtypesr    s|    	AA''288RXXrxx8A3RZZ5OPaggr{{34 9 ((BIIryy"))<xx""1#rzz4&>?"**dV59A3?RRD)1,- = jj"**bllBMMBF( 2uMM'"e,-	 ) A3RZZ5OPQWWe$ r6   c                     / SQn / SQnU  Vs/ s H  n[        U5      PM     nnU Vs/ s H  n[        U5      PM     nn[        R                  " 5          [        X5      nS S S 5        [        R                  " 5          [        X45      nS S S 5        [	        WW5        g s  snf s  snf ! , (       d  f       NN= f! , (       d  f       N6= f)N)TTF)TFT)r   r"  r#  r(   r	   )rn  r   r   r   rP  rJ  rL  s          r4   test_sokalmichenerr    s     	AAAQAAQA				!a# 
"				!a# 
"  		!	!	!	!s"   BB#B(=B9(
B69
Cc            	         Sn SnSnSnSX-   -  X#-   SX-   -  -   -  n[        US5        [        R                  " 5          [        SS/SS/SS/S9nS S S 5        [        UW5        / S	Qn/ S
QnS H8  n[        R                  " 5          [        [        XvU/5      S5        S S S 5        M:     g ! , (       d  f       Na= f! , (       d  f       M]  = f)Nr  g?r   r   gX$I?rl   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?ro  r   g      4@r  )r
   r"  r#  r(   )	ntfnftnttnffexpectedactuala1a2r   s	            r4   test_sokalmichener_with_weightr    s    
 C
C
C
CCI#)a39o"=>H),				!1v1v!S: 
"&)
DB
IB $##%bqc :<NO &% $ 
"	! &%s   B+B<+
B9<
C	c                 @   [         R                  " / SQ/ SQ/ SQ/ SQ/5      nUR                  5       n[        U 5         [	        XU 5        S S S 5        [        U 5         [        X5        S S S 5        [        X5        g ! , (       d  f       N9= f! , (       d  f       N+= f)Nr3  r5  r9  g3333336@gL7@g333333F@)rZ   r  r  r%  r   r   r   )r5   rI  r  s      r4   test_modifies_inputr    ss     
\$$') 
*B ggiG	&	!bf 
"	&	!b 
"r#	 
"	!	!	!s   A>B>
B
Bc                 J   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " [        5         [        XU S5        S S S 5        [        R                  " [        5         [        XS5        S S S 5        S H  nUS0nUS:X  a  U S	:X  d  US
:X  a  U S:X  d  US:X  a  U S:X  a  M-  [        R                  " [        5         [        U 5         [        XU 40 UD6  S S S 5        S S S 5        [        R                  " [        5         [        U 5         [        X40 UD6  S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N_= f! , (       d  f       GM  = f)Nr3  r5  r9  r  r   )rn  r  r  foor  r'   r  r#   rn  r$   )rZ   r  r"  rG  r   r   r   r%  )r5   rI  rQ  r   s       r4   test_Xdist_deprecated_argsr  .  s3    
\$$') 
*B
 
y	!bfb! 
" 
y	!b" 
"  uCZFl24KFm$;3J6[#8]]9%!&)bf// * & ]]9%!&)b+F+ * &%   
"	! 
"	! *) &%
 *) &%s_   D=-EE0E%E0FF(F=
E
E
E-)E00
E>	
FF
F"	c           
         [         S   S S S2S S S24   n[        R                  " UR                  S   5      nUS S S2   * US S S2'   U S;   a  [        R
                  " S5        U [        U 5      SU -   4 H  n[        R                  " [        5         [        U 5         [        XUS9  S S S 5        S S S 5        [        R                  " [        5         [        U 5         [        XX2S9  S S S 5        S S S 5        M     g ! , (       d  f       N\= f! , (       d  f       Ne= f! , (       d  f       N== f! , (       d  f       M  = f)	NrO   r  r   rl   )r'   r#   r!   not applicablerE  r  )r\   rZ   r   r   r"  r  rH  rG  r|   r%  r   r   )r5   r|  r   r  s       r4   test_Xdist_non_negative_weightsr  M  s    
 !#A#ss(+A

A!fWAccF??$%d6lGf$45]]:&!&)aa  * ' ]]:&!&)aA# * '&	 6)) '& *) '&sH   DC>(DD1D )D1>
DD
D	 
D.*D11
E 	c                     / SQn [        U 5      n[        X5        [        U [        R                  S9n[        X5        [	        UR
                  [        R                  5        S/n [        U 5      n[	        UR                  S5        [	        X5        Sn [        R                  " [        SS9   [        U 5        S S S 5        [        R                  " S5      R                  SSS5      n [        R                  " [        SS9   [        U 5        S S S 5        SS/S	S
//n [        R                  " [        SS9   [        U 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NU= f! , (       d  f       g = f)Nr[  rG   rl   ri  ro  r  r   r   r   r  )r   r   rZ   r   r	   rH   rv   r"  rG  r|   rF  r   rs  s     r4   test__validate_vectorr  _  s   AAq"**-Aq"**%	
AA	A	z)E	F 
G 			!QA&A	z)E	F 
G Q!QA	z)E	F 
G	F 
G	F 
G	F 
G	Fs$   ,E
 E5E,

E
E),
E:c                      [         R                  " S[        S9n [        U S   U S   5      nUS:X  d   e[	        U S5      n[        US/5        [        U S S U S S S5      n[        US//5        g )N)r   r&  rG   r   r  r+   rl   )rZ   r   r*  r  r   r	   r   )r   r  s     r4   test_yule_all_samer  y  sq    
d#AadAaDA8O8aASEaeQrUF#AcUGr6   c            	      b   [        [        / SQ/ SQS5      S5        [        [        SS/SS/5      S5        [        [        / SQ/ SQ5      S5        [        [        SS//SS//S	S
9SS/5        [        [        SS//SS//SS
9S/5        [        [        SS//SS//S	SS9SS//5        [        [        SS//SS//SSS9S//5        [        R                  " / SQ/ SQ/ SQ/5      n [        R                  " / SQ/ SQ/ SQ/5      n[        [        XS	S
9/ SQ5        [        [        XSS
9/ SQ5        g )N)r   r  r  )r  r   r  r   r   r  r  g)>d?rH  r   r   rl   gД?T)r~   keepdims)rl   r   r   r  )r  r&     rf   )	   r        )   rX  rb  r  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   rZ   r   )rr   r   s     r4   r  r    sO   oLsCj3*=+-oGMSzlc3ZLqIc
$Szlc3ZLqI"%Szlc3ZLq/358;SzlDSzlc3ZLq/358A{mE 	,!# 	$A 	"""$ 	%A a3DFa39;r6   c                  "   [         R                  " / SQ5      n [         R                  " / SQ5      n[        X5      n[        X/SS9n[	        X25        [        [         R                  " U 5      [         R                  " U5      SS9n[	        X25        g )N)rl   r   r   )r   r   r   r   r$  )rZ   r   r   r   r   r   r  )arr_1arr_2r  r  s       r4   test_gh_17703r    si    HHYEHHYEE!HE>&1FF%2=='=='8FF%r6   c                 <   U S;   a  [         R                  " S5        [        R                  " S[        R                  S9nUR                  SS9  [        U 5         [        [        R                  R                  U 5      " XUS9  S S S 5        g ! , (       d  f       g = f)N)r!   r#   r'   r  r  rG   F)writer  )r"  r  rZ   rF  r   setflagsr%  r  scipyspatialdistance)r5   r   s     r4   test_immutable_inputr    si    ??$%
		"BJJ'AJJUJ	&	!&&/: 
"	!	!s   *B
Bc                   V    \ 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Srg)TestJaccardi  c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  rL   pdist-jaccardr    r  r=  r  s        r4   test_pdist_jaccard_random%TestJaccard.test_pdist_jaccard_random  s2    "#_%I&s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rB  r  s        r4   !test_pdist_jaccard_random_float32-TestJaccard.test_pdist_jaccard_random_float32  ;    JJr-./_%I&s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  rL   r  test_jaccardr  r=  r  s        r4   test_pdist_jaccard_random_nonC*TestJaccard.test_pdist_jaccard_random_nonC  s2    "#_%N+s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  r  r  s        r4   test_pdist_djaccard_random&TestJaccard.test_pdist_djaccard_random  r  r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rB  r  s        r4   "test_pdist_djaccard_random_float32.TestJaccard.test_pdist_djaccard_random_float32  r  r6   c                     Sn[        [        R                  " S5      S5      n[        [        R                  " S5      X!S9  g )Nra  r  r   r    r  r  r   rZ   r  r   r  ri  r  s      r4   test_pdist_djaccard_allzeros(TestJaccard.test_pdist_djaccard_allzeros  s.    "((6"I.a2r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  r  r  s        r4   test_pdist_djaccard_random_nonC+TestJaccard.test_pdist_djaccard_random_nonC  s;    JJr-./_%N+s3r6   c                     Sn[        [        R                  " S5      S5      n[        [        R                  " S5      X!S9  g )Nra  r  r  r  r  r  r  s      r4   !test_pdist_djaccard_allzeros_nonC-TestJaccard.test_pdist_djaccard_allzeros_nonC  s.    "((6"N3a2r6   c                     [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[	        USSSS9  [	        USSSS9  g r  wjaccardrZ   r   r*  r   r  s      r4   test_pdist_jaccard_mtica1%TestJaccard.test_pdist_jaccard_mtica1  sd    RXXo.XXo.0bhhd;hhd;=3QU3Cae4r6   c                     [        [        R                  " / SQ5      [        R                  " / SQ5      5      n[        [        R                  " / SQ[        S9[        R                  " / SQ[        S95      n[	        USSSS9  [	        USSSS9  g r  r  r  s      r4   test_pdist_jaccard_mtica2%TestJaccard.test_pdist_jaccard_mtica2  sd    RXXi(XXi(*bhhy5hhy575qu5E6r6   c                 :   [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " [        5      R                  n[        [        X5      SUS9  [        [        U/U/S5      S//5        [        [        X/S5      S/5        g )N)ig      @r   )r   r   ra  r  r    )	rZ   r   rj  r_  ri  r   r    r   r   )r  r   rP  ri  s       r4   test_non_01_inputTestJaccard.test_non_01_input  ss     HH]#HH]#hhuo!!s5qcA3	2cUG<qfi03%8r6   ri   N)r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ri   r6   r4   r  r    s9    444443
43
579r6   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestChebyshevi		  c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   pdist-chebyshevr   r  r&  r  s        r4   test_pdist_chebyshev_random)TestChebyshev.test_pdist_chebyshev_random	  s3    !"&';'s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr  r   r  r   r   re  r  r  s        r4   #test_pdist_chebyshev_random_float321TestChebyshev.test_pdist_chebyshev_random_float32	  sB    JJr,-.&';'sGaKHr6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r   r  test_chebyshevr  r&  r  s        r4    test_pdist_chebyshev_random_nonC.TestChebyshev.test_pdist_chebyshev_random_nonC	  s4    !"&'+,s3r6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nry  r  pdist-chebyshev-irisr   r  r&  r  s        r4   test_pdist_chebyshev_iris'TestChebyshev.test_pdist_chebyshev_iris 	  s1    vJ+,;'s3r6   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr   r  r	  r   r   re  r  r  s        r4   !test_pdist_chebyshev_iris_float32/TestChebyshev.test_pdist_chebyshev_iris_float32'	  s@    JJr&z"+,;'sGaKHr6   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nry  r  r	  r  r  r&  r  s        r4   test_pdist_chebyshev_iris_nonC,TestChebyshev.test_pdist_chebyshev_iris_nonC.	  s2    vJ+,+,s3r6   c           	          / SQn/ SQn/ SQn[        [        XU5      S5        [        [        X/SUS9S/5        [        [        U/U/SUS9S//5        g )Nr[  r&  r  r  )r   rl   r  r   r   r  r	   r   r   r   r  r   rP  r   s       r4   test_weightedTestChebyshev.test_weighted5	  sX     YqQ'+UA6;!4qc:UA3[A6!>r6   c           	          / SQn/ SQn/ SQn[        [        XU5      S5        [        [        X/SUS9S/5        [        [        U/U/SUS9S//5        g )Nr[  r  rh  r   r   r  r  r  s       r4   test_zero_weightTestChebyshev.test_zero_weight?	  sV    YqQ'+UA6;!4qc:UA3[A6!>r6   ri   N)r   r  r  r  r  r  r  r
  r  r  r  r  r   ri   r6   r4   r  r  		  s,    4I44I4??r6   r  rn   )	NNFTFFFFN)r  os.pathrT   	functoolsr   r   r  numpyrZ   r   numpy.linalgr   numpy.testingr   r   r   r	   r
   r   r   r   r"  scipy.spatial.distancer  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+   scipy._lib._utilr,   r-   fixturer5   rR   r   _tdist_ytdistr\   rd   rj   r   r   r   r   r   assert_allclose_forgivingr   r  r  strr%  r  rh  r>  r  r  r  rr  r  r   
wcityblock
wchebyshevrZ  r^  wkulczynski1r  rP  rT  re  r_  r  wsokalmichenerr  r'  r  rB  ry  r  r  r  r  r-  r/  r  r  rW  rY  r!  rf  rn  rt  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ri   r6   r4   <module>r+     s  F   $    2 2 2  & & &D D D D D D / ~Y7 8
@ 
/222224
 <D
E V

 >  # -17;+0/4	-$`8 $O$?  '@!TB   !tQT "td#dEPU"c#<cL %S % 
Q	>!%a*/EC	Qa	H!%a-21>!.1&w? ?	HY'
Y'

&
!{+{+7#Y59
{u=j)H7	{+ /j)tA tAn	W? W?rQ4 Q4h@- @-F32 32l $  $F&F+ F+R%6 6r 01- 2-B;R/B-(%>   P P0 $ $ , ,< $ $"4
;:& ; ;N9 N9b=? =?r6   