§
    ¥˜ºh�Õ  ã                   ó’  — d dl Z d dlmZ d dlZd dlmZ d dlmZmZm	Z	 d dl
mZmZmZmZmZmZ 	 d dl
mZ n# e$ r	 d dl
mZ Y nw xY wd dlZd dlm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 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l6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z? d dl@mAZAmBZB d„ ZCejD         E                    dddg¦  «        d„ ¦   «         ZFejD         E                    de¦  «        d„ ¦   «         ZGd„ ZHejD         E                    de.e2g¦  «        d„ ¦   «         ZId„ ZJ ejK        dd¦  «         L                    dd¬¦  «        ddœZM ejK        dd¦  «         L                    dd¬¦  «        ddœZNd„ ZOejD         E                    d e.d!i f ejP        e.eeM¦  «         ejP        e.d"eM¦  «         ejP        e.eeNejD         Q                    e? e>d#¦  «        k    d$¬%¦  «        ¬&¦  «         ejP        e.d'eNejD         Q                    e? e>d#¦  «        k    d$¬%¦  «        ¬&¦  «        e2d(d)dife2eOd*d+ifg¦  «        ejD         E                    d,ejR        ejS        eTg¦  «        d-„ ¦   «         ¦   «         ZUd.„ ZVejD         E                    dg d/¢¦  «        d0„ ¦   «         ZWd1„ ZXd2„ ZYejD         E                    d3 ejZ        ¦   «         ¦  «        d4„ ¦   «         Z[d5„ Z\d6„ Z]d7„ Z^d8„ Z_d9„ Z`ejD         E                    d:d;„ d<„ d=„ d>„ d?„ g¦  «        d@„ ¦   «         ZaejD         E                    dAdB„ ebdCfdD„ ebdEfdF„ ebdGfdH„ ecdIfdJ„ ecdKfdL„ ecdMfg¦  «        dN„ ¦   «         Zdd�dO„ZeejD         E                    ddP¦  «        dQ„ ¦   «         ZfejD         E                    ddP¦  «        dR„ ¦   «         Zge<dS„ ¦   «         ZhejD         E                    dTeji        egdUdVg¬W¦  «        ejD         E                    dXeji        egdUdVg¬W¦  «        dY„ ¦   «         ¦   «         ZjejD         E                    dXeji        egdUdVg¬W¦  «        dZ„ ¦   «         Zkd[„ ZlejD         E                    dTeji        egdUdVg¬W¦  «        ejD         E                    dXeji        egdUdVg¬W¦  «        d\„ ¦   «         ¦   «         ZmejD         E                    dTeji        egdUdVg¬W¦  «        d]„ ¦   «         ZnejD         E                    d^g d_¢¦  «        ejD         E                    dTeji        egdUdVg¬W¦  «        ejD         E                    dXeji        egdUdVg¬W¦  «        d`„ ¦   «         ¦   «         ¦   «         ZoejD         E                    d^g d_¢¦  «        ejD         E                    dTeji        egdUdVg¬W¦  «        da„ ¦   «         ¦   «         ZpejD         E                    dbejS        dcddf ejP        ejR        dedfejD         q                    dg¬%¦  «        ¬&¦  «        g¦  «        ejD         E                    dhddig¦  «        dj„ ¦   «         ¦   «         ZrejD         E                    dkddg¦  «        dl„ ¦   «         ZsejD         E                    dm eji        ejt        d gg¦  «         eji        d ejt         gg¦  «        g¦  «        ejD         E                    dn eji        ejt        d gg¦  «         eji        d ejt         gg¦  «        dg¦  «        do„ ¦   «         ¦   «         ZuejD         E                    dp eji        d dgdd gg¦  «         ejv        dq¦  «        ejw        f eji        d dgdejw        gg¦  «         ejv        dq¦  «        ejw        f eji        ejw        dgdejw        gg¦  «        ejw        ejw        f eji        ejw        dgejw        d gg¦  «         ejv        dq¦  «        ejw        f eji        d ejw        gdejw        gg¦  «         ejv        dq¦  «        ejw        f eji        d dgdd gg¦  «         ejv        dq¦  «        drf eji        d dgddrgg¦  «         ejv        dq¦  «        drf eji        drdgddrgg¦  «        ejw        drf eji        drdgdrd gg¦  «         ejv        dq¦  «        drf eji        d drgddrgg¦  «         ejv        dq¦  «        drfg
¦  «        ds„ ¦   «         ZxejD         E                    dtejw        drg¦  «        du„ ¦   «         ZyejD         E                    dtejw        drg¦  «        dv„ ¦   «         ZzejD         E                    dtejw        drg¦  «        dw„ ¦   «         Z{dx„ Z|dy„ Z}dz„ Z~d{„ Zd|„ Z€d}„ Z�ejD         E                    d~e'e3e4e&e5e#f¦  «        d„ ¦   «         Z‚ejD         E                    d~e'e3e4e&e5e#f¦  «        d€„ ¦   «         Zƒd�„ Z„d‚„ Z…dƒ„ Z†ejD         E                    d„d…e'fd†e#fg¦  «        d‡„ ¦   «         Z‡dˆ„ Zˆd‰„ Z‰dŠ„ ZŠd‹„ Z‹dŒ„ ZŒd�„ Z�dŽ„ ZŽd�„ Z�d�„ Z�ejD         E                    d‘ddqg¦  «        ejD         E                    dd’d“g¦  «        ejD         E                    d”e.e1g¦  «        d•„ ¦   «         ¦   «         ¦   «         Z‘ejD         E                    dd’d“g¦  «        d–„ ¦   «         Z’ejD         E                    dg d—¢¦  «        ejD         E                    d˜ddgd™dšg¬W¦  «        d›„ ¦   «         ¦   «         Z“dœ„ Z”dS )žé    N)ÚGeneratorType)Úlinalg)Ú
csr_matrixÚ
dok_matrixÚissparse)ÚcdistÚ	cityblockÚcosineÚ	minkowskiÚpdistÚ
squareform)Ú
wminkowski)r   )Úconfig_context)ÚDataConversionWarning)ÚPAIRED_DISTANCESÚPAIRWISE_BOOLEAN_FUNCTIONSÚPAIRWISE_DISTANCE_FUNCTIONSÚPAIRWISE_KERNEL_FUNCTIONSÚ_euclidean_distances_upcastÚadditive_chi2_kernelÚcheck_paired_arraysÚcheck_pairwise_arraysÚchi2_kernelÚcosine_distancesÚcosine_similarityÚeuclidean_distancesÚhaversine_distancesÚlaplacian_kernelÚlinear_kernelÚmanhattan_distancesÚnan_euclidean_distancesÚpaired_cosine_distancesÚpaired_distancesÚpaired_euclidean_distancesÚpaired_manhattan_distancesÚpairwise_distancesÚpairwise_distances_argminÚpairwise_distances_argmin_minÚpairwise_distances_chunkedÚpairwise_kernelsÚpolynomial_kernelÚ
rbf_kernelÚsigmoid_kernel)Ú	normalize)Úassert_allcloseÚassert_almost_equalÚassert_array_equalÚignore_warnings)Úparse_versionÚ
sp_version)ÚParallelÚdelayedc                 ó°  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |d¬¦  «        }t          |¦  «        }t          ||¦  «         |j        |j        cxk    r| k    sn J ‚|                     d¦  «                             | d¬¦  «        }t          ||d¬¦  «        }t          ||¦  «        }t          ||¦  «         |j        |j        cxk    r| k    sn J ‚|                     d¦  «                             | d¬¦  «        }|                     d¦  «                             | d¬¦  «        }t           j	        |d<   t           j	        |d<   t          ||d	¬¦  «        }t          ||¦  «        }	t          ||	¦  «         |j        |	j        cxk    r| k    sn J ‚t          d
„ |D ¦   «         ¦  «        }
t          d„ |D ¦   «         ¦  «        }t          |
|d¬¦  «        }t          ||¦  «         |j        |j        cxk    r| k    sn J ‚|                     d¦  «                             | d¬¦  «        }|d d …df         dz
  dz  t           j        z  dz  |d d …df<   |d d …df         dz
  dz  t           j        z  |d d …df<   t          |d¬¦  «        }t          |¦  «        }t          ||¦  «         |                     d¦  «                             | d¬¦  «        }|d d …df         dz
  dz  t           j        z  dz  |d d …df<   |d d …df         dz
  dz  t           j        z  |d d …df<   t          ||d¬¦  «        }t          ||¦  «        }t          ||¦  «         t          |d¬¦  «        }t          |t          ¬¦  «        }|j        d         |j        d         k    sJ ‚|j        d         |j        d         k    sJ ‚t          ||¦  «         t          ||d¬¦  «        }t          ||t          ¬¦  «        }|j        d         |j        d         k    sJ ‚|j        d         |j        d         k    sJ ‚t          ||¦  «         t          ||d¬¦  «        }t          ||t           ¬¦  «        }|j        d         |j        d         k    sJ ‚|j        d         |j        d         k    sJ ‚t          ||¦  «         t#          |¦  «        }t#          |¦  «        }t          ||d¬¦  «        }t          ||¦  «        }t          ||¦  «         |j        |j        cxk    r| k    sn J ‚t          ||d¬¦  «        }t%          ||¦  «        }t          ||¦  «         |j        |j        cxk    r| k    sn J ‚t          ||                     ¦   «         d¬¦  «        }t)          |                     ¦   «         |                     ¦   «         ¦  «        }t          ||¦  «         | t           j        k    r|j        |j        cxk    r| k    sn J ‚nMt1          j        t4          ¦  «        5  |j        |j        cxk    r| k    sn J ‚	 d d d ¦  «         n# 1 swxY w Y   t)          ||¦  «        }t          ||¦  «         | t           j        k    r|j        |j        cxk    r| k    sn J ‚nMt1          j        t4          ¦  «        5  |j        |j        cxk    r| k    sn J ‚	 d d d ¦  «         n# 1 swxY w Y   ddi}t          ||fddi|¤Ž}t          ||fdt6          i|¤Ž}t          ||¦  «         ddi}t          |fddi|¤Ž}t          |fdt6          i|¤Ž}t          ||¦  «         t1          j        t8          ¦  «        5  t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t1          j        t8          ¦  «        5  t          ||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t1          j        t:          ¦  «        5  t          ||d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   ©é   é   F©ÚcopyÚ	euclidean©Úmetric©é   r:   ©r   r   Únan_euclideanc                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS © rF   ©Ú.0Úvs     úk/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/metrics/tests/test_pairwise.pyú
<listcomp>z6test_pairwise_distances.<locals>.<listcomp>.<listcomp>b   ó   € Ð,Ð,Ð, 1˜QÐ,Ð,Ð,ó    ©Útuple©rH   Úrows     rJ   rK   z+test_pairwise_distances.<locals>.<listcomp>b   ó/   € Ð;Ð;Ð;°#•eÐ,Ð,¨Ð,Ñ,Ô,Ñ-Ô-Ð;Ð;Ð;rM   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rF   rF   rG   s     rJ   rK   z6test_pairwise_distances.<locals>.<listcomp>.<listcomp>c   rL   rM   rN   rP   s     rJ   rK   z+test_pairwise_distances.<locals>.<listcomp>c   rR   rM   ©r9   rA   ç      à?rA   é   Ú	haversine)rA   rA   r	   Ú	manhattanr
   Úpç       @r?   r   Úblah)ÚnpÚrandomÚRandomStateÚrandom_sampleÚastyper&   r   r/   ÚdtypeÚnanr!   rO   Úpir   r	   Úshaper
   r   r   Útocscr    ÚtobsrÚtocooÚfloat64ÚpytestÚraisesÚAssertionErrorr   Ú	TypeErrorÚ
ValueError)Úglobal_dtypeÚrngÚXÚSÚS2ÚYÚX_maskedÚY_maskedÚS_maskedÚ	S2_maskedÚX_tuplesÚY_tuplesÚX_sparseÚY_sparseÚkwdss                  rJ   Útest_pairwise_distancesr~   E   s%
  € å
Œ)×
Ò
 Ñ
