
    _MhTW                    ,   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  ej9        e d	          d
             Z:g dZ; ej<        g dg dg dg dg dg dgd          Z= ee=          Z>i Z?d Z@ e@             d ZAd]dZB	 	 	 	 	 d^dZCd ZDd ZEd]dZF eed          ZGeGd dfd ZHd!dd" d#ddddddddddd$d eGfd%ZI G d& d'          ZJd(eKfd)ZL eIed*d+          ZM eIed*dd,          ZN eIed*dd*-          ZO eIed*ddd*.          ZP eIe/          ZQ eIe)d/          xZRZS eIe5          ZT eIe'          ZU eIe$          ZV eIe#          ZW eIe&          ZX eIe%          ZY eIe,          ZZ eIe*          Z[ eIe(d0          Z\ eIe4d0          Z] eIe!          Z^ eIe"d0          Z_ eIe3          Z` eIe2          Za eIe0          Zb G d1 d2          Zc G d3 d4          Zd G d5 d6          Ze G d7 d8          Zf G d9 d:          Zg G d; d<          Zhd= Zi G d> d?          Zjd@ Zk G dA dB          Zlejm        n                    dCg dD          dE             ZodF ZpdG ZqdH ZrdI ZsdJ ZtdK ZudL ZvdM ZwdN Zxejm        jy        dO             Zzejm        jy        dP             Z{ejm        jy        dQ             Z|ejm        jy        dR             Z}ejm        jy        dS             Z~dT ZdU ZdV ZdW Zejm        jy        dX             Z G dY dZ          Z G d[ d\          ZdS )_    N)wrapspartial)norm)verboseassert_assert_array_equalassert_equalassert_almost_equalassert_allclosebreak_cyclesIS_PYPY)	
squareformpdistcdist	num_obs_y
num_obs_dmis_valid_dm
is_valid_y_validate_vector_METRICS_NAMES)
braycurtiscanberra	chebyshev	cityblockcorrelationcosinedice	euclideanhammingjaccardjensenshannonkulczynski1mahalanobis	minkowskirogerstanimoto
russellrao
seuclideansokalmichenersokalsneathsqeuclideanyule)np_longnp_ulongsession)paramsscopec                     | j         S )z;
    Fixture for all metrics in scipy.spatial.distance
    )param)requests    a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_distance.pymetricr5   D   s    
 =    )zcdist-X1.txtzcdist-X2.txtziris.txtzpdist-boolean-inp.txtzpdist-chebyshev-ml-iris.txtzpdist-chebyshev-ml.txtzpdist-cityblock-ml-iris.txtzpdist-cityblock-ml.txtzpdist-correlation-ml-iris.txtzpdist-correlation-ml.txtzpdist-cosine-ml-iris.txtzpdist-cosine-ml.txtzpdist-double-inp.txtzpdist-euclidean-ml-iris.txtzpdist-euclidean-ml.txtzpdist-hamming-ml.txtzpdist-jaccard-ml.txtzpdist-jensenshannon-ml-iris.txtzpdist-jensenshannon-ml.txtzpdist-minkowski-3.2-ml-iris.txtzpdist-minkowski-3.2-ml.txtzpdist-minkowski-5.8-ml-iris.txtzpdist-seuclidean-ml-iris.txtzpdist-seuclidean-ml.txtzpdist-spearman-ml.txtzrandom-bool-data.txtzrandom-double-data.txtzrandom-int-data.txtzrandom-uint-data.txt)r     m         )r7   r   '        )r8   r<   r     4     )r9   r=   r@   r      e  )r:   r>   rA   rC   r     )r;   r?   rB   rD   rE   r   doubledtypec                     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       r4   load_testing_filesrd   {   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r6   c                  <    t          j        d          j        dk     S )Nr      )rZ   intpitemsize r6   r4   	_is_32bitrj      s    71::""r6   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 ri   )rZ   
asanyarray.0as     r4   
<listcomp>z!_chk_asarrays.<locals>.<listcomp>   s"    ///1bmA///r6   c                 P    g | ]#}|j         d k    rt          j        |          n|$S    )ndimrZ   ravelrn   s     r4   rq   z!_chk_asarrays.<locals>.<listcomp>   s>     # # # "#1"(1+++! # # #r6   r   c              3   >   K   | ]}t          j        |          V  d S N)rZ   
atleast_1drn   s     r4   	<genexpr>z _chk_asarrays.<locals>.<genexpr>   s,      442=##444444r6   c              3   D   K   | ]}|j         d          j         k    V  dS )r   N)ru   )ro   rp   arrayss     r4   rz   z _chk_asarrays.<locals>.<genexpr>   s0      <<16VAY^+<<<<<<r6   z(array ndim must be the same for neg axis)tupleall
ValueErrorrangeru   )r|   axiss   ` r4   _chk_asarraysr      s    /////F|# #!# # #44V44444Faxx<<<<V<<<<< 	IGHHHVAY^$$T*TGr6   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 rx   )rZ   magetmasknomaskrn   s     r4   rz   z_chk_weights.<locals>.<genexpr>   s9      QQQBEMM!,,BEL@QQQQQQr6   c                 Z    g | ](}t          j        t          j        |                    )S ri   )rZ   isnansumrn   s     r4   rq   z _chk_weights.<locals>.<listcomp>   s*    888ABHRVAYY''888r6   Tc              3   b   K   | ]*\  }}|rt           j                            |          n|V  +d S rx   rZ   r   masked_invalid)ro   rp   has_nans      r4   rz   z_chk_weights.<locals>.<genexpr>   s\       D D)q' 7>D25//2221 D D D D D Dr6   r   c              3   F   K   | ]}j         |j                  fk    V  d S rx   shape)ro   rp   r   weightss     r4   rz   z_chk_weights.<locals>.<genexpr>   s3      AAQw} 00AAAAAAr6   z*weights shape must match arrays along axiszweights cannot be negativec              3   F   K   | ]}t          j        |           V  dS )r   N)rZ   take)ro   rp   r   pos_weightss     r4   rz   z_chk_weights.<locals>.<genexpr>   s4      NN!271k===NNNNNNr6   rt   )r   anyr}   ziprZ   rm   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    ``         @r4   _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##r6   c                     | | S |                      t                    }| |k                                    rt          d|            |S )Nz0frequency (integer count-type) weights required )astypeintr   r   )r   int_weightss     r4   r   r      sT    ..%%K;##%% WUGUUVVVr6   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   rt   c              3   (   K   | ]}|k    |V  d S rx   ri   )ro   ir   s     r4   rz   z!_weight_masked.<locals>.<genexpr>   s'      CC1dQCCr6   r   )rZ   rm   r   r   r   ru   r}   r   r   r   r   )r|   r   r   rp   	axis_masknot_axess     `   r4   r   r      s    |mG$$G - -EMM!$$	$$6A::CCCCafCCCCCH!844I1y'',,,,Nr6   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 ri   )rZ   
issubdtyperH   integerr   float64)ro   arrs     r4   rq   z_rand_split.<locals>.<listcomp>   sS     * * * )+ci(L(L cjj$$$* * *r6   rG   c                      t          j        t          j         |                    }|                     fdt	           j                  D                       S )Nr   c                 :    g | ]}|k    rj         |         nd S rs   r   )ro   r   rp   r   s     r4   rq   z/_rand_split.<locals>.mytake.<locals>.<listcomp>   s;     7 7 7#$ ./$YYqwqzzA 7 7 7r6   )rZ   rm   r   reshaper   ru   )rp   ixr   records   ` ` r4   mytakez_rand_split.<locals>.mytake   sm    rwq"488899~~ 7 7 7 7 7(-af7 7 7 8 8 	8r6   r   c              3   :   K   | ]}|j                  k    V  d S rx   r   )ro   rp   r   n_obss     r4   rz   z_rand_split.<locals>.<genexpr>   s.      66!qwt}%666666r6   z#data must be aligned on sample axis      ?c           
      V    g | ]%}t          j        | |                      &S r   rZ   append)ro   rp   r   r   split_ixs     r4   rq   z_rand_split.<locals>.<listcomp>   sR     8 8 8+, )Avva===!%' ' ' 8 8 8r6   )rZ   arrayr   randomRandomStater   r~   r   r   randintrandr   )r|   r   r   	split_perseedseeded_randr   prev_wqr   r   r   s     `      @@@r4   _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?r6   h㈵>atolc                     | S rx   ri   xs    r4   <lambda>r     s     r6   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)rZ   r   r   AttributeError	TypeErrorr   r   _rough_check)	rp   br   keywcheck_acheck_ba_ib_is	            r4   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 rx   ri   r   s    r4   r   r     s    1 r6   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 ri   )rZ   ry   squeezern   s     r4   rq   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>+  s*    AAAQbmAIIKK00AAAr6   )r   g     @Y@gB`"۹?)r   r   r   e   
