§
    rŠtjûþ  ã                   ó.  — d dl Z d dlmZ d dlZ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 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+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d d	l2m3Z3 d d
l4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZD d dlEmFZFmGZG d„ ZHejI         J                    d e8¦   «         ¦  «        ejI         J                    dg d¢¦  «        d„ ¦   «         ¦   «         ZKd„ ZLejI         J                    deA¦  «        ejI         J                    deB¦  «        ejI         J                    de@¦  «        ejI         J                    deC¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         ZM e>eN¬¦  «        ejI         J                    de¦  «        d„ ¦   «         ¦   «         ZOd„ ZPejI         J                    de*e.g¦  «        d„ ¦   «         ZQd„ ZR ejS        dd ¦  «         T                    d!d"¬#¦  «        dd$œZUd%„ ZVejI         J                    d&e*d'i fe*eeUfe*d(eUfe.d)d*dife.eVd+d,ifg¦  «        ejI         J                    d-ejW        ejX        eYg¦  «        d.„ ¦   «         ¦   «         ZZejI         J                    d e8¦   «         ¦  «        ejI         J                    d&e*d'i fe*d/i fe.d)d*dife.eVd+d,ife.d0d+d,ifg¦  «        d1„ ¦   «         ¦   «         Z[d2„ Z\ejI         J                    dg d3¢¦  «        ejI         J                    deC¦  «        d4„ ¦   «         ¦   «         Z]ejI         J                    d e8¦   «         ¦  «        ejI         J                    dg d5¢¦  «        d6„ ¦   «         ¦   «         Z^d7„ Z_d8„ Z`ejI         J                    d9 eja        ¦   «         ¦  «        ejI         J                    deC¦  «        d:„ ¦   «         ¦   «         Zbd;„ ZcejI        jd        ejI         J                    d<eD¦  «        ejI         J                    deC¦  «        d=„ ¦   «         ¦   «         ¦   «         Zed>„ Zfd?„ Zgd@„ ZhejI         J                    dAdB„ dC„ dD„ gdE„ eCD ¦   «         z   dF„ eDD ¦   «         z   ¦  «        dG„ ¦   «         ZiejI         J                    dHdI„ ejdJfdK„ ejdLfdM„ ejdNfdO„ ekdPfdQ„ ekdRfdS„ ekdTfg¦  «        dU„ ¦   «         ZldÂdV„ZmejI         J                    ddW¦  «        dX„ ¦   «         ZnejI         J                    ddW¦  «        dY„ ¦   «         ZodZ„ ZpejI         q                    d[¦  «        d\„ ¦   «         ZrejI         J                    d]ejs        geCz   d^gd_„ eCD ¦   «         z   ¬`¦  «        ejI         J                    daejs        geCz   d^gdb„ eCD ¦   «         z   ¬`¦  «        dc„ ¦   «         ¦   «         ZtejI         J                    daejs        geCz   d^gdd„ eCD ¦   «         z   ¬`¦  «        de„ ¦   «         ZuejI         J                    dfdgd"g¦  «        dh„ ¦   «         Zvdi„ ZwejI         J                    d]ejs        geCz   d^gdj„ eCD ¦   «         z   ¬`¦  «        ejI         J                    daejs        geCz   d^gdk„ eCD ¦   «         z   ¬`¦  «        dl„ ¦   «         ¦   «         ZxejI         J                    d]ejs        geCz   d^gdm„ eCD ¦   «         z   ¬`¦  «        dn„ ¦   «         ZyejI         J                    dog dp¢¦  «        ejI         J                    d]ejs        geCz   d^gdq„ eCD ¦   «         z   ¬`¦  «        ejI         J                    daejs        geCz   d^gdr„ eCD ¦   «         z   ¬`¦  «        ds„ ¦   «         ¦   «         ¦   «         ZzejI         J                    dog dp¢¦  «        ejI         J                    d]ejs        geCz   d^gdt„ eCD ¦   «         z   ¬`¦  «        du„ ¦   «         ¦   «         Z{ejI         J                    dvejX        dwdxf ej|        ejW        dydzejI         }                    d{¬|¦  «        ¬}¦  «        g¦  «        ejI         J                    d~ddg¦  «        d€„ ¦   «         ¦   «         Z~ejI         J                    d�dgd"g¦  «        d‚„ ¦   «         ZejI         J                    dƒ ejs        ej€        d gg¦  «         ejs        d ej€         gg¦  «        g¦  «        ejI         J                    d„ ejs        ej€        d gg¦  «         ejs        d ej€         gg¦  «        dg¦  «        d…„ ¦   «         ¦   «         Z�ejI         J                    d† ejs        d dgdd gg¦  «         ej‚        d‡¦  «        ejƒ        f ejs        d dgdejƒ        gg¦  «         ej‚        d‡¦  «        ejƒ        f ejs        ejƒ        dgdejƒ        gg¦  «        ejƒ        ejƒ        f ejs        ejƒ        dgejƒ        d gg¦  «         ej‚        d‡¦  «        ejƒ        f ejs        d ejƒ        gdejƒ        gg¦  «         ej‚        d‡¦  «        ejƒ        f ejs        d dgdd gg¦  «         ej‚        d‡¦  «        dˆf ejs        d dgddˆgg¦  «         ej‚        d‡¦  «        dˆf ejs        dˆdgddˆgg¦  «        ejƒ        dˆf ejs        dˆdgdˆd gg¦  «         ej‚        d‡¦  «        dˆf ejs        d dˆgddˆgg¦  «         ej‚        d‡¦  «        dˆfg
¦  «        d‰„ ¦   «         Z„ejI         J                    dŠejƒ        dˆg¦  «        d‹„ ¦   «         Z…ejI         J                    dŠejƒ        dˆg¦  «        dŒ„ ¦   «         Z†ejI         J                    dŠejƒ        dˆg¦  «        d�„ ¦   «         Z‡dŽ„ Zˆd�„ Z‰d�„ ZŠd‘„ Z‹d’„ ZŒd“„ Z�ejI         J                    d”e#e/e0e"e1ef¦  «        d•„ ¦   «         ZŽejI         J                    d”e#e/e0e"e1ef¦  «        ejI         J                    deC¦  «        d–„ ¦   «         ¦   «         Z�d—„ Z�d˜„ Z‘d™„ Z’ejI         J                    dšd›e#fdœefg¦  «        ejI         J                    deC¦  «        d�„ ¦   «         ¦   «         Z“ejI         J                    deC¦  «        dž„ ¦   «         Z”dŸ„ Z•d „ Z–d¡„ Z—d¢„ Z˜ejI         J                    deC¦  «        d£„ ¦   «         Z™d¤„ Zšd¥„ Z›d¦„ ZœejI         J                    d§dd‡g¦  «        ejI         J                    dd¨d©g¦  «        ejI         J                    dªe*e-g¦  «        d«„ ¦   «         ¦   «         ¦   «         Z�ejI         J                    dd¨d©g¦  «        d¬„ ¦   «         ZžejI         J                    dg d­¢¦  «        ejI         J                    d®dgd"gd¯d°g¬`¦  «        d±„ ¦   «         ¦   «         ZŸejI         J                    d²e*e+e,g¦  «        d³„ ¦   «         Z d´„ Z¡ejI         J                    dµg d¶¢dg d·¢g d¸¢g d¹¢gfg d¶¢dºd»gd¼d½gd½d¼gd¾d½ggfg¦  «        d¿„ ¦   «         Z¢dÀ„ Z£ejI        jd        ejI         J                    deC¦  «        dÁ„ ¦   «         ¦   «         Z¤dS )Ãé    N)ÚGeneratorType)Úlinalg)Úissparse)ÚcdistÚ	cityblockÚcosineÚ	minkowskiÚpdistÚ
squareform)Ú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)Úget_namespaceÚmove_toÚxpxÚ)yield_namespace_device_dtype_combinations)Ú_array_api_for_testsÚassert_allcloseÚassert_almost_equalÚassert_array_equalÚignore_warnings)ÚBSR_CONTAINERSÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDOK_CONTAINERS)Ú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          ||¦  «         d S )Nr   ©é   é   F©ÚcopyÚ	euclidean©Úmetric©é   r?   ©r   r   Únan_euclideanc                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS © rK   ©Ú.0Úvs     úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/metrics/tests/test_pairwise.pyú
<listcomp>zEtest_pairwise_distances_for_dense_data.<locals>.<listcomp>.<listcomp>g   ó   € Ð,Ð,Ð, 1˜QÐ,Ð,Ð,ó    ©Útuple©rM   Úrows     rO   rP   z:test_pairwise_distances_for_dense_data.<locals>.<listcomp>g   ó/   € Ð;Ð;Ð;°#•eÐ,Ð,¨Ð,Ñ,Ô,Ñ-Ô-Ð;Ð;Ð;rR   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rK   rK   rL   s     rO   rP   zEtest_pairwise_distances_for_dense_data.<locals>.<listcomp>.<listcomp>h   rQ   rR   rS   rU   s     rO   rP   z:test_pairwise_distances_for_dense_data.<locals>.<listcomp>h   rW   rR   ©r>   rF   ç      à?rF   é   Ú	haversine)rF   rF   r   Ú	manhattanr   )ÚnpÚrandomÚRandomStateÚrandom_sampleÚastyper#   r   r1   ÚdtypeÚnanr   rT   Úpir   r   Úshaper   )Úglobal_dtypeÚrngÚXÚSÚS2ÚYÚX_maskedÚY_maskedÚS_maskedÚ	S2_maskedÚX_tuplesÚY_tupless               rO   Ú&test_pairwise_distances_for_dense_datart   J   s0  € å
Œ)×
Ò
 Ñ
