
    YhY                    >   d dl Z d dlZd dlmZm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.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z:  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 ZAd ZB eB             d ZCd_dZD	 	 	 	 	 d`dZEd ZFd ZGd_dZH eed          ZIeId  dfd!ZJd"dd# d$ddddddddddd%d eIfd&ZK G d' d(          ZLd)eMfd*ZN eKed+d,          ZO eKed+dd-          ZP eKed+dd+.          ZQ eKed+ddd+/          ZR eKe/          ZS eKe)d0          xZTZU eKe5          ZV eKe'          ZW eKe$          ZX eKe#          ZY eKe&          ZZ eKe%          Z[ eKe,          Z\ eKe*          Z] eKe(d1          Z^ eKe4d1          Z_ eKe!          Z` eKe"d1          Za eKe3          Zb eKe2          Zc eKe0          Zd G d2 d3          Ze G d4 d5          Zf G d6 d7          Zg G d8 d9          Zh G d: d;          Zi G d< d=          Zjd> Zk G d? d@          ZldA Zm G dB dC          Znejo        p                    dDg dE          dF             ZqdG ZrdH ZsdI ZtdJ ZudK ZvdL ZwdM ZxdN ZydO Zzejo        j{        dP             Z|ejo        j{        dQ             Z}ejo        j{        dR             Z~ejo        j{        dS             Zejo        j{        dT             ZdU ZdV ZdW ZdX Zejo        j{        dY             ZdZ Z G d[ d\          Z G d] d^          ZdS )a    N)wrapspartial)norm)verboseassert_assert_array_equalassert_equalassert_almost_equalassert_allclosebreak_cyclesIS_PYPY)	
squareformpdistcdist	num_obs_y
num_obs_dmis_valid_dm
is_valid_y_validate_vector_METRICS_NAMES)
braycurtiscanberra	chebyshev	cityblockcorrelationcosinedice	euclideanhammingjaccardjensenshannonkulczynski1mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalmichenersokalsneathsqeuclideanyule)np_longnp_ulong)skip_xp_invalid_argsession)paramsscopec                     | j         S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)requests    s/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_distance.pymetricr6   E   s    
 =    )zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r     m         )r8   r   '        )r9   r=   r     4     )r:   r>   rA   r      e  )r;   r?   rB   rD   r     )r<   r@   rC   rE   rF   r   doubledtypec                     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       r5   load_testing_filesre   |   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r7   c                  <    t          j        d          j        dk     S )Nr      )r[   intpitemsize r7   r5   	_is_32bitrk      s    71::""r7   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 rj   )r[   
asanyarray.0as     r5   
<listcomp>z!_chk_asarrays.<locals>.<listcomp>   s"    ///1bmA///r7   c                 P    g | ]#}|j         d k    rt          j        |          n|$S    )ndimr[   ravelro   s     r5   rr   z!_chk_asarrays.<locals>.<listcomp>   s>     # # # "#1"(1+++! # # #r7   r   c              3   >   K   | ]}t          j        |          V  d S N)r[   
atleast_1dro   s     r5   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s,      442=##444444r7   c              3   D   K   | ]}|j         d          j         k    V  dS )r   N)rv   )rp   rq   arrayss     r5   r{   z _chk_asarrays.<locals>.<genexpr>   s0      <<16VAY^+<<<<<<r7   z(array ndim must be the same for neg axis)tupleall
ValueErrorrangerv   )r}   axiss   ` r5   _chk_asarraysr      s    /////F|# #!# # #44V44444Faxx<<<<V<<<<< 	IGHHHVAY^$$T*TGr7   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 ry   )r[   magetmasknomaskro   s     r5   r{   z_chk_weights.<locals>.<genexpr>   s9      QQQBEMM!,,BEL@QQQQQQr7   c                 Z    g | ](}t          j        t          j        |                    )S rj   )r[   isnansumro   s     r5   rr   z _chk_weights.<locals>.<listcomp>   s*    888ABHRVAYY''888r7   Tc              3   b   K   | ]*\  }}|rt           j                            |          n|V  +d S ry   r[   r   masked_invalid)rp   rq   has_nans      r5   r{   z_chk_weights.<locals>.<genexpr>   s\       D D)q' 7>D25//2221 D D D D D Dr7   r   c              3   F   K   | ]}j         |j                  fk    V  d S ry   shape)rp   rq   r   weightss     r5   r{   z_chk_weights.<locals>.<genexpr>   s3      AAQw} 00AAAAAAr7   z*weights shape must match arrays along axiszweights cannot be negativec              3   F   K   | ]}t          j        |           V  dS )r   N)r[   take)rp   rq   r   pos_weightss     r5   r{   z_chk_weights.<locals>.<genexpr>   s4      NN!271k===NNNNNNr7   ru   )r   anyr~   zipr[   rn   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    ``         @r5   _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##r7   c                     | | S |                      t                    }| |k                                    rt          d|            |S )Nz0frequency (integer count-type) weights required )astypeintr   r   )r   int_weightss     r5   r   r      sT    ..%%K;##%% WUGUUVVVr7   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   ru   c              3   (   K   | ]}|k    |V  d S ry   rj   )rp   ir   s     r5   r{   z!_weight_masked.<locals>.<genexpr>   s'      CC1dQCCr7   r   )r[   rn   r   r   r   rv   r~   r   r   r   r   )r}   r   r   rq   	axis_masknot_axess     `   r5   r   r      s    |mG$$G - -EMM!$$	$$6A::CCCCafCCCCCH!844I1y'',,,,Nr7   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 rj   )r[   
issubdtyperI   integerr   float64)rp   arrs     r5   rr   z_rand_split.<locals>.<listcomp>   sS     * * * )+ci(L(L cjj$$$* * *r7   rH   c                      t          j        t          j         |                    }|                     fdt	           j                  D                       S )Nr   c                 :    g | ]}|k    rj         |         nd S rt   r   )rp   r   rq   r   s     r5   rr   z/_rand_split.<locals>.mytake.<locals>.<listcomp>   s;     7 7 7#$ ./$YYqwqzzA 7 7 7r7   )r[   rn   r   reshaper   rv   )rq   ixr   records   ` ` r5   mytakez_rand_split.<locals>.mytake   sm    rwq"488899~~ 7 7 7 7 7(-af7 7 7 8 8 	8r7   r   c              3   :   K   | ]}|j                  k    V  d S ry   r   )rp   rq   r   n_obss     r5   r{   z_rand_split.<locals>.<genexpr>   s.      66!qwt}%666666r7   z#data must be aligned on sample axis      ?c           
      V    g | ]%}t          j        | |                      &S r   r[   append)rp   rq   r   r   split_ixs     r5   rr   z_rand_split.<locals>.<listcomp>   sR     8 8 8+, )Avva===!%' ' ' 8 8 8r7   )r[   arrayr   randomRandomStater   r   r   r   randintrandr   )r}   r   r   	split_perseedseeded_randr   prev_wqr   r   r   s     `      @@@r5   _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?r7   h㈵>atolc                     | S ry   rj   xs    r5   <lambda>r     s     r7   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)r[   r   r   AttributeError	TypeErrorr   r   _rough_check)	rq   br   keywcheck_acheck_ba_ib_is	            r5   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 ry   rj   r   s    r5   r   r     s    1 r7   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 rj   )r[   rz   squeezero   s     r5   rr   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>,  s*    AAAQbmAIIKK00AAAr7   )r   g     @Y@gB`"۹?)r   r   r   e   
