
    -iiJ                       d dl mZmZ d dlZd dlZd dlZd dlZd dlZd dl	Z
d dlmZ d dlmZmZmZmZmZmZmZmZ d dlZd dlZd dlmZmZmZmZmZmZmZm Z m!Z! d dlm"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9  ej:        e!d	
          d             Z;g dZ< e
j=        g dg dg dg dg dg dgd          Z> ee>          Z?i Z@d ZA eA             d ZBdYdZC	 	 	 	 	 dZdZDd ZEd ZFdYdZG eed          ZHeHd  dfd!ZId"dd# d$ddddddddddd%d eHfd&ZJ eJed'd(          ZK eJed'dd)          ZL eJed'dd'*          ZM eJed'ddd'+          ZN eJe/          ZO eJe*d,          xZPZQ eJe4          ZR eJe(          ZS eJe%          ZT eJe$          ZU eJe'          ZV eJe&          ZW eJe+          ZX eJe)d-          ZY eJe3d-          ZZ eJe"          Z[ eJe#d-          Z\ eJe2          Z] eJe0          Z^ G d. d/          Z_ G d0 d1          Z` G d2 d3          Za G d4 d5          Zb G d6 d7          Zc G d8 d9          Zdd: Ze G d; d<          Zfd= Zg G d> d?          Zheji        j                    d@g dA          dB             ZkdC ZldD ZmdE ZndF ZodG ZpdH ZqdI ZrdJ ZsdK ZtdL ZudM ZvdN ZwdO ZxdP ZydQ ZzdR Z{dS Z|dT Z} G dU dV          Z~ G dW dX          ZdS )[    )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mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalsneathsqeuclideanyule)np_longnp_ulong)skip_xp_invalid_argsession)paramsscopec                     | j         S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)requests    g/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_distance.pymetricr4   D   s    
 =    )zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r     m         )r6   r   '        )r7   r;   r     4     )r8   r<   r?   r      e  )r9   r=   r@   rB   r     )r:   r>   rA   rC   rD   r   doubledtypec                     t           D ]} |                     dd                              dd          }t          j                            t          j                            t                    d|           }t          |          }t          j	        |          t          |<   |                                 t          j        t          d                   t          d<   t          j        t          d                   t          d<   t          j        t          d                   t          d<   t          t          d	                   t          d	<   t          t          d
                   t          d
<   d S )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       r3   load_testing_filesrc   {   s     zz&"%%--eR88w||BGOOH55vrBB$ZZ:b>>4




 hr*='>??BXb);&<==B "
2.B+C D DB#B'8$9::B%b);&<==Br5   c                  <    t          j        d          j        dk     S )Nr      )rY   intpitemsize r5   r3   	_is_32bitri      s    71::""r5   c                     d  D              |d  D              d}t          d  D                        |dk     rJt           fd D                       st          d          t           d         j                  |         } |fz   S )Nc                 6    g | ]}t          j        |          S rh   )rY   
asanyarray.0as     r3   
<listcomp>z!_chk_asarrays.<locals>.<listcomp>   s"    ///1bmA///r5   c                 P    g | ]#}|j         d k    rt          j        |          n|$S    )ndimrY   ravelrm   s     r3   rp   z!_chk_asarrays.<locals>.<listcomp>   s>     # # # "#1"(1+++! # # #r5   r   c              3   >   K   | ]}t          j        |          V  d S N)rY   
atleast_1drm   s     r3   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s,      442=##444444r5   c              3   D   K   | ]}|j         d          j         k    V  dS )r   N)rt   )rn   ro   arrayss     r3   ry   z _chk_asarrays.<locals>.<genexpr>   s0      <<16VAY^+<<<<<<r5   z(array ndim must be the same for neg axis)tupleall
ValueErrorrangert   )r{   axiss   ` r3   _chk_asarraysr      s    /////F|# #!# # #44V44444Faxx<<<<V<<<<< 	IGHHHVAY^$$T*TGr5   FTc
                    t          |           }
|
d d         |
d         c} |o| }|s|rt          d | D                       }|rFd | D             }t          |          r+d}d}t          d t          | |          D                       } t	          j                  n/|r&t	          j        | d         j                           n| fz   S |	rt                    |rt          |           t          fd| D                       st          d	          |r'dk                                     rt          d
          |rRt	          j        dk              d         j        j        k     r$t          fd| D                       }          |rdk    
                                rd | fz   S )Nr   c              3   v   K   | ]4}t           j                            |          t           j        j        uV  5d S rw   )rY   magetmasknomaskrm   s     r3   ry   z_chk_weights.<locals>.<genexpr>   s9      QQQBEMM!,,BEL@QQQQQQr5   c                 Z    g | ](}t          j        t          j        |                    )S rh   )rY   isnansumrm   s     r3   rp   z _chk_weights.<locals>.<listcomp>   s*    888ABHRVAYY''888r5   Tc              3   b   K   | ]*\  }}|rt           j                            |          n|V  +d S rw   rY   r   masked_invalid)rn   ro   has_nans      r3   ry   z_chk_weights.<locals>.<genexpr>   s\       D D)q' 7>D25//2221 D D D D D Dr5   r   c              3   F   K   | ]}j         |j                  fk    V  d S rw   shape)rn   ro   r   weightss     r3   ry   z_chk_weights.<locals>.<genexpr>   s3      AAQw} 00AAAAAAr5   z*weights shape must match arrays along axiszweights cannot be negativec              3   F   K   | ]}t          j        |           V  dS )r   N)rY   take)rn   ro   r   pos_weightss     r3   ry   z_chk_weights.<locals>.<genexpr>   s4      NN!271k===NNNNNNr5   rs   )r   anyr|   ziprY   rl   onesr   _freq_weights_weight_maskedr}   r~   nonzerosize)r{   r   r   force_weightssimplify_weightspos_only	neg_check
nan_screenmask_screenddofchkedhas_nansr   s    ``         @r3   _chk_weightsr      sN   
 &t,,,E":uRyLFD'=,= R[ RQQ&QQQQQ D88888x== 	DK M D D-0-B-BD D D D DF -((	 ('&)/$/00$'' )(( 8 $77AAAAA&AAAAA GEFFF 7gk&&(( 75666 +j1--a0gl**NNNNNvNNNNNFk*G W\..00 WdO##r5   c                     | | S |                      t                    }| |k                                    rt          d|            |S )Nz0frequency (integer count-type) weights required )astypeintr   r~   )r   int_weightss     r3   r   r      sT    ..%%K;##%% WUGUUVVVr5   c                    dt          j        |          }| D ]}t           j                            |          }|t           j        j        u r5|j        dk    rCt          fdt          |j                  D                       }|                    |          }|d|	                    t                    z
  z  }|S )Nr   rs   c              3   (   K   | ]}|k    |V  d S rw   rh   )rn   ir   s     r3   ry   z!_weight_masked.<locals>.<genexpr>   s'      CC1dQCCr5   r   )rY   rl   r   r   r   rt   r|   r   r   r   r   )r{   r   r   ro   	axis_masknot_axess     `   r3   r   r      s    |mG$$G - -EMM!$$	$$6A::CCCCafCCCCCH!844I1y'',,,,Nr5   c                 2  	
 d | D             } t          j        |t           j                  }t           j                            |          }d 	| d         j                 
t          
fd| D                       s
J d            t          t          |          
z            D ]i}|	                    
|z             |         }|
                                }||z  |<   t          j        |d|z
  |z            }	fd| D             } j| |fS )	Nc                     g | ]G}t          j        |j        t           j                  r|                    t           j                  n|HS rh   )rY   
issubdtyperG   integerr   float64)rn   arrs     r3   rp   z_rand_split.<locals>.<listcomp>   sS     * * * )+ci(L(L cjj$$$* * *r5   rF   c                      t          j        t          j         |                    }|                     fdt	           j                  D                       S )Nr   c                 :    g | ]}|k    rj         |         nd S rr   r   )rn   r   ro   r   s     r3   rp   z/_rand_split.<locals>.mytake.<locals>.<listcomp>   s;     7 7 7#$ ./$YYqwqzzA 7 7 7r5   )rY   rl   r   reshaper   rt   )ro   ixr   records   ` ` r3   mytakez_rand_split.<locals>.mytake   sm    rwq"488899~~ 7 7 7 7 7(-af7 7 7 8 8 	8r5   r   c              3   :   K   | ]}|j                  k    V  d S rw   r   )rn   ro   r   n_obss     r3   ry   z_rand_split.<locals>.<genexpr>   s.      66!qwt}%666666r5   z#data must be aligned on sample axis      ?c           
      V    g | ]%}t          j        | |                      &S r   rY   append)rn   ro   r   r   split_ixs     r3   rp   z_rand_split.<locals>.<listcomp>   sR     8 8 8+, )Avva===!%' ' ' 8 8 8r5   )rY   arrayr   randomRandomStater   r}   r   r   randintrandr   )r{   r   r   	split_perseedseeded_randr   prev_wqr   r   r   s     `      @@@r3   _rand_splitr      sk   * *"(* * *F hwbj111G)''--K8 8 8
 1IOD!E66666v66666 1 101 1 13y>>E)** 8 8&&uqy11"J)Gb1f%6778 8 8 8 8 8068 8 87?r5   h㈵>atolc                     | S rw   rh   xs    r3   <lambda>r     s     r5   c                 T    ||           } ||          }	 t          j        ||k                                              r |||           d S d S # t          $ r  |||           Y d S t          t
          f$ r, t          ||          D ]\  }}t          |||           Y d S w xY w)N)compare_assert)rY   r   r   AttributeError	TypeErrorr~   r   _rough_check)	ro   br   keywcheck_acheck_ba_ib_is	            r3   r   r     s   c!ffGc!ffGB8Gw&''++-- 	-N7G,,,,,	- 	- ) ) )w((((((z" B B BGW-- 	B 	BHCc.AAAAA	B 	B 	BBs   6A B'+8B'&B'   c                     | S rw   rh   r   s    r3   r   r     s    1 r5   r   r   c                 |    	
 t                     	 
fd            }|S )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                      | i |}| d          }| d          }|                     %d           }|                     d          t          ||dd          }|d d         |d         |d         c}}$rd |D             }	 t          |          |z   } r||%<   t          | | i |           rp|dz  |%<   t          | | i |           |d	z  |%<   	 t          | | i |           n.# t          $ r!} t          |          |||f          |d }~ww xY wrt          ||" 
          \  }}	||	d |j        <   d|	|j        d <   t          |          |z   }
|	|%<   t          | |
i |           |D ]O}t          d           g|j	        z  }t          |j        d           |<   t          |          }||         dz  ||<   Pt          |          |z   }
t          | |
i |           |D ]Y}t          d           g|j	        z  }t          |j        d           |<   t          |          }||         t          j        z  ||<   Z|                     dd           dk    r,r*t          |          |z   }
t          | |
i |           rUd |D             }t          |          |z   }
t          | |
i |           rd |%<   t          | |
i |           ~~
~	rXfd|D             }t          j        ||          dz  }t          |          |z   }||%<   t          | |i |           ~~~#rN"dk    rHt          ||" 
          }|\  }}t          |          |z   }||%<   t          | |i |           n9# t          $ r,}!s t          j        j         d| d           Y d }~nd }~ww xY w|S )Nr   T)r   r   r   r   r   c                 Z    g | ](}t          j        |                                          )S rh   )rY   rx   squeezerm   s     r3   rp   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>+  s*    AAAQbmAIIKK00AAAr5   )r   g     @Y@gB`"۹?)r   r   r   e   