"Ô
"€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ÑÔÐÐÐrR   z(array_namespace, device_name, dtype_namerD   )r   rB   r^   c                 ó  — t          | ||¦  «        \  }}t          j                             d¦  «        }|                     d¦  «                             |d¬¦  «        }|                     d¦  «                             |d¬¦  «        }|                     ||¬¦  «        }	|                     ||¬¦  «        }
t          d¬¦  «        5  t          |	|¬¦  «        }t          |t          d	¬
¦  «        }t          |¦  «        d         j        |j        k    sJ ‚|j        |	j        k    sJ ‚|j        |	j        k    sJ ‚t          ||¬¦  «        }t          ||¦  «         t          |	|
|¬¦  «        }t          |t          d	¬
¦  «        }t          |¦  «        d         j        |j        k    sJ ‚|j        |	j        k    sJ ‚|j        |	j        k    sJ ‚t          |||¬¦  «        }t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r=   Fr@   ©ÚdeviceT©Úarray_api_dispatchrC   Úcpu©Úxprw   ©rm   rD   )r0   r_   r`   ra   rb   rc   Úasarrayr   r#   r-   r,   Ú__name__rw   rd   r1   )Úarray_namespaceÚdevice_nameÚ
dtype_namerD   r|   rw   ri   ÚX_npÚY_npÚX_xpÚY_xpÚD_xpÚD_xp_npÚD_nps                 rO   Ú!test_pairwise_distances_array_apirŠ   ™   sI  € õ & o°{ÀJÑOÔO�J€Bˆå
Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜VÑ$Ô$×+Ò+¨J¸UÐ+ÑCÔC€DØ×Ò˜VÑ$Ô$×+Ò+¨J¸UÐ+ÑCÔC€DØ�:Š:�d 6ˆ:Ñ*Ô*€DØ�:Š:�d 6ˆ:Ñ*Ô*€Då	¨4Ð	0Ñ	0Ô	0ð 'ð 'å! $¨vÐ6Ñ6Ô6ˆÝ˜$¥2¨eÐ4Ñ4Ô4ˆÝ˜TÑ"Ô" 1Ô%Ô.°"´+Ò=Ð=Ð=Ð=ØŒ{˜dœkÒ)Ð)Ð)Ð)ØŒz˜TœZÒ'Ð'Ð'Ð'å! $¨vÐ6Ñ6Ô6ˆÝ˜ Ñ&Ô&Ð&õ " $¨$°vÐ>Ñ>Ô>ˆÝ˜$¥2¨eÐ4Ñ4Ô4ˆÝ˜TÑ"Ô" 1Ô%Ô.°"´+Ò=Ð=Ð=Ð=ØŒ{˜dœkÒ)Ð)Ð)Ð)ØŒz˜TœZÒ'Ð'Ð'Ð'å! $¨$°vÐ>Ñ>Ô>ˆÝ˜ Ñ&Ô&Ð&ð''ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   ÃD'G:Ç:G>ÈG>c                  ó  — t          d¦  «        \  } }t          j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }|                      ||¬¦  «        }|                      ||¬¦  «        }t          d¬¦  «        5  t          j        ¦   «         5  t          j	        d¦  «         t          ||d	¬
¦  «         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 )NÚarray_api_strictr   r=   ©é   r?   rv   Trx   ÚerrorrB   rC   )r0   r_   r`   ra   rb   r~   r   ÚwarningsÚcatch_warningsÚsimplefilterr#   )r|   rw   ri   rƒ   r„   r…   r†   s          rO   Ú-test_pairwise_distances_array_api_no_warningsr“   ¿   sz  € õ &Ð&8Ñ9Ô9�J€Bˆå
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜VÑ$Ô$€DØ×Ò˜VÑ$Ô$€DØ�:Š:�d 6ˆ:Ñ*Ô*€DØ�:Š:�d 6ˆ:Ñ*Ô*€Då	¨4Ð	0Ñ	0Ô	0ð ?ð ?ÝÔ$Ñ&Ô&ð 	?ð 	?ÝÔ! 'Ñ*Ô*Ð*Ý˜t T°+Ð>Ñ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s6   ÂC9Â.'C!ÃC9Ã!C%	Ã%C9Ã(C%	Ã)C9Ã9C=Ä C=Úcoo_containerÚcsc_containerÚbsr_containerÚcsr_containerc                 óö  — t           j                             d¦  «        }|                     d¦  «                             |d¬¦  «        }|                     d¦  «                             |d¬¦  «        } ||¦  «        } ||¦  «        }	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 ‚nMt          j        t          ¦  «        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 ‚nMt          j        t          ¦  «        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t          i|¤Ž}t          |
|¦  «         d
di}t          |fddi|¤Ž}
t          |fdt          i|¤Ž}t          |
|¦  «         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 S # 1 swxY w Y   d S )Nr   r=   Fr@   rE   rB   rC   r   r^   Úpç       @rD   r	   )r_   r`   ra   rb   rc   r#   r   r1   rd   r   r   Úfloat64ÚpytestÚraisesÚAssertionErrorr	   Ú	TypeError)r”   r•   r–   r—   rh   ri   rj   rm   ÚX_sparseÚY_sparserk   rl   Úkwdss                rO   Ú'test_pairwise_distances_for_sparse_datar£   Ñ   sì  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AØ×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€Að ˆ}˜QÑÔ€HØˆ}˜QÑÔ€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 ] ]°1Ñ%5Ô%5¸kÐJÑJÔJ€AÝ	˜]˜]¨1Ñ-Ô-¨}¨}¸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õ 
˜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¨{Ð;Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <sH   Æ6GÇG#Ç&G#ÉI8É8I<É?I<ÌL*Ì*L.Ì1L.ÍM.Í.M2Í5M2©Úcategoryc                 óÔ  — t           j                             d¦  «        }|                     dd¦  «        }|                     ¦   «         }d|d         z
  |d<   t          t          ¬¦  «        5  |d fD ]H}t          ||| ¬¦  «        }t          j	        |d¬¦  «         t          j
        |dk    ¦  «        dk    sJ ‚ŒI	 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   r>   r?   r\   rG   r¤   rC   )Ú