nan_policyomitc                 L    g | ]!}t           j                            |          "S rj   r   ro   s     r5   rr   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>Z  s(    !N!N!Na"%"6"6q"9"9!N!N!Nr7   c                 >    g | ]}t          j        ||           S r   r   )rp   rq   r   s     r5   rr   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>d  s*    IIIQbi14888IIIr7          @z NotImplemented weights:    )
stacklevel)getr   r~   r   	Exceptiontyper   r   slicerv   r[   nanr   NotImplementedErrorwarningswarn__name__)&argskwargsresultr}   restr   r   e
dud_arraysdud_weightsdud_argsrq   indexer
dup_arraysdup_weightsdup_argssplitsplit_arrayssplit_weights
split_argsr   
const_testdefault_axisdud_testdup_testra   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args&                       @r5   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   )ra   r  r  r   r  r   r  r  r  r  r  r  r  r  r  r   r   r   r  s   `````````````````  r5   _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 Nr7   c                       e Zd Zd Zd ZdS )DummyContextManagerc                     d S ry   rj   selfs    r5   	__enter__zDummyContextManager.__enter__~      r7   c                     d S ry   rj   )r  r   s     r5   __exit__zDummyContextManager.__exit__  r!  r7   N)r   
__module____qualname__r   r#  rj   r7   r5   r  r  }  s2              r7   r  r6   c                 L    | dv rt          j                    S t                      S )N)r"   r(   )pytestdeprecated_callr  r6   s    r5   maybe_deprecatedr*    s)    111%'''"$$$r7   ru   )r  r   )r  r   r  )r  r   r  )r  r   r  r  )r  )r  c                   P   e Zd Zd Zej        j        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        j        d             Zej        j        d             Zej        j        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)rP   rQ   rR   rO   rN   )booluintr   r`   rnd_eo_namesr-   r,   r[   r`   r   valid_upcastsr  s    r5   setup_methodzTestCdist.setup_method  ^    1 1 1 (0"*bj&Q'.
BJ&G&(j"*%=*,*7 7r7   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          |          5  t          ||fd|i| d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t          |          5  t          ||fdt          |          i| d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t          |          5  t          ||fdd|z   i| d d d            n# 1 swxY w Y   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      @rC  r?  Q	@r   N0tV4l1D_p4raMr      r6   test_)r[   aranger'  raisesr   r*  r   eval)r  r6   X1X2r   r   s         r5   test_cdist_extra_argszTestCdist.test_cdist_extra_args  s    llOOO___=llOOO___=$(ry||<<v|]9%% 	7 	7!&)) 7 7b"66V6v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ]9%% 	= 	=!&)) = =b"<<T&\\<V<<<= = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= ]9%% 	A 	A!&)) 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 	A 	A ]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	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   BA:.B:A>	>BA>	BBB5DC/#D/C3	3D6C3	7DD
D
*E1:EE1E	E1!E	"E11E58E5F33F7:F7HH	H&III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 )Nru   r   c                     ||z   |z   S ry   rj   r   yargkwargkwarg2s        r5   
_my_metricz:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r7   r7  r9  r=  r@  rB  rD  rE  r   rF  rH  r>  ffffff
@rU  rV  rU  皙?r6   rT  rV  皙@ru   r   )r[   rJ  r'  rK  r   r   r   )r  rW  rM  rN  r   r   s         r5   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  epsrM  rN  Y1Y2s         r5   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  s]    
^
^R[11R%566BS'A+>>>>>>r7   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t           d         }t           d         }t          ||d|          }t          ||d|          }t          ||d|t          dk    	           d S )
NvIh%<=rc  rd  r$   rn  test_minkowskir   r   )r   rg  r   rh  )r  rn  rj  rM  rN  rk  rl  s          r5   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sk     
^
^R[A666R%5;;;BQS'A+FFFFFFr7   c                    d}t           d         }t           d         }t          ||d          }d }dt          j        | ||          z  | ||          z  j                  z
  }t          |||t          dk               d S )	N+=rc  rd  r   c                 l    t           j                            | d                              dd          S )Nru   r   r   )r[   linalgr   r   )Xs    r5   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s*    9>>!!>,,44R;;;r7   ru   r   rf  )r]   wcdistr[   dotTr   r   )r  rj  rM  rN  rk  r|  rl  s          r5   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  s    
^
^BH%%	< 	< 	< eeBii2b		>*<===BS'A+>>>>>>r7   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#   r)                @      ?r   r   ru   r   )r[   r   r   r   sqrtr'  rK  r   )r  x1x2distrt2s        r5   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   r$  r%  rj   r7   r5   myclassr            Dr7   r  c                 ~    t          | d                   rt          |d                   st          d          dS Nr   zType has been changed+?
isinstancer   r   rS  r  s     r5   rW  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric"  B    adG,, :JqtW4M4M : !89995r7   rH   r)  r  r   r   )r[   r   objectr   r	   r   )r  rW  rL   cdist_yright_yr  s        @r5   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble  s    	 	 	 	 	 	 	 		 	 	 	 	 x''))V444d:666Wgw{;;;;;;r7   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Nr6   rI  r   rf  )
r   rL  r   r   r   	__class__printr   r'  rK  )r  rM  rN  r6   rj  r   y1y2y3r  e_clss              r5   _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 )Nr  r   ru   r   	testing:  with: >   r   r+   r&   r"   r)   r(   r%   r/  r'   r   r   r   Vr#   VI)r2  r]   r   r  r  r[   vstackr   r   var
atleast_2dcovr  r   rz  inv)r  r6   eo_namerM  rN  X12r  r  s           r5   test_cdist_calling_conventionsz(TestCdist.test_cdist_calling_conventions@  s    ( 	G 	GG GSSqS$$B$Y'BGQTT33Q3Y'B{{k69g>>> ) ) ) .47-B-B++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F3	G 	Gr7   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  rN   r/  rR   r0  rQ   r   rP   r`   r   r  r   ru   r   r)  rf  )r]   r3  r   r   r   r   r  r  r   r'  rK  )r  r6   rj  teststestrM  rN  r  new_typer  r  r  X1newX2news                 r5   test_cdist_dtype_equivalencez&TestCdist.test_cdist_dtype_equivalence_  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"c                    d}t           d         }t           d         }|j        d         |j        d         }}t                      }|dk    rd|d<   t          j        ||ft          j                  }t          |          5  t          |||fi |}	d d d            n# 1 swxY w Y   t          |          5  t          |||fd	|i|}
d d d            n# 1 swxY w Y   t          |	|
|t          d
k               t          |
|u            t          j        |dz
  |dz   ft          j                  }t          j        t                    5  t          |          5  t          |||fd	|i| d d d            n# 1 swxY w Y   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          |          5  t          |||fd	|i| d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t          |          5  t          |||fd	|i| d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        ||ft          j                  }t          j        t                    5  t          |          5  t          |||fd	|i| d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrb  rc  rd  r   r$   rq  rn  rH   outr   rf  ru   F)rI   order)r]   r   dictr[   emptyr   r*  r   r   r   r   r'  rK  r   int64)r  r6   rj  rM  rN  out_rout_cr   out1rk  rl  out2out3out4out5s                  r5   test_cdist_outzTestCdist.test_cdist_outz  s    