"Ô
"€Cð 	×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AÝ˜1 [Ð1Ñ1Ô1€AÝ	˜QÑ	Ô	€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.ð 	×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AÝ˜1˜a¨Ð4Ñ4Ô4€AÝ	˜Q Ñ	"Ô	"€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.ð × Ò  Ñ(Ô(×/Ò/°À5Ð/ÑIÔI€HØ× Ò  Ñ(Ô(×/Ò/°À5Ð/ÑIÔI€HÝ”V€HˆT�NÝ”V€HˆT�NÝ! (¨H¸_ÐMÑMÔM€HÝ'¨°(Ñ;Ô;€IÝ�H˜iÑ(Ô(Ð(ØŒ>˜Yœ_Ð<Ð<Ò<Ð<°Ò<Ð<Ð<Ð<Ð<Ð<õ Ð;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝÐ;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝ	˜H h°{Ð	CÑ	CÔ	C€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.ð
 	×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AØ����A�Œw˜‰} Ñ!¥B¤EÑ)¨AÑ-€A€a€a€aˆ€d�GØ����A�Œw˜‰} Ñ!¥B¤EÑ)€A€a€a€aˆ€d�GÝ˜1 [Ð1Ñ1Ô1€AÝ	˜QÑ	Ô	€BÝ�A�rÑÔÐð 	×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AØ����A�Œw˜‰} Ñ!¥B¤EÑ)¨AÑ-€A€a€a€aˆ€d�GØ����A�Œw˜‰} Ñ!¥B¤EÑ)€A€a€a€aˆ€d�GÝ˜1˜a¨Ð4Ñ4Ô4€AÝ	˜Q Ñ	"Ô	"€BÝ�A�rÑÔÐõ
 	˜1 [Ð1Ñ1Ô1€AÝ	˜A¥iÐ	0Ñ	0Ô	0€BØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#ØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#Ý�A�rÑÔÐõ 	˜1˜a¨Ð4Ñ4Ô4€AÝ	˜A˜q­Ð	3Ñ	3Ô	3€BØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#ØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#Ý�A�rÑÔÐõ
 	˜1˜a¨Ð1Ñ1Ô1€AÝ	˜A˜q­Ð	0Ñ	0Ô	0€BØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#ØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#Ý�A�rÑÔÐõ ˜!‰}Œ}€HÝ˜!‰}Œ}€Hå˜8 X°kÐBÑBÔB€AÝ	˜X xÑ	0Ô	0€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.å˜8 X°hÐ?Ñ?Ô?€AÝ	˜( HÑ	-Ô	-€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.å˜8 X§^¢^Ñ%5Ô%5¸kÐJÑJÔJ€AÝ	˜XŸ^š^Ñ-Ô-¨x¯~ª~Ñ/?Ô/?Ñ	@Ô	@€BÝ�A�rÑÔÐØ•r”zÒ!Ð!ØŒw˜"œ(Ð2Ð2Ò2Ð2 lÒ2Ð2Ð2Ð2Ð2Ð2Ð2õ
 Œ]�>Ñ*Ô*ð 	7ð 	7Ø”7˜bœhÐ6Ð6Ò6Ð6¨,Ò6Ð6Ð6Ð6Ð6Ð6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ 
˜Q Ñ	"Ô	"€BÝ�A�rÑÔÐØ•r”zÒ!Ð!ØŒw˜"œ(Ð2Ð2Ò2Ð2 lÒ2Ð2Ð2Ð2Ð2Ð2Ð2õ
 Œ]�>Ñ*Ô*ð 	7ð 	7Ø”7˜bœhÐ6Ð6Ò6Ð6¨,Ò6Ð6Ð6Ð6Ð6Ð6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð �ˆ:€DÝ˜1˜aÐ<Ð<¨Ð<°tÐ<Ð<€AÝ	˜A˜qÐ	;Ð	;­Ð	;°dÐ	;Ð	;€BÝ�A�rÑÔÐð �ˆ:€DÝ˜1Ð9Ð9 [Ð9°DÐ9Ð9€AÝ	˜AÐ	8Ð	8¥iÐ	8°4Ð	8Ð	8€BÝ�A�rÑÔÐõ 
Œ•yÑ	!Ô	!ð 9ð 9Ý˜8¨KÐ8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9å	Œ•yÑ	!Ô	!ð <ð <Ý˜1˜h¨{Ð;Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <õ 
Œ•zÑ	"Ô	"ð 0ð 0Ý˜1˜a¨Ð/Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0sZ   ÙY9Ù9Y=Ú Y=Û)\Ü\Ü\Þ&_ß_ß_ß(`à`à`à+aáaáaÚsum_over_featuresTFc                 ó²   — ddgddgg}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 )	NrW   rA   é   r:   r   zT`sum_over_features` is deprecated in version 1.2 and will be removed in version 1.4.©Úmatch)r   )rj   ÚwarnsÚFutureWarningr    )r   rq   rt   s      rJ   Ú5test_manhattan_distances_deprecated_sum_over_featuresr†   Ñ   s×   € ð ˆQˆ�!�Q�Ð€AØ
ˆQˆ�!�Q�Ð€AÝ	ŒÝð'ð
ñ 
ô 
ð Gð Gõ 	˜A˜qÐ4EÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gs   ¬AÁAÁAr?   c           	      óÚ  — t           j                             d¦  «        }|                     dd¦  «        }|                     ¦   «         }d|d         z
  |d<   t          t          ¬¦  «        5  |d fD ]K}t          ||| ¬¦  «        }t          j        |dddd¬	¦  «         t          j	        |dk    ¦  «        dk    sJ ‚ŒL	 d d d ¦  «         n# 1 swxY w Y   d
| z  }t          j        t          |¬¦  «        5  t          || ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |¬¦  «        5  t          |                     t          ¦  «        || ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         5  t          j        dt          ¦  «         t          |                     t          ¦  «        | ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r9   r:   rW   rB   )Úcategoryr>   F)rc   ÚposinfÚneginfr<   z+Data was converted to boolean for metric %sr‚   ©rt   r?   Úerror)r]   r^   r_   Úrandnr<   r2   r   r&   Ú
nan_to_numÚsumrj   r„   ra   ÚboolÚwarningsÚcatch_warningsÚsimplefilter)r?   rp   rq   rt   ÚZÚresÚmsgs          rJ   Útest_pairwise_boolean_distancer—   á   sÖ  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ€AØ	�Š‰Œ€AØ�!�D”'‰k€A€d�Gõ 
Õ"7Ð	8Ñ	8Ô	8ð )ð )Ø�T�ð 	)ð 	)ˆAÝ$ Q¨°&Ð9Ñ9Ô9ˆCÝŒM˜# 1¨Q°q¸uÐEÑEÔEÐEÝ”6˜# š(Ñ#Ô# qÒ(Ð(Ð(Ð(Ð(ð	)ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð 8¸&Ñ
@€CÝ	ŒÕ+°3Ð	7Ñ	7Ô	7ð -ð -Ý˜1 VÐ,Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -õ 
ŒÕ+°3Ð	7Ñ	7Ô	7ð ?ð ?Ý˜1Ÿ8š8¥D™>œ>¨Q°vÐ>Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?õ 
Ô	 Ñ	"Ô	"ð :ð :ÝÔ˜gÕ'<Ñ=Ô=Ð=Ý˜1Ÿ8š8¥D™>œ>°&Ð9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :sJ   Á-ACÃCÃCÃ6DÄDÄDÄ:+E1Å1E5Å8E5ÆAG Ç G$Ç'G$c                  ó  — t           j                             d¦  «        } |                      dd¦  «        }t	          j        ¦   «         5  t	          j        dt          ¦  «         t          |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r9   r:   rŒ   r   r>   )	r]   r^   r_   r�   r‘   r’   r“   r   r&   )rp   rq   s     rJ   Útest_no_data_conversion_warningr™      sÂ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ€AÝ	Ô	 Ñ	"Ô	"ð 2ð 2ÝÔ˜gÕ'<Ñ=Ô=Ð=Ý˜1 [Ð1Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   Á	,BÂBÂ	BÚfuncc                 óÀ  — t          j        t          d¬¦  «        5   | t          j        d¦  «        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | t          j        d¦  «        t          j        d¦  «        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | t          j        d¦  «        t          j        d¦  «        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        } | |d¬¦  «        }||u sJ ‚t          j        d¦  «        } | |t          j        d	¦  «        d¬¦  «        }||u sJ ‚ | t          j        d
ggd¬¦  «        d¬¦  «        }d|j        j        k    sJ ‚ | dggd¬¦  «        }t          |t          j	        ¦  «        sJ ‚d S )Nz.* shape .*r‚   )r9   r�   Úprecomputedr>   )r:   r:   )r:   r�   ©r9   r9   )r�   r�   rW   Úint©rb   Úfç      ð?)
rj   rk   rn   r]   ÚzerosÚarrayrb   ÚkindÚ
isinstanceÚndarray)rš   rr   rs   s      rJ   Útest_pairwise_precomputedr§   	  sÁ  € õ 
Œ•z¨Ð	7Ñ	7Ô	7ð 5ð 5Øˆ�RŒX�fÑÔ mÐ4Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5õ 
Œ•z¨Ð	7Ñ	7Ô	7ð Gð GØˆ�RŒX�fÑÔ�rœx¨Ñ/Ô/¸ÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ 
Œ•z¨Ð	7Ñ	7Ô	7ð Gð GØˆ�RŒX�fÑÔ�rœx¨Ñ/Ô/¸ÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ 	Œ�ÑÔ€AØ	ˆˆa˜Ð	&Ñ	&Ô	&€BØ�ˆ7ˆ7ˆ7ˆ7å
Œ�ÑÔ€AØ	ˆˆa•”˜&Ñ!Ô!¨-Ð	8Ñ	8Ô	8€BØ�ˆ7ˆ7ˆ7ˆ7ð 	ˆ�RŒX˜�s�e 5Ð)Ñ)Ô)°-Ð@Ñ@Ô@€AØ�!”'”,ÒÐÐÐð 	ˆˆsˆeˆW˜]Ð+Ñ+Ô+€AÝ�a�œÑ$Ô$Ð$Ð$Ð$Ð$Ð$s5   œ AÁAÁAÁ.3B-Â-B1Â4B1Ã3DÄDÄDc                  ó¶   — t          j        t          d¬¦  «        5  t          t	          j        dd¦  «        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz.* non-negative values.*r‚   r�   éÿÿÿÿrœ   r>   )rj   rk   rn   r&   r]   ÚfullrF   rM   rJ   Ú&test_pairwise_precomputed_non_negativer«   '  s¯   € å	Œ•zÐ)CÐ	DÑ	DÔ	Dð Fð FÝ�2œ7 6¨2Ñ.Ô.°}ÐEÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Fs   œ%AÁAÁArW   r9   Údoubler;   )ÚwrZ   c                 óŽ   — t          t          j        | ¦  «        t          j        |¦  «        fi |¤Ž}|                     ¦   «         S ©N)r,   r]   Ú
atleast_2dÚitem)ÚxÚyr}   ÚKs       rJ   Úcallable_rbf_kernelrµ   1  s:   € å•2”= Ñ#Ô#¥R¤]°1Ñ%5Ô%5Ð>Ð>¸Ð>Ð>€Aà�6Š6‰8Œ8€OrM   zfunc, metric, kwdsr=   r   z1.6.0z;wminkowski is now minkowski and it has been already tested.)Úreason)Úmarksr   Ú
polynomialÚdegreeÚgammaçš™™™™™¹?rb   c                 ó˜  — t           j                             d¦  «        }t          j        d|                     d¦  «        z  |¬¦  «        }t          j        d|                     d¦  «        z  |¬¦  «        } | |f|ddœ|¤Ž} | |f|ddœ|¤Ž}t          ||¦  «          | ||f|ddœ|¤Ž} | ||f|ddœ|¤Ž}t          ||¦  «         d S )	Nr   r9   r8   rŸ   ©r�   r:   rW   ©r?   Ún_jobsrA   )r]   r^   r_   r£   r`   r/   )	rš   r?   r}   rb   rp   rq   rt   rr   rs   s	            rJ   Útest_pairwise_parallelrÀ   8  s
  € õL Œ)×
Ò
 Ñ