fill_valuez+Data was converted to boolean for metric %s©Úmatchr}   r�   )r_   r`   ra   ÚrandnrA   r4   r   r#   r.   Ú
nan_to_numÚsumrœ   Úwarnsrc   Úboolr�   r‘   r’   )rD   ri   rj   rm   ÚZÚresÚmsgs          rO   Ú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ÝŒN˜3¨1Ð-Ñ-Ô-Ð-Ý”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Ã3DÄDÄDÄ7+E.Å.E2Å5E2Æ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   r>   r?   r�   r	   rC   )	r_   r`   ra   rª   r�   r‘   r’   r   r#   )ri   rj   s     rO   Útest_no_data_conversion_warningr´   8  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¨   )r>   rŽ   ÚprecomputedrC   )r?   r?   )r?   rŽ   ©r>   r>   )rŽ   rŽ   r\   Úint©rd   Úfç      ð?)
rœ   r�   Ú
ValueErrorr_   ÚzerosÚarrayrd   ÚkindÚ
isinstanceÚndarray)rµ   rk   rl   s      rO   Útest_pairwise_precomputedrÃ   A  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·   rC   )rœ   r�   r½   r#   r_   ÚfullrK   rR   rO   Ú&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r\   r>   ÚdoubleFr@   )Úwr™   c                 ó8  — t          | |¦  «        \  }}t          t          j        | d|¬¦  «        t          j        |d|¬¦  «        fi |¤Ž}|j        dk    r6|                     |d¦  «        }|j        dk    rt          |d         ¦  «        S t          d¦  «        ‚)NrF   )Úndimr|   r   )rÅ   )r\   z6can only convert an array of size 1 to a Python scalar)	r,   r)   r.   Ú
atleast_ndrË   Úreshaperg   Úfloatr½   )ÚxÚyr¢   r|   Ú_ÚKÚK_flats          rO   Úcallable_rbf_kernelrÔ   h  s¦   € Ý˜!˜QÑÔ�E€BˆåÝŒ�q˜q RÐ(Ñ(Ô(­#¬.¸ÀÀrÐ*JÑ*JÔ*Jð	ð 	ØNRð	ð 	€Að
 	„v�‚z€zØ—’˜A˜uÑ%Ô%ˆØŒ<˜4ÒÐÝ˜ œÑ#Ô#Ð#Ý
ÐMÑ
NÔ
NÐNrR   zfunc, metric, kwdsrB   r	   Ú
polynomialÚdegreeÚgammaçš™™™™™¹?rd   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   r>   r=   rº   r�   r\   ©rD   Ún_jobsrF   )r_   r`   ra   r¿   rb   r1   )	rµ   rD   r¢   rd   ri   rj   rm   rk   rl   s	            rO   Útest_pairwise_parallelrÜ   w  s	  € õ( Œ)×
Ò
 Ñ
"Ô
"€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ÑÔÐÐÐrR   r^   Ú	laplacianc                 óþ  — t          |||¦  «        \  }}t          j                             d¦  «        }t          j        d|                     d¦  «        z  |¬¦  «        }	t          j        d|                     d¦  «        z  |¬¦  «        }
|                     |	|¬¦  «        }|                     |
|¬¦  «        }t          d¬¦  «        5  d	D �]}|€d n|}|€d n|
}
 | ||f|d
dœ|¤Ž}t          |t          d¬¦  «        }t          |¦  «        d         j
        |j
        k    sJ ‚|j        |j        k    sJ ‚|j        |j        k    sJ ‚ | ||f|ddœ|¤Ž}t          |t          d¬¦  «        }t          |¦  «        d         j
        |j
        k    sJ ‚|j        |j        k    sJ ‚|j        |j        k    sJ ‚ | |	f|ddœ|¤Ž}t          ||¦  «         t          ||¦  «         �Œ	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r>   r=   rº   r�   rv   Trx   )Nznot noner\   rÚ   rz   r{   rF   )r0   r_   r`   ra   r¿   rb   r~   r   r-   r,   r   rw   rd   r1   )rµ   rD   r¢   r€   r�   r‚   r|   rw   ri   rƒ   r„   r…   r†   Úy_valÚ	n_job1_xpÚn_job1_xp_npÚ	n_job2_xpÚn_job2_xp_npÚ	n_job2_nps                      rO   Ú test_pairwise_parallel_array_apirå   ˜  sŽ  € õ" & o°{ÀJÑOÔO�J€BˆÝ
Œ)×
Ò
 Ñ
"Ô
"€CÝŒ8�A˜×)Ò)¨&Ñ1Ô1Ñ1¸ÐDÑDÔD€DÝŒ8�A˜×)Ò)¨&Ñ1Ô1Ñ1¸ÐDÑDÔD€DØ�:Š:�d 6ˆ:Ñ*Ô*€DØ�:Š:�d 6ˆ:Ñ*Ô*€Då	¨4Ð	0Ñ	0Ô	0ð 5ð 5Ø'ð 	5ñ 	5ˆEØ ˜=�4�4¨dˆDØ ˜=�4�4¨dˆDà˜˜T 4ÐI°¸qÐIÐIÀDÐIÐIˆIÝ" 9µ¸EÐBÑBÔBˆLÝ  Ñ+Ô+¨AÔ.Ô7¸2¼;ÒFÐFÐFÐFØÔ# t¤{Ò2Ð2Ð2Ð2Ø”? d¤jÒ0Ð0Ð0Ð0à˜˜T 4ÐI°¸qÐIÐIÀDÐIÐIˆIÝ" 9µ¸EÐBÑBÔBˆLÝ  Ñ+Ô+¨AÔ.Ô7¸2¼;ÒFÐFÐFÐFØÔ# t¤{Ò2Ð2Ð2Ð2Ø”? d¤jÒ0Ð0Ð0Ð0à˜˜TÐC¨&¸ÐCÐC¸dÐCÐCˆIå˜L¨,Ñ7Ô7Ð7Ý˜L¨)Ñ4Ô4Ð4Ñ4ð'	5ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   Ã
DG2Ç2G6Ç9G6c                  óF   — t          dggd„ ¬¦  «        d         dk    sJ ‚d S )Nr¼   c                 ó   — dS )Nr>   rK   ©rÏ   rÐ   s     rO   ú<lambda>z9test_pairwise_callable_nonstrict_metric.<locals>.<lambda>Ë  s   € ¸1€ rR   rC   rG   r>   )r#   rK   rR   rO   Ú'test_pairwise_callable_nonstrict_metricrê   Ç  s3   € õ  ˜u˜g¨n¨nÐ=Ñ=Ô=¸dÔCÀqÒHÐHÐHÐHÐHÐHrR   )ÚrbfrÝ   ÚsigmoidrÕ   ÚlinearÚchi2Úadditive_chi2c                 óŒ  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          |          }t          || ¬¦  «        } ||¦  «        }t          ||¦  «         t          ||| ¬¦  «        } |||¬¦  «        }t          ||¦  «         t          d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }	t          ||	| ¬¦  «        }t          ||¦  «          ||¦  «        }
 ||¦  «        }| d	v rd S t          |
|| ¬¦  «        }t          ||¦  «         d S )
Nr   r=   rE   rC   r}   ©rm   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rK   rK   rL   s     rO   rP   z4test_pairwise_kernels.<locals>.<listcomp>.<listcomp>ä  rQ   rR   rS   rU   s     rO   rP   z)test_pairwise_kernels.<locals>.<listcomp>ä  rW   rR   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rK   rK   rL   s     rO   rP   z4test_pairwise_kernels.<locals>.<listcomp>.<listcomp>å  rQ   rR   rS   rU   s     rO   rP   z)test_pairwise_kernels.<locals>.<listcomp>å  rW   rR   )rî   rï   )r_   r`   ra   rb   r   r'   r1   rT   )rD   r—   ri   rj   rm   ÚfunctionÚK1ÚK2rr   rs   r    r¡   s               rO   Útest_pairwise_kernelsrù   Ï  sg  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ(¨Ô0€Hå	˜! FÐ	+Ñ	+Ô	+€BØ	ˆ�!‰Œ€BÝ�B˜ÑÔÐå	˜!˜q¨Ð	0Ñ	0Ô	0€BØ	ˆ�!�qÐ	Ñ	Ô	€BÝ�B˜ÑÔÐåÐ;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝÐ;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝ	˜( H°VÐ	<Ñ	<Ô	<€BÝ�B˜ÑÔÐð ˆ}˜QÑÔ€HØˆ}˜QÑÔ€HØÐ*Ð*Ð*àˆÝ	˜( h°vÐ	>Ñ	>Ô	>€BÝ�B˜ÑÔÐÐÐrR   )rë   rì   rÕ   rí   rÝ   rî   rï   c                 ó"  — t          |||¦  «        \  }}t          j                             d¦  «        }d|                     d¦  «        z  }|                     |d¬¦  «        }d|                     d¦  «        z  }|                     |d¬¦  «        }|                     ||¬¦  «        }	|                     ||¬¦  «        }
t          d¬	¦  «        5  t          |	| ¬
¦  «        }t          |t          d¬¦  «        }t          |¦  «        d         j        |j        k    sJ ‚|j        |	j        k    sJ ‚|j        |	j        k    sJ ‚t          || ¬
¦  «        }t          ||¦  «         t          |	|
| ¬¦  «        }t          |t          d¬¦  «        }t          |¦  «        d         j        |j        k    sJ ‚|j        |	j        k    sJ ‚|j        |	j        k    sJ ‚t          ||| ¬¦  «        }t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   é
   r=   Fr@   rE   rv   Trx   rC   rz   r{   r}   )r0   r_   r`   ra   rb   rc   r~   r   r'   r-   r,   r   rw   rd   r1   )rD   r€   r�   r‚   r|   rw   ri   rƒ   r„   r…   r†   ÚK_xpÚK_xp_npÚK_nps                 rO   Útest_pairwise_kernels_array_apirÿ   ó  sW  € õ & o°{ÀJÑOÔO�J€Bˆå
Œ)×
Ò
 Ñ
