
    -irY                       S SK JrJr  S SKrS SKrS SK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/J0r0J1r1J2r2J3r3J4r4J5r5J6r6  S SK7J8r8J9r9  S SK:J;r;  \Rx                  " \!S	S
9S 5       r=/ SQr>\
R~                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/SS9r@\" \@5      rA0 rBS rC\C" 5         S rDS_S jrE     S`S jrFS rGS rHS_S jrI\" \SS9rJ\JS  S4S! jrKS"SS# S$SSSSSSSSSSS%S \J4S& jrL " S' S(5      rMS)\N4S* jrO\L" \S+SS,9rP\L" \S+SSS-9rQ\L" \S+SS+S.9rR\L" \S+SSS+S/9rS\L" \05      rT\L" \*SS09=rUrV\L" \65      rW\L" \(5      rX\L" \%5      rY\L" \$5      rZ\L" \'5      r[\L" \&5      r\\L" \-5      r]\L" \+5      r^\L" \)SS19r_\L" \5SS19r`\L" \"5      ra\L" \#SS19rb\L" \45      rc\L" \35      rd\L" \15      re " S2 S35      rf " S4 S55      rg " S6 S75      rh " S8 S95      ri " S: S;5      rj " S< S=5      rkS> rl " S? S@5      rmSA rn " SB SC5      ro\R                  R                  SD/ SEQ5      SF 5       rrSG rsSH rtSI ruSJ rvSK rwSL rxSM rySN rzSO r{\R                  R                  SP 5       r}\R                  R                  SQ 5       r~\R                  R                  SR 5       r\R                  R                  SS 5       r\R                  R                  ST 5       rSU rSV rSW rSX r\R                  R                  SY 5       rSZ r " S[ S\5      r " S] S^5      rg)a    )wrapspartialN)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)skip_xp_invalid_arg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metricr6   E   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         )r8   r   '        )r9   r=   r     4     )r:   r>   rA   r      e  )r;   r?   rB   rD   r     )r<   r@   rC   rE   rF   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       r5   load_testing_filesre   |   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r7   c                  H    [         R                  " S5      R                  S:  $ )Nr      )r[   intpitemsize r7   r5   	_is_32bitrk      s    771:""r7   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)r[   
atleast_1d.0as     r5   	<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)rr   rs   arrayss     r5   rt   ru      s      <V66VAY^^+Vs   (+z(array ndim must be the same for neg axis)r[   
asanyarrayrw   raveltupleall
ValueErrorrange)rx   axisrs   s   `  r5   _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ro   )r[   magetmasknomaskrq   s     r5   rt   _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ro   )r[   r   masked_invalid)rr   rs   has_nans      r5   rt   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ro   shape)rr   rs   r   weightss     r5   rt   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)r[   take)rr   rs   r   pos_weightss     r5   rt   r      s     Nv!2771k=vs   #&rm   )r   anyr[   isnansumr{   zipry   onesr   _freq_weights_weight_maskedr|   r}   nonzerosize)rx   r   r   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedrs   has_nansr   s    ``          @r5   _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     r5   r   r      sE    ..%K##%%KG9UVVr7   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   rm   c              3   6   >#    U  H  oT:w  d  M
  Uv   M     g 7fro   rj   )rr   ir   s     r5   rt   !_weight_masked.<locals>.<genexpr>   s     C1dQQs   		r   )r[   ry   r   r   r   rw   r{   r~   r   r   r   )rx   r   r   rs   	axis_masknot_axess     `   r5   r   r      s    |mmG$GEEMM!$	$66A:CaffCCH!84I1y'',,,  Nr7   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 )NrH   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   rm   )r[   ry   r   reshaper~   rw   r   )rs   ixr   recordr   s        r5   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ro   r   )rr   rs   r   n_obss     r5   rt   _rand_split.<locals>.<genexpr>   s     6v!wwt}%vs   !z#data must be aligned on sample axis      ?r   )r[   
issubdtyperI   integerr   float64arrayrandomRandomStater   r|   r~   r   randintrandappend)rx   r   r   	split_perseedarrseeded_randr   r   split_ixprev_wqrs   r   s     `          @r5   _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 $ ro   rj   xs    r5   <lambda>r     s    r7   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)r[   r   r   AttributeError	TypeErrorr}   r   _rough_check)	rs   br   keywcheck_acheck_ba_ib_is	            r5   r   r     s    !fG!fGB88G&'++--7, . )w(z" BG-HC.A .Bs   3A B-B
B   c                     U $ ro   rj   r   s    r5   r   r     s    1r7   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   r[   rp   squeezer{   r   	Exceptiontyper   r   slicerw   nanr   r   r   NotImplementedErrorwarningswarn__name__)&argskwargsresultrx   restr   r   r   rs   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_testra   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args&                        r5   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   )ra   r
  r  r   r  r   r  r  r  r  r  r  r  r	  r  r   r   r   r  s   `````````````````  r5   _weight_checkedr    s3     2YY Y Y Yt Nr7   c                        \ rS rSrS rS rSrg)DummyContextManageri}  c                     g ro   rj   selfs    r5   	__enter__DummyContextManager.__enter__~      r7   c                     g ro   rj   )r  r   s     r5   __exit__DummyContextManager.__exit__  r  r7   rj   N)r   