"Ô
"€CÝ
Œ��S×&Ò& vÑ.Ô.Ñ.°eÐ<Ñ<Ô<€AÝ
Œ��S×&Ò& vÑ.Ô.Ñ.°eÐ<Ñ<Ô<€AàˆˆQÐ0�v aÐ0Ð0¨4Ð0Ð0€AØ	ˆˆaÐ	1˜ qÐ	1Ð	1¨DÐ	1Ð	1€BÝ�A�rÑÔÐàˆˆQ�Ð3˜&¨Ð3Ð3¨dÐ3Ð3€AØ	ˆˆa�Ð	4˜6¨!Ð	4Ð	4¨tÐ	4Ð	4€BÝ�A�rÑÔÐÐÐrM   c                  óF   — t          dggd„ ¬¦  «        d         dk    sJ ‚d S )Nr¡   c                 ó   — dS )Nr9   rF   ©r²   r³   s     rJ   ú<lambda>z9test_pairwise_callable_nonstrict_metric.<locals>.<lambda>o  s   € ¸1€ rM   r>   rB   r9   )r&   rF   rM   rJ   Ú'test_pairwise_callable_nonstrict_metricrÅ   k  s3   € õ  ˜u˜g¨n¨nÐ=Ñ=Ô=¸dÔCÀqÒHÐHÐHÐHÐHÐHrM   )ÚrbfÚ	laplacianÚsigmoidr¸   ÚlinearÚchi2Úadditive_chi2c                 óœ  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          |          }t          || ¬¦  «        } ||¦  «        }t          ||¦  «         t          ||| ¬¦  «        } |||¬¦  «        }t          ||¦  «         t          d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }t          ||| ¬¦  «        }t          ||¦  «         t          |¦  «        }	t          |¦  «        }
| d	v rd S t          |	|
| ¬¦  «        }t          ||¦  «         d S )
Nr   r8   r@   r>   r‹   ©rt   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rF   rF   rG   s     rJ   rK   z4test_pairwise_kernels.<locals>.<listcomp>.<listcomp>‡  rL   rM   rN   rP   s     rJ   rK   z)test_pairwise_kernels.<locals>.<listcomp>‡  rR   rM   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rF   rF   rG   s     rJ   rK   z4test_pairwise_kernels.<locals>.<listcomp>.<listcomp>ˆ  rL   rM   rN   rP   s     rJ   rK   z)test_pairwise_kernels.<locals>.<listcomp>ˆ  rR   rM   )rÊ   rË   )	r]   r^   r_   r`   r   r*   r/   rO   r   )r?   rp   rq   rt   ÚfunctionÚK1ÚK2ry   rz   r{   r|   s              rJ   Útest_pairwise_kernelsrÕ   s  s_  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ(¨Ô0€Hå	˜! FÐ	+Ñ	+Ô	+€BØ	ˆ�!‰Œ€BÝ�B˜ÑÔÐå	˜!˜q¨Ð	0Ñ	0Ô	0€BØ	ˆ�!�qÐ	Ñ	Ô	€BÝ�B˜ÑÔÐåÐ;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝÐ;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝ	˜( H°VÐ	<Ñ	<Ô	<€BÝ�B˜ÑÔÐõ ˜!‰}Œ}€HÝ˜!‰}Œ}€HØÐ*Ð*Ð*àˆÝ	˜( h°vÐ	>Ñ	>Ô	>€BÝ�B˜ÑÔÐÐÐrM   c                  ój  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t          }ddi}t          |f||dœ|¤Ž}t          |fd|i|¤Ž}t          ||¦  «         t          |f||dœ|¤Ž}t          |fd|i|¤Ž}t          ||¦  «         d S )Nr   r8   r@   rº   r»   r‹   rt   )r]   r^   r_   r`   rµ   r*   r,   r/   )rp   rq   rt   r?   r}   rÓ   rÔ   s          rJ   Útest_pairwise_kernels_callabler×   –  sá   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€Aå €FØ�Sˆ>€DÝ	˜!Ð	8˜q¨Ð	8Ð	8°4Ð	8Ð	8€BÝ	�AÐ	#Ð	#˜Ð	#˜dÐ	#Ð	#€BÝ�B˜ÑÔÐõ 
˜!Ð	8˜q¨Ð	8Ð	8°4Ð	8Ð	8€BÝ	�AÐ	#Ð	#˜Ð	#˜dÐ	#Ð	#€BÝ�B˜ÑÔÐÐÐrM   c                  óŒ  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          ||d¬¦  «        }dddœ}t          ||fdd	d
œ|¤Ž}t          ||¦  «         t          j        t          ¦  «        5  t          ||fddi|¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r8   r@   r»   ©rº   z:))rº   ÚblablarÆ   T)r?   Úfilter_paramsr?   )
r]   r^   r_   r`   r,   r*   r/   rj   rk   rm   )rp   rq   rt   r´   ÚparamsrÔ   s         rJ   Ú"test_pairwise_kernels_filter_paramrÝ   ©  s  € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ�1�a˜sÐ#Ñ#Ô#€AØ dÐ+Ð+€FÝ	˜!˜QÐ	K u¸DÐ	KÐ	KÀFÐ	KÐ	K€BÝ�A�rÑÔÐå	Œ•yÑ	!Ô	!ð 7ð 7Ý˜˜AÐ6Ð6 eÐ6¨vÐ6Ð6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   ÂB9Â9B=Ã B=zmetric, funcc                 óê  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t	          ||| ¬¦  «        } |||¦  «        }t          ||¦  «          |t          |¦  «        t          |¦  «        ¦  «        }t          ||¦  «         | t          v r<t          |          ||¦  «        }t          j        |¦  «        }t          ||¦  «         d S d S )Nr   r8   r>   )	r]   r^   r_   r`   r#   r/   r   r   Údiag)	r?   rš   rp   rq   rt   rr   rs   ÚS3Ú	distancess	            rJ   Útest_paired_distancesrâ   ¶  sî   € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜&Ñ!Ô!€Aà×Ò˜&Ñ!Ô!€Aå˜˜A fÐ-Ñ-Ô-€AØ	ˆˆa�‰Œ€BÝ�A�rÑÔÐØ	ˆ�j˜‰mŒm�Z¨™]œ]Ñ	+Ô	+€BÝ�A�rÑÔÐØÕ,Ð,Ð,õ 0°Ô7¸¸1Ñ=Ô=ˆ	Ý”G˜IÑ&Ô&ˆ	Ý˜	 1Ñ%Ô%Ð%Ð%Ð%ð -Ð,rM   c                 ó  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }|                     d¦  «                             | d¬¦  «        }t          ||d¬¦  «        }t          ||d„ ¬¦  «        }t          ||¦  «         |                     d¦  «        }t          j        t          ¦  «        5  t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr   r8   Fr;   rY   r>   c                 óX   — t          j        | |z
  ¦  «                             d¬¦  «        S )Nr   ©Úaxis)r]   Úabsr�   rÃ   s     rJ   rÄ   z0test_paired_distances_callable.<locals>.<lambda>Ö  s#   € µB´F¸1¸q¹5±M´M×4EÒ4EÈ1Ð4EÑ4MÔ4M€ rM   r½   )