"Ô
"€CØ�×!Ò! &Ñ)Ô)Ñ)€DØ�;Š;�z¨ˆ;Ñ.Ô.€DØ�×!Ò! &Ñ)Ô)Ñ)€DØ�;Š;�z¨ˆ;Ñ.Ô.€DØ�:Š:�d 6ˆ:Ñ*Ô*€DØ�:Š:�d 6ˆ:Ñ*Ô*€Då	¨4Ð	0Ñ	0Ô	0ð 'ð 'å ¨VÐ4Ñ4Ô4ˆÝ˜$¥2¨eÐ4Ñ4Ô4ˆÝ˜TÑ"Ô" 1Ô%Ô.°"´+Ò=Ð=Ð=Ð=ØŒ{˜dœkÒ)Ð)Ð)Ð)ØŒz˜TœZÒ'Ð'Ð'Ð'å ¨VÐ4Ñ4Ô4ˆÝ˜ Ñ&Ô&Ð&õ   ¨°VÐ<Ñ<Ô<ˆÝ˜$¥2¨eÐ4Ñ4Ô4ˆÝ˜TÑ"Ô" 1Ô%Ô.°"´+Ò=Ð=Ð=Ð=ØŒ{˜dœkÒ)Ð)Ð)Ð)ØŒz˜TœZÒ'Ð'Ð'Ð'å ¨°VÐ<Ñ<Ô<ˆÝ˜ Ñ&Ô&Ð&ð''ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   ÃD'HÈHÈH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   r=   rE   r×   rØ   r}   rm   )r_   r`   ra   rb   rÔ   r'   r)   r1   )ri   rj   rm   rD   r¢   r÷   rø   s          rO   Ú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˜ÑÔÐÐÐrR   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   r=   rE   rØ   ©r×   z:))r×   Úblablarë   T)rD   Úfilter_paramsrD   )
r_   r`   ra   rb   r)   r'   r1   rœ   r�   rŸ   )ri   rj   rm   rÒ   Úparamsrø   s         rO   Ú"test_pairwise_kernels_filter_paramr  0  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          v r<t          |          ||¦  «        }	t          j        |	¦  «        }	t          |	|¦  «         d S d S )Nr   r=   rC   )r_   r`   ra   rb   r    r1   r   Údiag)
rD   rµ   r—   ri   rj   rm   rk   rl   ÚS3Ú	distancess
             rO   Útest_paired_distancesr  =  sö   € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜&Ñ!Ô!€Aà×Ò˜&Ñ!Ô!€Aå˜˜A fÐ-Ñ-Ô-€AØ	ˆˆa�‰Œ€BÝ�A�rÑÔÐØ	ˆˆmˆm˜AÑÔ  ¨aÑ 0Ô 0Ñ	1Ô	1€BÝ�A�rÑÔÐØÕ,Ð,Ð,õ 0°Ô7¸¸1Ñ=Ô=ˆ	Ý”G˜IÑ&Ô&ˆ	Ý˜	 1Ñ%Ô%Ð%Ð%Ð%ð -Ð,rR   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   r=   Fr@   r^   rC   c                 óX   — t          j        | |z
  ¦  «                             d¬¦  «        S )Nr   ©Úaxis)r_   Úabsr¬   rè   s     rO   ré   z0test_paired_distances_callable.<locals>.<lambda>^  s#   € µB´F¸1¸q¹5±M´M×4EÒ4EÈ1Ð4EÑ4MÔ4M€ rR   r�   )
r_   r`   ra   rb   rc   r    r1   rœ   r�   r½   )rh   ri   rj   rm   rk   rl   s         rO   Útest_paired_distances_callabler  T  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Údok_containerc                 ó~
  — t          j        dgdgg|¬¦  «        }t          j        dgdgg|¬¦  «        } | |¦  «        } |||¬¦  «        }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   r\   rº   éþÿÿÿrŽ   rF   r?   rB   rC   ÚsqeuclideanÚsquaredT)rD   Úmetric_kwargsr^   r™   r	   éa   é•   éo   r  )r  rD   çH¯¼šò×z>©Úrtol)r_   r~   r%   r$   r1   ÚtyperÂ   r	   r`   ra   rª   r#   ÚargminÚrangeÚlenr3   Úasfortranarray)r  r—   rh   rj   rm   ÚXspÚYspÚexpected_idxÚexpected_valsÚexpected_vals_sqÚidxÚvalsÚidx2ÚidxspÚvalsspÚidxsp2Úvals2Úidx3Úidx4ri   Ú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                                  rO   Ú"test_pairwise_distances_argmin_minr=  j  sÓ  € õ
 	Œ