nan_policyomitc                 L    g | ]!}t           j                            |          "S rh   r   rm   s     r3   rp   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>Y  s(    !N!N!Na"%"6"6q"9"9!N!N!Nr5   c                 >    g | ]}t          j        ||           S r   r   )rn   ro   r   s     r3   rp   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>c  s*    IIIQbi14888IIIr5          @z NotImplemented weights:    )
stacklevel)getr   r|   r   	Exceptiontyper   r   slicert   rY   nanr   NotImplementedErrorwarningswarn__name__)&argskwargsresultr{   restr   r   e
dud_arraysdud_weightsdud_argsro   indexer
dup_arraysdup_weightsdup_argssplitsplit_arrayssplit_weights
split_argsr   
const_testdefault_axisdud_testdup_testr_   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args&                       @r3   wrappedz _weight_checked.<locals>.wrapped  st   T$V$$gvgFGG}**Z..zz&,//VW4+/TC C C %crc
E"IuRy 	BAA&AAAFJ	,==4'D C%,z"VRR%8%8%8cBBBB ?%,u_z"VRR%8%8%8cBBBB%,u_z"? T)<V)<)<#FFFFF  ? ? ?!$q''1fg"677Q>?  "6*5fgt@IPT+V +V +V'
K-4MW\M*-.GLMM* ,,t3%0z"VRR%<V%<%<#FFFF# 2 2A$T{{maf4G$)',$=$=GDM#GnnG!"7c!1AgJJ ,,t3VRR%<V%<%<#FFFF# 5 5A$T{{maf4G$)',$=$=GDM#GnnG!"7bf!4AgJJ::lD11V;;;$Z0047H X)@)@)@cJJJJ O!N!N:!N!N!NJ$Z0047H X)@)@)@cJJJJ# O-1z*$VRR-DV-D-D#NNNN+  6IIII&III
 i99C? ,,t3%0z"VRR%<V%<%<#FFFFj+  Ii!mm#FGT.7dD D D.3+m"<0047
%2z"VRR%>v%>%>CHHHH" 	, 	, 	,  ,JJqJJ)*, , , ,		, s>   	AN0 %C> =N0 >
D)D$$D))JN0 0
O&:"O!!O&)r   )r_   r  r  r   r  r   r  r  r  r  r  r  r  r  r  r   r   r   r  s   `````````````````  r3   _weight_checkedr    s     2YYY Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y YYt Nr5   rs   )r  r   )r  r   r  )r  r   r  )r  r   r  r  )r  )r  c                   &   e Zd Zd Zd Zd Zd Zej        	                    ddddd	d
dde
j        g          d             Zd Zd Zd ZddZd Zd Zej                             ej                    dk    d          d             Zd Zd ZdS )	TestCdistc                     g d| _         t          t          t          j        t          j        gt          t          j        t          j        gt          j        t          j        gt          j        gd| _        d S N)rN   rO   rP   rM   rL   )booluintr   r^   rnd_eo_namesr+   r*   rY   r^   r   valid_upcastsselfs    r3   setup_methodzTestCdist.setup_method  ^    1 1 1 (0"*bj&Q'.
BJ&G&(j"*%=*,*7 7r5   c                    g dg dg dg}g dg dg dg}dt          j        d          d	}dgd
z  }t          j        t                    5  t          ||fd|i| d d d            n# 1 swxY w Y   t          j        t                    5  t          ||fdt          |          i| d d d            n# 1 swxY w Y   t          j        t                    5  t          ||fdd|z   i| d d d            n# 1 swxY w Y   t          j        t                    5  t          ||g|R d|i d d d            n# 1 swxY w Y   t          j        t                    5  t          ||g|R dt          |          i d d d            n# 1 swxY w Y   t          j        t                    5  t          ||g|R dd|z   i d d d            d S # 1 swxY w Y   d S )Nr   r         @333333?ffffff@333333@皙@r+  皙@g      @      @g       @g      @333333@g @g      @r3  r/  Q	@r   N0tV4l1D_p4raMr      r4   test_)rY   arangepytestraisesr   r   eval)r#  r4   X1X2r   r   s         r3   test_cdist_extra_argszTestCdist.test_cdist_extra_args  s    llOOO___=llOOO___=$(ry||<<v|]9%% 	3 	3"b2226222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]9%% 	9 	9"b88f8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]9%% 	= 	="b<<6!1<V<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]9%% 	0 	0"b/$//////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]9%% 	6 	6"b5555f555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6]9%% 	: 	:"b9D9996!1999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:sl   A**A.1A.B88B<?B<C<<D D  D>>EE"FFF1GGGc           	         dd}g dg dg dg}g dg dg d	g}d
t          j        d          d}d
gdz  }t          j        t                    5  t          |||           d d d            n# 1 swxY w Y   t          j        t                    5  t          |||g|R   d d d            n# 1 swxY w Y   t          j        t                    5  t          |||fi | d d d            n# 1 swxY w Y   t          j        t                    5  t          |||dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          |||ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          |||ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          |||ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          |||dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          |||d           d d d            n# 1 swxY w Y   t          j        t                    5  t          |||ddd           d d d            n# 1 swxY w Y   t          t          |||dd          d           d S )Nrs   r   c                     ||z   |z   S rw   rh   r   yargkwargkwarg2s        r3   
_my_metricz:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r5   r'  r)  r-  r0  r2  r4  r5  r   r6  r8  r.  ffffff
@rF  rG  rF  皙?r4   rE  rG  皙@rs   r   )rY   r:  r;  r<  r   r   r   )r#  rH  r>  r?  r   r   s         r3   test_cdist_extra_args_customz&TestCdist.test_cdist_extra_args_custom  s   	( 	( 	( 	( llOOO___=llOOO___=$(ry||<<v|]9%% 	& 	&"b*%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&]9%% 	- 	-"b*,t,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]9%% 	0 	0"b*/////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]9%% 	= 	="b*C<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]9%% 	7 	7"b*a#6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]9%% 	7 	7"b*a#6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]9%% 	5 	5"b*c3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5]9%% 	0 	0"b*c3///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]9%% 	+ 	+"b*c***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]9%% 	B 	B"b*cSAAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	b"Z"%c3 3 347	9 	9 	9 	9 	9s   A//A36A3B//B36B3C//C36C3D44D8;D8E::E>E>G  GG$HH	H	)I		II-JJJ0KKKc                     d}t           d         }t           d         }t          ||d          }t          ||d          }t          |||t          dk               d S )NV瞯<cdist-X1cdist-X2r   test_euclideanr   rtolr   r[   wcdist_no_constr   r   )r#  epsr>  r?  Y1Y2s         r3   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  s]    
^
^R[11R%566BS'A+>>>>>>r5   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t           d         }t           d         }t          ||d|          }t          ||d|          }t          ||d|t          dk    	           d S )
NvIh%<=rT  rU  r#   r_  test_minkowskir   r   )r   rX  r   rY  )r#  r_  r[  r>  r?  r\  r]  s          r3   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sk     
^
^R[A666R%5;;;BQS'A+FFFFFFr5   c                    d}t           d         }t           d         }t          ||d          }d }dt          j        | ||          z  | ||          z  j                  z
  }t          |||t          dk               d S )	N+=rT  rU  r   c                 l    t           j                            | d                              dd          S )Nrs   r   r   )rY   linalgr   r   )Xs    r3   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s*    9>>!!>,,44R;;;r5   rs   r   rW  )r[   wcdistrY   dotTr   r   )r#  r[  r>  r?  r\  rm  r]  s          r3   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  s    
^
^BH%%	< 	< 	< eeBii2b		>*<===BS'A+>>>>>>r5   c                    t          j        dgdgg          }t          j        dgdgg          }t          ||d          }t          |dt          j        d          gt          j        d          t          j        d          gg           t          j        d	d	gd
d	gg          }t          j        d	dgdd	gd	dgg          }t          ||d          }t          j        d          }t          ||||gdd|z  dgg           t          j        t                    5  t          d	dggddggd           d d d            d S # 1 swxY w Y   d S )Nr   r      r"   r4                 @      ?r   r   rs   r   )rY   r   r   r   sqrtr;  r<  r~   )r#  x1x2distrt2s        r3   test_cdist_mahalanobisz TestCdist.test_cdist_mahalanobis  s   XsQCj!!XsQCj!!RM222RWS\\2RWS\\271::4NOPPP X1vAw'((X1v1v2w/00RM222gajjS#AGQ@AAA ]:&& 	< 	<Aq6(aVH];;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s    EE
E
c                      G d d          fd}t          j                     ggt                    }t          |||          }d}t	          ||t
          dk               d S )	Nc                       e Zd ZdS )6TestCdist.test_cdist_custom_notdouble.<locals>.myclassNr   
__module____qualname__rh   r5   r3   myclassr  
          Dr5   r  c                 ~    t          | d                   rt          |d                   st          d          dS Nr   zType has been changed+?
isinstancer~   r   rD  r  s     r3   rH  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric  B    adG,, :JqtW4M4M : !89995r5   rF   rt  r  r   r   )rY   r   objectr   r	   r   )r#  rH  rJ   cdist_yright_yr  s        @r3   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble	  s    	 	 	 	 	 	 	 		 	 	 	 	 x''))V444d:666Wgw{;;;;;;r5   Hz>c           	      (   	 t          ||fd|i|}t          ||fdt          |          i|}t          ||fdd|z   i|}t          |||t          dk               t          |||t          dk               d S # t          $ r
}	|	j        }
t          dk    r#t          |
j                   t          |	           t          j	        |
          5  t          ||fd|i| d d d            n# 1 swxY w Y   t          j	        |
          5  t          ||fdt          |          i| d d d            n# 1 swxY w Y   t          j	        |
          5  t          ||fdd|z   i| d d d            n# 1 swxY w Y   Y d }	~	d S Y d }	~	d S d }	~	ww xY wNr4   r9  r   rW  )
r   r=  r   r   r   	__class__printr   r;  r<  )r#  r>  r?  r4   r[  r   y1y2y3r   e_clss              r3   _check_calling_conventionsz$TestCdist._check_calling_conventions  s   	Cr277f777Br2==d6ll=f==Br2AAg&6A&AAB BgkBBBBBgkBBBBBB  
	A 
	A 
	AKE{{en%%%au%% 7 7b"66V6v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7u%% = =b"<<T&\\<V<<<= = = = = = = = = = = = = = =u%% A Ab"@@Wv%5@@@@A A A A A A A A A A A A A A A A A A A A A A A A A A A
	As   A A< <FA	FC-!F-C1	1F4C1	5FD6*F6D:	:F=D:	>FE5)F5E9	9F<E9	=FFc                 >   | j         D ]}t          |         d d dd d df         }t          |         dd dd d df         }t          dk    rt          d|d|           |dv rd|vr_|                     |||           |d	k    rdt          j        ||g                              t
          j                  }t          j	        |d