r]   r^   r_   r`   ra   r#   r/   rj   rk   rn   )ro   rp   rq   rt   rr   rs   s         rJ   Útest_paired_distances_callablerè   Ì  s:  € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€Aà×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€Aå˜˜A kÐ2Ñ2Ô2€AÝ	˜!˜QÐ'MÐ'MÐ	NÑ	NÔ	N€BÝ�A�rÑÔÐð 	×Ò˜&Ñ!Ô!€AÝ	Œ•zÑ	"Ô	"ð ð Ý˜˜AÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÃC5Ã5C9Ã<C9c                 óŽ
  — t          j        dgdgg| ¬¦  «        }t          j        dgdgg| ¬¦  «        }t          |¦  «        }t          || ¬¦  «        }ddg}ddg}ddg}t	          ||d¬	¦  «        \  }}	t          ||d¬	¦  «        }
t          ||¦  «         t          |
|¦  «         t          |	|¦  «         t	          ||d¬	¦  «        \  }}t          ||d¬	¦  «        }t          ||¦  «         t          ||¦  «         t          ||¦  «         t          |¦  «        t           j        k    sJ ‚t          |¦  «        t           j        k    sJ ‚t	          ||d
¬	¦  «        \  }}	t	          ||dddi¬¦  «        \  }
}t          ||d
¬	¦  «        }t          ||dddi¬¦  «        }t          |	|¦  «         t          ||¦  «         t          ||¦  «         t          |
|¦  «         t          ||¦  «         t          ||¦  «         t	          ||d¬	¦  «        \  }}	t          ||d¬	¦  «        }
t          ||¦  «         t          |
|¦  «         t          |	|¦  «         t	          ||d¬	¦  «        \  }}t          ||d¬	¦  «        }t          ||¦  «         t          ||¦  «         t          ||¦  «         t	          ||t          ddi¬¦  «        \  }}	t          ||¦  «         t          |	|¦  «         t	          ||dddi¬¦  «        \  }}	t          ||¦  «         t          |	|¦  «         t           j
                             d¦  «        }|                     dd¦  «        }|                     dd¦  «        }t          ||d¬	¦  «        }|                     d¬¦  «        }||t          t!          |¦  «        ¦  «        f         }t	          ||dd¬¦  «        \  }}t          ||d¬¦  «         t          ||d¬¦  «         t	          ||d¬¦  «        \  }}t	          ||d¬¦  «        \  }}t          ||¦  «         t#          ||¦  «         t	          ||d¬¦  «        \  }}t	          ||d¬¦  «        \  }}t          ||¦  «         t#          ||¦  «         t          ||d¬¦  «        }t          ||d¬¦  «        }t#          ||¦  «         t          ||d¬¦  «        }t          ||d¬¦  «        }t#          ||¦  «         t          ||¦  «        }t          t          j        |¦  «        t          j        |¦  «        ¦  «        }t#          ||¦  «         d S )Nr   rW   rŸ   éþÿÿÿr�   rA   r:   r=   r>   ÚsqeuclideanÚsquaredT)r?   Úmetric_kwargsrY   rZ   r   éa   é•   éo   rå   )ræ   r?   çH¯¼šò×z>©Úrtol)r]   Úasarrayr   r   r(   r'   r/   Útyper¦   r   r^   r_   r�   r&   ÚargminÚrangeÚlenr1   Úasfortranarray)ro   rq   rt   ÚXspÚYspÚexpected_idxÚexpected_valsÚexpected_vals_sqÚidxÚvalsÚidx2ÚidxspÚvalsspÚidxsp2Úvals2Úidx3Úidx4rp   ÚdistÚdist_orig_indÚdist_orig_valÚdist_chunked_indÚdist_chunked_valÚargmin_0Údist_0Úargmin_1Údist_1Úargmin_C_contiguousÚargmin_F_contiguouss                                rJ   Ú"test_pairwise_distances_argmin_minr  à  sË  € å
Œ
�Q�C˜!˜�: \Ð2Ñ2Ô2€AÝ
Œ
�R�D˜1˜#�; lÐ3Ñ3Ô3€Aå
�Q‰-Œ-€CÝ
�Q˜lÐ
+Ñ
+Ô
+€Cà�q�6€LØ˜�F€MØ˜1�vÐõ .¨a°¸;ÐGÑGÔG�I€CˆÝ$ Q¨°+Ð>Ñ>Ô>€DÝ�C˜Ñ&Ô&Ð&Ý�D˜,Ñ'Ô'Ð'Ý�D˜-Ñ(Ô(Ð(å1°#°sÀ;ÐOÑOÔO�M€Eˆ6Ý& s¨C¸ÐDÑDÔD€FÝ�E˜<Ñ(Ô(Ð(Ý�F˜LÑ)Ô)Ð)Ý�F˜MÑ*Ô*Ð*å�‰;Œ;�"œ*Ò$Ð$Ð$Ð$Ý�‰<Œ<�2œ:Ò%Ð%Ð%Ð%õ .¨a°¸=ÐIÑIÔI�I€CˆÝ/Ø	ˆ1�[°¸DÐ0Aðñ ô �K€Dˆ%õ % Q¨°-Ð@Ñ@Ô@€DÝ$Ø	ˆ1�[°¸DÐ0Aðñ ô €Dõ �DÐ*Ñ+Ô+Ð+Ý�EÐ+Ñ,Ô,Ð,å�C˜Ñ&Ô&Ð&Ý�D˜,Ñ'Ô'Ð'Ý�D˜,Ñ'Ô'Ð'Ý�D˜,Ñ'Ô'Ð'õ .¨a°¸;ÐGÑGÔG�I€CˆÝ$ Q¨°+Ð>Ñ>Ô>€DÝ�C˜Ñ&Ô&Ð&Ý�D˜,Ñ'Ô'Ð'Ý�D˜-Ñ(Ô(Ð(å1°#°sÀ;ÐOÑOÔO�M€Eˆ6Ý& s¨C¸ÐDÑDÔD€FÝ�E˜<Ñ(Ô(Ð(Ý�F˜LÑ)Ô)Ð)Ý�F˜MÑ*Ô*Ð*õ .Ø	ˆ1•Y¨s°A¨hðñ ô �I€Cˆõ �C˜Ñ&Ô&Ð&Ý�D˜-Ñ(Ô(Ð(õ .Ø	ˆ1�[°°a°ðñ ô �I€Cˆõ �C˜Ñ&Ô&Ð&Ý�D˜-Ñ(Ô(Ð(õ Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�"�cÑÔ€AØ�	Š	�#�sÑÔ€Aå˜a ¨;Ð7Ñ7Ô7€DØ—K’K Q�KÑ'Ô'€MØ˜­­c°-Ñ.@Ô.@Ñ(AÔ(AÐAÔB€Må)FØ	ˆ1�1˜[ð*ñ *ô *Ñ&ÐÐ&õ �MÐ#3¸$Ð?Ñ?Ô?Ð?Ý�MÐ#3¸$Ð?Ñ?Ô?Ð?õ 5°Q¸ÀÐBÑBÔBÑ€HˆfÝ4°Q¸ÀÐBÑBÔBÑ€Hˆfå�F˜FÑ#Ô#Ð#Ý�x Ñ*Ô*Ð*å4°Q¸ÀÐBÑBÔBÑ€HˆfÝ4°Q¸ÀÐBÑBÔBÑ€Hˆfå�F˜FÑ#Ô#Ð#Ý�x Ñ*Ô*Ð*õ )¨¨A°AÐ6Ñ6Ô6€HÝ(¨¨A°AÐ6Ñ6Ô6€Hå�x Ñ*Ô*Ð*å(¨¨A°AÐ6Ñ6Ô6€HÝ(¨¨A°AÐ6Ñ6Ô6€Hå�x Ñ*Ô*Ð*õ 4°A°qÑ9Ô9ÐÝ3Ý
Ô˜!ÑÔ�bÔ/°Ñ2Ô2ñô Ðõ Ð*Ð,?Ñ@Ô@Ð@Ð@Ð@rM   c                 ó   — | d d …d d…f         S )Néd   rF   ©r  Ústarts     rJ   Ú_reduce_funcr  Y  s   € Ø����4�C�4�Œ=ÐrM   c                 óì  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |¦  «        d d …d d…f         }t          |d t          d¬¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        }t          |¦  «        dk    sJ ‚|d         j        |j        k    sJ ‚t          t          j        |¦  «        |d	¬
¦  «         d S )Nr   )i�  r:   Fr;   r  ç      ð>©Úreduce_funcÚworking_memoryrW   rñ   ©Úatol)r]   r^   r_   r`   ra   r&   r)   r  r¥   r   Úlistrø   rb   r/   Úvstack)ro   rp   rq   rr   ÚS_chunkss        rJ   Ú&test_pairwise_distances_chunked_reducer#  ]  só   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€Aå˜1ÑÔ˜a˜a˜a  # ˜gÔ&€AÝ)Ø	ˆ4�\¸&ðñ ô €Hõ �h¥Ñ.Ô.Ð.Ð.Ð.Ý�H‰~Œ~€HÝˆx‰=Œ=˜1ÒÐÐÐØ�AŒ;Ô ¤Ò'Ð'Ð'Ð'õ •B”I˜hÑ'Ô'¨°Ð6Ñ6Ô6Ð6Ð6Ð6rM   c                 ól  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |d d„ d¬¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        }t          |¦  «        dk    sJ ‚t          d	„ |D ¦   «         ¦  «        sJ ‚d S )
Nr   ©é
   r:   Fr;   c                 ó   — d S r¯   rF   r  s     rJ   rÄ   z=test_pairwise_distances_chunked_reduce_none.<locals>.<lambda>s  s   € °€ rM   r  r  rW   c              3   ó   K  — | ]}|d u V — Œ	d S r¯   rF   )rH   Úchunks     rJ   ú	<genexpr>z>test_pairwise_distances_chunked_reduce_none.<locals>.<genexpr>x  s&   è è € Ð3Ð3 ˆu˜ˆ}Ð3Ð3Ð3Ð3Ð3Ð3rM   )r]   r^   r_   r`   ra   r)   r¥   r   r   rø   Úall)ro   rp   rq   r"  s       rJ   Ú+test_pairwise_distances_chunked_reduce_noner,  n  sÁ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜'Ñ"Ô"×)Ò)¨,¸UÐ)ÑCÔC€AÝ)Ø	ˆ4Ð5Ð5Àfðñ ô €Hõ �h¥Ñ.Ô.Ð.Ð.Ð.Ý�H‰~Œ~€HÝˆx‰=Œ=˜1ÒÐÐÐÝÐ3Ð3¨(Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3rM   Úgood_reducec                 ó    — t          | ¦  «        S r¯   ©r   ©ÚDr  s     rJ   rÄ   rÄ   ~  s   € �˜a™œ€ rM   c                 ó*   — t          j        | ¦  «        S r¯   )r]   r£   r0  s     rJ   rÄ   rÄ     s   € �œ !™œ€ rM   c                 ó    — t          | ¦  «        S r¯   )r   r0  s     rJ   rÄ   rÄ   €  s   € � A™œ€ rM   c                 ó>   — t          | ¦  «        t          | ¦  «        fS r¯   r/  r0  s     rJ   rÄ   rÄ   �  s   € �$˜q™'œ'¥4¨¡7¤7Ð+€ rM   c                 ód   — t          | ¦  «        t          j        | ¦  «        t          | ¦  «        fS r¯   )r   r]   r£   r   r0  s     rJ   rÄ   rÄ   ‚  s!   € �* Q™-œ-­¬°!©¬µd¸1±g´gÐ>€ rM   c                 óš   — t          j        d¦  «                             dd¦  «        }t          |d | d¬¦  «        }t	          |¦  «         d S )Nr&  r©   rW   é@   r  )r]   ÚarangeÚreshaper)   Únext)r-  rq   r"  s      rJ   Ú,test_pairwise_distances_chunked_reduce_validr;  {  sO   € õ 	Œ	�"‰Œ×Ò˜b !Ñ$Ô$€AÝ)Ø	ˆ4˜[¸ðñ ô €Hõ 	ˆ�N„N€N€N€NrM   )Ú
bad_reduceÚerr_typeÚmessagec                 ó>   — t          j        | | dd …         g¦  «        S ©Nr©   ©r]   Úconcatenate©r1  Úss     rJ   rÄ   rÄ   ‘  s   € �œ¨¨A¨b¨c¨c¬F¨Ñ4Ô4€ rM   zlength 11\..* input: 10\.c                 óB   — | t          j        | | dd …         g¦  «        fS r@  rA  rC  s     rJ   rÄ   rÄ   –  s!   € ˜!�Rœ^¨Q°°"°#°#´¨KÑ8Ô8Ð9€ rM   z!length \(10, 11\)\..* input: 10\.c                 ó   — | d d…         | fS )Né	   rF   rC  s     rJ   rÄ   rÄ   š  s   € �q˜˜!˜”u˜a�j€ rM   z length \(9, 10\)\..* input: 10\.c                 ó   — dS )Né   rF   rC  s     rJ   rÄ   rÄ   œ  s   € ˜€ rM   z2returned 7\. Expected sequence\(s\) of length 10\.c                 ó   — dS )N)rI  é   rF   rC  s     rJ   rÄ   rÄ   ¡  s   € ˜€ rM   z9returned \(7, 8\)\. Expected sequence\(s\) of length 10\.c                 ó.   — t          j        d¦  «        dfS )Nr&  rG  )r]   r8  rC  s     rJ   rÄ   rÄ   ¦  s   € �"œ) B™-œ-¨Ð+€ rM   z-, 9\)\. Expected sequence\(s\) of length 10\.c                 ó"  — t          j        d¦  «                             dd¦  «                             | d¬¦  «        }t	          |d |d¬¦  «        }t          j        ||¬¦  «        5  t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr&  r©   rW   Fr;   r7  r  r‚   )r]   r8  r9  ra   r)   rj   rk   r:  )ro   r<  r=  r>  rq   r"  s         rJ   Ú.test_pairwise_distances_chunked_reduce_invalidrN  �  sØ   € õD 	Œ	�"‰Œ×Ò˜b !Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AÝ)Ø	ˆ4˜Z¸ðñ ô €Hõ 
Œ�x wÐ	/Ñ	/Ô	/ð ð ÝˆX‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á'BÂBÂBc                 óh  — t          | |||¬¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        }|€| n|}t	          |¦  «        dz  dz  }|D ]"}|j        }|t          ||¦  «        dz  k    sJ ‚Œ#t          j        |¦  «        }t          | ||¬¦  «        }	t          ||	d¬¦  «         d S )N©r  r?   rK  g      °>i   r>   rñ   r  )r)   r¥   r   r   rø   ÚnbytesÚmaxr]   r!  r&   r/   )
rq   rt   r  r?   ÚgenÚblockwise_distancesÚmin_block_mibÚblockÚmemory_usedrr   s
             rJ   Ú check_pairwise_distances_chunkedrX  ·  sØ   € Ý
$ Q¨¸.ÐQWÐ
XÑ
XÔ
X€CÝ�c�=Ñ)Ô)Ð)Ð)Ð)Ý˜s™)œ)ÐØˆYˆˆ˜A€AÝ˜‘F”F˜Q‘J Ñ'€Mà$ð Ið IˆØ”lˆØ�c .°-Ñ@Ô@À5ÑHÒHÐHÐHÐHÐHåœ)Ð$7Ñ8Ô8ÐÝ˜1˜a¨Ð/Ñ/Ô/€AÝÐ'¨°Ð6Ñ6Ô6Ð6Ð6Ð6rM   )r=   Úl2rë   c                 óp  — t           j                             d¦  «        }|                     dd¬¦  «                             |d¬¦  «        }t          t          |d| ¬¦  «        ¦  «        }t          |¦  «        dk    sJ ‚t          t          j	        t          j
        |¦  «        ¦  «        dd	¬
¦  «         d S )Nr   ©éè  r&  ç    _ B©ÚsizeÚscaleFr;   rW   rP  ç»½×Ùß|Û=rò   )r]   r^   r_   Únormalra   r   r)   rø   r/   rß   r!  )r?   ro   rp   rq   Úchunkss        rJ   Ú(test_pairwise_distances_chunked_diagonalrd  Ç  sž   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜
¨$ˆ
Ñ/Ô/×6Ò6°|È%Ð6ÑPÔP€AÝÕ,¨Q¸qÈÐPÑPÔPÑQÔQ€FÝˆv‰;Œ;˜Š?ˆ?ˆ?ˆ?Ý•B”G�BœI fÑ-Ô-Ñ.Ô.°¸Ð>Ñ>Ô>Ð>Ð>Ð>rM   c                 ó  — t           j                             d¦  «        }|                     dd¬¦  «                             |d¬¦  «        }t          || d¬¦  «        }t          t          j        |¦  «        dd	¬
¦  «         d S )Nr   r[  r]  r^  Fr;   rA   r¾   ra  r  )r]   r^   r_   rb  ra   r&   r/   rß   )r?   ro   rp   rq   rá   s        rJ   Ú)test_parallel_pairwise_distances_diagonalrf  Ð  sx   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜
¨$ˆ
Ñ/Ô/×6Ò6°|È%Ð6ÑPÔP€AÝ" 1¨V¸AÐ>Ñ>Ô>€IÝ•B”G˜IÑ&Ô&¨°Ð6Ñ6Ô6Ð6Ð6Ð6rM   c                 óF  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |d dd¬¦  «         t          dd¦  «        D ]}t          |d d	|z  d¬¦  «         Œt          |                     ¦   «         d dd¬¦  «         |                     d
¦  «                             | d¬¦  «        }t          ||dd¬¦  «         t          |                     ¦   «         |                     ¦   «         dd¬¦  «         t          ||dd¬¦  «         t          ||dd¬¦  «         t          j	        t          ¦  «        5  t          t          ||d¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }t          |dd¬¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        |u sJ ‚t          j	        t           ¦  «        5  t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )éÈ   r:   Fr;   rW   r=   rP  iðÿÿÿrA   )r  r:   i'  r	   r\   r>   r  rœ   )r]   r^   r_   r`   ra   rX  r÷   Útolistrj   rk   rn   r:  r)   r&   r¥   r   ÚStopIteration)ro   rp   rq   Úpowerrt   r1  rS  s          rJ   Útest_pairwise_distances_chunkedrl  Ø  s¯  € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€AÝ$ Q¨¸QÀ{ÐSÑSÔSÐSå�s˜A‘”ð 
ð 
ˆÝ(Øˆt A u¡H°[ð	
ñ 	
ô 	
ð 	
ð 	
õ %Ø	�Š‰
Œ
�D¨°;ðñ ô ð ð 	×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€AÝ$ Q¨¸!ÀKÐPÑPÔPÐPÝ$Ø	�Š‰
Œ
�A—H’H‘J”J¨q¸ðñ ô ð õ % Q¨¸%ÈÐTÑTÔTÐTõ % Q¨¸!ÀKÐPÑPÔPÐPå	Œ•zÑ	"Ô	"ð >ð >ÝÕ'¨¨1°VÐ<Ñ<Ô<Ñ=Ô=Ð=ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >õ 	˜1ÑÔ€AÝ
$ Q°vÀmÐ
TÑ
TÔ
T€CÝ�c�=Ñ)Ô)Ð)Ð)Ð)Ý�‰9Œ9˜ˆ>ˆ>ˆ>ˆ>Ý	Œ•}Ñ	%Ô	%ð ð ÝˆS‰	Œ	ˆ	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   Å F
Æ
FÆFÇ9HÈHÈHÚx_array_constrÚdenseÚsparse)ÚidsÚy_array_constrc                 ó„   —  | dgg¦  «        } |dgdgg¦  «        }t          ||¦  «        }t          |ddgg¦  «         d S ©Nr   rW   rA   r¡   r[   )r   r/   )rm  rq  rq   rt   r1  s        rJ   Ú%test_euclidean_distances_known_resultrt     sY   € ð 	ˆ˜˜�uÑÔ€AØˆ˜˜˜a˜S�zÑ"Ô"€AÝ˜A˜qÑ!Ô!€AÝ�A˜˜c˜
�|Ñ$Ô$Ð$Ð$Ð$rM   c                 ó
  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }|                     d¦  «                             | d¬¦  «        }|                     t           j        ¦  «        dz                       d¬¦  «                             dd	¦  «        }|                     t           j        ¦  «        dz                       d¬¦  «                             dd	¦  «        } ||¦  «        }t          ||¦  «        }t          |||¬