�Q�C˜!˜�: \Ð2Ñ2Ô2€AÝ
Œ
�R�D˜1˜#�; lÐ3Ñ3Ô3€Aà
ˆ-˜Ñ
Ô
€CØ
ˆ-˜ Ð
.Ñ
.Ô
.€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ñô Ðõ Ð*Ð,?Ñ@Ô@Ð@Ð@Ð@rR   c                 ó   — | d d …d d…f         S )Néd   rK   ©r2  Ústarts     rO   Ú_reduce_funcrB  æ  s   € Ø����4�C�4�Œ=ÐrR   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_memoryr\   r  ©Úatol)r_   r`   ra   rb   rc   r#   r&   rB  rÁ   r   Úlistr"  rd   r1   Úvstack)rh   ri   rj   rk   ÚS_chunkss        rO   Ú&test_pairwise_distances_chunked_reducerM  ê  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Ð6rR   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û   r?   Fr@   c                 ó   — d S ©NrK   r@  s     rO   ré   z=test_pairwise_distances_chunked_reduce_none.<locals>.<lambda>   s   € °€ rR   rD  rE  r\   c              3   ó   K  — | ]}|d u V — Œ	d S rQ  rK   )rM   Úchunks     rO   ú	<genexpr>z>test_pairwise_distances_chunked_reduce_none.<locals>.<genexpr>  s&   è è € Ð3Ð3 ˆu˜ˆ}Ð3Ð3Ð3Ð3Ð3Ð3rR   )r_   r`   ra   rb   rc   r&   rÁ   r   rJ  r"  Úall)rh   ri   rj   rL  s       rO   Ú+test_pairwise_distances_chunked_reduce_nonerV  û  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Ð3rR   Úgood_reducec                 ó    — t          | ¦  «        S rQ  ©rJ  ©ÚDrA  s     rO   ré   ré     s   € �˜a™œ€ rR   c                 ó*   — t          j        | ¦  «        S rQ  )r_   r¿   rZ  s     rO   ré   ré     s   € �œ !™œ€ rR   c                 ó>   — t          | ¦  «        t          | ¦  «        fS rQ  rY  rZ  s     rO   ré   ré     s   € �$˜q™'œ'¥4¨¡7¤7Ð+€ rR   c                 ó   — g | ]}|fd „‘ŒS )c                 ó   —  || ¦  «        S rQ  rK   )r[  rA  Úscipy_csr_types      rO   ré   z<listcomp>.<lambda>  s   € ¸¸ÀqÑ8IÔ8I€ rR   rK   )rM   r`  s     rO   rP   rP     s1   € ð ð ð àð )7ÐIÐIÐIðð ð rR   c                 ó   — g | ]}|fd „‘ŒS )c                 ó\   —  || ¦  «        t          j        | ¦  «        t          | ¦  «        fS rQ  )r_   r¿   rJ  )r[  rA  Úscipy_dok_types      rO   ré   z<listcomp>.<lambda>  s*   € ØˆN˜1ÑÔÝŒH�Q‰KŒKÝ�‰GŒGð9
€ rR   rK   )rM   rc  s     rO   rP   rP     s9   € ð ð ð ð ð )7ð 	
ð 	
ð 	
ðð ð rR   c                 óš   — t          j        d¦  «                             dd¦  «        }t          |d | d¬¦  «        }t	          |¦  «         d S )Nrû   rÅ   r\   é@   rE  )r_   ÚarangerÍ   r&   Únext)rW  rj   rL  s      rO   Ú,test_pairwise_distances_chunked_reduce_validrh    sO   € õ* 	Œ	�"‰Œ×Ò˜b !Ñ$Ô$€AÝ)Ø	ˆ4˜[¸ðñ ô €Hõ 	ˆ�N„N€N€N€NrR   )Ú
bad_reduceÚerr_typeÚmessagec                 ó>   — t          j        | | dd …         g¦  «        S ©NrÅ   ©r_   Úconcatenate©r[  Úss     rO   ré   ré   (  s   € �œ¨¨A¨b¨c¨c¬F¨Ñ4Ô4€ rR   zlength 11\..* input: 10\.c                 óB   — | t          j        | | dd …         g¦  «        fS rm  rn  rp  s     rO   ré   ré   -  s!   € ˜!�Rœ^¨Q°°"°#°#´¨KÑ8Ô8Ð9€ rR   z!length \(10, 11\)\..* input: 10\.c                 ó   — | d d…         | fS )Né	   rK   rp  s     rO   ré   ré   1  s   € �q˜˜!˜”u˜a�j€ rR   z length \(9, 10\)\..* input: 10\.c                 ó   — dS )Né   rK   rp  s     rO   ré   ré   3  s   € ˜€ rR   z2returned 7\. Expected sequence\(s\) of length 10\.c                 ó   — dS )N)rv  é   rK   rp  s     rO   ré   ré   8  s   € ˜€ rR   z9returned \(7, 8\)\. Expected sequence\(s\) of length 10\.c                 ó.   — t          j        d¦  «        dfS )Nrû   rt  )r_   rf  rp  s     rO   ré   ré   =  s   € �"œ) B™-œ-¨Ð+€ rR   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Å   r\   Fr@   re  rE  r¨   )r_   rf  rÍ   rc   r&   rœ   r�   rg  )rh   ri  rj  rk  rj   rL  s         rO   Ú.test_pairwise_distances_chunked_reduce_invalidr{  $  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©rG  rD   rx  g      °>i   rC   r  rH  )r&   rÁ   r   rJ  r"  ÚnbytesÚmaxr_   rK  r#   r1   )
rj   rm   rG  rD   ÚgenÚblockwise_distancesÚmin_block_mibÚblockÚmemory_usedrk   s
             rO   Ú check_pairwise_distances_chunkedr…  N  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Ð6rR   )rB   Ú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@   r\   r}  ç»½×Ùß|Û=r  )r_   r`   ra   Únormalrc   rJ  r&   r"  r1   r	  rK  )rD   rh   ri   rj   Úchunkss        rO   Ú(test_pairwise_distances_chunked_diagonalr‘  ^  sž   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜
¨$ˆ
Ñ/Ô/×6Ò6°|È%Ð6ÑPÔP€AÝÕ,¨Q¸qÈÐPÑPÔPÑQÔQ€FÝˆv‰;Œ;˜Š?ˆ?ˆ?ˆ?Ý•B”G�BœI fÑ-Ô-Ñ.Ô.°¸Ð>Ñ>Ô>Ð>Ð>Ð>rR   c                 ó  — t           j                             d¦  «        }|                     dd¬¦  «                             |d¬¦  «        }t          || d¬¦  «        }t          t          j        |¦  «        dd	¬
¦  «         d S )Nr   rˆ  rŠ  r‹  Fr@   rF   rÚ   rŽ  rH  )r_   r`   ra   r�  rc   r#   r1   r	  )rD   rh   ri   rj   r  s        rO   Ú)test_parallel_pairwise_distances_diagonalr“  g  sx   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜
¨$ˆ
Ñ/Ô/×6Ò6°|È%Ð6ÑPÔP€AÝ" 1¨V¸AÐ>Ñ>Ô>€IÝ•B”G˜IÑ&Ô&¨°Ð6Ñ6Ô6Ð6Ð6Ð6rR   c                  ó>  — t           j                             d¦  «        } |                      dd¦  «        }|                      dd¦  «        }|dz                       d¬¦  «        }t          ||dd|¬	¦  «        }t          ||dd|¬	¦  «        }t          ||¦  «         d
S )zjCheck that Y_norm_squared is correctly sliced alongside Y.

    Non-regression test for issue #33877.
    é*   é   r?   é   rF   r\   r  rB   )rD   rÛ   ÚY_norm_squaredN)r_   r`   ra   Úrandr¬   r#   r1   )ri   rj   rm   r˜  ÚD_singleÚ
D_parallels         rO   Ú/test_parallel_pairwise_distances_y_norm_squaredrœ  o  sª   € õ
 Œ)×
Ò
 Ñ
#Ô
#€CØ�Š��Q‰Œ€AØ�Š��Q‰Œ€AØ˜‘d—Z’Z Q�ZÑ'Ô'€Nå!Ø	ˆ1�[¨¸>ðñ ô €Hõ $Ø	ˆ1�[¨¸>ðñ ô €Jõ �J Ñ)Ô)Ð)Ð)Ð)rR   z0ignore:Could not adhere to working_memory configc                 ó¦  — 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          |¦  «        }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@   r\   rB   r}  iðÿÿÿrF   )r?  r?   i'  r   rD  r·   )r_   r`   ra   rb   rc   r…  r!  Útolistr#   r&   rÁ   r   rg  rœ   r�   ÚStopIteration)rh   ri   rj   Úpowerrm   r[  r€  s          rO   Útest_pairwise_distances_chunkedr¢  ‚  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õ 	˜1ÑÔ€AÝ
$ Q°vÀmÐ
TÑ
TÔ
T€CÝ�c�=Ñ)Ô)Ð)Ð)Ð)Ý�‰9Œ9˜ˆ>ˆ>ˆ>ˆ>Ý	Œ•}Ñ	%Ô	%ð ð ÝˆS‰	Œ	ˆ	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Æ)GÇG
ÇG
Úx_array_constrÚdensec                 ó   — g | ]	}|j         ‘Œ
S rK   ©r   ©rM   Ú	containers     rO   rP   rP   ª  ó   € ÐHÐHÐH¨I�YÔ'ÐHÐHÐHrR   )ÚidsÚy_array_constrc                 ó   — g | ]	}|j         ‘Œ
S rK   r¦  r§  s     rO   rP   rP   ¯  r©  rR   c                 ó„   —  | dgg¦  «        } |dgdgg¦  «        }t          ||¦  «        }t          |ddgg¦  «         d S ©Nr   r\   rF   r¼   rš   )r   r1   )r£  r«  rj   rm   r[  s        rO   Ú%test_euclidean_distances_known_resultr¯  §  sY   € ð 	ˆ˜˜�uÑÔ€AØˆ˜˜˜a˜S�zÑ"Ô"€AÝ˜A˜qÑ!Ô!€AÝ�A˜˜c˜
�|Ñ$Ô$Ð$Ð$Ð$rR   c                 ó   — g | ]	}|j         ‘Œ
S rK   r¦  r§  s     rO   rP   rP   ¼  r©  rR   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û   rF   r\   r  rÅ   ©ÚX_norm_squared©r˜  ©r¶  r˜  )r_   r`   ra   rb   rc   r›   r¬   rÍ   r   r1   Ú
zeros_likerœ   r�   rž   )rh   r«  ri   rj   rm   Ú	X_norm_sqÚ	Y_norm_sqÚD1ÚD2ÚD3ÚD4Úwrong_Ds               rO   Ú#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<Ú	symmetricTc                 ó¶  — t           j                             | ¦  «        }|                     d¦  «        }|r|n|                     d¦  «        }|                     t           j        ¦  «        dz                       d¬¦  «                             dd¦  «        }|                     t           j        ¦  «        dz                       d¬¦  «                             dd¦  «        }t          ||¦  «        }t          |||¬¦  «        }t          |||¬¦  «        }	t          ||||¬	¦  «        }
t          ||¦  «         t          |	|¦  «         t          |
|¦  «         d S )
Nr²  r³  rF   r\   r  rÅ   rµ  r·  r¸  )
r_   r`   ra   rb   rc   Úfloat32r¬   rÍ   r   r1   )Úglobal_random_seedrÂ  ri   rj   rm   rº  r»  r¼  r½  r¾  r¿  s              rO   Ú&test_euclidean_distances_float32_normsrÆ  Þ  s>  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ×Ò˜(Ñ#Ô#€AØÐ7ˆˆ˜C×-Ò-¨hÑ7Ô7€AØ—’�"œ*Ñ%Ô%¨Ñ*×/Ò/°QÐ/Ñ7Ô7×?Ò?ÀÀ2ÑFÔF€IØ—’�"œ*Ñ%Ô%¨Ñ*×/Ò/°QÐ/Ñ7Ô7×?Ò?ÀÀ2ÑFÔF€IÝ	˜Q Ñ	"Ô	"€BÝ	˜Q °)Ð	<Ñ	<Ô	<€BÝ	˜Q °)Ð	<Ñ	<Ô	<€BÝ	˜Q °)ÈIÐ	VÑ	VÔ	V€BÝ�B˜ÑÔÐÝ�B˜ÑÔÐÝ�B˜ÑÔÐÐÐrR   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   r²  r³  rF   r\   r  r¸  rÅ   zIncompatible dimensions for Xr¨   r>   rµ  zIncompatible dimensions for Yr·  )r_   r`   ra   rb   r¬   r   rÍ   r1   rœ   r�   r½   )ri   rj   rm   r¶  r˜  r¼  r½  r¾  s           rO   Ú$test_euclidean_distances_norm_shapesrÈ  ï  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                 ó   — g | ]	}|j         ‘Œ
S rK   r¦  r§  s     rO   rP   rP     r©  rR   c                 ó   — g | ]	}|j         ‘Œ
S rK   r¦  r§  s     rO   rP   rP     r©  rR   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@   çš™™™™™é?r²  ç�íµ ÷Æ°>r  )	r_   r`   ra   rb   rc   r   r   r1   rd   )rh   r£  r«  ri   rj   rm   Úexpectedr  s           rO   Útest_euclidean_distancesrÐ    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Ò*Ð*Ð*Ð*Ð*Ð*rR   c                 ó   — g | ]	}|j         ‘Œ
S rK   r¦  r§  s     rO   rP   rP   3  r©  rR   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`   ra   rb   rc   r   r
   r   r1   rd   )rh   r£  ri   rj   rÏ  r  s         rO   Útest_euclidean_distances_symrÓ  0  s«   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AØ€A€aˆ#‚g�Jå�% ™(œ(Ñ#Ô#€Hàˆ�qÑÔ€AÝ# AÑ&Ô&€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3ØŒ?˜lÒ*Ð*Ð*Ð*Ð*Ð*rR   Ú