^
^x{BHQKu[  F3Kxbj999f%% 	1 	1r2v0000B	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1f%% 	; 	;r2v::4:6::B	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	BS'A+>>>> 	d
 xq%'*"*===]:&& 	: 	:!&)) : :b"f99$9&999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:
 xYE	""*6 6 669cc33Q3h@xbjDDD]:&& 	: 	:!&)) : :b"f99$9&999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ]:&& 	: 	:!&)) : :b"f99$9&999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:
 xbh777]:&& 	: 	:!&)) : :b"f99$9&999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   BB!$B!7CCCFE<0F<F 	 FF 	FFFI H>2I>I	II	III9J>	J'J>'J+	+J>.J+	/J>>KKM
L2&M
2L6	6M
9L6	:M

MMc                    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          |          5  t          |||fi |}d d d            n# 1 swxY w Y   t          |          5  t          |||fi |}	d d d            n# 1 swxY w Y   t          ||	|t          dk               d S )	Nrb  rc  r   rd  r$   rq  rn  rf  )r]   copyr	   r   flagsc_contiguousr  r*  r   r   r   )
r  r6   rj  rM  rN  X1_copyX2_copyr   rk  rl  s
             r5   test_stridingzTestCdist.test_striding  s    
^CCaC1H%
^CCaC1H%''))'')) 	R!!!R!!!BH))***BH))****+++*+++[  F3Kf%% 	1 	1r2v0000B	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1f%% 	; 	;w::6::B	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	BS'A+>>>>>>s$   D++D/2D/E!!E%(E%c                    t           j                            dd          }t           j                            dd          }t                      }|dk    rd|d<   t	          |          5  t          ||fd|i|}d d d            n# 1 swxY w Y   d |||fD             }~~~t          rt                       t          d |D                       sJ d S )N
   r$   rq  rn  r6   c                 6    g | ]}t          j        |          S rj   )weakrefref)rp   vs     r5   rr   z1TestCdist.test_cdist_refcount.<locals>.<listcomp>  s     ;;;W[^^;;;r7   c              3   .   K   | ]} |            d u V  d S ry   rj   )rp   weak_refs     r5   r{   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s-      @@(88::%@@@@@@r7   )	r[   r   r   r  r*  r   r   r   r   )r  r6   r  r  r   r  	weak_refss          r5   test_cdist_refcountzTestCdist.test_cdist_refcount  s$   Y^^B##Y^^B##[  F3Kf%% 	9 	9B88v888C	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9
 <;b"c];;;	C 	NNN@@i@@@@@@@@@@s   )BB
B
Nr  )r   r$  r%  r4  r'  markthread_unsaferO  r`  rm  parametrizer[   infrv  r  r  r  r  r  r  r  r  r  rj   r7   r5   r,  r,    s       7 7 7 [: : :0"9 "9 "9H? ? ? [S3c4#&S"&#: ; ;G G; ;G? ? ?< < <$< < <C C C C*G G G>K K K6 [+: +: +:Z [? ? ?8 [A A A A Ar7   r,  c            	       d   e Zd Zd Zej        j        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- Z0ej        j        d.             Z1ej        j        d/             Z2ej        j        d0             Z3ej        j        d1             Z4ej        j        d2             Z5ej        j        d3             Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOej        j        dM             ZPdN ZQeRdO             ZSdWdQZTdR ZUdS ZVej        j        dT             ZWej        j        dU             ZXdVS )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.  r1  r  s    r5   r4  zTestPdist.setup_method  r5  r7   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          |          5  t          |fd
|i| d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t          |          5  t          |fd
t          |          i| d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t          |          5  t          |fd
d|z   i| d d d            n# 1 swxY w Y   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>  rE  r   rF  rH  r6   rI  )r[   rJ  r'  rK  r   r*  r   rL  )r  r6   rM  r   r   s        r5   test_pdist_extra_argszTestPdist.test_pdist_extra_args  s    2hc
S#J/$(ry||<<v|]9%% 	3 	3!&)) 3 3b22262223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ]9%% 	9 	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 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 ]9%% 	= 	=!&)) = =b<<6!1<V<<<= = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= ]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 	6s   BA."B.A2	2B5A2	6BB	B	)C99C"C9"C&	&C9)C&	*C99C= C=E#-E E#E	E#E	E##E'*E'F$$F(+F(G22G69G6H77H;>H;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 )Nru   r   c                     ||z   |z   S ry   rj   rR  s        r5   rW  z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metric   rX  r7   r   r   r:  r;  r>  rE  rF  rH  rY  rZ  r[  r\  r]  r^  r_  )r[   rJ  r'  rK  r   r   r   )r  rW  rM  r   r   s        r5   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   rg  r]   wpdist_no_constr   r  rj  r{  Y_rightY_test1s        r5   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random   G    !"&'!![11s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S r  r  r  s        r5   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u'  r  r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r  r[   r`   r]   r  r   r  s        r5   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32.  sQ    Jr,-..&'!![11s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  re  r  r  r  rj  r{  r  Y_test2s        r5    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC5  sH    !"&'!!%566s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  irispdist-euclidean-irisr   r  r  r  s        r5    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double<  sE    vJ+,!![11s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r  r   r   rf  r[   r`   r]   r  r   r   r  s        r5   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32D  U    Jr&z""+,!![11sGaKHHHHHHr7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  re  r  r  r  s        r5   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonCL  sH     vJ+,!!%566s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-seuclideanr'   r  r]   r   r   r  s        r5   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_randomV  sG    !"'(<((s333333r7   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   ru   r  r  )r[   r`   r]   r   r   r  )r  rj  r{  r  r  r  r  s          r5   $test_pdist_seuclidean_random_float32z.TestPdist.test_pdist_seuclidean_random_float32]  s    Jr,-..'(<((s3333 F111%%%<1---s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_seuclideanr  r  r  s        r5   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonCi  sH    !"'(,--s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-seuclidean-irisr'   r  r  r  s        r5   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_irisq  sE    vJ,-<((s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S )Nr   r  r  r'   r  )r[   r`   r]   r   r   r  s        r5   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32x  sO    Jr&z"",-<((s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  r  r  r  r  s        r5   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonC  sH     vJ,-,--s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-cosiner   r  r]   wpdistr   r  s        r5   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_random  sF    !"^$H%%s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r  r[   r`   r]   r  r   r  s        r5    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32  sP    Jr,-..^$H%%s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_cosiner  r  r  s        r5   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonC  sF    !"^$M**s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr   r  pdist-cosine-irisr   r   r  r  s        r5   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_iris  sE    vJ()H%%s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r(  r   r   r   r   )r[   r`   r]   r  r   r   r  s        r5   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32  sU    Jr&z""()H%%sGaKHHHHHHr7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr   r  r(  r%  r   r  r  s        r5   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC  sE    vJ()M**s333333r7   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)r[   absr   r   r   r  r   r  )r  r   r{  s      r5   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_bounds  s~     F29((..33B7788Iq!fq(##A&!+<	> 	> 	> 	> 	> 	>r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-cityblockr   r  r  r  s        r5   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_random  sG    !"&'!![11s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r5  r  r  s        r5   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32  sQ    Jr,-..&'!![11s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r6  test_cityblockr  r  r  s        r5    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC  sH    !"&'!!%566s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrx  r  pdist-cityblock-irisr   r  r  r  s        r5   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  sE    vJ+,!![11s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r>  r   r   rf  r  r  s        r5   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrx  r  r>  r;  r  r  r  s        r5   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  sH     vJ+,!!%566s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-correlationr   r  r  r  s        r5   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  sG    !"()M**s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rE  r"  r  s        r5   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  sQ    Jr,-..()M**s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  rF  test_correlationr  r  r  s        r5   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  sH    !"().//s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-correlation-irisr   r  r  r  s        r5   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  sE    vJ-.M**s333333r7   c                     d}t           d         }t          j        t           d                   }t          |d          }t	          |||t
          dk               d S )Nr  r  rN  r   r   rf  )r]   r[   r`   r  r   r   r  s        r5   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sU    vJ*R 89::M**sGaKHHHHHHr7   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  rN  rK  r  )sysmaxsizer'  skipr]   r  r   r  s        r5    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  se    ;CCK'''vJ-..//s333333r7   rn  ro  rp  r   r   皙	@c                     d}t           d         }t          |d|          }t          |d|          }t          ||d|           d S )Nrs  r  r$   rt  ru  r   )r   rg  r  )r  rn  rj  r{  rk  rl  s         r5   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1r7   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S Nr  r  pdist-minkowski-3.2r$   rW  rt  r  r  r  s        r5   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random'  sL    !"*+!![C888s333333r7   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||           d S r[  r  r  s        r5   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32.  sV    Jr,-..*+!![C888s333333r7   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  r\  ru  rW  rt  r  r  r  s        r5    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC5  sM    !"*+!!%5===s333333r7   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  pdist-minkowski-3.2-irisr$   rW  rt  r  r  r  s        r5   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3r7   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||           d S )Nr   r  rc  r$   rW  rt  r  r  r  s        r5   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32D  sT    Jr&z""/0!![C888s333333r7   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rc  ru  rW  rt  r  r  r  s        r5   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonCL  K    vJ/0!!%5===s333333r7   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  pdist-minkowski-5.8-irisr$   rC  rt  r  r  r  s        r5   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_irisT  re  r7   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||t
          dk               d S )	Nr   r  rl  r$   rC  rt  r   rf  r  r  s        r5   %test_pdist_minkowski_5_8_iris_float32z/TestPdist.test_pdist_minkowski_5_8_iris_float32\  sZ    Jr&z""/0!![C888sGaKHHHHHHr7   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rl  ru  rC  rt  r  r  r  s        r5   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonCd  rj  r7   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   r8  rA  r   ru   r#   r)  r  r  r  r   r   r   r   r   )
r[   r   r   r   r   r  r'  rK  r   r  )r  r   r  r  s       r5   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobisl  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 Nrb  rM   pdist-hammingr   r  r  r  s        r5   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_random}  sF    "#_%I&&s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S ru  r"  r  s        r5   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float32  P    Jr-.//_%I&&s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nrb  rM   rv  test_hammingr  r  r  s        r5   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonC  sF    "#_%N++s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S ru  r[   r   r]   r  r   r  s        r5   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_random  rz  r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S ru  r"  r  s        r5   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32  rz  r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r|  r  r  s        r5   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonC  sP    Jr-.//_%N++s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Ndy=r  pdist-jensenshannonr!   r  r  r  s        r5   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  sG    !"*+?++s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )N:0yE>r  r  r!   r   rf  r[   r`   r]   r   r   r   r  s        r5   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sW    Jr,-..*+?++sGaKHHHHHHr7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_jensenshannonr  r  r  s        r5   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  sH    !"*+/00s333333r7   c                     t                      rd}nd}t          d         }t          d         }t          |d          }t          |||           d S )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )rk   r]   r   r   r  s        r5   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  sX    ;; 	CCCvJ/0?++s333333r7   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        r5   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sU    Jr&z""/0?++sGaKHHHHHHr7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Ng-C6
?r  r  r  r  r  r  s        r5   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  sF    vJ/0/00s333333r7   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ru   r   ru   ru   r   ru   ru   r   ru   ru   rH   333333?r   绽|=rg  r   	wmatchingr[   r   r/  r   r  mm2s      r5   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4r7   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ru   r   ru   ru   ru   r   rH   UUUUUU?r   r  r  r  r  s      r5   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6r7   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  rH   r   r   r  r  wyuler[   r   r/  r   r  r   r  s      r5   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2r7   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  rH   r   r   r  r  r  r  s      r5   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2r7   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  rH   r   g۶m۶m?r   r  r  wdicer[   r   r/  r   r  r   r  s      r5   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6r7   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  rH   r   r  r   r  r  r  r  s      r5   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4r7   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  rH   r   g      ?r   r  r  )r)   r[   r   r/  r   r  r   r  s      r5   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6r7   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  rH   r   g?r   r  r  )wsokalsneathr[   r   r/  r   r  r   r  s      r5   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6r7   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  wrogerstanimotor[   r   r/  r   r  r   r  s      r5    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6r7   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      r5    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6r7   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  rH   r   r  r   r  r  wrussellraor[   r   r/  r   r  r   r  s      r5   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica18  r  r7   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  rH   r   r  r   r  r  r  r  s      r5   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2B  s    ++++- -)))4888)))4888: :Q;;!HHH5qu5555E666666r7   c                     t           d         }t          dk    rt          |j        |j                   d}t          |d          }t          |d          }t          |||t          dk               d S )Nr  r   rb  r   test_canberrarf  )r]   r   r  r   rI   r  r   )r  Drj  r  r  s        r5   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_matchL  sl    vJQ;;!'17###Q
++Q00BS'A+>>>>>>r7   c                 n    d}t          dgdgfd          }d}t          |||t          dk               d S )Nr  rY  r<  r   gd>@1?r   r+  )r  r   r   )r  rj  pdist_yr  s       r5   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_711V  sF     !C53%.*==sGaKHHHHHHr7   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  rj   r7   r5   r  r  a  r  r7   r  c                 ~    t          | d                   rt          |d                   st          d          dS r  r  r  s     r5   rW  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricd  r  r7   rH   r)  r  r   r  )r[   r   r  r   r	   r   )r  rW  rL   r  r  r  s        @r5   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdouble^  s    	 	 	 	 	 	 	 		 	 	 	 	 x''))wwyyk2&AAAZ000Wgw{;;;;;;r7   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   rL  r   r   r   r  r  r   r'  rK  )
r  r{  r6   rj  r   r  r  r  r  r  s
             r5   r  z$TestPdist._check_calling_conventionsm  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 )Nr  r   r  r  >   r   r+   matchingr&   r"   r)   r(   r%   r/  r'   r   ru   r  r  r#   r  )r2  r]   r   r  r  r[   r  r   r   r  r  r  r   rz  r  )r  r6   r  r{  r  r  s         r5   test_pdist_calling_conventionsz(TestPdist.test_pdist_calling_conventions  sY   
 ( 	B 	BG 7CCaC1H%A{{k69g>>> ) ) ) .47-B-B++Av666 %%F188BJ//aa@@@//6Q/????=((M"&"*)=)=)?"@"@AAXbimmA..011//6b/AAA+	B 	Br7   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  rN   r/  rR   r0  rQ   r   rP   r`   r   r  r   r)  ru   rf  )r]   r3  r   r   r   r   r  r  r   r'  rK  )r  r6   rj  r  r  rM  r  r  r  r  r  rN  s               r5   test_pdist_dtype_equivalencez&TestPdist.test_pdist_dtype_equivalence  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          |          5  t          ||fi |}d d d            n# 1 swxY w Y   t          |          5  t          ||fd|i|}d d d            n# 1 swxY w Y   t          |||           t          ||u            t	          j        |dz   t          j        
          }	t          j        t                    5  t          |          5  t          ||fd|	i| d d d            n# 1 swxY w Y   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          |          5  t          ||fd|