¦  «        }t          |||¬¦  «        }	t          ||||¬¦  «        }
t          ||¦  «         t          |	|¦  «         t          |
|¦  «         t          ||t          j
        |¦  «        t          j
        |¦  «        ¬¦  «        }t          j        t          ¦  «        5  t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   ©r&  r&  Fr;   ©é   r&  rA   rW   rå   r©   ©ÚX_norm_squared©ÚY_norm_squared©rz  r|  )r]   r^   r_   r`   ra   ri   r�   r9  r   r/   Ú
zeros_likerj   rk   rl   )ro   rq  rp   rq   rt   Ú	X_norm_sqÚ	Y_norm_sqÚD1ÚD2ÚD3ÚD4Úwrong_Ds               rJ   Ú#test_euclidean_distances_with_normsr†    s!  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€AØ×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€Að —’�"œ*Ñ%Ô%¨Ñ*×/Ò/°QÐ/Ñ7Ô7×?Ò?ÀÀ2ÑFÔF€IØ—’�"œ*Ñ%Ô%¨Ñ*×/Ò/°QÐ/Ñ7Ô7×?Ò?ÀÀ2ÑFÔF€Iàˆ�qÑÔ€Aå	˜Q Ñ	"Ô	"€BÝ	˜Q °)Ð	<Ñ	<Ô	<€BÝ	˜Q °)Ð	<Ñ	<Ô	<€BÝ	˜Q °)ÈIÐ	VÑ	VÔ	V€BÝ�B˜ÑÔÐÝ�B˜ÑÔÐÝ�B˜ÑÔÐõ "Ø	Ø	Ý”} YÑ/Ô/Ý”} YÑ/Ô/ð	ñ ô €Gõ 
Œ•~Ñ	&Ô	&ð %ð %Ý˜ Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   ÇG8Ç8G<Ç?G<c            	      ó„  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }|dz                       d¬¦  «        }|dz                       d¬¦  «        }t          ||||¬¦  «        }t          |||                     dd¦  «        |                     dd¦  «        ¬¦  «        }t          |||                     dd¦  «        |                     dd¦  «        ¬¦  «        }t          ||¦  «         t          ||¦  «         t          j	        t          d	¬
¦  «        5  t          |||d d…         ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        t          d¬
¦  «        5  t          |||d d…         ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rv  rw  rA   rW   rå   r}  r©   zIncompatible dimensions for Xr‚   r9   ry  zIncompatible dimensions for Yr{  )r]   r^   r_   r`   r�   r   r9  r/   rj   rk   rn   )rp   rq   rt   rz  r|  r�  r‚  rƒ  s           rJ   Ú$test_euclidean_distances_norm_shapesrˆ  1  st  € å
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜(Ñ#Ô#€AØ×Ò˜(Ñ#Ô#€Aà˜‘d—Z’Z Q�ZÑ'Ô'€NØ˜‘d—Z’Z Q�ZÑ'Ô'€Nå	Ø	ˆ1˜^¸Nð
ñ 
ô 
€Bõ 
Ø	Ø	Ø%×-Ò-¨b°!Ñ4Ô4Ø%×-Ò-¨b°!Ñ4Ô4ð	
ñ 
ô 
€Bõ 
Ø	Ø	Ø%×-Ò-¨a°Ñ4Ô4Ø%×-Ò-¨a°Ñ4Ô4ð	
ñ 
ô 
€Bõ �B˜ÑÔÐÝ�B˜ÑÔÐå	Œ•zÐ)HÐ	IÑ	IÔ	Ið Eð EÝ˜A˜q°ÀÀÀÔ1CÐDÑDÔDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eå	Œ•zÐ)HÐ	IÑ	IÔ	Ið Eð EÝ˜A˜q°ÀÀÀÔ1CÐDÑDÔDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Es$   Å E'Å'E+Å.E+ÆF5Æ5F9Æ<F9c                 óº  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }d||dk     <   |                     d¦  «                             | d¬¦  «        }d||dk     <   t          ||¦  «        } ||¦  «        } ||¦  «        }t          ||¦  «        }t          ||d¬¦  «         |j        | k    sJ ‚d S )	Nr   ©r  r&  Fr;   çš™™™™™é?rv  ç�íµ ÷Æ°>rò   )	r]   r^   r_   r`   ra   r   r   r/   rb   )ro   rm  rq  rp   rq   rt   Úexpectedrá   s           rJ   Útest_euclidean_distancesrŽ  S  sé   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AØ€A€aˆ#‚g�JØ×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€AØ€A€aˆ#‚g�Jå�Q˜‰{Œ{€Hàˆ�qÑÔ€AØˆ�qÑÔ€AÝ# A qÑ)Ô)€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3ØŒ?˜lÒ*Ð*Ð*Ð*Ð*Ð*rM   c                 óT  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }d||dk     <   t          t          |¦  «        ¦  «        } ||¦  «        }t          |¦  «        }t          ||d¬¦  «         |j	        | k    sJ ‚d S )Nr   rŠ  Fr;   r‹  rŒ  rò   )
r]   r^   r_   r`   ra   r   r   r   r/   rb   )ro   rm  rp   rq   r�  rá   s         rJ   Útest_euclidean_distances_symr�  n  s«   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AØ€A€aˆ#‚g�Jå�% ™(œ(Ñ#Ô#€Hàˆ�qÑÔ€AÝ# AÑ&Ô&€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3ØŒ?˜lÒ*Ð*Ð*Ð*Ð*Ð*rM   Ú
batch_size)Nr9   rI  ée   c                 ó  — t           j                             d¦  «        }|                     d¦  «                             t           j        ¦  «        }d||dk     <   |                     d¦  «                             t           j        ¦  «        }d||dk     <   t          ||¦  «        } ||¦  «        } ||¦  «        }t          ||| ¬¦  «        }t          j        t          j	        |d¦  «        ¦  «        }t          ||d¬¦  «         d S )Nr   rŠ  r‹  rv  ©rt   r‘  rŒ  rò   )r]   r^   r_   r`   ra   Úfloat32r   r   ÚsqrtÚmaximumr/   )r‘  rm  rq  rp   rq   rt   r�  rá   s           rJ   Útest_euclidean_distances_upcastr˜  ƒ  sð   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+­B¬JÑ7Ô7€AØ€A€aˆ#‚g�JØ×Ò˜(Ñ#Ô#×*Ò*­2¬:Ñ6Ô6€AØ€A€aˆ#‚g�Jå�Q˜‰{Œ{€Hàˆ�qÑÔ€AØˆ�qÑÔ€AÝ+¨A°¸zÐJÑJÔJ€IÝ”�œ
 9¨aÑ0Ô0Ñ1Ô1€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3Ð3Ð3rM   c                 óž  — t           j                             d¦  «        }|                     d¦  «                             t           j        ¦  «        }d||dk     <   t          t          |¦  «        ¦  «        } ||¦  «        }t          ||| ¬¦  «        }t          j	        t          j
        |d¦  «        ¦  «        }t          ||d¬¦  «         d S )Nr   rŠ  r‹  r”  rŒ  rò   )r]   r^   r_   r`   ra   r•  r   r   r   r–  r—  r/   )r‘  rm  rp   rq   r�  rá   s         rJ   Ú#test_euclidean_distances_upcast_symrš  ž  s·   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+­B¬JÑ7Ô7€AØ€A€aˆ#‚g�Jå�% ™(œ(Ñ#Ô#€Hàˆ�qÑÔ€AÝ+¨A°¸zÐJÑJÔJ€IÝ”�œ
 9¨aÑ0Ô0Ñ1Ô1€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3Ð3Ð3rM   zdtype, eps, rtolg-Cëâ6?çñhãˆµøä>g:Œ0âŽyE>g®Gáz®ï?z failing due to lack of precisionÚdimi@B c                 óÜ   — t          j        dg|z  g| ¬¦  «        }t          j        d|z   g|z  g| ¬¦  «        }t          ||¦  «        }t          ||¦  «        }t	          ||d¬¦  «         d S )Nr¡   rŸ   r›  rò   )r]   r£   r   r   r/   )rb   Úepsró   rœ  rq   rt   rá   r�  s           rJ   Ú'test_euclidean_distances_extreme_valuesrŸ  ³  sy   € õ  	Œ�3�%˜#‘+� eÐ,Ñ,Ô,€AÝ
Œ�3˜‘9�+ Ñ#Ð$¨EÐ2Ñ2Ô2€Aå# A qÑ)Ô)€IÝ�Q˜‰{Œ{€Hå�I˜x¨dÐ3Ñ3Ô3Ð3Ð3Ð3rM   rì   c                 ó  — t           j                             d¦  «        }|                     dd¦  «        }|                     dd¦  «        }t	          ||| ¬¦  «        }t          ||| ¬¦  «        }t          ||¦  «         d S )Né9  r�   r:   )rt   rì   )r]   r^   r_   r�   r   r!   r/   )rì   rp   rq   rt   Únormal_distanceÚnan_distances         rJ   Ú8test_nan_euclidean_distances_equal_to_euclidean_distancer¤  Ì  sy   € õ Œ)×
Ò
 Ñ
%Ô
%€CØ�	Š	�!�Q‰Œ€AØ�	Š	�!�Q‰Œ€Aå)¨!¨q¸'ÐBÑBÔB€OÝ*¨1°¸7ÐCÑCÔC€LÝ�O \Ñ2Ô2Ð2Ð2Ð2rM   rq   rt   c                 óÂ   — t          j        t          ¦  «        5 }t          | |¬¦  «         d d d ¦  «         n# 1 swxY w Y   d}|t	          |j        ¦  «        k    sJ ‚d S )NrÍ   zBInput contains infinity or a value too large for dtype('float64').)rj   rk   rn   r!   ÚstrÚvalue)rq   rt   ÚexcinfoÚexp_msgs       rJ   Ú,test_nan_euclidean_distances_infinite_valuesrª  Ø  s¢   € õ 
Œ•zÑ	"Ô	"ð ( gÝ  QÐ'Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð S€GØ•c˜'œ-Ñ(Ô(Ò(Ð(Ð(Ð(Ð(Ð(s   š8¸<¿<zX, X_diag, missing_valuerA   r©   c                 ór  — t          j        d|g|dgg¦  «        }t          | |¬¦  «        }t          ||¦  «         t          | d|¬¦  «        }t          |dz  |¦  «         t          | | |¬¦  «        }t          ||¦  «         t          | |                      ¦   «         |¬¦  «        }t          ||¦  «         d S )Nç        r   ©Úmissing_valuesT©rì   r®  rA   )r]   r£   r!   r/   r<   )rq   ÚX_diagÚmissing_valueÚexp_distr  Údist_sqÚdist_twoÚdist_two_copys           rJ   Ú test_nan_euclidean_distances_2x2r¶  â  sÀ   € õ  Œx˜#˜v˜¨°¨Ð4Ñ5Ô5€Hå" 1°]ÐCÑCÔC€DÝ�H˜dÑ#Ô#Ð#å% a°ÀmÐTÑTÔT€GÝ�H˜a‘K Ñ)Ô)Ð)å& q¨!¸MÐJÑJÔJ€HÝ�H˜hÑ'Ô'Ð'å+¨A¨q¯vªv©x¬xÈÐVÑVÔV€MÝ�H˜mÑ,Ô,Ð,Ð,Ð,rM   r±  c                 óT  — t          j        | | gddgg¦  «        }t          j        t           j        t           j        gt           j        dgg¦  «        }t          || ¬¦  «        }t	          ||¦  «         t          ||                     ¦   «         | ¬¦  «        }t	          ||¦  «         d S )Nr   rW   r­  )r]   r£   rc   r!   r/   r<   )r±  rq   r²  r  s       rJ   Ú)test_nan_euclidean_distances_complete_nanr¸    s–   € å
Œ�= -Ð0°1°a°&Ð9Ñ:Ô:€AåŒx�"œ&¥"¤&Ð)­B¬F°A¨;Ð7Ñ8Ô8€Hå" 1°]ÐCÑCÔC€DÝ�H˜dÑ#Ô#Ð#å" 1 a§f¢f¡h¤h¸}ÐMÑMÔM€DÝ�H˜dÑ#Ô#Ð#Ð#Ð#rM   c           	      ó6  — t          j        d| dddg| ddd| gd| | | dgg¦  «        }t          j        | dd| dg| | dddg| | | ddgg¦  «        }t          ||| ¬¦  «        }t          ||| ¬¦  «        }t          ||j        ¦  «         t          t          |d d	…         |d d	…         d
| ¬¦  «        dgg¦  «         t          t          |d	d…         |d	d…         d| ¬¦  «        t          j        d¦  «        gg¦  «         t          || ¬¦  «        }t          ||| ¬¦  «        }t          ||                     ¦   «         | ¬¦  «        }t          ||¦  «         t          ||¦  «         t          ||d
¬¦  «        }t          ||d¬¦  «        }	t          ||	¦  «         d S )Nr¡   g      @g      @r[   g      @g      @g      @r­  rW   Tr¯  g      D@rA   Fg      9@r;   )r]   r£   r!   r0   ÚTr/   r–  r<   )
r±  rq   rt   r�  r‚  rƒ  r„  ÚD5ÚD6ÚD7s
             rJ   Ú'test_nan_euclidean_distances_not_trivalr¾    s  € å