batch_size)Nr>   rv  ée   c                 ó   — g | ]	}|j         ‘Œ
S rK   r¦  r§  s     rO   rP   rP   K  r©  rR   c                 ó   — g | ]	}|j         ‘Œ
S rK   r¦  r§  s     rO   rP   rP   P  r©  rR   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Í  r²  ©rm   rÔ  rÎ  r  )r_   r`   ra   rb   rc   rÄ  r   r   ÚsqrtÚmaximumr1   )rÔ  r£  r«  ri   rj   rm   rÏ  r  s           rO   Útest_euclidean_distances_upcastrÜ  G  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Ð3rR   c                 ó   — g | ]	}|j         ‘Œ
S rK   r¦  r§  s     rO   rP   rP   j  r©  rR   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`   ra   rb   rc   rÄ  r   r
   r   rÚ  rÛ  r1   )rÔ  r£  ri   rj   rÏ  r  s         rO   Ú#test_euclidean_distances_upcast_symrß  f  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Ð3rR   zdtype, eps, rtolg-Cëâ6?çñhãˆµøä>g:Œ0âŽyE>g®Gáz®ï?z failing due to lack of precision)Úreason)ÚmarksÚ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   r1   )rd   Úepsr  rã  rj   rm   r  rÏ  s           rO   Ú'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Ð3rR   r  c                 ó  — t           j                             d¦  «        }|                     dd¦  «        }|                     dd¦  «        }t	          ||| ¬¦  «        }t          ||| ¬¦  «        }t          ||¦  «         d S )Né9  rŽ   r?   )rm   r  )r_   r`   ra   rª   r   r   r1   )r  ri   rj   rm   Únormal_distanceÚnan_distances         rO   Ú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Ð2rR   rj   rm   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').)rœ   r�   r½   r   ÚstrÚvalue)rj   rm   ÚexcinfoÚexp_msgs       rO   Ú,test_nan_euclidean_distances_infinite_valuesrñ  ¢  s¢   € õ 
Œ•zÑ	"Ô	"ð ( gÝ  QÐ'Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð S€GØ•c˜'œ-Ñ(Ô(Ò(Ð(Ð(Ð(Ð(Ð(s   š8¸<¿<zX, X_diag, missing_valuerF   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õ  rF   )r_   r¿   r   r1   rA   )rj   ÚX_diagÚmissing_valueÚexp_distr2  Údist_sqÚdist_twoÚdist_two_copys           rO   Ú 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Ñ,Ô,Ð,Ð,Ð,rR   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   r\   rô  )r_   r¿   re   r   r1   rA   )rø  rj   rù  r2  s       rO   Ú)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Ñ#Ô#Ð#Ð#Ð#rR   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ô  r\   Trö  g      D@rF   Fg      9@r@   )r_   r¿   r   r2   ÚTr1   rÚ  rA   )
rø  rj   rm   r¼  r½  r¾  r¿  ÚD5ÚD6ÚD7s
             rO   Ú(test_nan_euclidean_distances_not_trivialr  Ø  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˜ÑÔÐÐÐrR   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   rU  r1   )rø  rj   Údist_squaredr2  s       rO   Ú7test_nan_euclidean_distances_one_feature_match_positiver    s–   € õ
 	Œà�e˜]¨EÐ2Ø�m Z°Ð?ð	
ñ	ô 	€Aõ +Ø	˜-°ðñ ô €Lõ Œ6�, !Ò#Ñ$Ô$Ð$Ð$Ð$å" 1°]ÈEÐRÑRÔR€DÝ�D˜#ÑÔÐÐÐrR   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ó  rŽ  rH  rš   r‰  iˆ  r   )r_   r`   ra   r  r™  rK  r   r1   rU  Údiag_indices_fromrg   )ri   rÏ   ÚXAr[  ÚXBr½  rj   s          rO   Útest_cosine_distancesr  "  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’(ÑÔÐÐÐÐÐrR   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   r\   rF   )r_   ÚsinÚcosÚarcsinrÚ  )rÏ   rÐ   Údiff_latÚdiff_lonÚaÚcs         rO   Úslow_haversine_distancesz:test_haversine_distances.<locals>.slow_haversine_distancesB  sœ   € Ø�Q”4˜!˜Aœ$‘;ˆØ�Q”4˜!˜Aœ$‘;ˆÝŒF�8˜a‘<Ñ Ô  AÑ%ÝŒF�1�Q”4‰LŒL�2œ6 ! A¤$™<œ<Ñ'­"¬&°¸A±Ñ*>Ô*>À!Ñ*CÑCñ
ˆð •”	�"œ' !™*œ*Ñ%Ô%Ñ%ˆØˆrR   r   rZ   )rû   rF   c                 ó0   •‡— g | ]Šˆˆfd „‰D ¦   «         ‘ŒS )c                 ó(   •— g | ]} ‰‰|¦  «        ‘ŒS rK   rK   )rM   rÐ   r  rÏ   s     €€rO   rP   z7test_haversine_distances.<locals>.<listcomp>.<listcomp>N  s'   ø€ Ð>Ð>Ð>°qÐ,Ð,¨Q°Ñ2Ô2Ð>Ð>Ð>rR   rK   )rM   rÏ   rm   r  s    @€€rO   rP   z,test_haversine_distances.<locals>.<listcomp>N  s2   øø€ ÐJÐJÐJÀ1Ð>Ð>Ð>Ð>Ð>¸AÐ>Ñ>Ô>ÐJÐJÐJrR   )rû   rŽ   z-Haversine distance only valid in 2 dimensionsr¨   )
r_   r`   ra   rb   r¿   r   r1   rœ   r�   r½   )ri   rj   r¼  r½  Úerr_msgrm   r  s        @@rO   Útest_haversine_distancesr  @  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 r®  )r!   r1   ©rj   rm   r[  s      rO   Útest_paired_euclidean_distancesr  [  óE   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÝ" 1 aÑ(Ô(€AÝ�A˜˜S�zÑ"Ô"Ð"Ð"Ð"rR   c                  ób   — dgdgg} dgdgg}t          | |¦  «        }t          |ddg¦  «         d S r®  )r"   r1   r  s      rO   Útest_paired_manhattan_distancesr!  c  r  rR   c                  ób   — dgdgg} dgdgg}t          | |¦  «        }t          |ddg¦  «         d S )Nr   r\   rF   r[   )r   r1   r  s      rO   Útest_paired_cosine_distancesr#  k  sE   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÝ  1Ñ%Ô%€AÝ�A˜˜S�zÑ"Ô"Ð"Ð"Ð"rR   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   r=   rO  rØ   r  rF   r\   g333333Ó?gffffffæ?r¼   gÍÌÌÌÌÌì?rG   )r   r\   )r\   r\   )r\   r   rÅ   )çš™™™™™É?r%  g333333ã?)r_   r`   ra   rb   r   r   rd   rÎ   Ú	enumerater¬   Úexpr2   r3   r	  rU  rc   rÄ  Úint32Úisfiniterœ   r�   r½   )ri   rj   rm   ÚK_addr×   rÒ   ÚirÏ   ÚjrÐ   rî   Úchi2_exps               rO   Útest_chi_square_kernelr.  s  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   r=   r—  )r_   r`   ra   rb   r1   r  )r/  ri   rj   rÒ   s       rO   Útest_kernel_symmetryr1  ©  sU   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØˆˆq�!‰Œ€AÝ�A�q”s˜BÑÔÐÐÐrR   c                 óÔ   — t           j                             d¦  «        }|                     d¦  «        } ||¦  «        } | ||¦  «        } | ||¦  «        }t	          ||¦  «         d S ©Nr   r=   )r_   r`   ra   rb   r1   )r/  r—   ri   rj   r    rÒ   rø   s          rO   Útest_kernel_sparser4  ¼  sq   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØˆ}˜QÑÔ€HØˆˆq�!‰Œ€AØ	ˆ�˜(Ñ	#Ô	#€BÝ�A�rÑÔÐÐÐrR   c                  óÞ   — t           j                             d¦  «        } |                      d¦  «        }t	          ||¦  «        }t          |j        d d d…         d„ |D ¦   «         ¦  «         d S )Nr   r=   é   c                 ó<   — g | ]}t          j        |¦  «        d z  ‘ŒS )rF   )r   Únorm)rM   rÏ   s     rO   rP   z&test_linear_kernel.<locals>.<listcomp>Ö  s%   € Ð!AÐ!AÐ!A¸!¥&¤+¨a¡.¤.°AÑ"5Ð!AÐ!AÐ!ArR   )r_   r`   ra   rb   r   r1   Úflat©ri   rj   rÒ   s      rO   Ú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ÐBrR   c                  óî   — t           j                             d¦  «        } |                      d¦  «        }t	          ||¦  «        }t          |j        d d d…         t          j        d¦  «        ¦  «         d S )Nr   r=   r6  r>   )r_   r`   ra   rb   r)   r1   r9  Úonesr:  s      rO   Útest_rbf_kernelr>  Ù  sc   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ�1�aÑÔ€Aå�A”F˜3˜3˜Q˜3”K¥¤¨¡¤Ñ,Ô,Ð,Ð,Ð,rR   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   r=   r>   r\   )	r_   r`   ra   rb   r   r1   r	  r=  rU  r:  s      rO   Útest_laplacian_kernelr@  á  sª   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ˜˜AÑÔ€Aå•B”G˜A‘J”J¥¤¨¡
¤
Ñ+Ô+Ð+õ Œ6�!�a’%‰=Œ=ÐÐˆ=ÝŒ6�!•b”g�bœg a™jœjÑ)Ô)Ñ)¨AÒ-Ñ.Ô.Ð.Ð.Ð.Ð.Ð.rR   zmetric, pairwise_funcrí   r   c                 óì  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        } ||¦  «        } ||¦  «        } |||d¬¦  «        }t	          |¦  «        sJ ‚ |||d¬¦  «        }	t	          |	¦  «        rJ ‚t          |                     ¦   «         |	¦  «         t          ||| ¬¦  «        }
t          |                     ¦   «         |
¦  «         d S )Nr   r=   r�   F)Údense_outputTr}   )r_   r`   ra   rb   r   r1   Útoarrayr'   )rD   Úpairwise_funcr—   ri   rj   rm   ÚXcsrÚYcsrr÷   rø   ÚK3s              rO   Ú&test_pairwise_similarity_sparse_outputrH  í  sü   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AØˆ=˜ÑÔ€DØˆ=˜ÑÔ€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 "Ñ%Ô%Ð%Ð%Ð%rR   c                 ó”  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        } | |¦  «        } | |¦  «        }|d f||f|d f||ffD ]Y\  }}t	          ||d¬¦  «        }t          |¦  «        }|�t          |¦  «        }t	          ||d¬¦  «        }	t          ||	¦  «         ŒZd S )Nr   r=   r�   r   r}   rí   )r_   r`   ra   rb   r'   r+   r1   )
r—   ri   rj   rm   rE  rF  ÚX_ÚY_r÷   rø   s
             rO   Útest_cosine_similarityrL    së   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AØˆ=˜ÑÔ€DØˆ=˜ÑÔ€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ÑÔÐÐð ð  rR   c                  ó¦   — t          j        t          j        d¦  «        d¦  «        } t          | d ¦  «        \  }}||u sJ ‚t	          | |¦  «         d S ©Né(   ©r>   rx  )r_   Úresizerf  r   r3   )r  Ú