d          }|                     ||||           |dk    rt          j        ||g                              t
          j                  }t          j
        t          j        |j                            }t          j        t
          j                            |          j                  }|                     ||||           d S )Nrs  r   rs   r   	testing:  with: >   r   r)   r%   r'   r$   r  r&   r   r   r   Vr"   VI)r   r[   r   r  r  rY   vstackr   r   var
atleast_2dcovrp  r   rk  inv)r#  r4   eo_namer>  r?  X12r  r  s           r3   test_cdist_calling_conventionsz(TestCdist.test_cdist_calling_conventions+  s    ( 	G 	GG GSSqS$$B$Y'BGQTT33Q3Y'B{{k69g>>> * * *'))++BF;;; %%iR))00<<F3QQ/////B!/DDDD=((iR))00<<M"&--00XbimmA..011//B2/FFF/	G 	Gr5   c           	      N   d}t           d         | j        d         ft           d         | j        d         ft           d         | j        d         ft           d         | j        d	         fg}|D ]8}|d
         d d dd d df         }|d
         dd dd d df         }	 t          |||          }|d         D ]B}t           ||           ||          |          }	t          ||	|t          dk               C# t
          $ r}
|
j        }t          dk    r#t          |j                   t          |
           |d         D ]V} ||          } ||          }t          j
        |          5  t          |||           d d d            n# 1 swxY w Y   WY d }
~
2d }
~
ww xY wd S )Nr  rL   r  rP   r  rO   r   rN   r^   r   rs  r   rs   r   rt  rW  )r[   r!  r   r   r   r   r  r  r   r;  r<  )r#  r4   r[  teststestr>  r?  r  new_typer  r   r  X1newX2news                 r3   test_cdist_dtype_equivalencez&TestCdist.test_cdist_dtype_equivalenceH  sH   '($*<V*DE'($*<V*DE&');E)BC*+T-?	-JKM  	K 	KDa1ddd#BaAsss#BK2r&111 !%Q K KHxx||XXb\\&IIIB#BgkJJJJJK  	; 	; 	;Q;;%.)))!HHH $Q ; ;H$HRLLE$HRLLEu-- ; ;eU6::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;; ; ; ; ;	;	K 	Ks=   C99
F"A)F,F	?FFFFFF"z	win-arm64znumpy#29442)reasonc                    d}t           d         }t           d         }|j        d         |j        d         }}t                      }|dk    rd|d<   t          j        ||ft          j                  }t          |||fi |}	t          |||fd	|i|}
t          |	|
|t          d
k               t          |
|u            t          j        |dz
  |dz   ft          j                  }t          j        t                    5  t          |||fd	|i| d d d            n# 1 swxY w Y   t          j        d
|z  d
|z  ft          j                  d d d
d d d
f         }t          j        ||ft          j        d          }t          j        t                    5  t          |||fd	|i| d d d            n# 1 swxY w Y   t          j        t                    5  t          |||fd	|i| d d d            n# 1 swxY w Y   t          j        ||ft          j                  }t          j        t                    5  t          |||fd	|i| d d d            d S # 1 swxY w Y   d S )NrS  rT  rU  r   r#   rb  r_  rF   outr   rW  rs   F)rG   order)r[   r   dictrY   emptyr   r   r   r   r   r;  r<  r~   int64)r#  r4   r[  r>  r?  out_rout_cr   out1r\  r]  out2out3out4out5s                  r3   test_cdist_outzTestCdist.test_cdist_outc  s    
^
^x{BHQKu[  F3Kxbj9992r6,,V,,2r666t6v66 	BS'A+>>>> 	d
 xq%'*"*===]:&& 	6 	6"b&55d5f555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 xYE	""*6 6 669cc33Q3h@xbjDDD]:&& 	6 	6"b&55d5f555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6]:&& 	6 	6"b&55d5f555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 xbh777]:&& 	6 	6"b&55d5f555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6sH    DD"%D"F99F= F=G;;G?G?I  I$'I$c                 x   d}t           d         d d dd d df         }t           d         d d dd d df         }|                                }|                                }t          ||           t          ||           t          |j        j                    t          |j        j                    t          |j        j                   t          |j        j                   t                      }|dk    rd|d<   t          |||fi |}t          |||fi |}	t          ||	|t          dk               d S )	NrS  rT  r   rU  r#   rb  r_  rW  )
r[   copyr	   r   flagsc_contiguousr  r   r   r   )
r#  r4   r[  r>  r?  X1_copyX2_copyr   r\  r]  s
             r3   test_stridingzTestCdist.test_striding  sC    
^CCaC1H%
^CCaC1H%''))'')) 	R!!!R!!!BH))***BH))****+++*+++[  F3K2r6,,V,,7GV66v66BS'A+>>>>>>r5   c                 \   t           j                            dd          }t           j                            dd          }t                      }|dk    rd|d<   t	          ||fd|i|}d |||fD             }~~~t
          rt                       t          d |D                       sJ d S )N
   r#   rb  r_  r4   c                 6    g | ]}t          j        |          S rh   )weakrefref)rn   vs     r3   rp   z1TestCdist.test_cdist_refcount.<locals>.<listcomp>  s     ;;;W[^^;;;r5   c              3   .   K   | ]} |            d u V  d S rw   rh   )rn   weak_refs     r3   ry   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s-      @@(88::%@@@@@@r5   )rY   r   r   r  r   r   r   r}   )r#  r4   ry  rz  r   r  	weak_refss          r3   test_cdist_refcountzTestCdist.test_cdist_refcount  s    Y^^B##Y^^B##[  F3KB4464V44 <;b"c];;;	C 	NNN@@i@@@@@@@@@@r5   Nr  )r   r  r  r$  r@  rQ  r^  r;  markparametrizerY   infrg  rq  r}  r  r  r  r  skipif	sysconfigget_platformr  r  r  rh   r5   r3   r  r    sn       7 7 7: : :*"9 "9 "9H? ? ? [S3c4#&S"&#: ; ;G G; ;G? ? ?< < <$< < <C C C C*G G G:K K K6 [.	.00K?VV%6 %6 WV%6N? ? ?4A A A A Ar5   r  c            	          e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j        j        d             Ze
j        j        d	             Ze
j        j        d
             Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze
j        j        d             Ze
j        j        d             Ze
j        j        d             Zd Zd Zd Zd Ze
j        j        d             Z e
j        j        d             Z!e
j        j        d             Z"d Z#d Z$d  Z%e
j        j        d!             Z&e
j        j        d"             Z'e
j        j        d#             Z(e
j        )                    d$d%d&d'd(d)e*j+        g          d*             Z,d+ Z-d, Z.d- Z/e
j        j        d.             Z0e
j        j        d/             Z1e
j        j        d0             Z2e
j        j        d1             Z3e
j        j        d2             Z4e
j        j        d3             Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNe
j        j        dM             ZOdN ZPeQdO             ZRdWdQZSdR ZTdS ZUdT ZVdU ZWdVS )X	TestPdistc                     g d| _         t          t          t          j        t          j        gt          t          j        t          j        gt          j        t          j        gt          j        gd| _        d S r  r  r"  s    r3   r$  zTestPdist.setup_method  r%  r5   c                    ddgddgddgg}dt          j        d          d}dgd	z  }t          j        t                    5  t          |fd
|i| d d d            n# 1 swxY w Y   t          j        t                    5  t          |fd
t          |          i| d d d            n# 1 swxY w Y   t          j        t                    5  t          |fd
d|z   i| d d d            n# 1 swxY w Y   t          j        t                    5  t          |g|R d
|i d d d            n# 1 swxY w Y   t          j        t                    5  t          |g|R d
t          |          i d d d            n# 1 swxY w Y   t          j        t                    5  t          |g|R d
d|z   i d d d            d S # 1 swxY w Y   d S )Nr   r   r*  r+  r.  r5  r   r6  r8  r4   r9  )rY   r:  r;  r<  r   r   r=  )r#  r4   r>  r   r   s        r3   test_pdist_extra_argszTestPdist.test_pdist_extra_args  sh   2hc
S#J/$(ry||<<v|]9%% 	/ 	/"..V.v...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]9%% 	5 	5"44T&\\4V444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5]9%% 	9 	9"88Wv-8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]9%% 	, 	,"+d+++V+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]9%% 	2 	2"1D111T&\\111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2]9%% 	6 	6"5555Wv-555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6sl   AA"%A"B++B/2B/C..C25C2D//D36D3E==FF!GG	Gc                    dd}ddgddgddgg}d	t          j        d          d
}d	gdz  }t          j        t                    5  t          ||           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||g|R   d d d            n# 1 swxY w Y   t          j        t                    5  t          ||fi | d d d            n# 1 swxY w Y   t          j        t                    5  t          ||dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||d           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||ddd           d d d            n# 1 swxY w Y   t          t          ||dd          d           d S )Nrs   r   c                     ||z   |z   S rw   rh   rC  s        r3   rH  z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metric  rI  r5   r   r   r*  r+  r.  r5  r6  r8  rJ  rK  rL  rM  rN  rO  rP  )rY   r:  r;  r<  r   r   r   )r#  rH  r>  r   r   s        r3   test_pdist_extra_args_customz&TestPdist.test_pdist_extra_args_custom  s[   	( 	( 	( 	( 2hc
S#J/$(ry||<<v|]9%% 	" 	""j!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]9%% 	) 	)"j(4((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]9%% 	, 	,"j++F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]9%% 	9 	9"jC8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]9%% 	3 	3"j!Qc2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]9%% 	3 	3"j!Qc2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]9%% 	1 	1"j#sC000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1]9%% 	, 	,"j#s+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,]9%% 	' 	'"j#&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']9%% 	> 	>"j#S====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	b"%c3 3 347	9 	9 	9 	9 	9s   A##A'*A'B""B&)B&C!!C%(C%D%%D),D)	E**E.1E.F//F36F3G33G7:G7H66H:=H:I88I<?I<J==KKc                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  pdist-double-inppdist-euclideanr   rX  r[   wpdist_no_constr   r#  r[  rl  Y_rightY_test1s        r3   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random  G    !"&'!![11s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S r  r  r  s        r3   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u  r  r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r  rY   r^   r[   r  r   r  s        r3   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32  sQ    Jr,-..&'!![11s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  rV  r  r  r#  r[  rl  r  Y_test2s        r3    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC  sH    !"&'!!%566s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  irispdist-euclidean-irisr   r  r  r  s        r3    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double  sE    vJ+,!![11s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r  r   r   rW  rY   r^   r[   r  r   r   r  s        r3   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32  U    Jr&z""+,!![11sGaKHHHHHHr5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  rV  r  r  r  s        r3   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonC&  sH     vJ+,!!%566s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-seuclideanr&   r  r[   r   r   r  s        r3   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_random0  sG    !"'(<((s333333r5   c                    d}t          j        t          d                   }t          d         }t          |d          }t	          |||           t          j        |dd          }t          |d|	          }t	          |||           d S )
Nr  r  r  r&   r  r   rs   r  r  )rY   r^   r[   r   r   r  )r#  r[  rl  r  r  r  r  s          r3   $test_pdist_seuclidean_random_float32z.TestPdist.test_pdist_seuclidean_random_float327  s    Jr,-..'(<((s3333 F111%%%<1---s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_seuclideanr  r  r  s        r3   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonCC  sH    !"'(,--s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-seuclidean-irisr&   r  r  r  s        r3   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_irisK  sE    vJ,-<((s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S )Nr   r  r  r&   r  )rY   r^   r[   r   r   r  s        r3   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32R  sO    Jr&z"",-<((s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  r	  r  r  r  s        r3   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonCZ  sH     vJ,-,--s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-cosiner   r  r[   wpdistr   r  s        r3   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_randomc  sF    !"^$H%%s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r  rY   r^   r[   r  r   r  s        r3    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32j  sP    Jr,-..^$H%%s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_cosiner  r  r  s        r3   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonCq  sF    !"^$M**s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr   r  pdist-cosine-irisr   r   r  r  s        r3   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_irisy  sE    vJ()H%%s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r  r   r   r   r   )rY   r^   r[   r  r   r   r  s        r3   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32  sU    Jr&z""()H%%sGaKHHHHHHr5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr   r  r  r  r   r  r  s        r3   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC  sE    vJ()M**s333333r5   c                    t          j        t           j                            d                              d                    }t          j        ||g          }t          t          |d          d         dk    d           d S )Ni9  [   r   r   z&cosine distance should be non-negative)msg)rY   absr   r   r   r  r   r  )r#  r   rl  s      r3   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_bounds  s~     F29((..33B7788Iq!fq(##A&!+<	> 	> 	> 	> 	> 	>r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-cityblockr   r  r  r  s        r3   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_random  sG    !"&'!![11s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r,  r  r  s        r3   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32  sQ    Jr,-..&'!![11s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r-  test_cityblockr  r  r  s        r3    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC  sH    !"&'!!%566s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nri  r  pdist-cityblock-irisr   r  r  r  s        r3   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  sE    vJ+,!![11s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r5  r   r   rW  r  r  s        r3   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nri  r  r5  r2  r  r  r  s        r3   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  sH     vJ+,!!%566s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-correlationr   r  r  r  s        r3   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  sG    !"()M**s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r<  r  r  s        r3   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  sQ    Jr,-..()M**s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r=  test_correlationr  r  r  s        r3   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  sH    !"().//s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-correlation-irisr   r  r  r  s        r3   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  sE    vJ-.M**s333333r5   c                     d}t           d         }t          j        t           d                   }t          |d          }t	          |||t
          dk               d S )Nr  r  rE  r   r   rW  )r[   rY   r^   r  r   r   r  s        r3   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sU    vJ*R 89::M**sGaKHHHHHHr5   c                     t           j        dk    rd}nt          j        d           t          d         }t          d         }t          |d          }t          |||           d S )Nl        r  zsee gh-16456r  rE  rB  r  )sysmaxsizer;  skipr[   r  r   r  s        r3    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  se    ;CCK'''vJ-..//s333333r5   r_  r`  ra  r   r   皙	@c                     d}t           d         }t          |d|          }t          |d|          }t          ||d|           d S )Nrd  r  r#   re  rf  r   )r   rX  r  )r#  r_  r[  rl  r\  r]  s         r3   test_pdist_minkowski_random_pz'TestPdist.test_pdist_minkowski_random_p  sX    !"Qq111Q 0A666BQS111111r5   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S Nr  r  pdist-minkowski-3.2r#   rN  re  r  r  r  s        r3   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random  sL    !"*+!![C888s333333r5   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||           d S rR  r  r  s        r3   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32  sV    Jr,-..*+!![C888s333333r5   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rS  rf  rN  re  r  r  r  s        r3    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC  sM    !"*+!!%5===s333333r5   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  pdist-minkowski-3.2-irisr#   rN  re  r  r  r  s        r3   test_pdist_minkowski_3_2_irisz'TestPdist.test_pdist_minkowski_3_2_iris  J    vJ/0!![C888s333333r5   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||           d S )Nr   r  rZ  r#   rN  re  r  r  r  s        r3   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32  sT    Jr&z""/0!![C888s333333r5   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rZ  rf  rN  re  r  r  r  s        r3   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonC&  K    vJ/0!!%5===s333333r5   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  pdist-minkowski-5.8-irisr#   r3  re  r  r  r  s        r3   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_iris.  r\  r5   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||t
          dk               d S )	Nr   r  rc  r#   r3  re  r   rW  r  r  s        r3   %test_pdist_minkowski_5_8_iris_float32z/TestPdist.test_pdist_minkowski_5_8_iris_float326  sZ    Jr&z""/0!![C888sGaKHHHHHHr5   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rc  rf  r3  re  r  r  r  s        r3   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonC>  ra  r5   c                    t          j        g d                              dd          }t          |d          }t	          |dt          j        d          t          j        d          t          j        d          t          j        d          t          j        d	          g           t          j        d
d
gdd
gd
dgdd
gd
dgg          }t          |d          }t          j        d          }t	          |||||dd|z  ddd|z  dg
           t          j        t                    5  t          d
dgddggd           d d d            d S # 1 swxY w Y   d S )N)r   r   r(  r1  r   rs   r"   rt  ru  rw  rv  r   r   r   r   r   )
rY   r   r   r   r   rx  r;  r<  r~   r  )r#  r   r{  r|  s       r3   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobisF  s   H)))**222q99Q}---sBGCLL"'#,,!ws||RWS\\273<<I 	J 	J 	J Hq!fr1g1v1v2w?@@Q}---gajjsCc1a#gq!QWaPQQQ ]:&& 	; 	;QFQF#M::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   -EEEc                     d}t           d         }t           d         }t          |d          }t          |||           d S NrS  rK   pdist-hammingr   r  r  r  s        r3   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_randomW  sF    "#_%I&&s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rl  r  r  s        r3   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float32^  P    Jr-.//_%I&&s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S NrS  rK   rm  test_hammingr  r  r  s        r3   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonCe  sF    "#_%N++s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rl  rY   r   r[   r  r   r  s        r3   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_randoml  rq  r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rl  r  r  s        r3   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32s  rq  r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rs  rw  r  s        r3   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonCz  sP    Jr-.//_%N++s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Ndy=r  pdist-jensenshannonr!   r  r  r  s        r3   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  sG    !"*+?++s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )N:0yE>r  r  r!   r   rW  rY   r^   r[   r   r   r   r  s        r3   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sW    Jr,-..*+?++sGaKHHHHHHr5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr~  r  r  test_jensenshannonr  r  r  s        r3   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  sH    !"*+/00s333333r5   c                     t                      rd}nd}t          d         }t          d         }t          |d          }t          |||           d S )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )ri   r[   r   r   r  s        r3   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  sX    ;; 	CCCvJ/0?++s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Ngư>r  r  r!   r   r"  r  r  s        r3   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sU    Jr&z""/0?++sGaKHHHHHHr5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Ng-C6
?r  r  r  r  r  r  s        r3   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  sF    vJ/0/00s333333r5   c                 N   t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t	          |ddd           t	          |ddd           d S Nrs   r   rs   rs   r   rs   rs   r   rs   rs   rF   333333?r   绽|=rX  r   	wmatchingrY   r   r  r   r#  mm2s      r3   test_pdist_matching_mtica1z$TestPdist.test_pdist_matching_mtica1  s    bh//h//1 1rxt<<<xt<<<> >3QU3333Cae444444r5   c                 N   t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t	          |ddd           t	          |ddd           d S Nrs   r   rs   rs   rs   r   rF   UUUUUU?r   r  r  r  r  s      r3   test_pdist_matching_mtica2z$TestPdist.test_pdist_matching_mtica2  s    bhyyy))Xiii((* *rx			666hyyy5557 75qu5555E666666r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )Nr  r  rF   r   r   r  r  wyulerY   r   r  r   r  r   r  s      r3   test_pdist_yule_mtica1z TestPdist.test_pdist_yule_mtica1  s    "(???++(???++- -28OOO48888OOO4888: :Q;;!HHH1151111AAE222222r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )Nr  r  rF   r   r   r  r  r  r  s      r3   test_pdist_yule_mtica2z TestPdist.test_pdist_yule_mtica2  s    "(999%%(999%%' '28IIIT2228IIIT2224 4Q;;!HHH1151111AAE222222r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )	Nr  r  rF   r   g۶m۶m?r   r  r  wdicerY   r   r  r   r  r   r  s      r3   test_pdist_dice_mtica1z TestPdist.test_pdist_dice_mtica1  s    "(???++(???++- -28OOO48888OOO4888: :Q;;!HHH5qu5555E666666r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )	Nr  r  rF   r   rw  r   r  r  r  r  s      r3   test_pdist_dice_mtica2z TestPdist.test_pdist_dice_mtica2  s    "(999%%(999%%' '28IIIT2228IIIT2224 4Q;;!HHH3QU3333Cae444444r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S 	Nr  r  rF   r   g      ?r   r  r  )r'   rY   r   r  r   r  r   r  s      r3   test_pdist_sokalsneath_mtica1z'TestPdist.test_pdist_sokalsneath_mtica1      11113 3///>>>///>>>@ @Q;;!HHH5qu5555E666666r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S 	Nr  r  rF   r   g?r   r  r  )wsokalsneathrY   r   r  r   r  r   r  s      r3   test_pdist_sokalsneath_mtica2z'TestPdist.test_pdist_sokalsneath_mtica2  s    ))),,))),,. ."(999D999(999D999; ;Q;;!HHH5qu5555E666666r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S r  wrogerstanimotorY   r   r  r   r  r   r  s      r3    test_pdist_rogerstanimoto_mtica1z*TestPdist.test_pdist_rogerstanimoto_mtica1  s    BH___55H___557 7RXoooTBBBXoooTBBBD DQ;;!HHH5qu5555E666666r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S r  r  r  s      r3    test_pdist_rogerstanimoto_mtica2z*TestPdist.test_pdist_rogerstanimoto_mtica2  s    BHYYY//HYYY//1 1RXiiit<<<Xiiit<<<> >Q;;!HHH5qu5555E666666r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )	Nr  r  rF   r   r  r   r  r  wrussellraorY   r   r  r   r  r   r  s      r3   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica1  r  r5   c                    t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t          dk    rt          |           t          |ddd           t          |ddd           d S )	Nr  r  rF   r   r  r   r  r  r  r  s      r3   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2  s    ++++- -)))4888)))4888: :Q;;!HHH5qu5555E666666r5   c                     t           d         }t          dk    rt          |j        |j                   d}t          |d          }t          |d          }t          |||t          dk               d S )Nr  r   rS  r   test_canberrarW  )r[   r   r  r   rG   r  r   )r#  Dr[  r  r  s        r3   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_match&  sl    vJQ;;!'17###Q
++Q00BS'A+>>>>>>r5   c                 n    d}t          dgdgfd          }d}t          |||t          dk               d S )Nr  rJ  r,  r   gd>@1?r   r"  )r  r   r   )r#  r[  pdist_yr  s       r3   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_7110  sF     !C53%.*==sGaKHHHHHHr5   c                      G d d          fd}t          j                     g             ggt                    }t          ||          }d}t	          ||t
          dk               d S )	Nc                       e Zd ZdS )6TestPdist.test_pdist_custom_notdouble.<locals>.myclassNr  rh   r5   r3   r  r  ;  r  r5   r  c                 ~    t          | d                   rt          |d                   st          d          dS r  r  r  s     r3   rH  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metric>  r  r5   rF   rt  r  r   r  )rY   r   r  r   r	   r   )r#  rH  rJ   r  r  r  s        @r3   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdouble8  s    	 	 	 	 	 	 	 		 	 	 	 	 x''))wwyyk2&AAAZ000Wgw{;;;;;;r5   r  c           	         	 t          |fd|i|}t          |fdt          |          i|}t          |fdd|z   i|}t          |||t          dk               t          |||t          dk               d S # t          $ r}|j        }	t          dk    r#t          |	j                   t          |           t          j	        |	          5  t          |fd|i| d d d            n# 1 swxY w Y   t          j	        |	          5  t          |fdt          |          i| d d d            n# 1 swxY w Y   t          j	        |	          5  t          |fdd|z   i| d d d            n# 1 swxY w Y   Y d }~d S Y d }~d S d }~ww xY wr  )
r   r=  r   r   r   r  r  r   r;  r<  )
r#  rl  r4   r[  r   r  r  r  r   r  s
             r3   r  z$TestPdist._check_calling_conventionsG  s   	Cq222622Bq88f888Bq<<6!1<V<<B BgkBBBBBgkBBBBBB  
	< 
	< 
	<KE{{en%%%au%% 2 2a111&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2u%% 8 8a77V77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8u%% < <a;;& 0;F;;;< < < < < < < < < < < < < < < < < < < < < < < < < < <
	<s   =A9 9FA	FC)F)C-	-F0C-	1FD1%F1D5	5F8D5	9FE/#F/E3	3F6E3	7FFc                    | j         D ]I}t          |         d d dd d df         }t          dk    rt          d|d|           |dv rd|vrD|                     ||           |dk    rMt          j        |                    t
          j                  dd	
          }|                     |||           |dk    rt          j	        t          j
        |                    t
          j                  j                            }t          j        t
          j                            |          j                  }|                     |||           Kd S )Nrs  r   r  r  >   r   r)   matchingr%   r'   r$   r  r&   r   rs   r  r  r"   r  )r   r[   r   r  r  rY   r  r   r   r  r  rp  r   rk  r  )r#  r4   r  rl  r  r  s         r3   test_pdist_calling_conventionsz(TestPdist.test_pdist_calling_conventions\  sW   
 ( 	B 	BG 7CCaC1H%A{{k69g>>> ) ) )-37-B-B++Av666 %%F188BJ//aa@@@//6Q/????=((M"&"*)=)=)?"@"@AAXbimmA..011//6b/AAA'	B 	Br5   c           	         d}t           d         | j        d         ft           d         | j        d         ft           d         | j        d         ft           d         | j        d	         fg}|D ]}|d
         d d dd d df         }	 t          ||          }|d         D ]8}t           ||          |          }t          |||t          dk               9m# t
          $ r}	|	j        }
t          dk    r#t          |
j                   t          |	           |d         D ]J} ||          }t          j
        |
          5  t          ||           d d d            n# 1 swxY w Y   KY d }	~	d }	~	ww xY wd S )Nr  rL   r  rP   r  rO   r   rN   r^   r   rs  r   rt  rs   rW  )r[   r!  r   r   r   r   r  r  r   r;  r<  )r#  r4   r[  r  r  r>  r  r  r  r   r  r?  s               r3   test_pdist_dtype_equivalencez&TestPdist.test_pdist_dtype_equivalencev  s   '($*<V*DE'($*<V*DE&');E)BC*+T-?	-JKM  	K 	KDa1ccc"BK2f--- !%Q K KHxx||F;;;B#BgkJJJJJK  1 1 1Q;;%.)))!HHH $Q 1 1H!"Bu-- 1 1b00001 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 11		K 	Ks=   C
E5"AE0 E	E0E""E0%E"&E00E5c                    d}t           d         d d dd d df         }t          |j        d         |j        d         dz
  z  dz            }t                      }|dk    rd|d	<   t	          j        |t          j        
          }t          ||fi |}t          ||fd|i|}t          |||           t          ||u            t	          j        |dz   t          j        
          }	t          j        t                    5  t          ||fd|	i| d d d            n# 1 swxY w Y   t	          j        d|z  t          j        
          d d d         }
t          j        t                    5  t          ||fd|
i| d d d            n# 1 swxY w Y   t	          j        |t          j        
          }t          j        t                    5  t          ||fd|i| d d d            d S # 1 swxY w Y   d S )NrS  rN   rs  r   r   rs   r#   rb  r_  rF   r  r  r   )r[   r   r   r  rY   r  r   r   r   r   r;  r<  r~   r  )r#  r4   r[  rl  out_sizer   r  r  r  r  r  r  s               r3   test_pdist_outzTestPdist.test_pdist_out  s   $%ccc33Q3h/
agaj1n5:;;[  F3Kx
3336,,V,,666t6v66 	s3333 	4    x1BJ777]:&& 	1 	1!V000000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 xHBJ777!<]:&& 	1 	1!V000000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 x111]:&& 	1 	1!V000000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s6   DD#&D#/FFFG..G25G2c                 p   d}t           d         d d dd d df         }|                                }t          |j        j                    t          |j        j                   t                      }|dk    rd|d<   t          ||fi |}t          ||fi |}t          |||t          dk               d S )	NrS  rN   rs  r   r#   rb  r_  rW  )	r[   r  r   r  r  r  r   r   r   )r#  r4   r[  rl  X_copyr   r\  r]  s           r3   r  zTestPdist.test_striding  s     $%ccc33Q3h/ 	AG(())))***[  F3K1f''''66,,V,,BS'A+>>>>>>r5   Nr  )Xr   r  r  r$  r  r  r  r  r  r  r;  r  slowr  r  r  r  r  r
  r  r  r  r  r  r  r   r#  r%  r*  r.  r0  r3  r6  r8  r:  r>  r@  rC  rF  rH  rM  r  rY   r  rP  rT  rV  rX  r[  r^  r`  rd  rf  rh  rj  rn  rp  ru  rx  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,   r  r  r  r  r  r  rh   r5   r3   r  r    sa       7 7 76 6 6&!9 !9 !9F4 4 44 4 44 4 44 4 4 [4 4 4 [I I I [4 4 44 4 4