Œà�-  c¨3Ð/Ø˜C  c¨=Ð9Ø�- °¸sÐCð	
ñ	ô 	€Aõ 	Œà˜C  m°SÐ9Ø˜M¨3°°SÐ9Ø˜M¨=¸#¸sÐCð	
ñ	ô 	€Aõ 
!  A°mÐ	DÑ	DÔ	D€BÝ	   A°mÐ	DÑ	DÔ	D€Bå˜˜BœDÑ!Ô!Ð!õ ÝØˆbˆqˆbŒE�1�R�a�R”5 $°}ð	
ñ 	
ô 	
ð 4Ð	4Ð5ñ	ô ð õ ÝØˆa�ˆcŒF�A�a˜�c”F E¸-ð	
ñ 	
ô 	
õ Œ'Ð;Ñ
<Ô
<Ð	=Ð>ñ	ô ð õ 
! °=Ð	AÑ	AÔ	A€BÝ	   A°mÐ	DÑ	DÔ	D€BÝ	   A§F¢F¡H¤H¸]Ð	KÑ	KÔ	K€BÝ�B˜ÑÔÐÝ�B˜ÑÔÐõ 
!  A¨DÐ	1Ñ	1Ô	1€BÝ	   A¨EÐ	2Ñ	2Ô	2€BÝ�B˜ÑÔÐÐÐrM   c                 óÞ   — t          j        dd| dgd| d| gg¦  «        }t          || d¬¦  «        }t          j        |dk    ¦  «        sJ ‚t          || d¬¦  «        }t	          |d	¦  «         d S )
Ngáz®G‘^Àg     @„@gÍÌÌÌÌìB@gÿ–|Ã¯Æ@T)r®  rì   r   Fr¬  )r]   r£   r!   r+  r/   )r±  rq   Údist_squaredr  s       rJ   Ú7test_nan_euclidean_distances_one_feature_match_positiverÁ  C  s–   € õ
 	Œà�e˜]¨EÐ2Ø�m Z°Ð?ð	
ñ	ô 	€Aõ +Ø	˜-°ðñ ô €Lõ Œ6�, !Ò#Ñ$Ô$Ð$Ð$Ð$å" 1°]ÈEÐRÑRÔR€DÝ�D˜#ÑÔÐÐÐrM   c                  óì  — t           j                             d¦  «        } t          j        |                      d¦  «        ¦  «        }t          j        ||g¦  «        }t          |¦  «        }t          |ddgddggd¬¦  «         t          j        |dk    ¦  «        sJ ‚t          j        |dk    ¦  «        sJ ‚t          |t          j	        |¦  «                 ddg¦  «         t          j        || g¦  «        }t          |¦  «        }t          j        |dk    ¦  «        sJ ‚t          j        |dk    ¦  «        sJ ‚t          |ddgddgg¦  «         t          j        |                      dd¦  «        ¦  «        }t          |¦  «        }t          |t          j	        |¦  «                 dg|j
        d	         z  ¦  «         t          j        |dk    ¦  «        sJ ‚t          j        |dk    ¦  «        sJ ‚d S )
Nr¡  iŽ  r¬  ra  r  r[   r\  iˆ  r   )r]   r^   r_   rç   Úrandr!  r   r/   r+  Údiag_indices_fromre   )rp   r²   ÚXAr1  ÚXBr‚  rq   s          rJ   Útest_cosine_distancesrÇ  X  sÐ  € å
Œ)×
Ò
 Ñ
%Ô
%€CÝ
Œˆs�xŠx˜‰}Œ}ÑÔ€AÝ	Œ�A�q�6Ñ	Ô	€BÝ˜ÑÔ€AÝ�A˜˜c˜
 S¨# JÐ/°eÐ<Ñ<Ô<Ð<åŒ6�!�s’(ÑÔÐÐÐÝŒ6�!�s’(ÑÔÐÐÐå�A•bÔ*¨1Ñ-Ô-Ô.°°c°
Ñ;Ô;Ð;å	Œ�A˜�r�7Ñ	Ô	€BÝ	˜"Ñ	Ô	€BåŒ6�"˜’)ÑÔÐÐÐÝŒ6�"˜’)ÑÔÐÐÐå�B˜#˜s˜ c¨3 ZÐ0Ñ1Ô1Ð1õ 	Œˆs�xŠx˜˜dÑ#Ô#Ñ$Ô$€AÝ˜ÑÔ€Aå�A•bÔ*¨1Ñ-Ô-Ô.°°¸¼À¼
Ñ0BÑCÔCÐCÝŒ6�!�s’(ÑÔÐÐÐÝŒ6�!�s’(ÑÔÐÐÐÐÐrM   c                  óØ  ‡‡— d„ Št           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        Št          j        ˆˆfd„|D ¦   «         ¦  «        }t          |‰¦  «        }t          ||¦  «         |                      d¦  «        }d}t          j        t          |¬¦  «        5  t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nc                 ór  — |d         | d         z
  }|d         | d         z
  }t          j        |dz  ¦  «        dz  t          j        | d         ¦  «        t          j        |d         ¦  «        z  t          j        |dz  ¦  «        dz  z  z   }dt          j        t          j        |¦  «        ¦  «        z  }|S )Nr   rW   rA   )r]   ÚsinÚcosÚarcsinr–  )r²   r³   Údiff_latÚdiff_lonÚaÚcs         rJ   Úslow_haversine_distancesz:test_haversine_distances.<locals>.slow_haversine_distancesx  sœ   € Ø�Q”4˜!˜Aœ$‘;ˆØ�Q”4˜!˜Aœ$‘;ˆÝŒF�8˜a‘<Ñ Ô  AÑ%ÝŒF�1�Q”4‰LŒL�2œ6 ! A¤$™<œ<Ñ'­"¬&°¸A±Ñ*>Ô*>À!Ñ*CÑCñ
ˆð •”	�"œ' !™*œ*Ñ%Ô%Ñ%ˆØˆrM   r   rU   )r&  rA   c                 ó0   •‡— g | ]Šˆˆfd „‰D ¦   «         ‘ŒS )c                 ó(   •— g | ]} ‰‰|¦  «        ‘ŒS rF   rF   )rH   r³   rÑ  r²   s     €€rJ   rK   z7test_haversine_distances.<locals>.<listcomp>.<listcomp>„  s'   ø€ Ð>Ð>Ð>°qÐ,Ð,¨Q°Ñ2Ô2Ð>Ð>Ð>rM   rF   )rH   r²   rt   rÑ  s    @€€rJ   rK   z,test_haversine_distances.<locals>.<listcomp>„  s2   øø€ ÐJÐJÐJÀ1Ð>Ð>Ð>Ð>Ð>¸AÐ>Ñ>Ô>ÐJÐJÐJrM   )r&  r�   z-Haversine distance only valid in 2 dimensionsr‚   )
r]   r^   r_   r`   r£   r   r/   rj   rk   rn   )rp   rq   r�  r‚  Úerr_msgrt   rÑ  s        @@rJ   Útest_haversine_distancesrÕ  v  s5  øø€ ðð ð õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜'Ñ"Ô"€AÝ	ŒÐJÐJÐJÐJÐJÈÐJÑJÔJÑ	KÔ	K€BÝ	˜Q Ñ	"Ô	"€BÝ�B˜ÑÔÐà×Ò˜'Ñ"Ô"€AØ=€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð ð Ý˜AÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÃCÃC#Ã&C#c                  ób   — dgdgg} dgdgg}t          | |¦  «        }t          |ddg¦  «         d S rs  )r$   r/   ©rq   rt   r1  s      rJ   Útest_paired_euclidean_distancesrØ  ‘  óE   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÝ" 1 aÑ(Ô(€AÝ�A˜˜S�zÑ"Ô"Ð"Ð"Ð"rM   c                  ób   — dgdgg} dgdgg}t          | |¦  «        }t          |ddg¦  «         d S rs  )r%   r/   r×  s      rJ   Útest_paired_manhattan_distancesrÛ  ™  rÙ  rM   c                  ób   — dgdgg} dgdgg}t          | |¦  «        }t          |ddg¦  «         d S )Nr   rW   rA   rV   )r"   r/   r×  s      rJ   Útest_paired_cosine_distancesrÝ  ¡  sE   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÝ  1Ñ%Ô%€AÝ�A˜˜S�zÑ"Ô"Ð"Ð"Ð"rM   c                  ó  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          ||¦  «        }d}t          |||¬¦  «        }|j        t          k    sJ ‚t          |¦  «        D ]‚\  }}t          |¦  «        D ]m\  }}	t          j	        ||	z
  dz  ||	z   z  ¦  «         }
t          j
        ||
z  ¦  «        }t          |||f         |
¦  «         t          |||f         |¦  «         ŒnŒƒt          |¦  «        }t          t          j        |¦  «        d¦  «         t          j        |dk    ¦  «        sJ ‚t          j        |t          j        t          j        |¦  «        ¦  «        z
  dk     ¦  «        sJ ‚|                      d¦  «                             t           j        ¦  «        }|                      d¦  «                             t           j        ¦  «        }t          ||¦  «        }|j        t           j        k    sJ ‚|                      d¦  «                             t           j        ¦  «        }t          ||¦  «        }t          j        |¦  «                             ¦   «         sJ ‚|j        t          k    sJ ‚dd	gd
dgg}ddgddgg}t          ||¦  «        }|d         |d         k    sJ ‚|d         |d         k    sJ ‚t'          j        t*          ¦  «        5  t          ddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t'          j        t*          ¦  «        5  t          ddggddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t'          j        t*          ¦  «        5  t          ddggddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t'          j        t*          ¦  «        5  t          ddggg d¢g¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r8   r%  r»   rÙ   rA   rW   g333333Ó?gffffffæ?r¡   gÍÌÌÌÌÌì?rB   )r   rW   )rW   rW   )rW   r   r©   )çš™™™™™É?rß  g333333ã?)r]   r^   r_   r`   r   r   rb   ÚfloatÚ	enumerater�   Úexpr0   r1   rß   r+  ra   r•  Úint32Úisfiniterj   rk   rn   )rp   rq   rt   ÚK_addrº   r´   Úir²   Újr³   rÊ   Úchi2_exps               rJ   Útest_chi_square_kernelré  ©  sÏ  € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜'Ñ"Ô"€AÝ   AÑ&Ô&€EØ€EÝ�A�q Ð&Ñ&Ô&€AØŒ7•eÒÐÐÐÝ˜!‘”ð 3ð 3‰ˆˆ1Ý˜a‘L”Lð 	3ð 	3‰DˆAˆqÝ”F˜A ™E a™<¨1¨q©5Ñ1Ñ2Ô2Ð2ˆDÝ”v˜e d™lÑ+Ô+ˆHÝ  a¨ d¤¨TÑ2Ô2Ð2Ý  ! Q $¤¨Ñ2Ô2Ð2Ð2ð		3õ 	�A‰Œ€AÝ•r”w˜q‘z”z 1Ñ%Ô%Ð%åŒ6�!�a’%‰=Œ=ÐÐÐÝŒ6�!•b”g�bœg a™jœjÑ)Ô)Ñ)¨AÒ-Ñ.Ô.Ð.Ð.Ð.à×Ò˜&Ñ!Ô!×(Ò(­¬Ñ4Ô4€AØ×Ò˜'Ñ"Ô"×)Ò)­"¬*Ñ5Ô5€AÝ�A�qÑÔ€AØŒ7•b”jÒ Ð Ð Ð ð 	×Ò˜'Ñ"Ô"×)Ò)­"¬(Ñ3Ô3€AÝ�A�qÑÔ€AÝŒ;�q‰>Œ>×ÒÑÔÐÐÐØŒ7•eÒÐÐÐð ˆsˆ�c˜1�XÐ€AØ
ˆQˆ�#�s�Ð€AÝ�A�qÑÔ€AØˆTŒ7�Q�t”WÒÐÐÐØˆTŒ7�Q�t”WÒÐÐÐõ 
Œ•zÑ	"Ô	"ð ð Ý�a˜�W�IÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•zÑ	"Ô	"ð +ð +Ý�a˜�W�I  R ˜zÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +å	Œ•zÑ	"Ô	"ð *ð *Ý�a˜�V�H  B˜x˜jÑ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ 
Œ•zÑ	"Ô	"ð 1ð 1Ý�a˜�V�H˜˜˜Ð/Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1sH   ÌL%Ì%L)Ì,L)Í	M,Í,M0Í3M0ÎN3Î3N7Î:N7ÏO;Ï;O?ÐO?Úkernelc                 ó²   — t           j                             d¦  «        }|                     d¦  «        } | ||¦  «        }t	          ||j        d¦  «         d S )Nr   r8   é   )r]   r^   r_   r`   r/   rº  )rê  rp   rq   r´   s       rJ   Útest_kernel_symmetryrí  ß  sU   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØˆˆq�!‰Œ€AÝ�A�q”s˜BÑÔÐÐÐrM   c                 óÜ   — t           j                             d¦  «        }|                     d¦  «        }t	          |¦  «        } | ||¦  «        } | ||¦  «        }t          ||¦  «         d S ©Nr   r8   )r]   r^   r_   r`   r   r/   )rê  rp   rq   r{   r´   rÔ   s         rJ   Útest_kernel_sparserð  ò  sm   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ˜!‰}Œ}€HØˆˆq�!‰Œ€AØ	ˆ�˜(Ñ	#Ô	#€BÝ�A�rÑÔÐÐÐrM   c                  óÞ   — t           j                             d¦  «        } |                      d¦  «        }t	          ||¦  «        }t          |j        d d d…         d„ |D ¦   «         ¦  «         d S )Nr   r8   é   c                 ó<   — g | ]}t          j        |¦  «        d z  ‘ŒS )rA   )r   Únorm)rH   r²   s     rJ   rK   z&test_linear_kernel.<locals>.<listcomp>  s%   € Ð!AÐ!AÐ!A¸!¥&¤+¨a¡.¤.°AÑ"5Ð!AÐ!AÐ!ArM   )r]   r^   r_   r`   r   r/   Úflat©rp   rq   r´   s      rJ   Útest_linear_kernelr÷    sj   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ�a˜ÑÔ€Aå�A”F˜3˜3˜Q˜3”KÐ!AÐ!A¸qÐ!AÑ!AÔ!AÑBÔBÐBÐBÐBrM   c                  óî   — t           j                             d¦  «        } |                      d¦  «        }t	          ||¦  «        }t          |j        d d d…         t          j        d¦  «        ¦  «         d S )Nr   r8   rò  r9   )r]   r^   r_   r`   r,   r/   rõ  Úonesrö  s      rJ   Útest_rbf_kernelrú    sc   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ�1�aÑÔ€Aå�A”F˜3˜3˜Q˜3”K¥¤¨¡¤Ñ,Ô,Ð,Ð,Ð,rM   c                  ó¬  — t           j                             d¦  «        } |                      d¦  «        }t	          ||¦  «        }t          t          j        |¦  «        t          j        d¦  «        ¦  «         t          j        |dk    ¦  «        sJ ‚t          j        |t          j        t          j        |¦  «        ¦  «        z
  dk     ¦  «        sJ ‚d S )Nr   r8   r9   rW   )	r]   r^   r_   r`   r   r/   rß   rù  r+  rö  s      rJ   Útest_laplacian_kernelrü    s«   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ˜˜AÑÔ€Aå•B”G˜A‘J”J¥¤¨¡
¤
Ñ+Ô+Ð+õ Œ6�!�a’%‰=Œ=ÐÐÐÝŒ6�!•b”g�bœg a™jœjÑ)Ô)Ñ)¨AÒ-Ñ.Ô.Ð.Ð.Ð.Ð.Ð.rM   zmetric, pairwise_funcrÉ   r
   c                 óü  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t	          |¦  «        }t	          |¦  «        } |||d¬¦  «        }t          |¦  «        sJ ‚ |||d¬¦  «        }t          |¦  «        rJ ‚t          |                     ¦   «         |¦  «         t          ||| ¬¦  «        }	t          |                     ¦   «         |	¦  «         d S )Nr   r8   r½   F)Údense_outputTr‹   )	r]   r^   r_   r`   r   r   r/   Útoarrayr*   )