i| d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	          j        |t          j        
          }t          j        t                    5  t          |          5  t          ||fd|i| d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrb  rP   r  r   r   ru   r$   rq  rn  rH   r  r  r   )r]   r   r   r  r[   r  r   r*  r   r   r   r'  rK  r   r  )r  r6   rj  r{  out_sizer   r  r  r  r  r  r  s               r5   test_pdist_outzTestPdist.test_pdist_out  s    $%ccc33Q3h/
agaj1n5:;;[  F3Kx
333f%% 	1 	1Av0000G	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1f%% 	; 	;Av::4:6::G	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	s3333 	4    x1BJ777]:&& 	5 	5!&)) 5 5a44T4V4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
 xHBJ777!<]:&& 	5 	5!&)) 5 5a44T4V4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
 x111]:&& 	5 	5!&)) 5 5a44T4V4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   B//B36B3	C&&C*-C*F E=1F=F	FF	FFF$H(4HH(H	H(H	H((H,/H,,J1<JJ1J	J1 J	!J11J58J5c                    d}t           d         d d dd d df         }|                                }t          |j        j                    t          |j        j                   t                      }|dk    rd|d<   t          |          5  t          ||fi |}d d d            n# 1 swxY w Y   t          |          5  t          ||fi |}d d d            n# 1 swxY w Y   t          |||t          dk               d S )	Nrb  rP   r  r   r$   rq  rn  rf  )