nan_policyomitc                 L    g | ]!}t           j                            |          "S ri   r   rn   s     r4   rq   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>Y  s(    !N!N!Na"%"6"6q"9"9!N!N!Nr6   c                 >    g | ]}t          j        ||           S r   r   )ro   rp   r   s     r4   rq   z4_weight_checked.<locals>.wrapped.<locals>.<listcomp>c  s*    IIIQbi14888IIIr6          @z NotImplemented weights:    )
stacklevel)getr   r}   r   	Exceptiontyper   r   sliceru   rZ   nanr   NotImplementedErrorwarningswarn__name__)&argskwargsresultr|   restr   r   e
dud_arraysdud_weightsdud_argsrp   indexer
dup_arraysdup_weightsdup_argssplitsplit_arrayssplit_weights
split_argsr   
const_testdefault_axisdud_testdup_testr`   r   ma_safema_very_safen_argsnan_safe	ones_testr   silentr   
split_testr   
weight_args&                       @r4   wrappedz _weight_checked.<locals>.wrapped  st   T$V$$gvgFGG}**Z..zz&,//VW4+/TC C C %crc
E"IuRy 	BAA&AAAFJ	,==4'D C%,z"VRR%8%8%8cBBBB ?%,u_z"VRR%8%8%8cBBBB%,u_z"? T)<V)<)<#FFFFF  ? ? ?!$q''1fg"677Q>?  "6*5fgt@IPT+V +V +V'
K-4MW\M*-.GLMM* ,,t3%0z"VRR%<V%<%<#FFFF# 2 2A$T{{maf4G$)',$=$=GDM#GnnG!"7c!1AgJJ ,,t3VRR%<V%<%<#FFFF# 5 5A$T{{maf4G$)',$=$=GDM#GnnG!"7bf!4AgJJ::lD11V;;;$Z0047H X)@)@)@cJJJJ O!N!N:!N!N!NJ$Z0047H X)@)@)@cJJJJ# O-1z*$VRR-DV-D-D#NNNN+  6IIII&III
 i99C? ,,t3%0z"VRR%<V%<%<#FFFFj+  Ii!mm#FGT.7dD D D.3+m"<0047
%2z"VRR%>v%>%>CHHHH" 	, 	, 	,  ,JJqJJ)*, , , ,		, s>   	AN0 %C> =N0 >
D)D$$D))JN0 0
O&:"O!!O&)r   )r`   r  r  r   r  r   r  r  r  r  r  r  r  r  r  r   r   r   r  s   `````````````````  r4   _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 Nr6   c                       e Zd Zd Zd ZdS )DummyContextManagerc                     d S rx   ri   selfs    r4   	__enter__zDummyContextManager.__enter__}      r6   c                     d S rx   ri   )r  r   s     r4   __exit__zDummyContextManager.__exit__  r   r6   N)r   
__module____qualname__r  r"  ri   r6   r4   r  r  |  s2              r6   r  r5   c                 L    | dv rt          j                    S t                      S )N)r"   r(   )pytestdeprecated_callr  r5   s    r4   maybe_deprecatedr)    s)    111%'''"$$$r6   rt   )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)rO   rP   rQ   rN   rM   )booluintr   r_   rnd_eo_namesr-   r,   rZ   r_   r   valid_upcastsr  s    r4   setup_methodzTestCdist.setup_method  ^    1 1 1 (0"*bj&Q'.
BJ&G&(j"*%=*,*7 7r6   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      @rB  r>  Q	@r   N0tV4l1D_p4raMr      r5   test_)rZ   aranger&  raisesr   r)  r   eval)r  r5   X1X2r   r   s         r4   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 )Nrt   r   c                     ||z   |z   S rx   ri   r   yargkwargkwarg2s        r4   
_my_metricz:TestCdist.test_cdist_extra_args_custom.<locals>._my_metric      ;''r6   r6  r8  r<  r?  rA  rC  rD  r   rE  rG  r=  ffffff
@rT  rU  rT  皙?r5   rS  rU  皙@rt   r   )rZ   rI  r&  rJ  r   r   r   )r  rV  rL  rM  r   r   s         r4   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  epsrL  rM  Y1Y2s         r4   #test_cdist_euclidean_random_unicodez-TestCdist.test_cdist_euclidean_random_unicode  s]    
^
^R[11R%566BS'A+>>>>>>r6   p皙?      ?r   Gz?r   gffffff@gffffff@c                     d}t           d         }t           d         }t          ||d|          }t          ||d|          }t          ||d|t          dk    	           d S )
NvIh%<=rb  rc  r$   rm  test_minkowskir   r   )r   rf  r   rg  )r  rm  ri  rL  rM  rj  rk  s          r4   test_cdist_minkowski_randomz%TestCdist.test_cdist_minkowski_random  sk     
^
^R[A666R%5;;;BQS'A+FFFFFFr6   c                    d}t           d         }t           d         }t          ||d          }d }dt          j        | ||          z  | ||          z  j                  z
  }t          |||t          dk               d S )	N+=rb  rc  r   c                 l    t           j                            | d                              dd          S )Nrt   r   r   )rZ   linalgr   r   )Xs    r4   normsz1TestCdist.test_cdist_cosine_random.<locals>.norms  s*    9>>!!>,,44R;;;r6   rt   r   re  )r\   wcdistrZ   dotTr   r   )r  ri  rL  rM  rj  r{  rk  s          r4   test_cdist_cosine_randomz"TestCdist.test_cdist_cosine_random  s    
^
^BH%%	< 	< 	< eeBii2b		>*<===BS'A+>>>>>>r6   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   rt   r   )rZ   r   r   r   sqrtr&  rJ  r   )r  x1x2distrt2s        r4   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$  ri   r6   r4   myclassr            Dr6   r  c                 ~    t          | d                   rt          |d                   st          d          dS Nr   zType has been changed+?
isinstancer   r   rR  r  s     r4   rV  z9TestCdist.test_cdist_custom_notdouble.<locals>._my_metric!  B    adG,, :JqtW4M4M : !89995r6   rG   r(  r  r   r   )rZ   r   objectr   r	   r   )r  rV  rK   cdist_yright_yr  s        @r4   test_cdist_custom_notdoublez%TestCdist.test_cdist_custom_notdouble  s    	 	 	 	 	 	 	 		 	 	 	 	 x''))V444d:666Wgw{;;;;;;r6   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Nr5   rH  r   re  )
r   rK  r   r   r   	__class__printr   r&  rJ  )r  rL  rM  r5   ri  r   y1y2y3r   e_clss              r4   _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   rt   r   	testing:  with: >   r   r+   r&   r"   r)   r(   r%   r.  r'   r   r   r   Vr#   VI)r1  r\   r   r  r  rZ   vstackr   r   var
atleast_2dcovr~  r   ry  inv)r  r5   eo_namerL  rM  X12r  r  s           r4   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r6   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  rM   r.  rQ   r/  rP   r   rO   r_   r   r  r   rt   r   r(  re  )r\   r2  r   r   r   r   r  r  r   r&  rJ  )r  r5   ri  teststestrL  rM  r  new_typer  r   r  X1newX2news                 r4   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 )Nra  rb  rc  r   r$   rp  rm  rG   outr   re  rt   F)rH   order)r\   r   dictrZ   emptyr   r)  r   r   r   r   r&  rJ  r   int64)r  r5   ri  rL  rM  out_rout_cr   out1rj  rk  out2out3out4out5s                  r4   test_cdist_outzTestCdist.test_cdist_outy  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 )	Nra  rb  r   rc  r$   rp  rm  re  )r\   copyr	   r   flagsc_contiguousr  r)  r   r   r   )
r  r5   ri  rL  rM  X1_copyX2_copyr   rj  rk  s
             r4   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$   rp  rm  r5   c                 6    g | ]}t          j        |          S ri   )weakrefref)ro   vs     r4   rq   z1TestCdist.test_cdist_refcount.<locals>.<listcomp>  s     ;;;W[^^;;;r6   c              3   .   K   | ]} |            d u V  d S rx   ri   )ro   weak_refs     r4   rz   z0TestCdist.test_cdist_refcount.<locals>.<genexpr>  s-      @@(88::%@@@@@@r6   )	rZ   r   r   r  r)  r   r   r   r~   )r  r5   r  r  r   r  	weak_refss          r4   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$  r3  r&  markthread_unsaferN  r_  rl  parametrizerZ   infru  r  r  r  r  r  r  r  r  r  ri   r6   r4   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r6   r+  c            	       T   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 ZQdO ZRdWdQZSdR ZTdS ZUej        j        dT             ZVej        j        dU             ZWdVS )X	TestPdistc                     g d| _         t          t          t          j        t          j        gt          t          j        t          j        gt          j        t          j        gt          j        gd| _        d S r-  r0  r  s    r4   r3  zTestPdist.setup_method  r4  r6   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   r9  r:  r=  rD  r   rE  rG  r5   rH  )rZ   rI  r&  rJ  r   r)  r   rK  )r  r5   rL  r   r   s        r4   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 )Nrt   r   c                     ||z   |z   S rx   ri   rQ  s        r4   rV  z:TestPdist.test_pdist_extra_args_custom.<locals>._my_metric  rW  r6   r   r   r9  r:  r=  rD  rE  rG  rX  rY  rZ  r[  r\  r]  r^  )rZ   rI  r&  rJ  r   r   r   )r  rV  rL  r   r   s        r4   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   rf  r\   wpdist_no_constr   r  ri  rz  Y_rightY_test1s        r4   test_pdist_euclidean_randomz%TestPdist.test_pdist_euclidean_random  G    !"&'!![11s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S r  r  r  s        r4   test_pdist_euclidean_random_uz'TestPdist.test_pdist_euclidean_random_u&  r  r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r  rZ   r_   r\   r  r   r  s        r4   #test_pdist_euclidean_random_float32z-TestPdist.test_pdist_euclidean_random_float32-  sQ    Jr,-..&'!![11s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  rd  r  r  r  ri  rz  r  Y_test2s        r4    test_pdist_euclidean_random_nonCz*TestPdist.test_pdist_euclidean_random_nonC4  sH    !"&'!!%566s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  irispdist-euclidean-irisr   r  r  r  s        r4    test_pdist_euclidean_iris_doublez*TestPdist.test_pdist_euclidean_iris_double;  sE    vJ+,!![11s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r  r   r   re  rZ   r_   r\   r  r   r   r  s        r4   !test_pdist_euclidean_iris_float32z+TestPdist.test_pdist_euclidean_iris_float32C  U    Jr&z""+,!![11sGaKHHHHHHr6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  rd  r  r  r  s        r4   test_pdist_euclidean_iris_nonCz(TestPdist.test_pdist_euclidean_iris_nonCK  sH     vJ+,!!%566s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-seuclideanr'   r  r\   r   r   r  s        r4   test_pdist_seuclidean_randomz&TestPdist.test_pdist_seuclidean_randomU  sG    !"'(<((s333333r6   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   rt   r  r  )rZ   r_   r\   r   r   r  )r  ri  rz  r  r  r  r  s          r4   $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3r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_seuclideanr  r  r  s        r4   !test_pdist_seuclidean_random_nonCz+TestPdist.test_pdist_seuclidean_random_nonCh  sH    !"'(,--s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-seuclidean-irisr'   r  r  r  s        r4   test_pdist_seuclidean_irisz$TestPdist.test_pdist_seuclidean_irisp  sE    vJ,-<((s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S )Nr   r  r  r'   r  )rZ   r_   r\   r   r   r  s        r4   "test_pdist_seuclidean_iris_float32z,TestPdist.test_pdist_seuclidean_iris_float32w  sO    Jr&z"",-<((s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  r  r  r  r  s        r4   test_pdist_seuclidean_iris_nonCz)TestPdist.test_pdist_seuclidean_iris_nonC  sH     vJ,-,--s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-cosiner   r  r\   wpdistr   r  s        r4   test_pdist_cosine_randomz"TestPdist.test_pdist_cosine_random  sF    !"^$H%%s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r  rZ   r_   r\   r  r   r  s        r4    test_pdist_cosine_random_float32z*TestPdist.test_pdist_cosine_random_float32  sP    Jr,-..^$H%%s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_cosiner  r  r  s        r4   test_pdist_cosine_random_nonCz'TestPdist.test_pdist_cosine_random_nonC  sF    !"^$M**s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr   r  pdist-cosine-irisr   r   r  r  s        r4   test_pdist_cosine_irisz TestPdist.test_pdist_cosine_iris  sE    vJ()H%%s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r'  r   r   r   r   )rZ   r_   r\   r  r   r   r  s        r4   test_pdist_cosine_iris_float32z(TestPdist.test_pdist_cosine_iris_float32  sU    Jr&z""()H%%sGaKHHHHHHr6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr   r  r'  r$  r   r  r  s        r4   test_pdist_cosine_iris_nonCz%TestPdist.test_pdist_cosine_iris_nonC  sE    vJ()M**s333333r6   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)rZ   absr   r   r   r  r   r  )r  r   rz  s      r4   test_pdist_cosine_boundsz"TestPdist.test_pdist_cosine_bounds  s~     F29((..33B7788Iq!fq(##A&!+<	> 	> 	> 	> 	> 	>r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-cityblockr   r  r  r  s        r4   test_pdist_cityblock_randomz%TestPdist.test_pdist_cityblock_random  sG    !"&'!![11s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r4  r  r  s        r4   #test_pdist_cityblock_random_float32z-TestPdist.test_pdist_cityblock_random_float32  sQ    Jr,-..&'!![11s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r5  test_cityblockr  r  r  s        r4    test_pdist_cityblock_random_nonCz*TestPdist.test_pdist_cityblock_random_nonC  sH    !"&'!!%566s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrw  r  pdist-cityblock-irisr   r  r  r  s        r4   test_pdist_cityblock_irisz#TestPdist.test_pdist_cityblock_iris  sE    vJ+,!![11s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  r=  r   r   re  r  r  s        r4   !test_pdist_cityblock_iris_float32z+TestPdist.test_pdist_cityblock_iris_float32  r  r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrw  r  r=  r:  r  r  r  s        r4   test_pdist_cityblock_iris_nonCz(TestPdist.test_pdist_cityblock_iris_nonC  sH     vJ+,!!%566s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  r  pdist-correlationr   r  r  r  s        r4   test_pdist_correlation_randomz'TestPdist.test_pdist_correlation_random  sG    !"()M**s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rD  r!  r  s        r4   %test_pdist_correlation_random_float32z/TestPdist.test_pdist_correlation_random_float32  sQ    Jr,-..()M**s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  rE  test_correlationr  r  r  s        r4   "test_pdist_correlation_random_nonCz,TestPdist.test_pdist_correlation_random_nonC  sH    !"().//s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  pdist-correlation-irisr   r  r  r  s        r4   test_pdist_correlation_irisz%TestPdist.test_pdist_correlation_iris  sE    vJ-.M**s333333r6   c                     d}t           d         }t          j        t           d                   }t          |d          }t	          |||t
          dk               d S )Nr  r  rM  r   r   re  )r\   rZ   r_   r  r   r   r  s        r4   #test_pdist_correlation_iris_float32z-TestPdist.test_pdist_correlation_iris_float32  sU    vJ*R 89::M**sGaKHHHHHHr6   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  rM  rJ  r  )sysmaxsizer&  skipr\   r  r   r  s        r4    test_pdist_correlation_iris_nonCz*TestPdist.test_pdist_correlation_iris_nonC  se    ;CCK'''vJ-..//s333333r6   rm  rn  ro  r   r   皙	@c                     d}t           d         }t          |d|          }t          |d|          }t          ||d|           d S )Nrr  r  r$   rs  rt  r   )r   rf  r  )r  rm  ri  rz  rj  rk  s         r4   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1r6   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S Nr  r  pdist-minkowski-3.2r$   rV  rs  r  r  r  s        r4   test_pdist_minkowski_randomz%TestPdist.test_pdist_minkowski_random&  sL    !"*+!![C888s333333r6   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||           d S rZ  r  r  s        r4   #test_pdist_minkowski_random_float32z-TestPdist.test_pdist_minkowski_random_float32-  sV    Jr,-..*+!![C888s333333r6   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  r[  rt  rV  rs  r  r  r  s        r4    test_pdist_minkowski_random_nonCz*TestPdist.test_pdist_minkowski_random_nonC4  sM    !"*+!!%5===s333333r6   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  pdist-minkowski-3.2-irisr$   rV  rs  r  r  r  s        r4   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3r6   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||           d S )Nr   r  rb  r$   rV  rs  r  r  r  s        r4   %test_pdist_minkowski_3_2_iris_float32z/TestPdist.test_pdist_minkowski_3_2_iris_float32C  sT    Jr&z""/0!![C888s333333r6   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rb  rt  rV  rs  r  r  r  s        r4   "test_pdist_minkowski_3_2_iris_nonCz,TestPdist.test_pdist_minkowski_3_2_iris_nonCK  K    vJ/0!!%5===s333333r6   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  pdist-minkowski-5.8-irisr$   rB  rs  r  r  r  s        r4   test_pdist_minkowski_5_8_irisz'TestPdist.test_pdist_minkowski_5_8_irisS  rd  r6   c                     d}t          j        t          d                   }t          d         }t          |dd          }t	          |||t
          dk               d S )	Nr   r  rk  r$   rB  rs  r   re  r  r  s        r4   %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Hr6   c                     d}t           d         }t           d         }t          |dd          }t          |||           d S )Nr  r  rk  rt  rB  rs  r  r  r  s        r4   "test_pdist_minkowski_5_8_iris_nonCz,TestPdist.test_pdist_minkowski_5_8_iris_nonCc  ri  r6   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   r7  r@  r   rt   r#   r(  r  r  r  r   r   r   r   r   )
rZ   r   r   r   r   r  r&  rJ  r   r  )r  r   r  r  s       r4   test_pdist_mahalanobisz TestPdist.test_pdist_mahalanobisk  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 Nra  rL   pdist-hammingr   r  r  r  s        r4   test_pdist_hamming_randomz#TestPdist.test_pdist_hamming_random|  sF    "#_%I&&s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rt  r!  r  s        r4   !test_pdist_hamming_random_float32z+TestPdist.test_pdist_hamming_random_float32  P    Jr-.//_%I&&s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nra  rL   ru  test_hammingr  r  r  s        r4   test_pdist_hamming_random_nonCz(TestPdist.test_pdist_hamming_random_nonC  sF    "#_%N++s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rt  rZ   r   r\   r  r   r  s        r4   test_pdist_dhamming_randomz$TestPdist.test_pdist_dhamming_random  ry  r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rt  r!  r  s        r4   "test_pdist_dhamming_random_float32z,TestPdist.test_pdist_dhamming_random_float32  ry  r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r{  r  r  s        r4   test_pdist_dhamming_random_nonCz)TestPdist.test_pdist_dhamming_random_nonC  sP    Jr-.//_%N++s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Ndy=r  pdist-jensenshannonr!   r  r  r  s        r4   test_pdist_jensenshannon_randomz)TestPdist.test_pdist_jensenshannon_random  sG    !"*+?++s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )N:0yE>r  r  r!   r   re  rZ   r_   r\   r   r   r   r  s        r4   'test_pdist_jensenshannon_random_float32z1TestPdist.test_pdist_jensenshannon_random_float32  sW    Jr,-..*+?++sGaKHHHHHHr6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r  test_jensenshannonr  r  r  s        r4   $test_pdist_jensenshannon_random_nonCz.TestPdist.test_pdist_jensenshannon_random_nonC  sH    !"*+/00s333333r6   c                     t                      rd}nd}t          d         }t          d         }t          |d          }t          |||           d S )Ng&.=g-q=r  pdist-jensenshannon-irisr!   r   )rj   r\   r   r   r  s        r4   test_pdist_jensenshannon_irisz'TestPdist.test_pdist_jensenshannon_iris  sX    ;; 	CCCvJ/0?++s333333r6   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        r4   %test_pdist_jensenshannon_iris_float32z/TestPdist.test_pdist_jensenshannon_iris_float32  sU    Jr&z""/0?++sGaKHHHHHHr6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Ng-C6
?r  r  r  r  r  r  s        r4   "test_pdist_jensenshannon_iris_nonCz,TestPdist.test_pdist_jensenshannon_iris_nonC  sF    vJ/0/00s333333r6   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rt   r   rt   rt   r   rt   rt   r   rt   rt   rG   333333?r   绽|=rf  r   	wmatchingrZ   r   r.  r   r  mm2s      r4   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4r6   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rt   r   rt   rt   rt   r   rG   UUUUUU?r   r  r  r  r  s      r4   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6r6   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  rG   r   r   r  r  wyulerZ   r   r.  r   r  r   r  s      r4   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2r6   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  rG   r   r   r  r  r  r  s      r4   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2r6   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  rG   r   g۶m۶m?r   r  r  wdicerZ   r   r.  r   r  r   r  s      r4   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6r6   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  rG   r   r  r   r  r  r  r  s      r4   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4r6   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  rG   r   g      ?r   r  r  )r)   rZ   r   r.  r   r  r   r  s      r4   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6r6   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  rG   r   g?r   r  r  )wsokalsneathrZ   r   r.  r   r  r   r  s      r4   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6r6   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  wrogerstanimotorZ   r   r.  r   r  r   r  s      r4    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6r6   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      r4    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6r6   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  rG   r   r  r   r  r  wrussellraorZ   r   r.  r   r  r   r  s      r4   test_pdist_russellrao_mtica1z&TestPdist.test_pdist_russellrao_mtica17  r  r6   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  rG   r   r  r   r  r  r  r  s      r4   test_pdist_russellrao_mtica2z&TestPdist.test_pdist_russellrao_mtica2A  s    ++++- -)))4888)))4888: :Q;;!HHH5qu5555E666666r6   c                     t           d         }t          dk    rt          |j        |j                   d}t          |d          }t          |d          }t          |||t          dk               d S )Nr  r   ra  r   test_canberrare  )r\   r   r  r   rH   r  r   )r  Dri  r  r  s        r4   test_pdist_canberra_matchz#TestPdist.test_pdist_canberra_matchK  sl    vJQ;;!'17###Q
++Q00BS'A+>>>>>>r6   c                 n    d}t          dgdgfd          }d}t          |||t          dk               d S )Nr  rX  r;  r   gd>@1?r   r*  )r  r   r   )r  ri  pdist_yr  s       r4   test_pdist_canberra_ticket_711z(TestPdist.test_pdist_canberra_ticket_711U  sF     !C53%.*==sGaKHHHHHHr6   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  ri   r6   r4   r  r  _  r  r6   r  c                 ~    t          | d                   rt          |d                   st          d          dS r  r  r  s     r4   rV  z9TestPdist.test_pdist_custom_notdouble.<locals>._my_metricb  r  r6   rG   r(  r  r   r  )rZ   r   r  r   r	   r   )r  rV  rK   r  r  r  s        @r4   test_pdist_custom_notdoublez%TestPdist.test_pdist_custom_notdouble]  s    	 	 	 	 	 	 	 		 	 	 	 	 x''))wwyyk2&AAAZ000Wgw{;;;;;;r6   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   rK  r   r   r   r  r  r   r&  rJ  )
r  rz  r5   ri  r   r  r  r  r   r  s
             r4   r  z$TestPdist._check_calling_conventionsk  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   rt   r  r  r#   r  )r1  r\   r   r  r  rZ   r  r   r   r  r  r~  r   ry  r  )r  r5   r  rz  r  r  s         r4   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r6   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  rM   r.  rQ   r/  rP   r   rO   r_   r   r  r   r(  rt   re  )r\   r2  r   r   r   r   r  r  r   r&  rJ  )r  r5   ri  r  r  rL  r  r  r  r   r  rM  s               r4   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 )Nra  rO   r  r   r   rt   r$   rp  rm  rG   r  r  r   )r\   r   r   r  rZ   r  r   r)  r   r   r   r&  rJ  r   r  )r  r5   ri  rz  out_sizer   r  r  r  r  r  r  s               r4   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 )	Nra  rO   r  r   r$   rp  rm  re  )
r\   r  r   r  r  r  r)  r   r   r   )r  r5   ri  rz  X_copyr   rj  rk  s           r4   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  )Xr   r#  r$  r3  r&  r  r  r  r  r  r  r  r  slowr  r  r	  r  r  r  r  r  r  r  r"  r%  r(  r+  r-  r2  r6  r8  r;  r>  r@  rB  rF  rH  rK  rN  rP  rU  r  rZ   r  rX  r\  r^  r`  rc  rf  rh  rl  rn  rp  rr  rv  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ri   r6   r4   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 [? ? ? ? ?r6   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 )Nr6  r   r   r@  )rZ   r   cases)r  r   rR  s      r4   r3  z&TestSomeDistanceFunctions.setup_method  s9    H___%%H___%%!fX