XA_checkedÚ
XB_checkeds      rO   Útest_check_dense_matricesrT    sX   € õ 
Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ2°2°tÑ<Ô<Ñ€J�
Ø˜Ð#Ð#Ð#Ð#Ý�r˜:Ñ&Ô&Ð&Ð&Ð&rR   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 )NrO  rP  é    ©r?   rx  )r_   rQ  rf  r   r3   r   ©r  r  rR  rS  s       rO   Útest_check_XB_returnedrY  %  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˜:Ñ&Ô&Ð&Ð&Ð&rR   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é-   )r>   rt  rV  rW  é$   )r?   rt  )r_   rQ  rf  rœ   r�   r½   r   r   ©r  r  s     rO   Útest_check_different_dimensionsr^  5  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[  rt  r>   rV  r?   rx  )r_   rf  rÍ   rœ   r�   r½   r   r]  s     rO   Útest_check_invalid_dimensionsr`  A  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¦  «        } | |¦  «        }|                     d¦  «        } | |¦  «        }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 r3  )r_   r`   ra   rb   r   r   r  r¬   )	r—   ri   r  Ú	XA_sparser  Ú	XB_sparserR  rS  ÚXA_2_checkeds	            rO   Útest_check_sparse_arraysre  O  s…  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ	×	Ò	˜6Ñ	"Ô	"€BØ�˜bÑ!Ô!€IØ	×	Ò	˜6Ñ	"Ô	"€BØ�˜bÑ!Ô!€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Ð4rR   c                 óš   — | j         }t          |¦  «        dk    rt          d„ | D ¦   «         ¦  «        S t          d„ | D ¦   «         ¦  «        S )Nr\   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rQ  )ÚtuplifyrU   s     rO   rT  ztuplify.<locals>.<genexpr>k  s(   è è € Ð/Ð/ c•W˜S‘\”\Ð/Ð/Ð/Ð/Ð/Ð/rR   c              3   ó   K  — | ]}|V — Œd S rQ  rK   )rM   Úrs     rO   rT  ztuplify.<locals>.<genexpr>n  s   è è € �N�N˜1�Q�N�N�N�N�N�NrR   )rg   r"  rT   )rj   rq  s     rO   rh  rh  f  sO   € à	Œ€AÝ
ˆ1�v„v�‚z€zåÐ/Ð/¨QÐ/Ñ/Ô/Ñ/Ô/Ð/õ �N�N �N‘N”NÑ"Ô"Ð"rR   c                  ó:  — t           j                             d¦  «        } |                      d¦  «        }t	          |¦  «        }|                      d¦  «        }t	          |¦  «        }t          ||¦  «        \  }}t          ||¦  «         t          ||¦  «         d S r3  )r_   r`   ra   rb   rh  r   r3   )ri   r  Ú	XA_tuplesr  Ú	XB_tuplesrR  rS  s          rO   Útest_check_tuple_inputrn  q  s�   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ	×	Ò	˜6Ñ	"Ô	"€BÝ˜‘”€IØ	×	Ò	˜6Ñ	"Ô	"€BÝ˜‘”€IÝ2°9¸iÑHÔHÑ€J�
Ý�y *Ñ-Ô-Ð-Ý�y *Ñ-Ô-Ð-Ð-Ð-rR   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 rN  )r_   rQ  rf  rc   rÄ  r   rd   rÎ   rX  s       rO   Útest_check_preserve_typerp  }  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Ò$Ð$Ð$Ð$Ð$Ð$rR   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Ø   )rG  r   rÌ  rC   rÚ   )
r   r_   r`   ra   rb   r   r
   rK  rT   r1   )rÛ   rD   rs  ri   rj   Úexpected_distr2  s          rO   Ú+test_pairwise_distances_data_derived_paramsrv  •  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¨   rC   )r_   r`   ra   rb   rœ   r�   r½   r#   )rD   ri   rj   rm   s       rO   Ú1test_pairwise_distances_data_derived_params_errorrx  §  sâ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$€AØ×Ò˜)Ñ$Ô$€Aå	ŒÝØL¸VÐLÐLÐLð