4 
4 
44 4 44 4 44 4 44 4 44 4 44 4 44 4 4 [4 4 4 [I I I [4 4 4> > >4 4 44 4 44 4 4 [4 4 4 [I I I [4 4 44 4 44 4 44 4 4 [4 4 4 [I I I [4 4 4 [S3c3RV"DEE2 2 FE24 4 44 4 44 4 4 [4 4 4 [4 4 4 [4 4 4 [4 4 4 [I I I [4 4 4; ; ;"4 4 44 4 44 4 44 4 44 4 44 4 44 4 4I I I4 4 4
4 
4 
4I I I4 4 45 5 57 7 73 3 33 3 37 7 75 5 57 7 77 7 77 7 77 7 77 7 77 7 7 [? ? ?I I I < < <C C C C*B B B4K K K2 1  1  1D? ? ? ? ?r5   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                            d	          ej                            d
eeg          d                         Zd ZdS )TestSomeDistanceFunctionsc                 r    t          j        g d          }t          j        g d          }||fg| _        d S )Nr'  r   r   r1  )rY   r   cases)r#  r   rD  s      r3   r$  z&TestSomeDistanceFunctions.setup_method  s9    H___%%H___%%!fX


r5   c           	      ,   | j         D ]\  }}t          ||d          }t          |d           t          ||d          }t          |d           t          ||d          }t          |d           t          ||d          }t          |d	           t          j        d
dg          }t          j        ddg          }t          t          ||          t          |                    d          |                    d                               d S )Nrs   re  r(        ?gqaz@r   gw@ra  gR"6@i`  i  i^  i  uint16)r  r#   r
   rY   r   r	   r   )	r#  r   rD  dist1dist1p5dist2dist0p25ro   r   s	            r3   rf  z(TestSomeDistanceFunctions.test_minkowski  s&   J 	D 	DDAqaa(((Es+++1,,,G)CDDDaa(((Ez222 A...H*BCCCC
 Hc3Z  Hc3Z  Yq!__qxx11188H3E3EFF	H 	H 	H 	H 	Hr5   c                     | j         D ]7\  }}t          ||          }t          |t          j        d                     8d S )Nrs  )r  
weuclideanr
   rY   rx  r#  r   rD  r{  s       r3   rV  z(TestSomeDistanceFunctions.test_euclidean  sK    J 	2 	2DAqa##Dbgajj1111	2 	2r5   c                 `    | j         D ]%\  }}t          ||          }t          |d           &d S )Nr1  )r  wsqeuclideanr
   r  s       r3   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclidean  sC    J 	+ 	+DAq1%%Dc****	+ 	+r5   c           
          | j         D ]R\  }}t          ||          }t          |ddt          j        d          t          j        d          z  z  z
             Sd S )Nr   g      2@      )r  wcosiner
   rY   rx  r  s       r3   r  z%TestSomeDistanceFunctions.test_cosine  sd    J 	P 	PDAq1a==DcDBGBKK"'"++4M,N&NOOOO	P 	Pr5   c                     t          t          ddgddgd          t                    sJ t          t          ddgddg          t                    sJ d S )Nrs   F)centered)r  wcorrelationfloatr  r"  s    r3   test_cosine_output_dtypez2TestSomeDistanceFunctions.test_cosine_output_dtype  s]    ,1v1vFFFNNNNN'1a&1a&1159999999r5   c           
      $   t          j        g d          }t          j        g d          }| j        D ][\  }}t          ||          }t	          |dt          j        ||          t          |          t          |          z  z  z
             \d S )N)      r   r   )UUUUUUr  gUUUUUU@r   )rY   r   r  r  r
   ro  r   )r#  xmymr   rD  r{  s         r3   rB  z*TestSomeDistanceFunctions.test_correlation  s    Xnnn%%X999::J 	T 	TDAq1%%DcBF2rNNd2hhb>Q,R&RSSSS	T 	Tr5   c                     t          j        g d          }t          j        g d          }t          ||          }d|cxk    r*dt          j        t           j                  j        z  k    sn J d S )N)%ru  ru  ru  ru  ru  ru         ru  ru  ru  r  r  r  ru  r  ru  r  ru  ru  r  r  ru  r   ru  ru  r  ru  ru  r  ru  r  r  r  r  r  r  ru  )%r   r   r   r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r   ru  r  r   r   r   r   r  r   r   r  r   r  r  r  r  r  r  r   r   r  )rY   r   r   finfor   r[  r  s       r3   test_correlation_positivez3TestSomeDistanceFunctions.test_correlation_positive  s    H I I I J J H I I I J J 1a  D9999B"*!5!5!9999999999r5   zignore:Casting complexfuncc                     ddg}ddg}t          j        t          d          5   |||           d d d            d S # 1 swxY w Y   d S )Ny      ?        y       @        y      @        y      @        realmatch)r;  r<  r   )r#  r  r   rD  s       r3   test_corr_dep_complexz/TestSomeDistanceFunctions.test_corr_dep_complex  s     4L4L]9F333 	 	DAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   >AAc                    t          j        g d          }t          j        g d          }t          j        g dg dg dg          }| j        D ]8\  }}t          |||          }t	          |t          j        d                     9d S )Nr'  r  )r   r   ru  )r   r   r   )ru  r   r   g      @)rY   r   r  r"   r
   rx  )r#  r   rD  vir{  s        r3   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobis  s    H___%%H___%%XIJJJ 	4 	4DAqq!R((Dbgcll3333	4 	4r5   N)r   r  r  r$  rf  rV  r  r  r  rB  r  r;  r  filterwarningsr  r   r   r  r  rh   r5   r3   r  r    s          H H H&2 2 2