r]   r  r   r  r  r  r*  r   r   r   )r  r6   rj  r{  X_copyr   rk  rl  s           r5   r  zTestPdist.test_striding  s    $%ccc33Q3h/ 	AG(())))***[  F3Kf%% 	, 	,q&++F++B	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,f%% 	1 	1vv0000B	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	BS'A+>>>>>>s$   B((B,/B,CC!$C!Nr  )Yr   r$  r%  r4  r'  r  r  r  r  r  r  r  r   slowr  r  r
  r  r  r  r  r  r  r   r#  r&  r)  r,  r.  r3  r7  r9  r<  r?  rA  rC  rG  rI  rL  rO  rQ  rV  r  r[   r  rY  r]  r_  ra  rd  rg  ri  rm  ro  rq  rs  rw  ry  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r.   r  r  r  r  r  r  rj   r7   r5   r  r    s       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8K K K2 [%5 %5 %5N [? ? ? ? ?r7   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej        j        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 )Nr7  r   r   rA  )r[   r   cases)r  r   rS  s      r5   r4  z&TestSomeDistanceFunctions.setup_method  s9    H___%%H___%%!fX


r7   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 )Nru   rt  r8        ?gqaz@r   gw@rp  gR"6@i`  i  i^  i  uint16)r  r$   r
   r[   r   r	   r   )	r  r   rS  dist1dist1p5dist2dist0p25rq   r   s	            r5   ru  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r7   c                     | j         D ]7\  }}t          ||          }t          |t          j        d                     8d S )Nr  )r  