r6   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 )Nrt   rs  r7        ?gqaz@r   gw@ro  gR"6@i`  i  i^  i  uint16)r  r$   r
   rZ   r   r	   r   )	r  r   rR  dist1dist1p5dist2dist0p25rp   r   s	            r4   rt  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r6   c                     | j         D ]7\  }}t          ||          }t          |t          j        d                     8d S )Nr  )r  
weuclideanr
   rZ   r  r  r   rR  r  s       r4   rd  z(TestSomeDistanceFunctions.test_euclidean  sK    J 	2 	2DAqa##Dbgajj1111	2 	2r6   c                 `    | j         D ]%\  }}t          ||          }t          |d           &d S )Nr@  )r  wsqeuclideanr
   r  s       r4   test_sqeuclideanz*TestSomeDistanceFunctions.test_sqeuclidean  sC    J 	+ 	+DAq1%%Dc****	+ 	+r6   c           
          | j         D ]R\  }}t          ||          }t          |ddt          j        d          t          j        d          z  z  z
             Sd S )Nr   g      2@      )r  wcosiner
   rZ   r  r  s       r4   r$  z%TestSomeDistanceFunctions.test_cosine  sd    J 	P 	PDAq1a==DcDBGBKK"'"++4M,N&NOOOO	P 	Pr6   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 )Nrt   F)centered)r  wcorrelationfloatr  r  s    r4   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9r6   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   )rZ   r   r  r  r
   r}  r   )r  xmymr   rR  r  s         r4   rJ  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r6   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  )rZ   r   r   finfor   ri  r  s       r4   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9r6   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   rR  s       r4   test_corr_dep_complexz/TestSomeDistanceFunctions.test_corr_dep_complex5  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 )Nr6  r  )r   r   r  )r   r   r   )r  r   r   g      @)rZ   r   r  r#   r
   r  )r  r   rR  vir  s        r4   test_mahalanobisz*TestSomeDistanceFunctions.test_mahalanobis>  s    H___%%H___%%XIJJJ 	4 	4DAqq!R((Dbgcll3333	4 	4r6   N)r   r#  r$  r3  rt  rd  r  r$  r  rJ  r  r&  r  r  filterwarningsr  r   r   r
  r  ri   r6   r4   r  r    s         H H H&2 2 2
+ + +
P P P
: : :
T T T	: 	: 	: [[ 899[Vk6%:;;  <; :9 4 4 4 4 4r6   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 rx   )checked_dtypescheck_squareform_matrixr  rH   s     r4   test_squareform_matrixz%TestSquareForm.test_squareform_matrixJ  5    ( 	0 	0E((////	0 	0r6   c                 D    | j         D ]}|                     |           d S rx   )r  check_squareform_vectorr  s     r4   test_squareform_vectorz%TestSquareForm.test_squareform_vectorN  r  r6   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   rG   r   rt   rt   r   g@rs   )rZ   zerosr   r	   r   rH   r   r   )r  rH   ArAs       r4   r  z&TestSquareForm.check_squareform_matrixR  s    HV5)))]]RXt$$$RXu%%%HV5)))]]RXt$$$RXu%%%Hq#ha)777]]RXt$$$RXu%%%2rxU;;;<<<<<r6   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  rG   r  r   g @)r   r   )rZ   r  r   r	   r   rH   r   r   )r  rH   r  rvs       r4   r  z&TestSquareForm.check_squareform_vectorc  s    HT''']]RXv&&&RXu%%%2u%%%HcU%(((]]RXv&&&RXu%%%2rx!SC8(<EJJJKKKKKr6   c                 V    t          dd          D ]}|                     |           d S )Nr   r  )r   check_squareform_multi_matrixr  ns     r4   test_squareform_multi_matrixz+TestSquareForm.test_squareform_multi_matrixp  s:    q! 	2 	2A..q1111	2 	2r6   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   rt   r   r   r   )rZ   r   r   r  r	   lenr   r   r   r  r   )
r  r%  rz  Yr  Yrskr   js
             r4   r#  z,TestSquareForm.check_squareform_multi_matrixt  s[   INN1a  AS\\1%%%qMM]]Ga<<!'17BH---SVVQS]]A&&&QqT1Q4   q!A$ 	- 	-A1q5!A$'' - -66 1a4!A$///FAA 1a4!,,,,-	- 	-r6   N)r   r#  r$  rZ   r   r_   int32int8r.  r  r  r  r  r  r&  r#  ri   r6   r4   r  r  G  s        j"*bhFN0 0 00 0 0= = ="L L L2 2 2- - - - -r6   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   rZ   r   r   r  r	   r   )r  r%  rz  r*  s       r4   test_num_obs_y_multi_matrixz'TestNumObsY.test_num_obs_y_multi_matrix  s^    q" 	* 	*A	q!$$A""A1q))))	* 	*r6   c                     t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S Nrt   )r&  rJ  r   check_yr  s    r4   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   r7  r  s    r4   test_num_obs_y_2zTestNumObsY.test_num_obs_y_2  s"     	Q     r6   c                 J    t          |                     d                     d S )Nr   r;  r  s    r4   test_num_obs_y_3zTestNumObsY.test_num_obs_y_3       Q     r6   c                 J    t          |                     d                     d S Nr(  r;  r  s    r4   test_num_obs_y_4zTestNumObsY.test_num_obs_y_4  r?  r6   c                 V    t          dd          D ]}|                     |           d S )Nr     )r   minit)r  r   s     r4   test_num_obs_y_5_10zTestNumObsY.test_num_obs_y_5_10  s4    q" 	 	AJJqMMMM	 	r6   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   rD  rt   r  i   setr   addr&  rJ  r   bad_yr  rp   r%  r   s       r4   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 rx   r;  r$  s     r4   rE  zTestNumObsY.minit  r?  r6   c                 ^    t           j                            |          }t          |          S rx   )rZ   r   r   r   r  r%  rR  s      r4   rM  zTestNumObsY.bad_y  s!    INN1||r6   c                 N    t          |                     |                    |k    S rx   )r   make_yr$  s     r4   r7  zTestNumObsY.check_y  s    Q((A--r6   c                 R    t           j                            ||dz
  z  dz            S Nrt   r   rZ   r   r   r$  s     r4   rU  zTestNumObsY.make_y  s#    y~~qAE{q0111r6   N)r   r#  r$  r4  r8  r<  r>  rB  rF  rO  rE  rM  r7  rU  ri   r6   r4   r2  r2    s        * * *  ! ! !
! ! !! ! !  	" 	" 	"! ! !  . . .2 2 2 2 2r6   r2  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 )Nrt   r  r(  r   )r   rZ   r   r   r  r   r   r  r   r	   r   )r  r%  rz  r*  r  s        r4   test_num_obs_dm_multi_matrixz)TestNumObsDM.test_num_obs_dm_multi_matrix  s    q" 	+ 	+A	q!$$A""A1A!||agqw'''A****	+ 	+r6   c                 J    t          |                     d                     d S )Nr   r   check_Dr  s    r4   test_num_obs_dm_0zTestNumObsDM.test_num_obs_dm_0       Q     r6   c                 J    t          |                     d                     d S r6  r^  r  s    r4   test_num_obs_dm_1zTestNumObsDM.test_num_obs_dm_1  ra  r6   c                 J    t          |                     d                     d S r:  r^  r  s    r4   test_num_obs_dm_2zTestNumObsDM.test_num_obs_dm_2  r?  r6   c                 J    t          |                     d                     d S r:  r^  r  s    r4   test_num_obs_dm_3zTestNumObsDM.test_num_obs_dm_3  r?  r6   c                 J    t          |                     d                     d S rA  r^  r  s    r4   test_num_obs_dm_4zTestNumObsDM.test_num_obs_dm_4  r?  r6   c                 N    t          |                     |                    |k    S rx   )r   make_Dr$  s     r4   r_  zTestNumObsDM.check_D  s    $++a..))Q..r6   c                 B    t           j                            ||          S rx   rX  r$  s     r4   rk  zTestNumObsDM.make_D  s    y~~a###r6   N)r   r#  r$  r\  r`  rc  re  rg  ri  r_  rk  ri   r6   r4   rZ  rZ    s        + + +! ! !! ! !! ! !! ! !! ! !/ / /$ $ $ $ $r6   rZ  c                 $    t          | d          S NT)throw)r   )r  s    r4   is_valid_dm_throwrp    s    q%%%%r6   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  rG   rZ   r  r   r&  rJ  r   rp  r  r  s     r4   $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 )Nrt  rG   FrZ   r  r   r	   r   rv  s     r4   $test_is_valid_dm_improper_shape_1D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_1D_F  s4    HT,,,[^^U+++++r6   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   rG   ru  rv  s     r4   $test_is_valid_dm_improper_shape_3D_Ez2TestIsValidDM.test_is_valid_dm_improper_shape_3D_E  s    HYbj111]:&& 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!rx  c                     t          j        dt           j                  }t          t	          |          d           d S Nr~  rG   Frz  rv  s     r4   $test_is_valid_dm_improper_shape_3D_Fz2TestIsValidDM.test_is_valid_dm_improper_shape_3D_F  s4    HYbj111[^^U+++++r6   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   )	rZ   r   r   r   r   r&  rJ  r   rp  r  rR  r  r   s       r4   #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)rZ   r   r   r   r   r	   r   r  s       r4   #test_is_valid_dm_nonzero_diagonal_Fz1TestIsValidDM.test_is_valid_dm_nonzero_diagonal_F  sb    INN2qMMq! 	 	AAadGG[^^U+++++r6   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   rt   rt   rt   r   )rZ   r   r   r   r&  rJ  r   rp  r  rR  r  s      r4   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  rt   r  FrZ   r   r   r   r	   r   r  s      r4   test_is_valid_dm_asymmetric_Fz+TestIsValidDM.test_is_valid_dm_asymmetric_F  sM    INN2qMMD'A+$[^^U+++++r6   c                     t          j        dt           j                  }t          t	          |          d           d S )Nr  rG   Trz  rv  s     r4   test_is_valid_dm_correct_1_by_1z-TestIsValidDM.test_is_valid_dm_correct_1_by_1  s4    HV2:...[^^T*****r6   c                     t           j                            d          }t          |          }t	          t          |          d           d S )Nrt   Tr  r  s      r4   test_is_valid_dm_correct_2_by_2z-TestIsValidDM.test_is_valid_dm_correct_2_by_2  <    INN1qMM[^^T*****r6   c                     t           j                            d          }t          |          }t	          t          |          d           d S Nr   Tr  r  s      r4   test_is_valid_dm_correct_3_by_3z-TestIsValidDM.test_is_valid_dm_correct_3_by_3   r  r6   c                     t           j                            d          }t          |          }t	          t          |          d           d S )N   Tr  r  s      r4   test_is_valid_dm_correct_4_by_4z-TestIsValidDM.test_is_valid_dm_correct_4_by_4%  r  r6   c                     t           j                            d          }t          |          }t	          t          |          d           d S )Nr  Tr  r  s      r4   test_is_valid_dm_correct_5_by_5z-TestIsValidDM.test_is_valid_dm_correct_5_by_5*  s<    INN2qMM[^^T*****r6   N)r   r#  r$  rw  r{  r  r  r  r  r  r  r  r  r  r  r  ri   r6   r4   rr  rr    s        ! ! !
, , ,! ! !
, , ,! ! !, , ,! ! !, , ,+ + ++ + +
+ + +
+ + +
+ + + + +r6   rr  c                 $    t          | d          S rn  )r   )rR  s    r4   is_valid_y_throwr  0  s    at$$$$r6   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   rG   rZ   r  r   r&  rJ  r   r  r  rR  s     r4   #test_is_valid_y_improper_shape_2D_Ez0TestIsValidY.test_is_valid_y_improper_shape_2D_E9  s    HWBJ///]:&& 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 rx  c                     t          j        dt           j                  }t          t	          |          d           d S )Nr  rG   FrZ   r  r   r	   r   r  s     r4   #test_is_valid_y_improper_shape_2D_Fz0TestIsValidY.test_is_valid_y_improper_shape_2D_F>  s4    HWBJ///Z]]E*****r6   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     r4   #test_is_valid_y_improper_shape_3D_Ez0TestIsValidY.test_is_valid_y_improper_shape_3D_EB  s    HYbj111]:&& 	  	 Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 rx  c                     t          j        dt           j                  }t          t	          |          d           d S r  r  r  s     r4   #test_is_valid_y_improper_shape_3D_Fz0TestIsValidY.test_is_valid_y_improper_shape_3D_FG  s4    HYbj111Z]]E*****r6   c                 j    |                      d          }t          t          |          d           d S )Nr   Tcorrect_n_by_nr	   r   r  s     r4   test_is_valid_y_correct_2_by_2z+TestIsValidY.test_is_valid_y_correct_2_by_2K  1    ""Z]]D)))))r6   c                 j    |                      d          }t          t          |          d           d S r  r  r  s     r4   test_is_valid_y_correct_3_by_3z+TestIsValidY.test_is_valid_y_correct_3_by_3O  r  r6   c                 j    |                      d          }t          t          |          d           d S )Nr(  Tr  r  s     r4   test_is_valid_y_correct_4_by_4z+TestIsValidY.test_is_valid_y_correct_4_by_4S  r  r6   c                 j    |                      d          }t          t          |          d           d S )Nr  Tr  r  s     r4   test_is_valid_y_correct_5_by_5z+TestIsValidY.test_is_valid_y_correct_5_by_5W  r  r6   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 rH  rJ  rN  s       r4   test_is_valid_y_2_100z"TestIsValidY.test_is_valid_y_2_100[  s    EEq" 	# 	#AEE!q1u+/""""q# 	" 	"Azz]:.. " "JJqMMM" " " " " " " " " " " " " " "	" 	"rP  c                 b    t           j                            |          }t          |d          S rn  )rZ   r   r   r   rS  s      r4   rM  zTestIsValidY.bad_yd  s(    INN1!4((((r6   c                 V    t           j                            ||dz
  z  dz            }|S rW  rX  rS  s      r4   r  zTestIsValidY.correct_n_by_nh  s'    INNAQKA-..r6   N)r   r#  r$  r  r  r  r  r  r  r  r  r  rM  r  ri   r6   r4   r  r  4  s        
     
+ + +     
+ + +* * ** * ** * ** * *" " ") ) )    r6   r  rm  )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 )Nrt   r   r   r(  )r&  rJ  r   r$   rs  s    r4   
test_bad_pr  m  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&  rJ  r   r)   ri   r6   r4   test_sokalsneath_all_falser  v  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rt   r   r   r   r(  r  rt   rt   rt   r   r   rt   r   rt   r   r   )r	   	wcanberrari   r6   r4   r  r  |  sL    999iii00!444<<<66:::::r6   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
   wbraycurtisri   r6   r4   test_braycurtisr    sV    IIIyyy9962NNNNLLL,,,??bQQQQQQr6   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)rt   rt   rt   r   r   r   r7  r  r  r   Input vector should be 1-Dr  r(  r   iIr  )rZ   r   r
   r  r  r  r&  rJ  r   newaxisrI  r   r   r   r   )r  r  r   rsrR  d1d2s          r4   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   rt   r  r&  rJ  r   whammingr   rR  s     r4   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   r0  s       r4   "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|S4rG   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  g?)rZ   r   r   r  )rp   r   desireds      r4   test_hamming_string_arrayr    s    
 B B B 	 	 	A 	 B B B 	 	 	A GHQNNG,,,,,r6   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$   rt   )r5   rm  r   )r5   rm  ra  r  )rZ   r   r   r   r   )arr_inp0c0p1c1s        r4   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''''''r6   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  rG   r   r   )float16float128)rZ   r0  int16r/  r  r  asarrayr   r   rH   floatinguint8r  uint32uint64iinfomaxr	   r   r_   	complex64
complex128hasattrr   getattr)r   rR  rH   dumaxr  r  dtypess           r4   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$$$$% %r6   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 ri   r   ro   r   s     r4   rq   z&test_sokalmichener.<locals>.<listcomp>      AQr6   c                 ,    g | ]}t          |          S ri   r  r  s     r4   rq   z&test_sokalmichener.<locals>.<listcomp>  r  r6   )r&  r'  r(   r	   )rm  r   r   rR  r  r  s         r4   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?rt   r   r   )FFTTTFFTTTTTTFTFFFTT)TTTFFTTTFTTTTTFFFTTT)g?rn  r   g      4@r  )r
   r&  r'  r(   )	ntfnftnttnffexpectedactuala1a2r   s	            r4   test_sokalmichener_with_weightr    s   
 C
C
C
C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 )Nr6  r8  r<  g3333336@gL7@g333333F@)rZ   r  r  r)  r   r   r   )r5   rL  r  s      r4   test_modifies_inputr    sD    
\\\$__$__''') 
* 
*B ggiiG	&	!	!  b"f              	&	!	!  b&              r7#####s$   A""A&)A&<BB Bc                 F   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 ]}|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 )Nr6  r8  r<  r  r   )rm  r  r  foor  r'   r  r#   rm  r$   )rZ   r  r&  rJ  r   r   r   r)  )r5   rL  rS  r   s       r4   test_Xdist_deprecated_argsr  .  sP    
\\\$__$__''') 
* 
*B
 
y	!	! " "b"fb!!!" " " " " " " " " " " " " " " 
y	!	!  b&"                 , ,u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,D/<DD/DD/D D//D3	6D3	F#E>2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 )	NrO   r  r   rt   )r'   r#   r!   not applicablerH  r  )r\   rZ   r   r   r&  rT  rK  rJ  r   r)  r   r   )r5   rz  r   r  s       r4   test_Xdist_non_negative_weightsr  M  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  rG   rt   r  r  r  r   r   r   r(  )r   r   rZ   r   r	   rH   ru   r&  rJ  r   rI  r   r  s     r4   test__validate_vectorr  _  sJ   		AAq!"*---Aq!"*%%%	
AAA	A	z)E	F	F	F                 		!QA&&A	z)E	F	F	F                 Q!QA	z)E	F	F	F                   s6   CC"%C"-E		EE7FFFc                  ,   t          j        dt                    } t          | d         | d                   }|dk    sJ t	          | d          }t          |dg           t          | d d         | d d         d          }t          |dgg           d S )N)r   r  rG   r   r  r+   rt   )rZ   r   r.  r  r   r	   r   )r   r  s     r4   test_yule_all_samer  y  s    
d###AadAaDA8888aASEaeQrrUF##AcUGr6   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   rt   gД?T)r   keepdims)rt   r   r   r(  )r  r     rf   )	   r        )   r  r  rD  )            )            )g'Y?gTyCЇ?gFw$?g\BZ?)g;0%7/?g)o?gku?)r
   r!   rZ   r   )rp   r   s     r4   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; ; ; ; ;r6   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)rt   r   r   )r   r   r   r   r(  )rZ   r   r   r   r   r   r  )arr_1arr_2r  r  s       r4   test_gh_17703r0    s    HYYYEHYYYEE5!!HE5>&111FFH%%%2=''=''8 8 8FFH%%%%%r6   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  rG   F)writer  )r&  rT  rZ   rI  r   setflagsr)  r  scipyspatialdistance)r5   r   s     r4   test_immutable_inputr7    s    ???$%%%
	"BJ'''AJJUJ	&	!	! ; ;/&//1::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   ,BBB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  rL   pdist-jaccardr    r  r  r  s        r4   test_pdist_jaccard_randomz%TestJaccard.test_pdist_jaccard_random  sF    "#_%I&&s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r;  r!  r  s        r4   !test_pdist_jaccard_random_float32z-TestJaccard.test_pdist_jaccard_random_float32  P    Jr-.//_%I&&s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S Nr  rL   r<  test_jaccardr  r  r  s        r4   test_pdist_jaccard_random_nonCz*TestJaccard.test_pdist_jaccard_random_nonC  sF    "#_%N++s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r;  r  r  s        r4   test_pdist_djaccard_randomz&TestJaccard.test_pdist_djaccard_random  r@  r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S r;  r!  r  s        r4   "test_pdist_djaccard_random_float32z.TestJaccard.test_pdist_djaccard_random_float32  r@  r6   c                     d}t          t          j        d          d          }t          t          j        d          ||           d S )Nra  r  r   r    r  r  r   rZ   r  r   r  ri  r*  s      r4   test_pdist_djaccard_allzerosz(TestJaccard.test_pdist_djaccard_allzeros  sC    "(6""I..ac222222r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||           d S rB  r  r  s        r4   test_pdist_djaccard_random_nonCz+TestJaccard.test_pdist_djaccard_random_nonC  sP    Jr-.//_%N++s333333r6   c                     d}t          t          j        d          d          }t          t          j        d          ||           d S )Nra  rJ  rC  r  r  rK  rL  s      r4   !test_pdist_djaccard_allzeros_nonCz-TestJaccard.test_pdist_djaccard_allzeros_nonC  sC    "(6""N33ac222222r6   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  wjaccardrZ   r   r.  r   r  s      r4   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4r6   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  rS  r  s      r4   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6r6   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    )	rZ   r   r  r  ri  r   r    r   r   )r  r   rR  ri  s       r4   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8r6   N)r   r#  r$  r=  r?  rD  rF  rH  rM  rO  rQ  rU  rW  rZ  ri   r6   r4   r9  r9    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 9r6   r9  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        r4   test_pdist_chebyshev_randomz)TestChebyshev.test_pdist_chebyshev_random	  sG    !"&';''s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr  r  r^  r   r   re  r  r  s        r4   #test_pdist_chebyshev_random_float32z1TestChebyshev.test_pdist_chebyshev_random_float32	  sW    Jr,-..&';''sGaKHHHHHHr6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nr  r  r^  test_chebyshevr  r  r  s        r4    test_pdist_chebyshev_random_nonCz.TestChebyshev.test_pdist_chebyshev_random_nonC	  sH    !"&'+,,s333333r6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrw  r  pdist-chebyshev-irisr   r  r  r  s        r4   test_pdist_chebyshev_irisz'TestChebyshev.test_pdist_chebyshev_iris 	  sE    vJ+,;''s333333r6   c                     d}t          j        t          d                   }t          d         }t          |d          }t	          |||t
          dk               d S )Nr   r  rf  r   r   re  r  r  s        r4   !test_pdist_chebyshev_iris_float32z/TestChebyshev.test_pdist_chebyshev_iris_float32'	  sU    Jr&z""+,;''sGaKHHHHHHr6   c                     d}t           d         }t           d         }t          |d          }t          |||           d S )Nrw  r  rf  rc  r  r  r  s        r4   test_pdist_chebyshev_iris_nonCz,TestChebyshev.test_pdist_chebyshev_iris_nonC.	  sF    vJ+,+,,s333333r6   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   rt   r  r   r   r  r	   r   r   r   r  r   rR  r   s       r4   test_weightedzTestChebyshev.test_weighted5	  s     IIIIIIYq!Q''+++UAq6;!444qc:::UA3[A666!>>>>>r6   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  rm  r  r   r   r  rn  ro  s       r4   test_zero_weightzTestChebyshev.test_zero_weight?	  s    IIIIIIYq!Q''+++UAq6;!444qc:::UA3[A666!>>>>>r6   N)r   r#  r$  r_  ra  rd  rg  ri  rk  rp  rr  ri   r6   r4   r\  r\  		  s        4 4 4I I I4 4 44 4 4I I I4 4 4? ? ?? ? ? ? ?r6   r\  rx   )	NNFTFFFFN)rR  os.pathrT   	functoolsr   r   r  numpyrZ   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-   fixturer5   rR   r   _tdist_ytdistr\   rd   rj   r   r   r   r   r   assert_allclose_forgivingr   r  r  strr)  r|  rh  r  r  r  r  r  r  r  
wcityblock
wchebyshevr  r  wkulczynski1rT  r  r  r  r  r  wsokalmichenerr  r+  r  r  r  r2  rZ  rp  rr  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\  ri   r6   r4   <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	W? W? W? W? W? W? W? W?r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=? =? =? =? =? =? =? =? =? =?r6   