+ + +
P P P
: : :
T T T	: 	: 	: [ 899[Vk6%:;;  <; :94 4 4 4 4r5   r  c                   h    e Zd Zej        ej        ej        ej        egZ	d Z
d Zd Zd Zd Zd ZdS )TestSquareFormc                 D    | j         D ]}|                     |           d S rw   )checked_dtypescheck_squareform_matrixr#  rG   s     r3   test_squareform_matrixz%TestSquareForm.test_squareform_matrix  5    ( 	0 	0E((////	0 	0r5   c                 D    | j         D ]}|                     |           d S rw   )r  check_squareform_vectorr  s     r3   test_squareform_vectorz%TestSquareForm.test_squareform_vector  r  r5   c                 6   t          j        d|          }t          |          }t          |j        d           t          |j        |           t          j        d|          }t          |          }t          |j        d           t          |j        |           t          j        ddgddgg|          }t          |          }t          |j        d           t          |j        |           t          |t          j        dg|                     d S )N)r   r   rF   r   rs   rs   r   g@rr   )rY   zerosr   r	   r   rG   r   r   )r#  rG   ArAs       r3   r  z&TestSquareForm.check_squareform_matrix"  s    HV5)))]]RXt$$$RXu%%%HV5)))]]RXt$$$RXu%%%Hq#ha)777]]RXt$$$RXu%%%2rxU;;;<<<<<r5   c                    t          j        d|          }t          |          }t          |j        d           t          |j        |           t          |dgg           t          j        dg|          }t          |          }t          |j        d           t          |j        |           t          |t          j        ddgddgg|                     d S )Nr  rF   r  r   g @)r   r   )rY   r  r   r	   r   rG   r   r   )r#  rG   r  rvs       r3   r  z&TestSquareForm.check_squareform_vector3  s    HT''']]RXv&&&RXu%%%2u%%%HcU%(((]]RXv&&&RXu%%%2rx!SC8(<EJJJKKKKKr5   c                 V    t          dd          D ]}|                     |           d S )Nr   rs  )r   check_squareform_multi_matrixr#  ns     r3   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrix@  s:    q! 	2 	2A..q1111	2 	2r5   c                    t           j                            |d          }t          |          }t	          t          |j                  d           t          |          }t          |          }|j        }d}t          dk    r t          |j        |j        |j                   t	          t          |          d           t	          t          |j                  d           t	          |d         |d                    t          d|d                   D ]`}t          |dz   |d                   D ]D}	||	k    r$t	          |||	f         ||                    |dz  },t	          |||	f         d           Ead S )N   rs   r   r   r   )rY   r   r   r  r	   lenr   r   r   r  r   )
r#  r  rl  Yr  Yrskr   js
             r3   r  z,TestSquareForm.check_squareform_multi_matrixD  s[   INN1a  AS\\1%%%qMM]]Ga<<!'17BH---SVVQS]]A&&&QqT1Q4   q!A$ 	- 	-A1q5!A$'' - -66 1a4!A$///FAA 1a4!,,,,-	- 	-r5   N)r   r  r  rY   r   r^   int32int8r  r  r  r  r  r  r  r  rh   r5   r3   r	  r	    s        j"*bhFN0 0 00 0 0= = ="L L L2 2 2- - - - -r5   r	  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestNumObsYc                     t          dd          D ]N}t          j                            |d          }t	          |          }t          t          |          |           Od S )Nr   r  r!  )r   rY   r   r   r  r	   r   )r#  r  rl  r#  s       r3   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix\  s^    q" 	* 	*A	q!$$A""A1q))))	* 	*r5   c                     t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S Nrs   )r;  r<  r~   check_yr"  s    r3   test_num_obs_y_1zTestNumObsY.test_num_obs_y_1b  s     ]:&& 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =AAc                 J    t          |                     d                     d S Nr   r   r0  r"  s    r3   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2h  s"     	Q     r5   c                 J    t          |                     d                     d S )Nr   r4  r"  s    r3   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3m       Q     r5   c                 J    t          |                     d                     d S Nr!  r4  r"  s    r3   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4p  r8  r5   c                 V    t          dd          D ]}|                     |           d S )Nrs     )r   minit)r#  r   s     r3   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10s  s4    q" 	 	AJJqMMMM	 	r5   c                 >   t                      }t          dd          D ] }|                    ||dz
  z  dz             !t          dd          D ]L}||vrFt          j        t
                    5  |                     |           d d d            n# 1 swxY w Y   Md S Nr   r=  rs   rs  i   setr   addr;  r<  r~   bad_yr#  ro   r  r   s       r3   test_num_obs_y_2_100z TestNumObsY.test_num_obs_y_2_100w  s     EEq" 	# 	#AEE!q1u+/""""q# 	" 	"Azz]:.. " "JJqMMM" " " " " " " " " " " " " " "	" 	"   /BB	B	c                 J    t          |                     |                     d S rw   r4  r  s     r3   r>  zTestNumObsY.minit  r8  r5   c                 ^    t           j                            |          }t          |          S rw   )rY   r   r   r   r#  r  rD  s      r3   rF  zTestNumObsY.bad_y  s!    INN1||r5   c                 N    t          |                     |                    |k    S rw   )r   make_yr  s     r3   r0  zTestNumObsY.check_y  s    Q((A--r5   c                 R    t           j                            ||dz
  z  dz            S Nrs   r   rY   r   r   r  s     r3   rN  zTestNumObsY.make_y  s#    y~~qAE{q0111r5   N)r   r  r  r-  r1  r5  r7  r;  r?  rH  r>  rF  r0  rN  rh   r5   r3   r+  r+  Z  s        * * *  ! ! !