__module____qualname____firstlineno__r  r  __static_attributes__rj   r7   r5   r  r  }  s    r7   r  r6   c                 L    U S;   a  [         R                  " 5       $ [        5       $ )N)r"   r(   )pytestdeprecated_callr  r6   s    r5   maybe_deprecatedr&    s#    11%%''"$$r7   rm   )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                  \R                  R+                  \R.                  " 5       S:H  SS9S 5       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)rP   rQ   rR   rO   rN   )booluintr   r`   rnd_eo_namesr-   r,   r[   r`   r   valid_upcastsr  s    r5   setup_methodTestCdist.setup_method  W    1 (0"**bjj&Q'.

BJJ&G&(jj"**%=*,**7r7   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@皙@r8  皙@g      @      @g       @g      @333333@g @g      @r@  r<  Q	@r   N0tV4l1D_p4raMr      r6   test_)r[   aranger#  raisesr   r&  r   eval)r  r6   X1X2r   r   s         r5   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)Nrm   r   c                     X#-   U-   $ ro   rj   r   yargkwargkwarg2s        r5   
_my_metric:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r7   r4  r6  r:  r=  r?  rA  rB  r   rC  rE  r;  ffffff
@rS  rT  rS  皙?r6   rR  rT  皙@rm   r   )r[   rG  r#  rH  r   r   r   )r  rU  rJ  rK  r   r   s         r5   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  epsrJ  rK  Y1Y2s         r5   #test_cdist_euclidean_random_unicode-TestCdist.test_cdist_euclidean_random_unicode  sB    
^
^R[1R%56S'A+>r7   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%<=rc  rd  r$   ro  test_minkowskir   r   )r   rg  r   rh  )r  ro  rj  rJ  rK  rk  rl  s          r5   test_cdist_minkowski_random%TestCdist.test_cdist_minkowski_random  sJ     
^
^R[A6R%5;QS'A+Fr7   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+=rc  rd  r   c                 ^    [         R                  R                  U SS9R                  SS5      $ )Nrm   r   r   )r[   linalgr   r   )Xs    r5   norms1TestCdist.test_cdist_cosine_random.<locals>.norms  s&    99>>!!>,44R;;r7   rm   r   rf  )r]   wcdistr[   dotTr   r   )r  rj  rJ  rK  rk  r~  rl  s          r5   test_cdist_cosine_random"TestCdist.test_cdist_cosine_random  sg    
^
^BH%	< eBi2b	>*<*<==S'A+>r7   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   rm   r   )r[   r   r   r   sqrtr#  rH  r}   )r  x1x2distrt2s        r5   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  rj   Nr   r  r  r   r!  rj   r7   r5   myclassr        r7   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   rQ  r  s     r5   rU  9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric"  3    adG,,JqtW4M4M !899r7   rH   r%  r  r   r   )r[   r   objectr   r	   r   )r  rU  rL   cdist_yright_yr  s        @r5   test_cdist_custom_notdouble%TestCdist.test_cdist_custom_notdouble  sI    	 		 xx')V4:6Ww{;r7   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Nr6   rF  r   rf  )
r   rI  r   r   r   	__class__printr   r#  rH  )r  rJ  rK  r6   rj  r   y1y2y3r   e_clss              r5   _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   rm   r   	testing:  with: >   r   r+   r&   r"   r)   r(   r%   r+  r'   r   r   r   Vr#   VI)r.  r]   r   r  r  r[   vstackr   r   var
atleast_2dcovr  r   r|  inv)r  r6   eo_namerJ  rK  X12r  r  s           r5   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 )r7   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>rN   r+  rR   r,  rQ   r   rP   r`   r   r  r   rm   r   r%  rf  )r]   r/  r   r   r   r   r  r  r   r#  rH  )r  r6   rj  teststestrJ  rK  r  new_typer  r   r  X1newX2news                 r5   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.z	win-arm64znumpy#29442)reasonc                    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)Nrb  rc  rd  r   r$   rr  ro  rH   outr   rf  rm   F)rI   order)r]   r   dictr[   emptyr   r&  r   r   r   r   r#  rH  r}   int64)r  r6   rj  rJ  rK  out_rout_cr   out1rk  rl  out2out3out4out5s                  r5   test_cdist_outTestCdist.test_cdist_outz  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)	Nrb  rc  r   rd  r$   rr  ro  rf  )r]   copyr	   r   flagsc_contiguousr  r&  r   r   r   )
r  r6   rj  rJ  rK  X1_copyX2_copyr   rk  rl  s
             r5   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$   rr  ro  r6   c              3   2   #    U  H  o" 5       S L v   M     g 7fro   rj   )rr   weak_refs     r5   rt   0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s     @i(8:%is   )r[   r   r   r  r&  r   weakrefrefr   r   r|   )r  r6   r  r  r   r  v	weak_refss           r5   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   r0  r#  markthread_unsaferL  r_  rm  parametrizer[   infrw  r  r  r  r  r  r  skipif	sysconfigget_platformr  r  r  r!  rj   r7   r5   r(  r(    s   7 [[: :0"9H? [[S3c4#&S"&&#: ;G;G?<$<C*G>K6 [[[[	..0K?V+: W +:Z [[? ?8 [[A Ar7   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 rR\SSP 5       rTSXSQ jrUSR rVSS rW\R                  R                  ST 5       rX\R                  R                  SU 5       rYSVrZgW)Y	TestPdisti  c                    / SQU l         [        [        [        R                  [        R
                  /[        [        R                  [        R
                  /[        R                  [        R
                  /[        R
                  /S.U l        g r*  r-  r  s    r5   r0  TestPdist.setup_method  r2  r7   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   r7  r8  r;  rB  r   rC  rE  r6   rF  )r[   rG  r#  rH  r   r&  r   rI  )r  r6   rJ  r   r   s        r5   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)Nrm   r   c                     X#-   U-   $ ro   rj   rP  s        r5   rU  :TestPdist.test_pdist_extra_args_custom.<locals>._my_metric  rW  r7   r   r   r7  r8  r;  rB  rC  rE  rX  rY  rZ  r[  r\  r]  r^  )r[   rG  r#  rH  r   r   r   )r  rU  rJ  r   r   s        r5   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   rg  r]   wpdist_no_constr   r  rj  r}  Y_rightY_test1s        r5   test_pdist_euclidean_random%TestPdist.test_pdist_euclidean_random!  3    !"&'!![1s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g r  r  r
  s        r5   test_pdist_euclidean_random_u'TestPdist.test_pdist_euclidean_random_u(  r  r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  r[   r`   r]   r	  r   r
  s        r5   #test_pdist_euclidean_random_float32-TestPdist.test_pdist_euclidean_random_float32/  s<    JJr,-.&'!![1s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  r  re  r  r  r  rj  r}  r  Y_test2s        r5    test_pdist_euclidean_random_nonC*TestPdist.test_pdist_euclidean_random_nonC6  s4    !"&'!!%56s3r7   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        r5    test_pdist_euclidean_iris_double*TestPdist.test_pdist_euclidean_iris_double=  s1    vJ+,!![1s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr   r  r  r   r   rf  r[   r`   r]   r	  r   r   r
  s        r5   !test_pdist_euclidean_iris_float32+TestPdist.test_pdist_euclidean_iris_float32E  @    JJr&z"+,!![1sGaKHr7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  r  re  r  r  r  s        r5   test_pdist_euclidean_iris_nonC(TestPdist.test_pdist_euclidean_iris_nonCM  s4     vJ+,!!%56s3r7   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        r5   test_pdist_seuclidean_random&TestPdist.test_pdist_seuclidean_randomW  s3    !"'(<(s3r7   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   rm   r  r  )r[   r`   r]   r   r   r  )r  rj  r}  r  r  r  r  s          r5   $test_pdist_seuclidean_random_float32.TestPdist.test_pdist_seuclidean_random_float32^  sh    JJr,-.'(<(s3 FF111%<1-s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  r*  test_seuclideanr  r+  r  s        r5   !test_pdist_seuclidean_random_nonC+TestPdist.test_pdist_seuclidean_random_nonCj  s4    !"'(,-s3r7   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        r5   test_pdist_seuclidean_iris$TestPdist.test_pdist_seuclidean_irisr  s1    vJ,-<(s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g )Nr   r  r6  r'   r  )r[   r`   r]   r   r   r
  s        r5   "test_pdist_seuclidean_iris_float32,TestPdist.test_pdist_seuclidean_iris_float32y  s:    JJr&z",-<(s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  r6  r2  r  r+  r  s        r5   test_pdist_seuclidean_iris_nonC)TestPdist.test_pdist_seuclidean_iris_nonC  s4     vJ,-,-s3r7   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        r5   test_pdist_cosine_random"TestPdist.test_pdist_cosine_random  s2    !"^$H%s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r@  r[   r`   r]   rC  r   r
  s        r5    test_pdist_cosine_random_float32*TestPdist.test_pdist_cosine_random_float32  s;    JJr,-.^$H%s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  rA  test_cosiner  rB  r  s        r5   test_pdist_cosine_random_nonC'TestPdist.test_pdist_cosine_random_nonC  s2    !"^$M*s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr   r  pdist-cosine-irisr   r   rB  r
  s        r5   test_pdist_cosine_iris TestPdist.test_pdist_cosine_iris  s1    vJ()H%s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr   r  rO  r   r   r   r   )r[   r`   r]   rC  r   r   r
  s        r5   test_pdist_cosine_iris_float32(TestPdist.test_pdist_cosine_iris_float32  s@    JJr&z"()H%sGaKHr7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr   r  rO  rK  r   rB  r  s        r5   test_pdist_cosine_iris_nonC%TestPdist.test_pdist_cosine_iris_nonC  s1    vJ()M*s3r7   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)r[   absr   r   r   r  r   rC  )r  r   r}  s      r5   test_pdist_cosine_bounds"TestPdist.test_pdist_cosine_bounds  sZ     FF299((.33B78IIqfq(#A&!+<	>r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  r  pdist-cityblockr   r  r  r
  s        r5   test_pdist_cityblock_random%TestPdist.test_pdist_cityblock_random  s3    !"&'!![1s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r`  r  r
  s        r5   #test_pdist_cityblock_random_float32-TestPdist.test_pdist_cityblock_random_float32  s<    JJr,-.&'!![1s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  ra  test_cityblockr  r  r  s        r5    test_pdist_cityblock_random_nonC*TestPdist.test_pdist_cityblock_random_nonC  s4    !"&'!!%56s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nrz  r  pdist-cityblock-irisr   r  r  r
  s        r5   test_pdist_cityblock_iris#TestPdist.test_pdist_cityblock_iris  s1    vJ+,!![1s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr   r  rl  r   r   rf  r"  r
  s        r5   !test_pdist_cityblock_iris_float32+TestPdist.test_pdist_cityblock_iris_float32  r%  r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nrz  r  rl  rh  r  r  r  s        r5   test_pdist_cityblock_iris_nonC(TestPdist.test_pdist_cityblock_iris_nonC  s4     vJ+,!!%56s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  r  pdist-correlationr   r  rB  r
  s        r5   test_pdist_correlation_random'TestPdist.test_pdist_correlation_random  s3    !"()M*s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g rv  rG  r
  s        r5   %test_pdist_correlation_random_float32/TestPdist.test_pdist_correlation_random_float32  s<    JJr,-.()M*s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  rw  test_correlationr  rB  r  s        r5   "test_pdist_correlation_random_nonC,TestPdist.test_pdist_correlation_random_nonC  s4    !"()./s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  pdist-correlation-irisr   r  rB  r
  s        r5   test_pdist_correlation_iris%TestPdist.test_pdist_correlation_iris  s1    vJ-.M*s3r7   c                     Sn[         S   n[        R                  " [         S   5      n[        US5      n[	        XCU[
        S:  S9  g )Nr  r  r  r   r   rf  )r]   r[   r`   rC  r   r   r
  s        r5   #test_pdist_correlation_iris_float32-TestPdist.test_pdist_correlation_iris_float32  s@    vJ**R 89:M*sGaKHr7   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  r~  r  )sysmaxsizer#  skipr]   rC  r   r  s        r5    test_pdist_correlation_iris_nonC*TestPdist.test_pdist_correlation_iris_nonC  sJ    ;;CKK'vJ-../s3r7   ro  rp  rq  r   r   皙	@c                 \    Sn[         S   n[        USUS9n[        USUS9n[        XESUS9  g )Nrt  r  r$   ru  rv  r   )r   rg  r  )r  ro  rj  r}  rk  rl  s         r5   test_pdist_minkowski_random_p'TestPdist.test_pdist_minkowski_random_p   s;    !"Qq1Q 0A6QS1r7   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  ru  r  r  r
  s        r5   test_pdist_minkowski_random%TestPdist.test_pdist_minkowski_random(  s5    !"*+!![C8s3r7   c                 ~    Sn[         R                  " [        S   5      n[        S   n[        USSS9n[	        XCUS9  g r  r  r
  s        r5   #test_pdist_minkowski_random_float32-TestPdist.test_pdist_minkowski_random_float32/  s>    JJr,-.*+!![C8s3r7   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g )Nr  r  r  rv  r  ru  r  r  r  s        r5    test_pdist_minkowski_random_nonC*TestPdist.test_pdist_minkowski_random_nonC6  s6    !"*+!!%5=s3r7   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  ru  r  r  r
  s        r5   test_pdist_minkowski_3_2_iris'TestPdist.test_pdist_minkowski_3_2_iris=  3    vJ/0!![C8s3r7   c                 ~    Sn[         R                  " [        S   5      n[        S   n[        USSS9n[	        XCUS9  g )Nr   r  r  r$   r  ru  r  r  r
  s        r5   %test_pdist_minkowski_3_2_iris_float32/TestPdist.test_pdist_minkowski_3_2_iris_float32E  s<    JJr&z"/0!![C8s3r7   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g )Nr  r  r  rv  r  ru  r  r  r  s        r5   "test_pdist_minkowski_3_2_iris_nonC,TestPdist.test_pdist_minkowski_3_2_iris_nonCM  4    vJ/0!!%5=s3r7   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@  ru  r  r  r
  s        r5   test_pdist_minkowski_5_8_iris'TestPdist.test_pdist_minkowski_5_8_irisU  r  r7   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@  ru  r   rf  r"  r
  s        r5   %test_pdist_minkowski_5_8_iris_float32/TestPdist.test_pdist_minkowski_5_8_iris_float32]  sB    JJr&z"/0!![C8sGaKHr7   c                 V    Sn[         S   n[         S   n[        USSS9n[        XCUS9  g )Nr  r  r  rv  r@  ru  r  r  r  s        r5   "test_pdist_minkowski_5_8_iris_nonC,TestPdist.test_pdist_minkowski_5_8_iris_nonCe  r  r7   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   r5  r>  r   rm   r#   r%  r  r  r  r   r   r   r   r   )
r[   r   r   r   r   r  r#  rH  r}   rC  )r  r   r  r  s       r5   test_pdist_mahalanobis TestPdist.test_pdist_mahalanobism  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 Nrb  rM   pdist-hammingr   r  rB  r
  s        r5   test_pdist_hamming_random#TestPdist.test_pdist_hamming_random~  s2    "#_%I&s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rG  r
  s        r5   !test_pdist_hamming_random_float32+TestPdist.test_pdist_hamming_random_float32  ;    JJr-./_%I&s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nrb  rM   r  test_hammingr  rB  r  s        r5   test_pdist_hamming_random_nonC(TestPdist.test_pdist_hamming_random_nonC  s2    "#_%N+s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  r[   r   r]   rC  r   r
  s        r5   test_pdist_dhamming_random$TestPdist.test_pdist_dhamming_random  r  r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rG  r
  s        r5   "test_pdist_dhamming_random_float32,TestPdist.test_pdist_dhamming_random_float32  r  r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  r  r  s        r5   test_pdist_dhamming_random_nonC)TestPdist.test_pdist_dhamming_random_nonC  s;    JJr-./_%N+s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Ndy=r  pdist-jensenshannonr!   r  r+  r
  s        r5   test_pdist_jensenshannon_random)TestPdist.test_pdist_jensenshannon_random  s3    !"*+?+s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )N:0yE>r  r  r!   r   rf  r[   r`   r]   r   r   r   r
  s        r5   'test_pdist_jensenshannon_random_float321TestPdist.test_pdist_jensenshannon_random_float32  sB    JJr,-.*+?+sGaKHr7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  r  test_jensenshannonr  r+  r  s        r5   $test_pdist_jensenshannon_random_nonC.TestPdist.test_pdist_jensenshannon_random_nonC  s4    !"*+/0s3r7   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   )rk   r]   r   r   r
  s        r5   test_pdist_jensenshannon_iris'TestPdist.test_pdist_jensenshannon_iris  s=    ;;CCvJ/0?+s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Ngư>r  r  r!   r   rS  r  r
  s        r5   %test_pdist_jensenshannon_iris_float32/TestPdist.test_pdist_jensenshannon_iris_float32  s@    JJr&z"/0?+sGaKHr7   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        r5   "test_pdist_jensenshannon_iris_nonC,TestPdist.test_pdist_jensenshannon_iris_nonC  s2    vJ/0/0s3r7   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rm   r   rm   rm   r   rm   rm   r   rm   rm   rH   333333?r   绽|=rg  r   	wmatchingr[   r   r+  r   r  mm2s      r5   test_pdist_matching_mtica1$TestPdist.test_pdist_matching_mtica1  sd    bhh/hh/1rxxt<xxt<>3QU3Cae4r7   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rm   r   rm   rm   rm   r   rH   UUUUUU?r   r  r  r  r  s      r5   test_pdist_matching_mtica2$TestPdist.test_pdist_matching_mtica2  sd    bhhy)XXi(*rxx	6hhy575qu5E6r7   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  rH   r   r   r  r  wyuler[   r   r+  r   r  r   r  s      r5   test_pdist_yule_mtica1 TestPdist.test_pdist_yule_mtica1  sr    "((?+((?+-288O4888O48:Q;!H1151AAE2r7   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  rH   r   r   r  r  r  r  s      r5   test_pdist_yule_mtica2 TestPdist.test_pdist_yule_mtica2  sr    "((9%((9%'288IT288IT24Q;!H1151AAE2r7   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  rH   r   g۶m۶m?r   r  r  wdicer[   r   r+  r   r  r   r  s      r5   test_pdist_dice_mtica1 TestPdist.test_pdist_dice_mtica1  sr    "((?+((?+-288O4888O48:Q;!H5qu5E6r7   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  rH   r   r  r   r  r  r  r  s      r5   test_pdist_dice_mtica2 TestPdist.test_pdist_dice_mtica2  sr    "((9%((9%'288IT288IT24Q;!H3QU3Cae4r7   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  rH   r   g      ?r   r  r  )r)   r[   r   r+  r   r  r   r  s      r5   test_pdist_sokalsneath_mtica1'TestPdist.test_pdist_sokalsneath_mtica1  s    113/>/>@Q;!H5qu5E6r7   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  rH   r   g?r   r  r  )wsokalsneathr[   r   r+  r   r  r   r  s      r5   test_pdist_sokalsneath_mtica2'TestPdist.test_pdist_sokalsneath_mtica2  sr    ),),."((9D9((9D9;Q;!H5qu5E6r7   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  wrogerstanimotor[   r   r+  r   r  r   r  s      r5    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6r7   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      r5    test_pdist_rogerstanimoto_mtica2*TestPdist.test_pdist_rogerstanimoto_mtica2/  sr    BHHY/HHY/1RXXit<XXit<>Q;!H5qu5E6r7   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  rH   r   r  r   r  r  wrussellraor[   r   r+  r   r  r   r  s      r5   test_pdist_russellrao_mtica1&TestPdist.test_pdist_russellrao_mtica19  r  r7   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  rH   r   r  r   r  r  r  r  s      r5   test_pdist_russellrao_mtica2&TestPdist.test_pdist_russellrao_mtica2C  sr    ++-)48)48:Q;!H5qu5E6r7   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   rb  r   test_canberrarf  )r]   r   r  r   rI   r	  r   )r  Drj  r  r  s        r5   test_pdist_canberra_match#TestPdist.test_pdist_canberra_matchM  sQ    vJQ;!''177#Q
+Q0S'A+>r7   c                 P    Sn[        S/S/4S5      nSn[        X#U[        S:  S9  g )Nr  rX  r9  r   gd>@1?r   rS  )r	  r   r   )r  rj  pdist_yr  s       r5   test_pdist_canberra_ticket_711(TestPdist.test_pdist_canberra_ticket_711W  s2     !C53%.*=sGaKHr7   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>.myclassib  rj   Nr  rj   r7   r5   r  r0  b  r  r7   r  c                 l   > [        U S   T5      (       a  [        US   T5      (       d  [        S5      egr  r  r  s     r5   rU  9TestPdist.test_pdist_custom_notdouble.<locals>._my_metrice  r  r7   rH   r%  r  r   r  )r[   r   r  r   r	   r   )r  rU  rL   r+  r  r  s        @r5   test_pdist_custom_notdouble%TestPdist.test_pdist_custom_notdouble_  sN    	 		 xx')wyk2&A0Ww{;r7   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   rI  r   r   r   r  r  r   r#  rH  )
r  r}  r6   rj  r   r  r  r  r   r  s
             r5   r  $TestPdist._check_calling_conventionsn  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   rm   r  r  r#   r  )r.  r]   r   r  r  r[   r  r   r   r  r  r  r   r|  r  )r  r6   r  r}  r  r  s         r5   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+ )r7   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  rN   r+  rR   r,  rQ   r   rP   r`   r   r  r   r%  rm   rf  )r]   r/  r   r   r   r   r  r  r   r#  rH  )r  r6   rj  r  r  rJ  r  r  r  r   r  rK  s               r5   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)Nrb  rP   r  r   r   rm   r$   rr  ro  rH   r  r  r   )r]   r   r   r  r[   r  r   r&  r   r   r   r#  rH  r}   r  )r  r6   rj  r}  out_sizer   r  r  r  r  r  r  s               r5   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)	Nrb  rP   r  r   r$   rr  ro  rf  )
r]   r  r   r  r  r  r&  r   r   r   )r  r6   rj  r}  X_copyr   rk  rl  s           r5   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  )[r   r  r  r   r0  r#  r  r  r  r  r  r  r  r  slowr  r#  r'  r,  r/  r3  r7  r:  r=  rD  rH  rL  rP  rT  rW  r]  rb  re  ri  rm  rp  rs  rx  r{  r  r  r  r  r  r[   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r   r#  r(  r,  r.   r3  r  r9  r<  r@  r  r!  rj   r7   r5   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 [[? ?r7   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 )Nr4  r   r   r>  )r[   r   cases)r  r   rQ  s      r5   r0  &TestSomeDistanceFunctions.setup_method  s)    HH_%HH_%fX
r7   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 )Nrm   ru  r5        ?gqaz@r   gw@rq  gR"6@i`  i  i^  i  uint16)rJ  r$   r
   r[   r   r	   r   )	r  r   rQ  dist1dist1p5dist2dist0p25rs   r   s	            r5   rv  (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r7   c                     U R                    H0  u  p[        X5      n[        U[        R                  " S5      5        M2     g )Nr  )rJ  
weuclideanr
   r[   r  r  r   rQ  r  s       r5   re  (TestSomeDistanceFunctions.test_euclidean  s.    JJDAa#Dbggaj1 r7   c                 \    U R                    H  u  p[        X5      n[        US5        M     g )Nr>  )rJ  wsqeuclideanr
   rV  s       r5   test_sqeuclidean*TestSomeDistanceFunctions.test_sqeuclidean  s&    JJDA%Dc* r7   c           
          U R                    HM  u  p[        X5      n[        USS[        R                  " S5      [        R                  " S5      -  -  -
  5        MO     g )Nr   g      2@      )rJ  wcosiner
   r[   r  rV  s       r5   rK  %TestSomeDistanceFunctions.test_cosine  sD    JJDA1=DcDBGGBK"''"+4M,N&NO r7   c                     [        [        SS/SS/SS9[        5      (       d   e[        [        SS/SS/5      [        5      (       d   eg )Nrm   F)centered)r  wcorrelationfloatr_  r  s    r5   test_cosine_output_dtype2TestSomeDistanceFunctions.test_cosine_output_dtype!  sH    ,1v1vFNNNN'1a&1a&159999r7   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   )UUUUUUri  gUUUUUU@r   )r[   r   rJ  rc  r
   r  r   )r  xmymr   rQ  r  s         r5   r~  *TestSomeDistanceFunctions.test_correlation&  sb    XXn%XX9:JJDA%DcBFF2Nd2hb>Q,R&RS r7   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  rn  rn  rn  r  rn  r  rn  r  r  rh  rn  r  r   r  r  rn  r  r  rn  r  rn  rn  rn  rn  rn  rn  r  )%r   r   r   r   r   r   rh  r   r   r   rh  rh  rh  r   rh  r   rh  r   r   r  rh  r   r   r   r   rh  r   r   rh  r   rh  rh  rh  rh  rh  rh  r   r   r  )r[   r   r   finfor   rj  rV  s       r5   test_correlation_positive3TestSomeDistanceFunctions.test_correlation_positive-  sk    HH I J HH I J 1 D9B"**!5!9!9999999r7   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  rr  r   rQ  s       r5   test_corr_dep_complex/TestSomeDistanceFunctions.test_corr_dep_complex8  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 )Nr4  rI  )r   r   r  )r   r   r   )r  r   r   g      @)r[   r   rJ  r#   r
   r  )r  r   rQ  vir  s        r5   test_mahalanobis*TestSomeDistanceFunctions.test_mahalanobisA  sa    HH_%HH_%XXIJJJDAqR(Dbggcl3 r7   )rJ  N)r   r  r  r   r0  rv  re  rZ  rK  re  r~  rp  r#  r  r  filterwarningsr  r   r   rv  rz  r!  rj   r7   r5   rG  rG    s    H&2
+
P
:
T	: [[[[ 89[[Vk6%:; < : 4r7   rG  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	)
TestSquareFormiJ  c                 L    U R                    H  nU R                  U5        M     g ro   )checked_dtypescheck_squareform_matrixr  rI   s     r5   test_squareform_matrix%TestSquareForm.test_squareform_matrixM       ((E((/ )r7   c                 L    U R                    H  nU R                  U5        M     g ro   )r  check_squareform_vectorr  s     r5   test_squareform_vector%TestSquareForm.test_squareform_vectorQ  r  r7   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   rH   r   rm   rm   r   g@)rm   )r[   zerosr   r	   r   rI   r   r   )r  rI   ArAs       r5   r  &TestSquareForm.check_squareform_matrixU  s    HHV5)]RXXt$RXXu%HHV5)]RXXt$RXXu%HHq#ha)7]RXXt$RXXu%2rxxU;<r7   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  rH   r  r   g @)r   r   )r[   r  r   r	   r   rI   r   r   )r  rI   r  rvs       r5   r  &TestSquareForm.check_squareform_vectorf  s    HHT']RXXv&RXXu%2u%HHcU%(]RXXv&RXXu%2rxx!SC8(<EJKr7   c                 L    [        SS5       H  nU R                  U5        M     g )Nr   r  )r~   check_squareform_multi_matrixr  ns     r5   test_squareform_multi_matrix+TestSquareForm.test_squareform_multi_matrixs  s     q!A..q1 r7   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   rm   r   r   r   )r[   r   r   r	  r	   lenr   r   r   r  r~   )
r  r  r}  Yr  Yrskr   js
             r5   r  ,TestSquareForm.check_squareform_multi_matrixw  s    IINN1a AS\1%qM]GGa<!''177BHH-SVQS]A&QqT1Q4 q!A$A1q5!A$'6 a4!$/FA a4!, (  r7   rj   N)r   r  r  r   r[   r   r`   int32int8r+  r  r  r  r  r  r  r  r!  rj   r7   r5   r~  r~  J  sA    jj"**bhhFN00="L2-r7   r~  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~   r[   r   r   r	  r	   r   )r  r  r}  r  s       r5   test_num_obs_y_multi_matrix'TestNumObsY.test_num_obs_y_multi_matrix  s>    q"A		q!$A"A1q) r7   c                     [         R                  " [        5         U R                  S5        S S S 5        g ! , (       d  f       g = fNrm   )r#  rH  r}   check_yr  s    r5   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    r5   test_num_obs_y_2TestNumObsY.test_num_obs_y_2  s     	Q r7   c                 8    [        U R                  S5      5        g )Nr   r  r  s    r5   test_num_obs_y_3TestNumObsY.test_num_obs_y_3      Q r7   c                 8    [        U R                  S5      5        g Nr  r  r  s    r5   test_num_obs_y_4TestNumObsY.test_num_obs_y_4  r  r7   c                 L    [        SS5       H  nU R                  U5        M     g )Nr     )r~   minit)r  r   s     r5   test_num_obs_y_5_10TestNumObsY.test_num_obs_y_5_10  s    q"AJJqM r7   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  rm   r  i   setr~   addr#  rH  r}   bad_yr  rs   r  r   s       r5   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 ro   r  r  s     r5   r  TestNumObsY.minit  r  r7   c                 V    [         R                  R                  U5      n[        U5      $ ro   )r[   r   r   r   r  r  rQ  s      r5   r  TestNumObsY.bad_y  s    IINN1|r7   c                 <    [        U R                  U5      5      U:H  $ ro   )r   make_yr  s     r5   r  TestNumObsY.check_y  s    Q(A--r7   c                 P    [         R                  R                  XS-
  -  S-  5      $ Nrm   r   r[   r   r   r  s     r5   r  TestNumObsY.make_y  s     yy~~qE{q011r7   rj   N)r   r  r  r   r  r  r  r  r  r  r  r  r  r  r  r!  rj   r7   r5   r  r    s9    *!
!!	"!.2r7   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 )Nrm   r  r  r   )r~   r[   r   r   r	  r   r   r  r   r	   r   )r  r  r}  r  r  s        r5   test_num_obs_dm_multi_matrix)TestNumObsDM.test_num_obs_dm_multi_matrix  s`    q"A		q!$A"A1A!|aggqww'A* r7   c                 8    [        U R                  S5      5        g )Nr   r   check_Dr  s    r5   test_num_obs_dm_0TestNumObsDM.test_num_obs_dm_0      Q r7   c                 8    [        U R                  S5      5        g r  r  r  s    r5   test_num_obs_dm_1TestNumObsDM.test_num_obs_dm_1  r  r7   c                 8    [        U R                  S5      5        g r  r  r  s    r5   test_num_obs_dm_2TestNumObsDM.test_num_obs_dm_2  r  r7   c                 8    [        U R                  S5      5        g r  r  r  s    r5   test_num_obs_dm_3TestNumObsDM.test_num_obs_dm_3  r  r7   c                 8    [        U R                  S5      5        g r  r  r  s    r5   test_num_obs_dm_4TestNumObsDM.test_num_obs_dm_4  r  r7   c                 <    [        U R                  U5      5      U:H  $ ro   )r   make_Dr  s     r5   r  TestNumObsDM.check_D  s    $++a.)Q..r7   c                 @    [         R                  R                  X5      $ ro   r  r  s     r5   r  TestNumObsDM.make_D  s    yy~~a##r7   rj   N)r   r  r  r   r  r  r  r  r  r  r  r  r!  rj   r7   r5   r  r    s*    +!!!!!/$r7   r  c                     [        U SS9$ NT)throw)r   )r'  s    r5   is_valid_dm_throwr    s    q%%r7   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  rH   r[   r  r   r#  rH  r}   r  r  r'  s     r5   $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  rH   Fr[   r  r   r	   r   r  s     r5   $test_is_valid_dm_improper_shape_1D_F2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s$    HHT,[^U+r7   c                     [         R                  " S[         R                  S9n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = fNr   r   r   rH   r  r  s     r5   $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  rH   Fr  r  s     r5   $test_is_valid_dm_improper_shape_3D_F2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s$    HHYbjj1[^U+r7   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   )	r[   r   r   r   r~   r#  rH  r}   r  r  rQ  r'  r   s       r5   #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)r[   r   r   r   r~   r	   r   r  s       r5   #test_is_valid_dm_nonzero_diagonal_F1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sF    IINN2qMq!AAdG [^U+r7   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   rm   rm   rm   r   )r[   r   r   r   r#  rH  r}   r  r  rQ  r'  s      r5   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  rm   r  Fr[   r   r   r   r	   r   r  s      r5   test_is_valid_dm_asymmetric_F+TestIsValidDM.test_is_valid_dm_asymmetric_F  s<    IINN2qMD'A+$[^U+r7   c                 t    [         R                  " S[         R                  S9n[        [	        U5      S5        g )Nr  rH   Tr  r  s     r5   test_is_valid_dm_correct_1_by_1-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s$    HHV2::.[^T*r7   c                     [         R                  R                  S5      n[        U5      n[	        [        U5      S5        g )Nrm   Tr  r  s      r5   test_is_valid_dm_correct_2_by_2-TestIsValidDM.test_is_valid_dm_correct_2_by_2  +    IINN1qM[^T*r7   c                     [         R                  R                  S5      n[        U5      n[	        [        U5      S5        g Nr   Tr  r  s      r5   test_is_valid_dm_correct_3_by_3-TestIsValidDM.test_is_valid_dm_correct_3_by_3#  r%  r7   c                     [         R                  R                  S5      n[        U5      n[	        [        U5      S5        g )N   Tr  r  s      r5   test_is_valid_dm_correct_4_by_4-TestIsValidDM.test_is_valid_dm_correct_4_by_4(  r%  r7   c                     [         R                  R                  S5      n[        U5      n[	        [        U5      S5        g )Nr  Tr  r  s      r5   test_is_valid_dm_correct_5_by_5-TestIsValidDM.test_is_valid_dm_correct_5_by_5-  s+    IINN2qM[^T*r7   rj   N)r   r  r  r   r  r  r  r  r  r  r  r  r   r#  r(  r,  r/  r!  rj   r7   r5   r  r    sC    !
,!
,!,!,++
+
+
+r7   r  c                     [        U SS9$ r  )r   )rQ  s    r5   is_valid_y_throwr2  3  s    at$$r7   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)TestIsValidYi7  c                     [         R                  " S[         R                  S9n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr   r   rH   r[   r  r   r#  rH  r}   r2  r  rQ  s     r5   #test_is_valid_y_improper_shape_2D_E0TestIsValidY.test_is_valid_y_improper_shape_2D_E<  s6    HHWBJJ/]]:&Q '&&r   c                 t    [         R                  " S[         R                  S9n[        [	        U5      S5        g )Nr6  rH   Fr[   r  r   r	   r   r8  s     r5   #test_is_valid_y_improper_shape_2D_F0TestIsValidY.test_is_valid_y_improper_shape_2D_FA  s$    HHWBJJ/Z]E*r7   c                     [         R                  " S[         R                  S9n[        R                  " [
        5         [        U5        S S S 5        g ! , (       d  f       g = fr  r7  r8  s     r5   #test_is_valid_y_improper_shape_3D_E0TestIsValidY.test_is_valid_y_improper_shape_3D_EE  s6    HHYbjj1]]:&Q '&&r   c                 t    [         R                  " S[         R                  S9n[        [	        U5      S5        g r  r<  r8  s     r5   #test_is_valid_y_improper_shape_3D_F0TestIsValidY.test_is_valid_y_improper_shape_3D_FJ  s$    HHYbjj1Z]E*r7   c                 P    U R                  S5      n[        [        U5      S5        g )Nr   Tcorrect_n_by_nr	   r   r8  s     r5   test_is_valid_y_correct_2_by_2+TestIsValidY.test_is_valid_y_correct_2_by_2N       "Z]D)r7   c                 P    U R                  S5      n[        [        U5      S5        g r'  rF  r8  s     r5   test_is_valid_y_correct_3_by_3+TestIsValidY.test_is_valid_y_correct_3_by_3R  rJ  r7   c                 P    U R                  S5      n[        [        U5      S5        g )Nr  TrF  r8  s     r5   test_is_valid_y_correct_4_by_4+TestIsValidY.test_is_valid_y_correct_4_by_4V  rJ  r7   c                 P    U R                  S5      n[        [        U5      S5        g )Nr  TrF  r8  s     r5   test_is_valid_y_correct_5_by_5+TestIsValidY.test_is_valid_y_correct_5_by_5Z  rJ  r7   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       r5   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  )r[   r   r   r   r  s      r5   r  TestIsValidY.bad_yg  s!    IINN1!4((r7   c                 T    [         R                  R                  XS-
  -  S-  5      nU$ r  r  r  s      r5   rG  TestIsValidY.correct_n_by_nk  s$    IINNAQKA-.r7   rj   N)r   r  r  r   r9  r=  r@  rC  rH  rL  rO  rR  rU  r  rG  r!  rj   r7   r5   r4  r4  7  s9    
 
+ 
+****")r7   r4  ro  )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)Nrm   r   r   r  )r#  rH  r}   r$   ru  s    r5   
test_bad_pr\  p  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#  rH  r}   r)   rj   r7   r5   test_sokalsneath_all_falser^  y  s&    	z	")+@A 
#	"	"s	   5
Ac                  l    [        [        / SQ/ SQ5      S5        [        [        / SQ/ SQ5      S5        g )Nrm   r   r   r   r  r+  rm   rm   rm   r   r   rm   r   rm   r   r   )r	   	wcanberrarj   r7   r5   r&  r&    s$    9i0!4<6:r7   c                  h    [        [        / SQ/ SQ5      SSS9  [        [        / SQ/ SQ5      SSS9  g )	Nr`  ra  UUUUUU?   decimalrb  rc  r  )r
   wbraycurtisrj   r7   r5   test_braycurtisrk    s(    Iy962NL,?bQr7   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)rm   rm   rm   r   r   r   r5  r]  rh  r   Input vector should be 1-Drt  r  r   iIr  )r[   r   r
   rY  rU  r  r#  rH  r}   newaxisrG  r   r   r   r   )r  r  r   rsrQ  d1d2s          r5   test_euclideansrs    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   rm   rc  r#  rH  r}   whammingr   rQ  s     r5   test_hamming_unequal_lengthry    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)Nru  rc  z/'w' should have the same length as 'u' and 'v'.rt  rv  )ur  r   r[  s       r5   "test_hamming_unequal_length_with_wr|    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spamr  r~  r  r  r  r  r  r  r  r~  r~  r  r~  r~  r~  r~  r~  r  z|S4rH   )r~  r  r  r~  r~  r  r  r  r  r~  r  r~  r  r~  r  r  r~  r  r  r~  g?)r[   r   r   rw  )rs   r   desireds      r5   test_hamming_string_arrayr    sK    
 B 	A 	 B 	A GHQNG,r7   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$   rm   )r6   ro  r   )r6   ro  rb  r  )r[   r   r   r   r   )arr_inp0c0p1c1s        r5   test_minkowski_wr    sq    XX 223 4F 
vkQ$	7B	vkQ$	?B	vkQ	/B	vkQ	7BB'B'r7   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+  rH   r   r   )float16float128)r[   r  int16r  r  rY  asarrayr   r   rI   floatinguint8rN  uint32uint64iinfomaxr	   r   r`   	complex64
complex128hasattrr   getattr)r   rQ  rI   dumaxrq  rr  dtypess           r5   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$ r7   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	   )ro  r   r   r   rQ  rO  rQ  s          r5   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?rm   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?rp  r   g      4@r  )r
   r#  r$  r(   )	ntfnftnttnffexpectedactuala1a2r   s	            r5   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)Nr4  r6  r:  g3333336@gL7@g333333F@)r[   r  r  r&  r   r   r   )r6   rJ  r  s      r5   test_modifies_inputr  "  ss     
\$$') 
*B ggiG	&	!bf 
"	&	!b 
"r#	 
"	!	!	!s   A>B>
B
Bc                 t   [         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[         R                  " S5      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  MA  [        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       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N`= f! , (       d  f       GM3  = f)Nr4  r6  r:  r  r   )ro  r  r  r   r  r'   r  r#   ro  r$   )r[   r  r#  rH  r   r   r   r&  )r6   rJ  rR  r   s       r5   test_Xdist_deprecated_argsr  1  s<    
\$$') 
*B
 
y	!bfb! 
" 
y	!b" 
"  rzz"~&CZFl24KFm$;3J6[#8]]9%!&)bf// * & ]]9%!&)b+F+ * &%   
"	! 
"	! *) &%
 *) &%s_   E-E#F+E49F#F'/F<F'
E #
E14
F>F
F	
F$ F''
F7	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)	NrP   r  r   rm   )r'   r#   r!   not applicablerF  r  )r]   r[   r   r   r#  r  rI  rH  r}   r&  r   r   )r6   r}  r   r  s       r5   test_Xdist_non_negative_weightsr  P  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`  rH   rm   rn  rt  r  r   r   r   r  )r   r   r[   r   r	   rI   rw   r#  rH  r}   rG  r   rx  s     r5   test__validate_vectorr  b  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+  rH   r   r  r+   rm   )r[   r   r+  r  r   r	   r   )r   r  s     r5   test_yule_all_samer  |  sq    
d#AadAaDA8O8aASEaeQrUF#AcUGr7   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?rM  r   r   rm   gД?T)r   keepdims)rm   r   r   r  )r  r+     rg   )	   r        )   r]  rg  r  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   r[   r   )rs   r   s     r5   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;r7   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)rm   r   r   )r   r   r   r   r%  )r[   r   r   r   r   r   r  )arr_1arr_2r  r  s       r5   test_gh_17703r    si    HHYEHHYEE!HE>&1FF%2=='=='8FF%r7   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  rH   F)writer  )r#  r  r[   rG  r   setflagsr&  r  scipyspatialdistance)r6   r   s     r5   test_immutable_inputr    si    ??$%
		"BJJ'AJJUJ	&	!&&/: 
"	!	!s   *B
Bc                  >   [         R                  " / SQ5      n [         R                  " / SQ5      n[         R                  " / SQ5      n[        XUS9n[	        US5        [        [         R                  " U 5      [         R                  " U5      SUS9n[	        XC5        g )N)r   r   rm   rm   )r   rm   rm   r   )rM  r7  gffffff?g?r  g2)^ ?r+   )r6   r   )r[   r   r  r+   r   r   r  )rs   r   r   r  r  s        r5   test_gh_23109r    ss    
A
A


'(AAAHH012==#==# A'F F%r7   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  rM   pdist-jaccardr    r  rB  r
  s        r5   test_pdist_jaccard_random%TestJaccard.test_pdist_jaccard_random  s2    "#_%I&s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rG  r
  s        r5   !test_pdist_jaccard_random_float32-TestJaccard.test_pdist_jaccard_random_float32  ;    JJr-./_%I&s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g Nr  rM   r  test_jaccardr  rB  r  s        r5   test_pdist_jaccard_random_nonC*TestJaccard.test_pdist_jaccard_random_nonC  s2    "#_%N+s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  r  r
  s        r5   test_pdist_djaccard_random&TestJaccard.test_pdist_djaccard_random  r  r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  rG  r
  s        r5   "test_pdist_djaccard_random_float32.TestJaccard.test_pdist_djaccard_random_float32  r  r7   c                     Sn[        [        R                  " S5      S5      n[        [        R                  " S5      X!S9  g )Nrb  r  r   r    r  r  r   r[   r  r   r  rj  r  s      r5   test_pdist_djaccard_allzeros(TestJaccard.test_pdist_djaccard_allzeros  s.    "((6"I.a2r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCUS9  g r  r  r  s        r5   test_pdist_djaccard_random_nonC+TestJaccard.test_pdist_djaccard_random_nonC  s;    JJr-./_%N+s3r7   c                     Sn[        [        R                  " S5      S5      n[        [        R                  " S5      X!S9  g )Nrb  r  r  r  r  r  r  s      r5   !test_pdist_djaccard_allzeros_nonC-TestJaccard.test_pdist_djaccard_allzeros_nonC  s.    "((6"N3a2r7   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  wjaccardr[   r   r+  r   r  s      r5   test_pdist_jaccard_mtica1%TestJaccard.test_pdist_jaccard_mtica1  sd    RXXo.XXo.0bhhd;hhd;=3QU3Cae4r7   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      r5   test_pdist_jaccard_mtica2%TestJaccard.test_pdist_jaccard_mtica2	  sd    RXXi(XXi(*bhhy5hhy575qu5E6r7   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   rf  r  r    )	r[   r   ro  rd  rj  r   r    r   r   )r  r   rQ  rj  s       r5   test_non_01_inputTestJaccard.test_non_01_input	  ss     HH]#HH]#hhuo!!s5qcA3	2cUG<qfi03%8r7   rj   N)r   r  r  r   r  r  r  r  r  r  r  r  r  r  r  r!  rj   r7   r5   r  r    s9    444443
43
579r7   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        r5   test_pdist_chebyshev_random)TestChebyshev.test_pdist_chebyshev_random	  s3    !"&';'s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr  r  r  r   r   rf  r  r
  s        r5   #test_pdist_chebyshev_random_float321TestChebyshev.test_pdist_chebyshev_random_float32!	  sB    JJr,-.&';'sGaKHr7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nr  r  r  test_chebyshevr  r+  r  s        r5    test_pdist_chebyshev_random_nonC.TestChebyshev.test_pdist_chebyshev_random_nonC(	  s4    !"&'+,s3r7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nrz  r  pdist-chebyshev-irisr   r  r+  r
  s        r5   test_pdist_chebyshev_iris'TestChebyshev.test_pdist_chebyshev_iris/	  s1    vJ+,;'s3r7   c                     Sn[         R                  " [        S   5      n[        S   n[        US5      n[	        XCU[
        S:  S9  g )Nr   r  r  r   r   rf  r  r
  s        r5   !test_pdist_chebyshev_iris_float32/TestChebyshev.test_pdist_chebyshev_iris_float326	  s@    JJr&z"+,;'sGaKHr7   c                 X    Sn[         S   n[         S   n[        US5      n[        XCUS9  g )Nrz  r  r  r  r  r+  r  s        r5   test_pdist_chebyshev_iris_nonC,TestChebyshev.test_pdist_chebyshev_iris_nonC=	  s2    vJ+,+,s3r7   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   rm   r  r   r   r  r	   r   r   r   r  r   rQ  r   s       r5   test_weightedTestChebyshev.test_weightedD	  sX     YqQ'+UA6;!4qc:UA3[A6!>r7   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  rm  r   r   r  r  r  s       r5   test_zero_weightTestChebyshev.test_zero_weightN	  sV    YqQ'+UA6;!4qc:UA3[A6!>r7   rj   N)r   r  r  r   r  r  r  r  r  r  r  r  r!  rj   r7   r5   r  r  	  s,    4I44I4??r7   r  ro   )	NNFTFFFFN)	functoolsr   r   os.pathrU   r  r  r   r  numpyr[   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-   scipy.conftestr.   fixturer6   rS   r   _tdist_ytdistr]   re   rk   r   r   r   r   r   assert_allclose_forgivingr   r  r  strr&  r  ri  rC  r	  r  r  rw  r  r  
wcityblock
wchebyshevr_  rc  wkulczynski1r  rU  rY  rj  rd  r  wsokalmichenerr  r(  r  rG  r~  r  r  r  r  r2  r4  r  r  r\  r^  r&  rk  rs  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rj   r7   r5   <module>r2     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)uA uAp	X? X?t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=? =?r7   