r?   Úpairwise_funcrp   rq   rt   ÚXcsrÚYcsrrÓ   rÔ   ÚK3s
             rJ   Ú&test_pairwise_similarity_sparse_outputr  "  sõ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ�a‰=Œ=€DÝ�a‰=Œ=€Dð 
ˆ�t˜T°Ð	6Ñ	6Ô	6€BÝ�B‰<Œ<ÐÐÐð 
ˆ�q˜!¨$Ð	/Ñ	/Ô	/€BÝ˜‰|Œ|ÐÐÐÝ�B—J’J‘L”L "Ñ%Ô%Ð%õ 
˜!˜q¨Ð	0Ñ	0Ô	0€BÝ�B—J’J‘L”L "Ñ%Ô%Ð%Ð%Ð%rM   c                  ó¤  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          |¦  «        }t	          |¦  «        }|d f||f|d f||ffD ]Y\  }}t          ||d¬¦  «        }t          |¦  «        }|�t          |¦  «        }t          ||d¬¦  «        }t          ||¦  «         ŒZd S )Nr   r8   r½   r
   r‹   rÉ   )r]   r^   r_   r`   r   r*   r.   r/   )	rp   rq   rt   r  r  ÚX_ÚY_rÓ   rÔ   s	            rJ   Útest_cosine_similarityr  :  sã   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ�a‰=Œ=€DÝ�a‰=Œ=€Dà�t�9˜q !˜f t¨T l°T¸4°LÐAð  ð  ‰ˆˆBõ ˜b B¨xÐ8Ñ8Ô8ˆÝ�r‰]Œ]ˆØˆ>Ý˜2‘”ˆBÝ˜b B¨xÐ8Ñ8Ô8ˆÝ˜˜BÑÔÐÐð ð  rM   c                  ó¦   — t          j        t          j        d¦  «        d¦  «        } t          | d ¦  «        \  }}||u sJ ‚t	          | |¦  «         d S ©Né(   ©r9   rK  )r]   Úresizer8  r   r1   )rÅ  Ú
XA_checkedÚ
XB_checkeds      rJ   Útest_check_dense_matricesr  N  sX   € õ 
Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ2°2°tÑ<Ô<Ñ€J�
Ø˜Ð#Ð#Ð#Ð#Ý�r˜:Ñ&Ô&Ð&Ð&Ð&rM   c                  ó¼  — t          j        t          j        d¦  «        d¦  «        } t          j        t          j        d¦  «        d¦  «        }t          | |¦  «        \  }}t	          | |¦  «         t	          ||¦  «         t          j        t          j        d¦  «        d¦  «        }t          | |¦  «        \  }}t	          | |¦  «         t	          ||¦  «         d S )Nr  r  é    ©r:   rK  )r]   r  r8  r   r1   r   ©rÅ  rÆ  r  r  s       rJ   Útest_check_XB_returnedr  W  s½   € õ 
Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ	Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ2°2°rÑ:Ô:Ñ€J�
Ý�r˜:Ñ&Ô&Ð&Ý�r˜:Ñ&Ô&Ð&å	Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ0°°RÑ8Ô8Ñ€J�
Ý�r˜:Ñ&Ô&Ð&Ý�r˜:Ñ&Ô&Ð&Ð&Ð&rM   c                  óö  — t          j        t          j        d¦  «        d¦  «        } t          j        t          j        d¦  «        d¦  «        }t          j        t
          ¦  «        5  t          | |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          j        d¦  «        d¦  «        }t          j        t
          ¦  «        5  t          | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né-   )r9   rG  r  r  é$   )r:   rG  )r]   r  r8  rj   rk   rn   r   r   ©rÅ  rÆ  s     rJ   Útest_check_different_dimensionsr  g  sJ  € å	Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ	Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ	Œ•zÑ	"Ô	"ð &ð &Ý˜b "Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &õ 
Œ•2”9˜UÑ#Ô# VÑ	,Ô	,€BÝ	Œ•zÑ	"Ô	"ð $ð $Ý˜B Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s$   Á(BÂB	ÂB	ÃC.Ã.C2Ã5C2c                  óL  — t          j        d¦  «                             dd¦  «        } t          j        d¦  «                             dd¦  «        }t          j        t
          ¦  «        5  t          | |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «                             dd¦  «        } t          j        d¦  «                             dd¦  «        }t          j        t
          ¦  «        5  t          | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr  rG  r9   r  r:   rK  )r]   r8  r9  rj   rk   rn   r   r  s     rJ   Útest_check_invalid_dimensionsr  s  sq  € õ 
Œ�2‰Œ×	Ò	˜q !Ñ	$Ô	$€BÝ	Œ�2‰Œ×	Ò	˜q !Ñ	$Ô	$€BÝ	Œ•zÑ	"Ô	"ð &ð &Ý˜b "Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &å	Œ�2‰Œ×	Ò	˜q !Ñ	$Ô	$€BÝ	Œ�2‰Œ×	Ò	˜q !Ñ	$Ô	$€BÝ	Œ•zÑ	"Ô	"ð &ð &Ý˜b "Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s$   Á*BÂBÂBÃ;DÄDÄ Dc                  óø  — t           j                             d¦  «        } |                      d¦  «        }t	          |¦  «        }|                      d¦  «        }t	          |¦  «        }t          ||¦  «        \  }}t          |¦  «        sJ ‚t          ||z
  ¦  «                             ¦   «         dk    sJ ‚t          |¦  «        sJ ‚t          ||z
  ¦  «                             ¦   «         dk    sJ ‚t          ||¦  «        \  }}t          |¦  «        sJ ‚t          ||z
  ¦  «                             ¦   «         dk    sJ ‚t          |¦  «        sJ ‚t          ||z
  ¦  «                             ¦   «         dk    sJ ‚d S rï  )	r]   r^   r_   r`   r   r   r   rç   r�   )rp   rÅ  Ú	XA_sparserÆ  Ú	XB_sparser  r  ÚXA_2_checkeds           rJ   Útest_check_sparse_arraysr!  �  s{  € å
Œ)×
Ò
 Ñ
"Ô
"€CØ	×	Ò	˜6Ñ	"Ô	"€BÝ˜2‘”€IØ	×	Ò	˜6Ñ	"Ô	"€BÝ˜2‘”€IÝ2°9¸iÑHÔHÑ€J�
õ �JÑÔÐÐÐÝˆy˜:Ñ%Ñ&Ô&×*Ò*Ñ,Ô,°Ò1Ð1Ð1Ð1Ý�JÑÔÐÐÐÝˆy˜:Ñ%Ñ&Ô&×*Ò*Ñ,Ô,°Ò1Ð1Ð1Ð1å4°YÀ	ÑJÔJÑ€J�Ý�JÑÔÐÐÐÝˆy˜:Ñ%Ñ&Ô&×*Ò*Ñ,Ô,°Ò1Ð1Ð1Ð1Ý�LÑ!Ô!Ð!Ð!Ð!Ýˆ|˜jÑ(Ñ)Ô)×-Ò-Ñ/Ô/°1Ò4Ð4Ð4Ð4Ð4Ð4rM   c                 óš   — | j         }t          |¦  «        dk    rt          d„ | D ¦   «         ¦  «        S t          d„ | D ¦   «         ¦  «        S )NrW   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r¯   )ÚtuplifyrP   s     rJ   r*  ztuplify.<locals>.<genexpr>œ  s(   è è € Ð/Ð/ c•W˜S‘\”\Ð/Ð/Ð/Ð/Ð/Ð/rM   c              3   ó   K  — | ]}|V — Œd S r¯   rF   )rH   Úrs     rJ   r*  ztuplify.<locals>.<genexpr>Ÿ  s   è è € �N�N˜1�Q�N�N�N�N�N�NrM   )re   rø   rO   )rq   rD  s     rJ   r$  r$  —  sO   € à	Œ€AÝ
ˆ1�v„v�‚z€zåÐ/Ð/¨QÐ/Ñ/Ô/Ñ/Ô/Ð/õ �N�N �N‘N”NÑ"Ô"Ð"rM   c                  ó:  — t           j                             d¦  «        } |                      d¦  «        }t	          |¦  «        }|                      d¦  «        }t	          |¦  «        }t          ||¦  «        \  }}t          ||¦  «         t          ||¦  «         d S rï  )r]   r^   r_   r`   r$  r   r1   )rp   rÅ  Ú	XA_tuplesrÆ  Ú	XB_tuplesr  r  s          rJ   Útest_check_tuple_inputr*  ¢  s�   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ	×	Ò	˜6Ñ	"Ô	"€BÝ˜‘”€IØ	×	Ò	˜6Ñ	"Ô	"€BÝ˜‘”€IÝ2°9¸iÑHÔHÑ€J�
Ý�y *Ñ-Ô-Ð-Ý�y *Ñ-Ô-Ð-Ð-Ð-rM   c                  ó(  — t          j        t          j        d¦  «        d¦  «                             t           j        ¦  «        } t          j        t          j        d¦  «        d¦  «                             t           j        ¦  «        }t          | d ¦  «        \  }}|j        t           j        k    sJ ‚t          | |¦  «        \  }}|j        t           j        k    sJ ‚|j        t           j        k    sJ ‚t          |                      t          ¦  «        |¦  «        \  }}|j        t          k    sJ ‚|j        t          k    sJ ‚t          | |                     t          ¦  «        ¦  «        \  }}|j        t          k    sJ ‚|j        t          k    sJ ‚d S r
  )r]   r  r8  ra   r•  r   rb   rà  r  s       rJ   Útest_check_preserve_typer,  ®  sZ  € å	Œ•2”9˜R‘=”= &Ñ	)Ô	)×	0Ò	0µ´Ñ	<Ô	<€BÝ	Œ•2”9˜R‘=”= &Ñ	)Ô	)×	0Ò	0µ´Ñ	<Ô	<€Bå2°2°tÑ<Ô<Ñ€J�
ØÔ�rœzÒ)Ð)Ð)Ð)õ 3°2°rÑ:Ô:Ñ€J�
ØÔ�rœzÒ)Ð)Ð)Ð)ØÔ�rœzÒ)Ð)Ð)Ð)õ 3°2·9²9½UÑ3CÔ3CÀRÑHÔHÑ€J�
ØÔ�uÒ$Ð$Ð$Ð$ØÔ�uÒ$Ð$Ð$Ð$õ 3°2°r·y²yÅÑ7GÔ7GÑHÔHÑ€J�
ØÔ�uÒ$Ð$Ð$Ð$ØÔ�uÒ$Ð$Ð$Ð$Ð$Ð$rM   r¿   Ú
seuclideanÚmahalanobisÚdist_functionc           
      óv  — t          d¬¦  «        5  t          j                             d¦  «        }|                     d¦  «        }t          t          ||¬¦  «        ¦  «        }t          j        t           |||| ¬¦  «        ¦  «        ¦  «        }t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr»   )r  r   rŠ  r>   r¾   )