! ! !! ! !  	" 	" 	"! ! !  . . .2 2 2 2 2r5   r+  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestNumObsDMc                 ,   t          dd          D ]}t          j                            |d          }t	          |          }t          |          }t          dk    rt          |j        |j                   t          t          |          |           d S )Nrs   r  r!  r   )r   rY   r   r   r  r   r   r  r   r	   r   )r#  r  rl  r#  r  s        r3   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  s    q" 	+ 	+A	q!$$A""A1A!||agqw'''A****	+ 	+r5   c                 J    t          |                     d                     d S )Nr   r   check_Dr"  s    r3   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0       Q     r5   c                 J    t          |                     d                     d S r/  rW  r"  s    r3   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  rZ  r5   c                 J    t          |                     d                     d S r3  rW  r"  s    r3   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2  r8  r5   c                 J    t          |                     d                     d S r3  rW  r"  s    r3   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  r8  r5   c                 J    t          |                     d                     d S r:  rW  r"  s    r3   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  r8  r5   c                 N    t          |                     |                    |k    S rw   )r   make_Dr  s     r3   rX  zTestNumObsDM.check_D  s    $++a..))Q..r5   c                 B    t           j                            ||          S rw   rQ  r  s     r3   rd  zTestNumObsDM.make_D  s    y~~a###r5   N)r   r  r  rU  rY  r\  r^  r`  rb  rX  rd  rh   r5   r3   rS  rS    s        + + +! ! !! ! !! ! !! ! !! ! !/ / /$ $ $ $ $r5   rS  c                 $    t          | d          S NT)throw)r   )r  s    r3   is_valid_dm_throwri    s    q%%%%r5   c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )TestIsValidDMc                     t          j        dt           j                  }t          j        t
                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nrs  rF   rY   r  r   r;  r<  r~   ri  r#  r  s     r3   $test_is_valid_dm_improper_shape_1D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_1D_E  s    HT,,,]:&& 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!   AAAc                     t          j        dt           j                  }t          t	          |          d           d S )Nrm  rF   FrY   r  r   r	   r   ro  s     r3   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s4    HT,,,[^^U+++++r5   c                     t          j        dt           j                  }t          j        t
                    5  t          |           d d d            d S # 1 swxY w Y   d S Nr   r   r   rF   rn  ro  s     r3   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s    HYbj111]:&& 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!rq  c                     t          j        dt           j                  }t          t	          |          d           d S Nrw  rF   Frs  ro  s     r3   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s4    HYbj111[^^U+++++r5   c                    t           j                            d          }t          |          }t	          dd          D ]	}d|||f<   
t          j        t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nr  r   rs  r   )	rY   r   r   r   r   r;  r<  r~   ri  r#  rD  r  r   s       r3   #test_is_valid_dm_nonzero_diagonal_Ez1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_E  s    INN2qMMq! 	 	AAadGG]:&& 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   "A??BBc                     t           j                            d          }t          |          }t	          dd          D ]	}d|||f<   
t          t          |          d           d S )Nr  r   rs  r   F)rY   r   r   r   r   r	   r   r}  s       r3   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sb    INN2qMMq! 	 	AAadGG[^^U+++++r5   c                     t           j                            d          }t          |          }|d         dz   |d<   t	          j        t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nr  r   rs   rs   rs   r   )rY   r   r   r   r;  r<  r~   ri  r#  rD  r  s      r3   test_is_valid_dm_asymmetric_Ez+TestIsValidDM.test_is_valid_dm_asymmetric_E  s    INN2qMMD'A+$]:&& 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   A33A7:A7c                     t           j                            d          }t          |          }|d         dz   |d<   t	          t          |          d           d S )Nr  r  rs   r  FrY   r   r   r   r	   r   r  s      r3   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_F  sM    INN2qMMD'A+$[^^U+++++r5   c                     t          j        dt           j                  }t          t	          |          d           d S )Nr  rF   Trs  ro  s     r3   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s4    HV2:...[^^T*****r5   c                     t           j                            d          }t          |          }t	          t          |          d           d S )Nrs   Tr  r  s      r3   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2  <    INN1qMM[^^T*****r5   c                     t           j                            d          }t          |          }t	          t          |          d           d S Nr   Tr  r  s      r3   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3  r  r5   c                     t           j                            d          }t          |          }t	          t          |          d           d S )N   Tr  r  s      r3   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4  r  r5   c                     t           j                            d          }t          |          }t	          t          |          d           d S )Nr  Tr  r  s      r3   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5  s<    INN2qMM[^^T*****r5   N)r   r  r  rp  rt  rx  r{  r~  r  r  r  r  r  r  r  r  rh   r5   r3   rk  rk    s        ! ! !
, , ,! ! !
, , ,! ! !, , ,! ! !, , ,+ + ++ + +
+ + +
+ + +
+ + + + +r5   rk  c                 $    t          | d          S rg  )r   )rD  s    r3   is_valid_y_throwr     s    at$$$$r5   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestIsValidYc                     t          j        dt           j                  }t          j        t
                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nr   r   rF   rY   r  r   r;  r<  r~   r  r#  rD  s     r3   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_E	  s    HWBJ///]:&& 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 rq  c                     t          j        dt           j                  }t          t	          |          d           d S )Nr  rF   FrY   r  r   r	   r   r  s     r3   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_F  s4    HWBJ///Z]]E*****r5   c                     t          j        dt           j                  }t          j        t
                    5  t          |           d d d            d S # 1 swxY w Y   d S rv  r  r  s     r3   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_E  s    HYbj111]:&& 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 rq  c                     t          j        dt           j                  }t          t	          |          d           d S rz  r  r  s     r3   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_F  s4    HYbj111Z]]E*****r5   c                 j    |                      d          }t          t          |          d           d S )Nr   Tcorrect_n_by_nr	   r   r  s     r3   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2  1    ""Z]]D)))))r5   c                 j    |                      d          }t          t          |          d           d S r  r  r  s     r3   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3  r  r5   c                 j    |                      d          }t          t          |          d           d S )Nr!  Tr  r  s     r3   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4#  r  r5   c                 j    |                      d          }t          t          |          d           d S )Nrs  Tr  r  s     r3   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5'  r  r5   c                 >   t                      }t          dd          D ] }|                    ||dz
  z  dz             !t          dd          D ]L}||vrFt          j        t
                    5  |                     |           d d d            n# 1 swxY w Y   Md S rA  rC  rG  s       r3   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100+  s    EEq" 	# 	#AEE!q1u+/""""q# 	" 	"Azz]:.. " "JJqMMM" " " " " " " " " " " " " " "	" 	"rI  c                 b    t           j                            |          }t          |d          S rg  )rY   r   r   r   rL  s      r3   rF  zTestIsValidY.bad_y4  s(    INN1!4((((r5   c                 V    t           j                            ||dz
  z  dz            }|S rP  rQ  rL  s      r3   r  zTestIsValidY.correct_n_by_n8  s'    INNAQKA-..r5   N)r   r  r  r  r  r  r  r  r  r  r  r  rF  r  rh   r5   r3   r  r    s        
     
+ + +     
+ + +* * ** * ** * ** * *" " ") ) )    r5   r  r_  )g      $g      ru  c                 &   t          j        t                    5  t          ddgddg|            d d d            n# 1 swxY w Y   t          j        t                    5  t          ddgddg| ddg           d d d            d S # 1 swxY w Y   d S )Nrs   r   r   r!  )r;  r<  r~   r#   re  s    r3   
test_bad_pr  =  s    
z	"	" % %1a&1a&!$$$% % % % % % % % % % % % % % %	z	"	" - -1a&1a&!aV,,,- - - - - - - - - - - - - - - - - -s!   <A A  BB
B
c                      t          j        t                    5  t          g dg d           d d d            d S # 1 swxY w Y   d S )N)FFF)r;  r<  r~   r'   rh   r5   r3   test_sokalsneath_all_falser  F  s    	z	"	" B B)))+@+@+@AAAB B B B B B B B B B B B B B B B B Bs   <A A c                      t          t          g dg d          d           t          t          g dg d          d           d S )Nrs   r   r   r   r!  r  rs   rs   rs   r   r   rs   r   rs   r   r   )r	   	wcanberrarh   r5   r3   r  r  L  sL    999iii00!444<<<66:::::r5   c                      t          t          g dg d          dd           t          t          g dg d          dd           d S )	Nr  r  UUUUUU?   decimalr  r  rw  )r
   wbraycurtisrh   r5   r3   test_braycurtisr  R  sV    IIIyyy9962NNNNLLL,,,??bQQQQQQr5   c                     t          j        g d          } t          j        g d          }t          t          | |          dd           t          t	          | |          t          j        d          d           t          j        t          d          5  t	          | t           j	        d d f         |t           j	        d d f                   t          j        d          f d d d            n# 1 swxY w Y   t          j        t          d          5  t          | t           j	        d d f         |t           j	        d d f                    d d d            n# 1 swxY w Y   t          j        t          d          5  t          | d d t           j	        f         |d d t           j	        f                    d d d            n# 1 swxY w Y   t          j
        d	                              d
d
          }t          j        t                    5  t	          ||           d d d            n# 1 swxY w Y   t          j        t                    5  t          ||           d d d            n# 1 swxY w Y   t           j                            d          }|                    d          }|                    d          }t	          ||          }t          ||          }t          |d
z  |d           d S )N)rs   rs   rs   r   r   r   r(  r  r  r   Input vector should be 1-Dr  r!  r   iIr  )rY   r   r
   r  r  rx  r;  r<  r~   newaxisr:  r   r   r   r   )ry  rz  r   rsrD  d1d2s          r3   test_euclideansr  X  s   	)))		B	)))		B R,,c2>>>>
2r**BGAJJCCCC 
z)E	F	F	F E E2bj!!!m$bQQQ&788"'!**DDE E E E E E E E E E E E E E E	z)E	F	F	F ; ;R
AAA&2:qqq=(9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z)E	F	F	F ; ;R2:&111bj=(9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 		!Q""A	z	"	"  1a              	z	"	"  Q               
		z	*	*B
A
A	Aq		B	a		BAr2......s[   AC33C7:C79EE"%E"9G		GGH22H69H6I33I7:I7c                      g d} g d}t          j        t                    5  t          | |           d d d            d S # 1 swxY w Y   d S )Nr   r   rs   r  r;  r<  r~   whammingr   rD  s     r3   test_hamming_unequal_lengthr  y  s    		AA	z	"	"  A                 s   A  AAc                      g d} g d}g d}d}t          j        t          |          5  t          | ||           d d d            d S # 1 swxY w Y   d S )Nr  r  z/'w' should have the same length as 'u' and 'v'.r  r  )ur  r   r(  s       r3   "test_hamming_unequal_length_with_wr    s    		A		AA
;C	z	-	-	-  Aq                 s   A		AAc                      t          j        g dd          } t          j        g dd          }d}t          t          | |          |           d S )N)eggsspamr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z|S4rF   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rY   r   r   r  )ro   r   desireds      r3   test_hamming_string_arrayr    s    
 B B B 	 	 	A 	 B B B 	 	 	A GHQNNG,,,,,r5   c                     t          j        g dg dg          } t          | ddd           }t          | | ddd           }t          | dd          }t          | | dd          }t	          ||d           t	          ||d           d S )N)
QUUT@      Y@r  r  g      B@g      N@g     V@g     b@g      8@g      H@r#   rs   )r4   r_  r   )r4   r_  rS  r  )rY   r   r   r   r   )arr_inp0c0p1c1s        r3   test_minkowski_wr    s    X 2 2 22 2 23 4 4F 
vkQ$	7	7	7B	vvkQ$	?	?	?B	vkQ	/	/	/B	vvkQ	7	7	7BB''''B''''''r5   c                  d   g d} g d}t           j        t           j        t           j        t           j        fD ]k}t          t          j        | |          t          j        ||                    }t          t          j        |j	        t           j
                             lt           j        t           j        t           j        t           j        fD ]}t          j        |          j        }t          dgt          j        |g|                    }t          t          j        |g|          dg          }t#          ||           t#          |t          j        |          dz             t           j        t           j        t           j        t           j        g}dD ]?}t-          t           |          r(|                    t1          t           |                     @|D ]O}t          t          j        | |          t          j        ||                    }t#          |j	        |           Pd S )Nr  )r!  rs  r  rF   r   r   )float16float128)rY   r)  int16r(  r  r  asarrayr   r   rG   floatinguint8r  uint32uint64iinfomaxr	   r   r^   	complex64
complex128hasattrr   getattr)r   rD  rG   dumaxr  r  dtypess           r3   test_sqeuclidean_dtypesr    s    			A		A'28RXrx8 5 5AU333RZ5O5O5OPPagr{334444(BIry")< . .x"1#rz4&>>>??"*dV5999A3??RRD))1,----j"*blBMBF( . . 2u 	.MM'"e,,--- % %AU333RZ5O5O5OPPQWe$$$$% %r5   c                     t          j        g dg dg dg dg          }|                                }t          |||            t	          ||            t          ||           d S )Nr'  r)  r-  g3333336@gL7@g333333F@)rY   r  r  r   r   r   )r4   r>  r  s      r3   test_modifies_inputr    s|    	\\\$__$__''') 
* 
*B ggiiG	"b&	"fr7#####r5   c                    t          j        g dg dg dg dg          }t          j        t                    5  t          ||| d           d d d            n# 1 swxY w Y   t          j        t                    5  t          || d           d d d            n# 1 swxY w Y   dD ]}|t          j        d          i}|dk    r| d	k    s|d
k    r| dk    s|dk    r| dk    r=t          j        t                    5  t          ||| fi | d d d            n# 1 swxY w Y   t          j        t                    5  t          || fi | d d d            n# 1 swxY w Y   d S )Nr'  r)  r-  r  r   )r_  r  r  r   r  r&   r  r"   r_  r#   )rY   r  r;  r<  r   r   r   )r4   r>  rE  r   s       r3   test_Xdist_deprecated_argsr    s   	\\\$__$__''') 
* 
*B
 
y	!	! " "b"fb!!!" " " " " " " " " " " " " " " 
y	!	!  b&"                 ( (rz"~~&CZZFl224KKFm$;$;3JJ6[#8#8]9%% 	, 	,"b&++F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ]9%% 	( 	("f'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( (sG   AA A=BB"B>DD	!D	>EE	 E	c                    t           d         d d dd d df         }t          j        |j        d                   }|d d d          |d d d<   | dv rt	          j        d           | t          |           d| z   fD ]}t	          j        t                    5  t          |||           d d d            n# 1 swxY w Y   t	          j        t                    5  t          ||||           d d d            n# 1 swxY w Y   d S )	NrN   rs  r   rs   )r&   r"   r!   not applicabler9  r   )r[   rY   r   r   r;  rL  r=  r<  r~   r   r   )r4   rl  r   r  s       r3   test_Xdist_non_negative_weightsr     s   
 !##A#sss(+A

A!fWAcccF???$%%%d6llGf$45    ]:&& 	 	!Q!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:&& 	  	 !QQ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	    s$   B44B8	;B8	C88C<	?C<	c                  B   g d} t          |           }t          ||            t          | t          j                  }t          ||            t	          |j        t          j                   dg} t          |           }t	          |j        d           t	          ||            d} t          j        t          d          5  t          |            d d d            n# 1 swxY w Y   t          j
        d                              ddd          } t          j        t          d          5  t          |            d d d            n# 1 swxY w Y   ddgd	d