weuclideanr
   r[   r  r  r   rS  r  s       r5   re  z(TestSomeDistanceFunctions.test_euclidean  sK    J 	2 	2DAqa##Dbgajj1111	2 	2r7   c                 `    | j         D ]%\  }}t          ||          }t          |d           &d S )NrA  )r  wsqeuclideanr
   r  s       r5   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclidean  sC    J 	+ 	+DAq1%%Dc****	+ 	+r7   c           
          | j         D ]R\  }}t          ||          }t          |ddt          j        d          t          j        d          z  z  z
             Sd S )Nr   g      2@      )r  wcosiner
   r[   r  r  s       r5   r%  z%TestSomeDistanceFunctions.test_cosine  sd    J 	P 	PDAq1a==DcDBGBKK"'"++4M,N&NOOOO	P 	Pr7   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 )Nru   F)centered)r  wcorrelationfloatr  r  s    r5   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9r7   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   )r[   r   r  r  r
   r~  r   )r  xmymr   rS  r  s         r5   rK  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r7   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)%r  r  r  r  r  r         r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  )%r   r   r   r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r   r  r  r   r   r   r   r  r   r   r  r   r  r  r  r  r  r  r   r   r  )r[   r   r   finfor   rj  r  s       r5   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9r7   zignore:Casting complexfuncc                     ddg}ddg}t          j        d          5   |||           d d d            d S # 1 swxY w Y   d S )Ny      ?        y       @        y      @        y      @        z"Complex `u` and `v` are deprecatedmatch)r'  r(  )r  r  r   rS  s       r5   test_corr_dep_complexz/TestSomeDistanceFunctions.test_corr_dep_complex7  s     4L4L#*NOOO 	 	DAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8<<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 )Nr7  r  )r   r   r  )r   r   r   )r  r   r   g      @)r[   r   r  r#   r
   r  )r  r   rS  vir  s        r5   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobis@  s    H___%%H___%%XIJJJ 	4 	4DAqq!R((Dbgcll3333	4 	4r7   N)r   r$  r%  r4  ru  re  r  r%  r  rK  r  r'  r  r  filterwarningsr  r   r   r  r  rj   r7   r5   r  r    s         H H H&2 2 2
+ + +
P P P
: : :
T T T	: 	: 	: [[ 899[Vk6%:;;  <; :9 4 4 4 4 4r7   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 ry   )checked_dtypescheck_squareform_matrixr  rI   s     r5   test_squareform_matrixz%TestSquareForm.test_squareform_matrixL  5    ( 	0 	0E((////	0 	0r7   c                 D    | j         D ]}|                     |           d S ry   )r  check_squareform_vectorr  s     r5   test_squareform_vectorz%TestSquareForm.test_squareform_vectorP  r  r7   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   rH   r   ru   ru   r   g@rt   )r[   zerosr   r	   r   rI   r   r   )r  rI   ArAs       r5   r  z&TestSquareForm.check_squareform_matrixT  s    HV5)))]]RXt$$$RXu%%%HV5)))]]RXt$$$RXu%%%Hq#ha)777]]RXt$$$RXu%%%2rxU;;;<<<<<r7   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  rH   r  r   g @)r   r   )r[   r  r   r	   r   rI   r   r   )r  rI   r  rvs       r5   r  z&TestSquareForm.check_squareform_vectore  s    HT''']]RXv&&&RXu%%%2u%%%HcU%(((]]RXv&&&RXu%%%2rx!SC8(<EJJJKKKKKr7   c                 V    t          dd          D ]}|                     |           d S )Nr   r  )r   check_squareform_multi_matrixr  ns     r5   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrixr  s:    q! 	2 	2A..q1111	2 	2r7   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   ru   r   r   r   )r[   r   r   r  r	   lenr   r   r   r  r   )
r  r&  r{  Yr  Yrskr   js
             r5   r$  z,TestSquareForm.check_squareform_multi_matrixv  s[   INN1a  AS\\1%%%qMM]]Ga<<!'17BH---SVVQS]]A&&&QqT1Q4   q!A$ 	- 	-A1q5!A$'' - -66 1a4!A$///FAA 1a4!,,,,-	- 	-r7   N)r   r$  r%  r[   r   r`   int32int8r/  r  r  r  r  r  r'  r$  rj   r7   r5   r  r  I  s        j"*bhFN0 0 00 0 0= = ="L L L2 2 2- - - - -r7   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   r[   r   r   r  r	   r   )r  r&  r{  r+  s       r5   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix  s^    q" 	* 	*A	q!$$A""A1q))))	* 	*r7   c                     t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S Nru   )r'  rK  r   check_yr  s    r5   test_num_obs_y_1zTestNumObsY.test_num_obs_y_1  s     ]:&& 	 	LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =AAc                 J    t          |                     d                     d S Nr   r   r8  r  s    r5   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2  s"     	Q     r7   c                 J    t          |                     d                     d S )Nr   r<  r  s    r5   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3       Q     r7   c                 J    t          |                     d                     d S Nr)  r<  r  s    r5   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4  r@  r7   c                 V    t          dd          D ]}|                     |           d S )Nr     )r   minit)r  r   s     r5   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10  s4    q" 	 	AJJqMMMM	 	r7   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   rE  ru   r  i   setr   addr'  rK  r   bad_yr  rq   r&  r   s       r5   test_num_obs_y_2_100z TestNumObsY.test_num_obs_y_2_100  s     EEq" 	# 	#AEE!q1u+/""""q# 	" 	"Azz]:.. " "JJqMMM" " " " " " " " " " " " " " "	" 	"   /BB	B	c                 J    t          |                     |                     d S ry   r<  r%  s     r5   rF  zTestNumObsY.minit  r@  r7   c                 ^    t           j                            |          }t          |          S ry   )r[   r   r   r   r  r&  rS  s      r5   rN  zTestNumObsY.bad_y  s!    INN1||r7   c                 N    t          |                     |                    |k    S ry   )r   make_yr%  s     r5   r8  zTestNumObsY.check_y  s    Q((A--r7   c                 R    t           j                            ||dz
  z  dz            S Nru   r   r[   r   r   r%  s     r5   rV  zTestNumObsY.make_y  s#    y~~qAE{q0111r7   N)r   r$  r%  r5  r9  r=  r?  rC  rG  rP  rF  rN  r8  rV  rj   r7   r5   r3  r3    s        * * *  ! ! !
! ! !! ! !  	" 	" 	"! ! !  . . .2 2 2 2 2r7   r3  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 )Nru   r  r)  r   )r   r[   r   r   r  r   r   r  r   r	   r   )r  r&  r{  r+  r  s        r5   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  s    q" 	+ 	+A	q!$$A""A1A!||agqw'''A****	+ 	+r7   c                 J    t          |                     d                     d S )Nr   r   check_Dr  s    r5   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0       Q     r7   c                 J    t          |                     d                     d S r7  r_  r  s    r5   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  rb  r7   c                 J    t          |                     d                     d S r;  r_  r  s    r5   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2  r@  r7   c                 J    t          |                     d                     d S r;  r_  r  s    r5   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  r@  r7   c                 J    t          |                     d                     d S rB  r_  r  s    r5   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  r@  r7   c                 N    t          |                     |                    |k    S ry   )r   make_Dr%  s     r5   r`  zTestNumObsDM.check_D  s    $++a..))Q..r7   c                 B    t           j                            ||          S ry   rY  r%  s     r5   rl  zTestNumObsDM.make_D  s    y~~a###r7   N)r   r$  r%  r]  ra  rd  rf  rh  rj  r`  rl  rj   r7   r5   r[  r[    s        + + +! ! !! ! !! ! !! ! !! ! !/ / /$ $ $ $ $r7   r[  c                 $    t          | d          S NT)throw)r   )r  s    r5   is_valid_dm_throwrq    s    q%%%%r7   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r  rH   r[   r  r   r'  rK  r   rq  r  r  s     r5   $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 )Nru  rH   Fr[   r  r   r	   r   rw  s     r5   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s4    HT,,,[^^U+++++r7   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   rH   rv  rw  s     r5   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s    HYbj111]:&& 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!ry  c                     t          j        dt           j                  }t          t	          |          d           d S Nr  rH   Fr{  rw  s     r5   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s4    HYbj111[^^U+++++r7   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   r  r   )	r[   r   r   r   r   r'  rK  r   rq  r  rS  r  r   s       r5   #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   r  r   F)r[   r   r   r   r   r	   r   r  s       r5   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sb    INN2qMMq! 	 	AAadGG[^^U+++++r7   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   ru   ru   ru   r   )r[   r   r   r   r'  rK  r   rq  r  rS  r  s      r5   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  ru   r  Fr[   r   r   r   r	   r   r  s      r5   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_F  sM    INN2qMMD'A+$[^^U+++++r7   c                     t          j        dt           j                  }t          t	          |          d           d S )Nr  rH   Tr{  rw  s     r5   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s4    HV2:...[^^T*****r7   c                     t           j                            d          }t          |          }t	          t          |          d           d S )Nru   Tr  r  s      r5   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2  <    INN1qMM[^^T*****r7   c                     t           j                            d          }t          |          }t	          t          |          d           d S Nr   Tr  r  s      r5   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3"  r  r7   c                     t           j                            d          }t          |          }t	          t          |          d           d S )N   Tr  r  s      r5   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4'  r  r7   c                     t           j                            d          }t          |          }t	          t          |          d           d S )Nr  Tr  r  s      r5   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5,  s<    INN2qMM[^^T*****r7   N)r   r$  r%  rx  r|  r  r  r  r  r  r  r  r  r  r  r  rj   r7   r5   rs  rs    s        ! ! !
, , ,! ! !
, , ,! ! !, , ,! ! !, , ,+ + ++ + +
+ + +
+ + +
+ + + + +r7   rs  c                 $    t          | d          S ro  )r   )rS  s    r5   is_valid_y_throwr  2  s    at$$$$r7   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   rH   r[   r  r   r'  rK  r   r  r  rS  s     r5   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_E;  s    HWBJ///]:&& 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ry  c                     t          j        dt           j                  }t          t	          |          d           d S )Nr  rH   Fr[   r  r   r	   r   r  s     r5   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_F@  s4    HWBJ///Z]]E*****r7   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 r~  r  r  s     r5   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_ED  s    HYbj111]:&& 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ry  c                     t          j        dt           j                  }t          t	          |          d           d S r  r  r  s     r5   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_FI  s4    HYbj111Z]]E*****r7   c                 j    |                      d          }t          t          |          d           d S )Nr   Tcorrect_n_by_nr	   r   r  s     r5   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2M  1    ""Z]]D)))))r7   c                 j    |                      d          }t          t          |          d           d S r  r  r  s     r5   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3Q  r  r7   c                 j    |                      d          }t          t          |          d           d S )Nr)  Tr  r  s     r5   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4U  r  r7   c                 j    |                      d          }t          t          |          d           d S )Nr  Tr  r  s     r5   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5Y  r  r7   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 rI  rK  rO  s       r5   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100]  s    EEq" 	# 	#AEE!q1u+/""""q# 	" 	"Azz]:.. " "JJqMMM" " " " " " " " " " " " " " "	" 	"rQ  c                 b    t           j                            |          }t          |d          S ro  )r[   r   r   r   rT  s      r5   rN  zTestIsValidY.bad_yf  s(    INN1!4((((r7   c                 V    t           j                            ||dz
  z  dz            }|S rX  rY  rT  s      r5   r  zTestIsValidY.correct_n_by_nj  s'    INNAQKA-..r7   N)r   r$  r%  r  r  r  r  r  r  r  r  r  rN  r  rj   r7   r5   r  r  6  s        
     
+ + +     
+ + +* * ** * ** * ** * *" " ") ) )    r7   r  rn  )g      $g      r  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 )Nru   r   r   r)  )r'  rK  r   r$   rt  s    r5   
test_bad_pr  o  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'  rK  r   r)   rj   r7   r5   test_sokalsneath_all_falser  x  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ru   r   r   r   r)  r  ru   ru   ru   r   r   ru   r   ru   r   r   )r	   	wcanberrarj   r7   r5   r  r  ~  sL    999iii00!444<<<66:::::r7   c                      t          t          g dg d          dd           t          t          g dg d          dd           d S )	Nr  r  UUUUUU?   decimalr  r  r  )r
   wbraycurtisrj   r7   r5   test_braycurtisr    sV    IIIyyy9962NNNNLLL,,,??bQQQQQQr7   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)ru   ru   ru   r   r   r   r8  r  r  r   Input vector should be 1-Dr	  r)  r   iIr  )r[   r   r
   r  r  r  r'  rK  r   newaxisrJ  r   r   r   r   )r  r  r   rsrS  d1d2s          r5   test_euclideansr    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   ru   r  r'  rK  r   whammingr   rS  s     r5   test_hamming_unequal_lengthr    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   r1  s       r5   "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|S4rH   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)r[   r   r   r  )rq   r   desireds      r5   test_hamming_string_arrayr    s    
 B B B 	 	 	A 	 B B B 	 	 	A GHQNNG,,,,,r7   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$   ru   )r6   rn  r   )r6   rn  rb  r  )r[   r   r   r   r   )arr_inp0c0p1c1s        r5   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''''''r7   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)  r  r  rH   r   r   )float16float128)r[   r1  int16r0  r  r  asarrayr   r   rI   floatinguint8r  uint32uint64iinfomaxr	   r   r`   	complex64
complex128hasattrr   getattr)r   rS  rI   dumaxr  r  dtypess           r5   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$$$$% %r7   c                  R   g d} g d}d | D             }d |D             }t          j                    5  t          | |          }d d d            n# 1 swxY w Y   t          j                    5  t          ||          }d d d            n# 1 swxY w Y   t          ||           d S )N)TTF)TFTc                 ,    g | ]}t          |          S rj   r   rp   r   s     r5   rr   z&test_sokalmichener.<locals>.<listcomp>      AQr7   c                 ,    g | ]}t          |          S rj   r  r  s     r5   rr   z&test_sokalmichener.<locals>.<listcomp>  r  r7   )r'  r(  r(   r	   )rn  r   r   rS  r  r  s         r5   test_sokalmichenerr    s>    	AAAA			!	! $ $a##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $			!	! $ $a##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ s#   AAA/BBBc            	         d} d}d}d}d|| z   z  ||z   d|| z   z  z   z  }t          |d           t          j                    5  t          ddgddgddg          }d d d            n# 1 swxY w Y   t          ||           g d	}g d
}dD ]M}t          j                    5  t          t          |||g          d           d d d            n# 1 swxY w Y   Nd S )Nr  g?r   r   gX$I?ru   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?ro  r   g      4@r  )r
   r'  r(  r(   )	ntfnftnttnffexpectedactuala1a2r   s	            r5   test_sokalmichener_with_weightr    s   
 C
C
C
CC#I#)a39o"=>H),,,			!	! ; ;1v1v!S:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;&)))
D 
D 
DB
I 
I 
IB $ P P#%% 	P 	Pb"qc : :<NOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	PP Ps$   A((A,/A,"!CC	C	c                 l   t          j        g dg dg dg dg          }|                                }t          |           5  t	          |||            d d d            n# 1 swxY w Y   t          |           5  t          ||            d d d            n# 1 swxY w Y   t          ||           d S )Nr7  r9  r=  g3333336@gL7@g333333F@)r[   r  r  r*  r   r   r   )r6   rM  r  s      r5   test_modifies_inputr  !  sD    
\\\$__$__''') 
* 
*B ggiiG	&	!	!  b"f              	&	!	!  b&              r7#####s$   A""A&)A&<BB Bc                 n   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          |           5  t          ||| fi | d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t          |           5  t          || fi | d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nr7  r9  r=  r  r   )rn  r  r  r   r  r'   r  r#   rn  r$   )r[   r  r'  rK  r   r   r   r*  )r6   rM  rT  r   s       r5   test_Xdist_deprecated_argsr  0  sY    
\\\$__$__''') 
* 
*B
 
y	!	! " "b"fb!!!" " " " " " " " " " " " " " " 
y	!	!  b&"                 , ,rz"~~&CZZFl224KKFm$;$;3JJ6[#8#8]9%% 	0 	0!&)) 0 0b"f/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 ]9%% 	, 	,!&)) , ,b&++F+++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, ,s   AA A=BB"B?ED+E+D//E2D/3EE		E	&F(6FF(FF(FF((F,	/F,	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          |           5  t          |||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	          j        t                    5  t          |           5  t          ||||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )	NrP   r  r   ru   )r'   r#   r!   not applicablerI  r  )r]   r[   r   r   r'  rU  rL  rK  r   r*  r   r   )r6   r{  r   r  s       r5   test_Xdist_non_negative_weightsr  O  sY   
 !##A#sss(+A

A!fWAcccF???$%%%d6llGf$45 $ $]:&& 	! 	!!&)) ! !aa    ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! ]:&& 	$ 	$!&)) $ $aA####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$	$ $sl   C%C8CCCCCC	"C	?ED/#E/D33E6D37EE
	E
	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  rH   ru   r  r	  r  r   r   r   r)  )r   r   r[   r   r	   rI   rv   r'  rK  r   rJ  r   r  s     r5   test__validate_vectorr  a  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  rH   r   r  r+   ru   )r[   r   r/  r  r   r	   r   )r   r  s     r5   test_yule_all_samer  {  s    
d###AadAaDA8888aASEaeQrrUF##AcUGr7   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   r  r  )r  r   r  r   r   r  r  g)>d?r  r   r   ru   gД?T)r   keepdims)ru   r   r   r)  )r  r     rg   )	   r        )   r  r  rE  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   r[   r   )rq   r   s     r5   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; ; ; ; ;r7   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)ru   r   r   )r   r   r   r   r)  )r[   r   r   r   r   r   r  )arr_1arr_2r  r  s       r5   test_gh_17703r0    s    HYYYEHYYYEE5!!HE5>&111FFH%%%2=''=''8 8 8FFH%%%%%r7   c                 H   | dv rt          j        d           t          j        dt          j                  }|                    d           t          |           5   t          t          j	        j
        |           |||           d d d            d S # 1 swxY w Y   d S )N)r!   r#   r'   r  r  rH   F)writer  )r'  rU  r[   rJ  r   setflagsr*  r  scipyspatialdistance)r6   r   s     r5   test_immutable_inputr7    s    ???$%%%
	"BJ'''AJJUJ	&	!	! ; ;/&//1::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   ,BBB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   ru   ru   )r   ru   ru   r   )r  r:  gffffff?g?r  g2)^ ?r+   )r6   r   )r[   r   r  r+   r   r   r  )rq   r   r   r  r  s        r5   test_gh_23109r9    s    