r   r]   r^   r_   r`   r   r   r!  rO   r/   )r¿   r?   r/  rp   rq   Úexpected_distr  s          rJ   Ú+test_pairwise_distances_data_derived_paramsr2  Æ  só   € õ 
 sÐ	+Ñ	+Ô	+ð -ð -ÝŒi×#Ò# AÑ&Ô&ˆØ×Ò˜iÑ(Ô(ˆå"¥5¨°6Ð#:Ñ#:Ô#:Ñ;Ô;ˆÝŒy�˜}˜}¨Q°vÀfÐMÑMÔMÑNÔNÑOÔOˆå˜˜mÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ‘BB.Â.B2Â5B2c                 ó,  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t	          j        t          d| › d�¬¦  «        5  t          ||| ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rŠ  z+The '(V|VI)' parameter is required for the z metricr‚   r>   )r]   r^   r_   r`   rj   rk   rn   r&   )r?   rp   rq   rt   s       rJ   Ú1test_pairwise_distances_data_derived_params_errorr4  Ø  sâ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$€AØ×Ò˜)Ñ$Ô$€Aå	ŒÝØQÀ&ÐQÐQÐQð
ñ 
ô 
ð 0ð 0õ 	˜1˜a¨Ð/Ñ/Ô/Ð/ð	0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   Á)B	Â	BÂB)Ú
braycurtisÚcanberraÚ	chebyshevÚcorrelationÚhammingr.  r   r-  rë   r	   r
   r=   Úy_is_xzY is Xz
Y is not Xc           	      óÆ  — t           j                             d¦  «        }|                     d¦  «                             |d¬¦  «        }i }|r!|}t          t          || ¬¦  «        ¦  «        }nÒ|                     d¦  «                             |d¬¦  «        }t          ||| ¬¦  «        }| dk    r9dt          j        t          j	        ||g¦  «        ddt           j
        ¬	¦  «        i}nW| d
k    rQdt           j                             t          j        t          j	        ||g¦  «        j        ¦  «        ¦  «        j        i}t          ||fd| i|¤Ž}t!          ||¦  «         d S )Nr   r8   Fr;   r>   r-  ÚVrW   )ræ   Úddofrb   r.  ÚVIr?   )r]   r^   r_   r`   ra   r   r   r   Úvarr!  ri   r   ÚinvÚcovrº  r&   r/   )	r?   ro   r:  rp   rq   rÜ   rt   r1  r  s	            rJ   Ú)test_numeric_pairwise_distances_datatypesrB  ç  sU  € õ6 Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€Aà€FØð 
JØˆÝ"¥5¨°6Ð#:Ñ#:Ô#:Ñ;Ô;ˆˆà×Ò˜fÑ%Ô%×,Ò,¨\ÀÐ,ÑFÔFˆÝ˜a ¨6Ð2Ñ2Ô2ˆà�\Ò!Ð!Ø�2œ6¥"¤)¨Q°¨FÑ"3Ô"3¸!À!Í2Ì:ÐVÑVÔVÐWˆFˆFØ�}Ò$Ð$Ø�BœIŸMšM­"¬&µ´¸A¸q¸6Ñ1BÔ1BÔ1DÑ*EÔ*EÑFÔFÔHÐIˆFå˜a Ð<Ð<¨6Ð<°VÐ<Ð<€Då�D˜-Ñ(Ô(Ð(Ð(Ð(rM   c                  óò   — t          t          j        d¦  «        ¦  «        g} t          t          j        d¦  «        ¦  «        g} t          dd¬¦  «        d„ t	          | |¦  «        D ¦   «         ¦  «         d S )Nr�   rA   r   )r¿   Ú
max_nbytesc              3   óX   K  — | ]%\  }} t          t          ¦  «        ||¦  «        V — Œ&d S r¯   )r6   r    )rH   Úm1Úm2s      rJ   r*  z9test_sparse_manhattan_readonly_dataset.<locals>.<genexpr>  sM   è è € ð %ð %Ù17°°RÐ$�Õ#Ñ$Ô$ R¨Ñ,Ô,ð%ð %ð %ð %ð %ð %rM   )r   r]   rù  r5   Úzip)Ú	matrices1Ú	matrices2s     rJ   Ú&test_sparse_manhattan_readonly_datasetrK    s…   € å�BœG F™OœOÑ,Ô,Ð-€IÝ�BœG F™OœOÑ,Ô,Ð-€Ið %…H�A !Ð$Ñ$Ô$ð %ð %Ý;>¸yÈ)Ñ;TÔ;Tð%ñ %ô %ñ ô ð ð ð rM   )r=   )•r‘   Útypesr   Únumpyr]   r   Úscipy.sparser   r   r   Úscipy.spatial.distancer   r	   r
   r   r   r   r   ÚImportErrorrj   Úsklearnr   Úsklearn.exceptionsr   Úsklearn.metrics.pairwiser   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-   Úsklearn.preprocessingr.   Úsklearn.utils._testingr/   r0   r1   r2   Úsklearn.utils.fixesr3   r4   Úsklearn.utils.parallelr5   r6   r~   ÚmarkÚparametrizer†   r—   r™   r§   r«   r8  ra   Ú_minkowski_kwdsÚ_wminkowski_kwdsrµ   ÚparamÚskipifri   r•  rž   rÀ   rÅ   rÕ   r×   rÝ   Úitemsrâ   rè   r  r  r#  r,  r;  rn   rm   rN  rX  rd  rf  rl  r£   rt  r†  rˆ  rŽ  r�  r˜  rš  ÚxfailrŸ  r¤  Úinfrª  r–  rc   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,  r2  r4  rB  rK  rF   rM   rJ   ú<module>ra     s  ðØ €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð?Ø1Ð1Ð1Ð1Ð1Ð1Ð1øØð ?ð ?ð ?ð ?Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð?øøøð
 €€€à "Ð "Ð "Ð "Ð "Ð "Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð> ,Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðH0ð H0ð H0ðX „×ÒÐ,¨t°U¨mÑ<Ô<ðGð Gñ =Ô<ðGð „×Ò˜Ð#=Ñ>Ô>ð:ð :ñ ?Ô>ð:ð<2ð 2ð 2ð „×Ò˜Ð"4Ð6FÐ!GÑHÔHð%ð %ñ IÔHð%ð:Fð Fð Fð "˜œ	 ! Q™œ×.Ò.¨x¸eÐ.ÑDÔDÈ1ÐMÐM€Ø"˜œ 1 a™œ×/Ò/°¸uÐ/ÑEÔEÈAÐNÐNÐ ðð ð ð „×ÒØà	˜[¨"Ð-ØˆŒØØØñ	
ô 	
ð
 	ˆŒØØØñ	
ô 	
ð
 	ˆŒØØØØ”+×$Ò$Ø˜m˜m¨GÑ4Ô4Ò4ØTð %ñ ô ð		
ñ 	
ô 	
ð 	ˆŒØØØØ”+×$Ò$Ø˜m˜m¨GÑ4Ô4Ò4ØTð %ñ ô ð		
ñ 	
ô 	
ð 
˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?ð? ñ#ô #ðH „×Ò˜ 2¤:¨r¬z¸3Ð"?Ñ@Ô@ðð ñ AÔ@ñI#ô #ðJðIð Ið Ið „×ÒØØTÐTÐTñô ðð ñ	ô ðð>ð ð ð&
7ð 
7ð 
7ð „×Ò˜Ð)?Ð)9Ô)?Ñ)AÔ)AÑBÔBð&ð &ñ CÔBð&ð*ð ð ð(vAð vAð vAðrð ð ð7ð 7ð 7ð"
4ð 
4ð 
4ð „×ÒØà Ð Ø$Ð$Ø&Ð&Ø+Ð+Ø>Ð>ðñ	ô 	ðð ñ	ô 	ðð „×ÒØ)ð 5Ð4ØØ(ð	
ð :Ð9ØØ0ð	
ð
 
!Ð	  *Ð.QÐRàˆNØØAð	
ð  ÐØØHð	
ð ,Ð+ØØ<ð	
ð-ñô ð>ð ñ?ô ð>ð7ð 7ð 7ð 7ð  „×Ò˜Ð#EÑFÔFð?ð ?ñ GÔFð?ð „×Ò˜Ð#EÑFÔFð7ð 7ñ GÔFð7ð ð$ð $ñ „ð$ðN „×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð „×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð%ð %ñô ñô ð%ð „×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð%ð %ñô ð%ð@Eð Eð EðD „×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð „×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð+ð +ñô ñô ð+ð* „×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð+ð +ñô ð+ð$ „×Ò˜Ð'8Ð'8Ð'8Ñ9Ô9Ø„×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð „×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð4ð 4ñô ñô ñ :Ô9ð4ð( „×Ò˜Ð'8Ð'8Ð'8Ñ9Ô9Ø„×ÒØ�r”x Ð,°7¸HÐ2Eð ñ ô ð4ð 4ñô ñ :Ô9ð4ð" „×ÒØà	Œ�T˜4Ð ØˆŒØŒJØØØ”+×#Ò#Ð+MÐ#ÑNÔNð		
ñ 	
ô 	
ðñô ð „×Ò˜  G Ñ-Ô-ð	4ð 	4ñ .Ô-ñô ð	4ð „×Ò˜ T¨5 MÑ2Ô2ð3ð 3ñ 3Ô2ð3ð „×Ò˜˜x˜rœx¨"¬&°!¨¨Ñ6Ô6¸¸¼À1ÀrÄvÀgÀ,ÀÑ8PÔ8PÐQÑRÔRØ„×Ò˜˜x˜rœx¨"¬&°!¨¨Ñ6Ô6¸¸¼À1ÀrÄvÀgÀ,ÀÑ8PÔ8PÐRVÐWÑXÔXð)ð )ñ YÔXñ SÔRð)ð „×ÒØà	ˆŒ�A�q�6˜A˜q˜6Ð"Ñ	#Ô	# W R¤W¨Q¡Z¤Z°´Ð8Ø	ˆŒ�A�q�6˜A˜rœv˜;Ð'Ñ	(Ô	(¨'¨"¬'°!©*¬*°b´fÐ=Ø	ˆŒ�B”F˜A�;  B¤F Ð,Ñ	-Ô	-¨r¬v°r´vÐ>Ø	ˆŒ�B”F˜A�; ¤¨ Ð,Ñ	-Ô	-¨w¨r¬w°q©z¬z¸2¼6ÐBØ	ˆŒ�A�r”v�;  B¤F Ð,Ñ	-Ô	-¨w¨r¬w°q©z¬z¸2¼6ÐBØ	ˆŒ�A�q�6˜A˜q˜6Ð"Ñ	#Ô	# W R¤W¨Q¡Z¤Z°Ð4Ø	ˆŒ�A�q�6˜A˜r˜7Ð#Ñ	$Ô	$ g b¤g¨a¡j¤j°"Ð5Ø	ˆŒ�B˜�7˜Q ˜GÐ$Ñ	%Ô	% r¤v¨rÐ2Ø	ˆŒ�B˜�7˜R ˜GÐ$Ñ	%Ô	% w r¤w¨q¡z¤z°2Ð6Ø	ˆŒ�A�r�7˜Q ˜GÐ$Ñ	%Ô	% w r¤w¨q¡z¤z°2Ð6ðñô ð-ð -ñô ð-ð  „×Ò˜¨2¬6°2¨,Ñ7Ô7ð	$ð 	$ñ 8Ô7ð	$ð „×Ò˜¨2¬6°2¨,Ñ7Ô7ð1ð 1ñ 8Ô7ð1ðh „×Ò˜¨2¬6°2¨,Ñ7Ô7ðð ñ 8Ô7ðð(ð ð ð<ð ð ð6#ð #ð #ð#ð #ð #ð#ð #ð #ð31ð 31ð 31ðl „×ÒØàØØØØØðñ
ô 
ð ð  ñ
ô 
ð ð „×ÒØàØØØØØðñ
ô 
ðð ñ
ô 
ððCð Cð Cð-ð -ð -ð	/ð 	/ð 	/ð „×ÒØ˜x¨Ð7¸(ÐDUÐ9VÐWñô ð&ð &ñô ð&ð* ð  ð  ð('ð 'ð 'ð'ð 'ð 'ð 	$ð 	$ð 	$ð&ð &ð &ð5ð 5ð 5ð,#ð #ð #ð	.ð 	.ð 	.ð%ð %ð %ð0 „×Ò˜ A q 6Ñ*Ô*Ø„×Ò˜ L°-Ð#@ÑAÔAØ„×ÒØÐ(Ð*DÐEñô ð
-ð 
-ñô ñ BÔAñ +Ô*ð

-ð „×Ò˜ L°-Ð#@ÑAÔAð0ð 0ñ BÔAð0ð „×ÒØðð ð ñô ð" „×Ò˜ D¨% =°xÀÐ6NÐÑOÔOð)ð )ñ PÔOñ#ô ð$)ð>ð ð ð ð s   °7 ·AÁA