gg} t          j        t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nr  rF   rs   r  r  rs  r   r   r   r!  )r   r   rY   r   r	   rG   rt   r;  r<  r~   r:  r   r  s     r3   test__validate_vectorr    sJ   		AAq!"*---Aq!"*%%%	
AAA	A	z)E	F	F	F                 		!QA&&A	z)E	F	F	F                 Q!QA	z)E	F	F	F                   s6   CC"%C"-E		EE7FFFc                  ,   t          j        dt                    } t          | d         | d                   }|dk    sJ t	          | d          }t          |dg           t          | d d         | d d         d          }t          |dgg           d S )N)r   r  rF   r   ru  r)   rs   )rY   r   r  r  r   r	   r   )r   r  s     r3   test_yule_all_samer    s    
d###AadAaDA8888aASEaeQrrUF##AcUGr5   c                     t          t          g dg dd          d           t          t          ddgddg          d           t          t          g dg d          d           t          t          ddggddggd	
          ddg           t          t          ddggddggd
          dg           t          t          ddggddggd	d          ddgg           t          t          ddggddggdd          dgg           t          j        g dg dg dg          } t          j        g dg dg dg          }t          t          | |d	
          g d           t          t          | |d
          g d           d S )N)r   ru  ru  )ru  r   ru  r   r   ru  rw  g)>d?r  r   r   rs   gД?T)r   keepdims)rs   r   r   r!  )rs  r     re   )	   r        )   r  r  r=  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   rY   r   )ro   r   s     r3   r  r  %  s.   oooLL  sCj3*==+- - -oooGGMMMSzlc3ZLqIIIc
$ $ $Szlc3ZLqIII"% % %Szlc3ZLq/35 5 58;SzlD D DSzlc3ZLq/35 5 58A{mE E E 	,,,,,!//# 	$ 	$A 	"""""""""$ 	% 	%A a333DDDF F Fa333999; ; ; ; ;r5   c                  P   t          j        g d          } t          j        g d          }t          | |          }t          | |gd          }t	          ||           t          t          j        |           t          j        |          d          }t	          ||           d S )N)rs   r   r   )r   r   r   r   rt  )rY   r   r   r   r   r   r  )arr_1arr_2expectedactuals       r3   test_gh_17703r  B  s    HYYYEHYYYEE5!!HE5>&111FFH%%%2=''=''8 8 8FFH%%%%%r5   c                     | dv rt          j        d           t          j        dt          j                  }|                    d            t          t          j        j	        |           |||           d S )N)r!   r"   r&   r  r  rF   F)writer  )
r;  rL  rY   r:  r   setflagsr  scipyspatialdistance)r4   r   s     r3   test_immutable_inputr   M  su    ???$%%%
	"BJ'''AJJUJ+GEM"F++AqA666666r5   c                  \   t          j        g d          } t          j        g d          }t          j        g d          }t          | ||          }t	          |d           t          t          j        |           t          j        |          d|          }t	          ||           d S )N)r   r   rs   rs   )r   rs   rs   r   )r  r*  gffffff?g?r  g2)^ ?r)   )r4   r   )rY   r   r  r)   r   r   r  )ro   r   r   r  r  s        r3   test_gh_23109r"  U  s    
A
A

'''((AAqAHH01112=##=## A' ' 'F FH%%%%%r5   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestJaccardc                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  rK   pdist-jaccardr    r  r  r  s        r3   test_pdist_jaccard_randomz%TestJaccard.test_pdist_jaccard_randomc  sF    "#_%I&&s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r&  r  r  s        r3   !test_pdist_jaccard_random_float32z-TestJaccard.test_pdist_jaccard_random_float32j  P    Jr-.//_%I&&s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  rK   r'  test_jaccardr  r  r  s        r3   test_pdist_jaccard_random_nonCz*TestJaccard.test_pdist_jaccard_random_nonCq  sF    "#_%N++s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r&  rw  r  s        r3   test_pdist_djaccard_randomz&TestJaccard.test_pdist_djaccard_randomx  r+  r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r&  r  r  s        r3   "test_pdist_djaccard_random_float32z.TestJaccard.test_pdist_djaccard_random_float32  r+  r5   c                     d}t          t          j        d          d          }t          t          j        d          ||           d S )NrS  rs  r   r    r  r  r   rY   r  r   r#  r[  r#  s      r3   test_pdist_djaccard_allzerosz(TestJaccard.test_pdist_djaccard_allzeros  sC    "(6""I..ac222222r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r-  rw  r  s        r3   test_pdist_djaccard_random_nonCz+TestJaccard.test_pdist_djaccard_random_nonC  sP    Jr-.//_%N++s333333r5   c                     d}t          t          j        d          d          }t          t          j        d          ||           d S )NrS  r5  r.  r  r  r6  r7  s      r3   !test_pdist_djaccard_allzeros_nonCz-TestJaccard.test_pdist_djaccard_allzeros_nonC  sC    "(6""N33ac222222r5   c                 N   t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t	          |ddd           t	          |ddd           d S r  wjaccardrY   r   r  r   r  s      r3   test_pdist_jaccard_mtica1z%TestJaccard.test_pdist_jaccard_mtica1  s    RXooo..Xooo..0 0bhd;;;hd;;;= =3QU3333Cae444444r5   c                 N   t          t          j        g d          t          j        g d                    }t          t          j        g dt                    t          j        g dt                              }t	          |ddd           t	          |ddd           d S r  r>  r  s      r3   test_pdist_jaccard_mtica2z%TestJaccard.test_pdist_jaccard_mtica2  s    RXiii((Xiii((* *bhyyy555hyyy5557 75qu5555E666666r5   c                 b   t          j        g d          }t          j        g d          }t          j        t                    j        }t          t          ||          d|           t          t          |g|gd          dgg           t          t          ||gd          dg           d S )N)ig      @r   )r   r   r  r  r    )	rY   r   r  r  r[  r   r    r   r   )r#  r   rD  r[  s       r3   test_non_01_inputzTestJaccard.test_non_01_input  s     H]]]##H]]]##huoo!1s5555qcA3	22cUG<<<q!fi003%88888r5   N)r   r  r  r(  r*  r/  r1  r3  r8  r:  r<  r@  rB  rE  rh   r5   r3   r$  r$  a  s        4 4 44 4 44 4 44 4 44 4 43 3 3
4 4 43 3 3
5 5 57 7 79 9 9 9 9r5   r$  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestChebyshevc                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-chebyshevr   r  r  r  s        r3   test_pdist_chebyshev_randomz)TestChebyshev.test_pdist_chebyshev_random  sG    !"&';''s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr  r  rI  r   r   rW  r  r  s        r3   #test_pdist_chebyshev_random_float32z1TestChebyshev.test_pdist_chebyshev_random_float32  sW    Jr,-..&';''sGaKHHHHHHr5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  rI  test_chebyshevr  r  r  s        r3    test_pdist_chebyshev_random_nonCz.TestChebyshev.test_pdist_chebyshev_random_nonC  sH    !"&'+,,s333333r5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nri  r  pdist-chebyshev-irisr   r  r  r  s        r3   test_pdist_chebyshev_irisz'TestChebyshev.test_pdist_chebyshev_iris  sE    vJ+,;''s333333r5   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  rQ  r   r   rW  r  r  s        r3   !test_pdist_chebyshev_iris_float32z/TestChebyshev.test_pdist_chebyshev_iris_float32  sU    Jr&z""+,;''sGaKHHHHHHr5   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nri  r  rQ  rN  r  r  r  s        r3   test_pdist_chebyshev_iris_nonCz,TestChebyshev.test_pdist_chebyshev_iris_nonC  sF    vJ+,+,,s333333r5   c                     g d}g d}g d}t          t          |||          d           t          t          ||gd|          dg           t          t          |g|gd|          dgg           d S )Nr  r  rs  r!  )r   rs   rs  r   r   r  r	   r   r   r   r#  r   rD  r   s       r3   test_weightedzTestChebyshev.test_weighted  s     IIIIIIYq!Q''+++UAq6;!444qc:::UA3[A666!>>>>>r5   c                     g d}g d}g d}t          t          |||          d           t          t          ||gd|          dg           t          t          |g|gd|          dgg           d S )Nr  rX  r  r   r   r  rY  rZ  s       r3   test_zero_weightzTestChebyshev.test_zero_weight  s    IIIIIIYq!Q''+++UAq6;!444qc:::UA3[A666!>>>>>r5   N)r   r  r  rJ  rL  rO  rR  rT  rV  r[  r]  rh   r5   r3   rG  rG    s        4 4 4I I I4 4 44 4 4I I I4 4 4? ? ?? ? ? ? ?r5   rG  rw   )	NNFTFFFFN)	functoolsr   r   os.pathrS   rJ  r  r   r  numpyrY   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)   scipy._lib._utilr*   r+   scipy.conftestr,   fixturer4   rQ   r   _tdist_ytdistr[   rc   ri   r   r   r   r   r   assert_allclose_forgivingr   r  rn  rZ  r  r  r  r  r  r  r  
wcityblock
wchebyshevr  r  r?  r  r  r  r  r  r  r  r  r  r	  r+  rS  ri  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r"  r$  rG  rh   r5   r3   <module>rl     s	  F % $ $ $ $ $ $ $  



                2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2     & & & & & & & & & & & & & & & & & & & & & &D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D / . . . . . . . . . . . . . ~Y777  87  
@ 
///2222222222222224
 <D
E 
E 
E *V


 > > >     # # #    -17;+0/4	-$ -$ -$ -$`       8 $GO$???  '@!kTB B B B   !tQT "td#dEPU"c#<c c c cL 
Q	>	>	>!/%a*/EC C C	Qa	H	H	H!/%a-21> > >!/.11&w??? ?	H_Y''
_Y''

/&
!
!{++?7##_Y5999
{u===oj))OH777	{++oj))cA cA cA cA cA cA cA cAL	I? I? I? I? I? I? I? I?VP4 P4 P4 P4 P4 P4 P4 P4f@- @- @- @- @- @- @- @-F32 32 32 32 32 32 32 32l $  $  $  $  $  $  $  $F& & &F+ F+ F+ F+ F+ F+ F+ F+R% % %6 6 6 6 6 6 6 6r 00011- - 21-B B B; ; ;R R R/ / /B    - - -( ( (% % %>	$ 	$ 	$( ( (8       4
 
 
; ; ;:& & &7 7 7	& 	& 	&N9 N9 N9 N9 N9 N9 N9 N9b=? =? =? =? =? =? =? =? =? =?r5   