A
A

'''((AAqAHH01112=##=## A' ' 'F FH%%%%%r7   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  rM   pdist-jaccardr    r  r  r  s        r5   test_pdist_jaccard_randomz%TestJaccard.test_pdist_jaccard_random  sF    "#_%I&&s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r=  r"  r  s        r5   !test_pdist_jaccard_random_float32z-TestJaccard.test_pdist_jaccard_random_float32  P    Jr-.//_%I&&s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  rM   r>  test_jaccardr  r  r  s        r5   test_pdist_jaccard_random_nonCz*TestJaccard.test_pdist_jaccard_random_nonC  sF    "#_%N++s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r=  r  r  s        r5   test_pdist_djaccard_randomz&TestJaccard.test_pdist_djaccard_random  rB  r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r=  r"  r  s        r5   "test_pdist_djaccard_random_float32z.TestJaccard.test_pdist_djaccard_random_float32  rB  r7   c                     d}t          t          j        d          d          }t          t          j        d          ||           d S )Nrb  r  r   r    r  r  r   r[   r  r   r  rj  r+  s      r5   test_pdist_djaccard_allzerosz(TestJaccard.test_pdist_djaccard_allzeros  sC    "(6""I..ac222222r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rD  r  r  s        r5   test_pdist_djaccard_random_nonCz+TestJaccard.test_pdist_djaccard_random_nonC  sP    Jr-.//_%N++s333333r7   c                     d}t          t          j        d          d          }t          t          j        d          ||           d S )Nrb  rL  rE  r  r  rM  rN  s      r5   !test_pdist_djaccard_allzeros_nonCz-TestJaccard.test_pdist_djaccard_allzeros_nonC  sC    "(6""N33ac222222r7   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  wjaccardr[   r   r/  r   r  s      r5   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4r7   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  rU  r  s      r5   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6r7   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    )	r[   r   r  r  rj  r   r    r   r   )r  r   rS  rj  s       r5   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8r7   N)r   r$  r%  r?  rA  rF  rH  rJ  rO  rQ  rS  rW  rY  r\  rj   r7   r5   r;  r;    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 9r7   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        r5   test_pdist_chebyshev_randomz)TestChebyshev.test_pdist_chebyshev_random	  sG    !"&';''s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr  r  r`  r   r   rf  r  r  s        r5   #test_pdist_chebyshev_random_float32z1TestChebyshev.test_pdist_chebyshev_random_float32 	  sW    Jr,-..&';''sGaKHHHHHHr7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r`  test_chebyshevr  r  r  s        r5    test_pdist_chebyshev_random_nonCz.TestChebyshev.test_pdist_chebyshev_random_nonC'	  sH    !"&'+,,s333333r7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrx  r  pdist-chebyshev-irisr   r  r  r  s        r5   test_pdist_chebyshev_irisz'TestChebyshev.test_pdist_chebyshev_iris.	  sE    vJ+,;''s333333r7   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  rh  r   r   rf  r  r  s        r5   !test_pdist_chebyshev_iris_float32z/TestChebyshev.test_pdist_chebyshev_iris_float325	  sU    Jr&z""+,;''sGaKHHHHHHr7   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrx  r  rh  re  r  r  r  s        r5   test_pdist_chebyshev_iris_nonCz,TestChebyshev.test_pdist_chebyshev_iris_nonC<	  sF    vJ+,+,,s333333r7   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  r  r)  )r   ru   r  r   r   r  r	   r   r   r   r  r   rS  r   s       r5   test_weightedzTestChebyshev.test_weightedC	  s     IIIIIIYq!Q''+++UAq6;!444qc:::UA3[A666!>>>>>r7   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  ro  r  r   r   r  rp  rq  s       r5   test_zero_weightzTestChebyshev.test_zero_weightM	  s    IIIIIIYq!Q''+++UAq6;!444qc:::UA3[A666!>>>>>r7   N)r   r$  r%  ra  rc  rf  ri  rk  rm  rr  rt  rj   r7   r5   r^  r^  	  s        4 4 4I I I4 4 44 4 4I I I4 4 4? ? ?? ? ? ? ?r7   r^  ry   )	NNFTFFFFN)rS  os.pathrU   	functoolsr   r   r  numpyr[   r   numpy.linalgr   numpy.testingr   r   r   r	   r
   r   r   r   r'  scipy.spatial.distancer4  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   scipy._lib._utilr,   r-   scipy.conftestr.   fixturer6   rS   r   _tdist_ytdistr]   re   rk   r   r   r   r   r   assert_allclose_forgivingr   r  r  strr*  r}  ri  r  r  r  r  r  r  r  
wcityblock
wchebyshevr  r  wkulczynski1rV  r  r  r  r  r  wsokalmichenerr  r,  r  r  r  r3  r[  rq  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r7  r9  r;  r^  rj   r7   r5   <module>r     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 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       %S % % % % 
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))tA tA tA tA tA tA tA tAn	X? X? X? X? X? X? X? X?tQ4 Q4 Q4 Q4 Q4 Q4 Q4 Q4h@- @- @- @- @- @- @- @-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    - - -( ( (% % %>    P P P0 $ $ $ , , ,< $ $ $"  4
 
 
; ; ;:& & & ; ; ;	& 	& 	&N9 N9 N9 N9 N9 N9 N9 N9b=? =? =? =? =? =? =? =? =? =?r7   