ñ 
ô 
ð 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Úhammingrr  r	   rq  r  r   r   rB   Ú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   r=   Fr@   rC   rq  ÚVr\   )r  Úddofrd   rr  ÚVIrD   )r_   r`   ra   rb   rc   r   r
   r   ÚvarrK  r›   r   ÚinvÚcovr  r#   r1   )	rD   rh   r~  ri   rj   r  rm   ru  r2  s	            rO   Ú)test_numeric_pairwise_distances_datatypesr†  ¶  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˜-Ñ(Ô(Ð(Ð(Ð(rR   Úpairwise_distances_funcc                 ó¢   — ddgdt           j        gddgddgg} | ||d¬¦  «        }t          j        |¦  «                             ¦   «         rJ ‚dS )	z8Check that `nan_euclidean` is lenient with `nan` values.r   r\   rF   rŽ   r>   rH   rC   N)r_   re   ÚisnanÚany)r‡  rj   Úoutputs      rO   Útest_nan_euclidean_supportrŒ  ç  sc   € ð ˆQˆ�!•R”V�˜q !˜f q¨! fÐ-€AØ$Ð$ Q¨°/ÐBÑBÔB€FåŒx˜ÑÔ×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%rR   c                  ó  — t           j        t           j        gt           j        t           j        gt           j        t           j        gg} t          | | d¬¦  «        }ddgddgddgg}t          ||d¬¦  «        }t          ||¦  «         dS )zyCheck that the behavior of constant input is the same in the case of
    full of nan vector and full of zero vector.
    rH   rC   r   N)r_   re   r$   r1   )ÚX_nanÚ
argmin_nanÚX_constÚargmin_consts       rO   Ú(test_nan_euclidean_constant_input_argminr’  ô  s�   € õ
 Œf•b”fÐ¥¤­¬Ð/µ"´&½"¼&Ð1AÐB€EÝ*¨5°%ÀÐPÑPÔP€Jà�1ˆv˜˜1�v  1˜vÐ&€GÝ,¨W°gÀoÐVÑVÔV€Lå�J Ñ-Ô-Ð-Ð-Ð-rR   zX,Y,expected_distance)r  ÚabÚabc)ró  r¼   rš   )r¼   ró  r¼   )rš   r¼   ró  r  r“  ró  r¼   rš   c                 óP   — d„ }t          | ||¬¦  «        }t          ||¦  «         dS )z8Check pairwise_distances with lists of strings as input.c                 ód   — t          j        t          | ¦  «        t          |¦  «        z
  ¦  «        S rQ  )r_   r  r"  rè   s     rO   Údummy_string_similarityzLtest_pairwise_dist_custom_metric_for_string.<locals>.dummy_string_similarity  s"   € ÝŒv•c˜!‘f”f�s 1™vœv‘oÑ&Ô&Ð&rR   )rj   rm   rD   N)r#   r1   )rj   rm   Úexpected_distancer—  Úactual_distances        rO   Ú+test_pairwise_dist_custom_metric_for_stringrš    s?   € ð$'ð 'ð 'õ )¨1°Ð:QÐRÑRÔR€OÝ�OÐ%6Ñ7Ô7Ð7Ð7Ð7rR   c                  óÐ   — d„ } t          j        g d¢g d¢g d¢gt          ¬¦  «        }t          j        g d¢g d¢g d¢g¦  «        }t          || ¬	¦  «        }t	          ||¦  «         d
S )zjCheck that pairwise_distances does not convert boolean input to float
    when using a custom metric.
    c                 óf   — d| |z                        ¦   «         | |z                        ¦   «         z  z
  S )Nr\   )r¬   )Úv1Úv2s     rO   Údummy_bool_distzBtest_pairwise_dist_custom_metric_for_bool.<locals>.dummy_bool_dist   s*   € à�B˜‘G—=’=‘?”? b¨2¡g§]¢]¡_¤_Ñ4Ñ4Ð4rR   )r\   r   r   r   )r\   r   r\   r   )r\   r\   r\   r\   rº   )ró  r[   ç      è?)r[   ró  r[   )r   r[   ró  )rj   rD   N)r_   r¿   r®   r#   r1   )rŸ  rj   r˜  r™  s       rO   Ú)test_pairwise_dist_custom_metric_for_boolr¡    s•   € ð
5ð 5ð 5õ 	Œ�,�,�,   ¨l¨l¨lÐ;Å4ÐHÑHÔH€AåœàÐÐØˆOˆOØÐÐð	
ñô Ðõ )¨1°_ÐEÑEÔE€OÝ�OÐ%6Ñ7Ô7Ð7Ð7Ð7rR   c                 óâ   —  | t          j        d¦  «        ¦  «        g} | t          j        d¦  «        ¦  «        g} t          dd¬¦  «        d„ t          ||¦  «        D ¦   «         ¦  «         d S )Nr¸   rF   r   )rÛ   Ú
max_nbytesc              3   óX   K  — | ]%\  }} t          t          ¦  «        ||¦  «        V — Œ&d S rQ  )r;   r   )rM   Úm1Úm2s      rO   rT  z9test_sparse_manhattan_readonly_dataset.<locals>.<genexpr><  sM   è è € ð %ð %Ù17°°RÐ$�Õ#Ñ$Ô$ R¨Ñ,Ô,ð%ð %ð %ð %ð %ð %rR   )r_   r=  r:   Úzip)r—   Ú	matrices1Ú	matrices2s      rO   Ú&test_sparse_manhattan_readonly_datasetrª  4  s‹   € ð ��rœw v™œÑ/Ô/Ð0€IØ��rœw v™œÑ/Ô/Ð0€Ið %…H�A !Ð$Ñ$Ô$ð %ð %Ý;>¸yÈ)Ñ;TÔ;Tð%ñ %ô %ñ ô ð ð ð rR   )rB   )¥r�   Útypesr   Únumpyr_   rœ   r   Úscipy.sparser   Úscipy.spatial.distancer   r   r   r	   r
   r   Ú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._array_apir,   r-   r.   r/   Úsklearn.utils._testingr0   r1   r2   r3   r4   Úsklearn.utils.fixesr5   r6   r7   r8   r9   Úsklearn.utils.parallelr:   r;   rt   ÚmarkÚparametrizerŠ   r“   r£   ÚDeprecationWarningr²   r´   rÃ   rÇ   rf  rc   Ú_minkowski_kwdsrÔ   r›   rÄ  r¹   rÜ   rå   rê   rù   rÿ   r  r  Úitemsr  r  Úthread_unsafer=  rB  rM  rV  rh  r½   rŸ   r{  r…  r‘  r“  rœ  Úfilterwarningsr¢  r¿   r¯  rÁ  rÆ  rÈ  rÐ  rÓ  rÜ  rß  ÚparamÚxfailræ  rë  Úinfrñ  rÚ  re   rý  rÿ  r  r  r  r  r  r!  r#  r.  r1  r4  r;  r>  r@  rH  rL  rT  rY  r^  r`  re  rh  rn  rp  rv  rx  r†  rŒ  r’  rš  r¡  rª  rK   rR   rO   ú<module>rÁ     s‘  ðØ €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð> ,Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðLð Lð Lð^ „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×Ò˜Ð#GÐ#GÐ#GÑHÔHð'ð 'ñ IÔHñ	ô ð
'ðB?ð ?ð ?ð$ „×Ò˜¨.Ñ9Ô9Ø„×Ò˜¨.Ñ9Ô9Ø„×Ò˜¨.Ñ9Ô9Ø„×Ò˜¨.Ñ9Ô9ð><ð ><ñ :Ô9ñ :Ô9ñ :Ô9ñ :Ô9ð><ðF €Ð,Ð-Ñ-Ô-Ø„×Ò˜Ð#=Ñ>Ô>ð:ð :ñ ?Ô>ñ .Ô-ð:ð<2ð 2ð 2ð „×Ò˜Ð"4Ð6FÐ!GÑHÔHð%ð %ñ IÔHð%ð:Fð Fð Fð "˜œ	 ! Q™œ×.Ò.¨x¸eÐ.ÑDÔDÈ1ÐMÐM€ðOð Oð Oð „×ÒØà	˜[¨"Ð-àØØð	
ð ØØð	
ð
 
˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?ðñô ð$ „×Ò˜ 2¤:¨r¬z¸3Ð"?Ñ@Ô@ðð ñ AÔ@ñ%ô ð&ð „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×ÒØà	˜[¨"Ð-Ø	˜[¨"Ð-Ø	˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?Ø	˜;¨°#¨Ð7ðñ	ô 	ð5ð 5ñ	ô 	ñ	ô ð5ðBIð Ið Ið „×ÒØØTÐTÐTñô ð „×Ò˜¨.Ñ9Ô9ðð ñ :Ô9ñ	ô ð
ð> „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×ÒØØTÐTÐTñô ð'ð 'ñ	ô ñ	ô ð'ðDð ð ð&
7ð 
7ð 
7ð „×Ò˜Ð)?Ð)9Ô)?Ñ)AÔ)AÑBÔBØ„×Ò˜¨.Ñ9Ô9ð&ð &ñ :Ô9ñ CÔBð&ð*ð ð ð, „ÔØ„×Ò˜¨.Ñ9Ô9Ø„×Ò˜¨.Ñ9Ô9ðvAð vAñ :Ô9ñ :Ô9ñ Ôð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ÑOÔOð!ð !ñ PÔOð!ðH „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
 „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
%ð %ñô ñô ð%ð „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
%ð %ñô ð
%ð@ „×Ò˜ t¨U mÑ4Ô4ðð ñ 5Ô4ðð Eð Eð EðD „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
 „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
+ð +ñô ñô ð+ð* „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
+ð +ñô ð
+ð$ „×Ò˜Ð'8Ð'8Ð'8Ñ9Ô9Ø„×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
 „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
4ð 4ñô ñô ñ :Ô9ð4ð( „×Ò˜Ð'8Ð'8Ð'8Ñ9Ô9Ø„×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
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 „×ÒØàØØØØØðñ
ô 
ð ð  ñ
ô 
ð ð „×ÒØàØØØØØðñ
ô 
ð „×Ò˜¨.Ñ9Ô9ðð ñ :Ô9ñ
ô 
ððCð Cð Cð-ð -ð -ð	/ð 	/ð 	/ð „×ÒØØ�Ð Ð+<Ð =Ð>ñô ð „×Ò˜¨.Ñ9Ô9ð&ð &ñ :Ô9ñ	ô ð
&ð* „×Ò˜¨.Ñ9Ô9ð ð  ñ :Ô9ð ð('ð 'ð 'ð'ð 'ð 'ð 	$ð 	$ð 	$ð&ð &ð &ð „×Ò˜¨.Ñ9Ô9ð5ð 5ñ :Ô9ð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ñ#ô ð$)ð> „×ÒØØÐ2Ð4QÐRñô ð&ð &ñ	ô ð&ð.ð .ð .ð „×ÒØð ÐÐØØˆ_ˆ_˜o˜o˜o¨¨¨Ð?ð	
ð ÐÐØ�$ˆKØ�3ˆZ˜#˜s˜ c¨3 ZÐ0ð	
ðñô ð8ð 8ñô ð8ð8ð 8ð 8ð2 „ÔØ„×Ò˜¨.Ñ9Ô9ðð ñ :Ô9ñ Ôðð ð rR   