Ë
    uwjÿù  ã                   ó¨  — 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
l4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZBmCZCmDZDmEZE d dlFmGZGmHZH d„ ZIej”                  j—                  d e9«       e6¬«      ej”                  j—                  dg d¢«      d„ «       «       ZLej”                  j—                  deB«      ej”                  j—                  deC«      ej”                  j—                  deA«      ej”                  j—                  deD«      d„ «       «       «       «       ZM e?eN¬«      ej”                  j—                  de«      d„ «       «       ZOd„ ZPej”                  j—                  de*e.g«      d„ «       ZQd„ ZR ej¦                  dd «      j©                  d!d"¬#«      dd$œZUd%„ ZVej”                  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j”                  j—                  d-ej®                  ej°                  eYg«      d.„ «       «       ZZej”                  j—                  d e9«       e6¬«      ej”                  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j”                  j—                  dg d3¢«      ej”                  j—                  deD«      d4„ «       «       Z]ej”                  j—                  d e9«       e6¬«      ej”                  j—                  dg d5¢«      d6„ «       «       Z^d7„ Z_d8„ Z`ej”                  j—                  d9 ejÂ                  «       «      ej”                  j—                  deD«      d:„ «       «       Zbd;„ Zcej”                  jÈ                  ej”                  j—                  d<eE«      ej”                  j—                  deD«      d=„ «       «       «       Zed>„ Zfd?„ Zgd@„ Zhej”                  j—                  dAdB„ dC„ dD„ geDD � cg c]  } | fdE„‘Œ	 c} z   eED �cg c]  }|fdF„‘Œ	 c}z   «      dG„ «       Ziej”                  j—                  dHdI„ ejdJfdK„ ejdLfdM„ ejdNfdO„ ekdPfdQ„ ekdRfdS„ ekdTfg«      dU„ «       Zld·dV„Zmej”                  j—                  ddW«      dX„ «       Znej”                  j—                  ddW«      dY„ «       Zoej”                  já                  dZ«      d[„ «       Zqej”                  j—                  d\ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      ej”                  j—                  d^ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      d_„ «       «       Ztej”                  j—                  d^ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      d`„ «       Zuej”                  j—                  dadbd"g«      dc„ «       Zvdd„ Zwej”                  j—                  d\ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      ej”                  j—                  d^ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      de„ «       «       Zxej”                  j—                  d\ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      df„ «       Zyej”                  j—                  dgg dh¢«      ej”                  j—                  d\ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      ej”                  j—                  d^ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      di„ «       «       «       Zzej”                  j—                  dgg dh¢«      ej”                  j—                  d\ejä                  geDz   d]geDD �cg c]  }|jæ                  ‘Œ c}z   ¬«      dj„ «       «       Z{ej”                  j—                  dkej°                  dldmf ejø                  ej®                  dndoej”                  jû                  dp¬q«      ¬r«      g«      ej”                  j—                  dsddtg«      du„ «       «       Z~ej”                  j—                  dvdbd"g«      dw„ «       Zej”                  j—                  dx ejä                  e�j                   d gg«       ejä                  d e�j                    gg«      g«      ej”                  j—                  dy ejä                  e�j                   d gg«       ejä                  d e�j                    gg«      dg«      dz„ «       «       Z�ej”                  j—                  d{ ejä                  d dgdd gg«       e�j                  d|«      e�j                  f ejä                  d dgde�j                  gg«       e�j                  d|«      e�j                  f ejä                  e�j                  dgde�j                  gg«      e�j                  e�j                  f ejä                  e�j                  dge�j                  d gg«       e�j                  d|«      e�j                  f ejä                  d e�j                  gde�j                  gg«       e�j                  d|«      e�j                  f ejä                  d dgdd gg«       e�j                  d|«      d}f ejä                  d dgdd}gg«       e�j                  d|«      d}f ejä                  d}dgdd}gg«      e�j                  d}f ejä                  d}dgd}d gg«       e�j                  d|«      d}f ejä                  d d}gdd}gg«       e�j                  d|«      d}fg
«      d~„ «       Z„ej”                  j—                  de�j                  d}g«      d€„ «       Z…ej”                  j—                  de�j                  d}g«      d�„ «       Z†ej”                  j—                  de�j                  d}g«      d‚„ «       Z‡dƒ„ Zˆd„„ Z‰d…„ ZŠd†„ Z‹d‡„ ZŒdˆ„ Z�ej”                  j—                  d‰e#e/e0e"e1ef«      dŠ„ «       ZŽej”                  j—                  d‰e#e/e0e"e1ef«      ej”                  j—                  deD«      d‹„ «       «       Z�dŒ„ Z�d�„ Z‘dŽ„ Z’ej”                  j—                  d�d�e#fd‘efg«      ej”                  j—                  deD«      d’„ «       «       Z“ej”                  j—                  deD«      d“„ «       Z”d”„ Z•d•„ Z–d–„ Z—d—„ Z˜ej”                  j—                  deD«      d˜„ «       Z™d™„ Zšdš„ Z›d›„ Zœej”                  j—                  dœdd|g«      ej”                  j—                  dd�džg«      ej”                  j—                  dŸe*e-g«      d „ «       «       «       Z�ej”                  j—                  dd�džg«      d¡„ «       Zžej”                  j—                  dg d¢¢«      ej”                  j—                  d£dbd"gd¤d¥g¬«      d¦„ «       «       ZŸej”                  j—                  d§e*e+e,g«      d¨„ «       Z d©„ Z¡ej”                  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j”                  jÈ                  ej”                  j—                  deD«      d¶„ «       «       Z¤yc c} w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )¸é    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)Ú_convert_to_numpyÚ_get_namespace_device_dtype_idsÚget_namespaceÚ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                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d¬«      }t        |«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d«      j	                  | d¬«      }t        ||d¬«      }t        ||«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }t         j                  |d<   t         j                  |d<   t        ||d	¬«      }t        ||«      }	t        ||	«       |j                  |	j                  cxk(  r| k(  sJ ‚ J ‚t        |D �
�cg c]  }
t        |
D �cg c]  }|‘Œ c}«      ‘Œ c}}
«      }t        |D �
�cg c]  }
t        |
D �cg c]  }|‘Œ c}«      ‘Œ c}}
«      }t        ||d¬«      }t        ||«       |j                  |j                  cxk(  r| k(  sJ ‚ J ‚|j                  d
«      j	                  | 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        ||«       |j                  d«      j	                  | 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        ||«       y c c}w c c}}
w c c}w c c}}
w )Nr   ©é   é   F©ÚcopyÚ	euclidean©Úmetric©é   r@   ©r   r   Únan_euclidean©r?   rG   ç      à?rG   é   Ú	haversine)rG   rG   r   Ú	manhattanr   )ÚnpÚrandomÚRandomStateÚrandom_sampleÚastyper#   r   r2   ÚdtypeÚnanr   ÚtupleÚpir   r   Úshaper   )Úglobal_dtypeÚrngÚXÚSÚS2ÚYÚX_maskedÚY_maskedÚS_maskedÚ	S2_maskedÚrowÚvÚX_tuplesÚY_tupless                 úh/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/sklearn/metrics/tests/test_pairwise.pyÚ&test_pairwise_distances_for_dense_datarh   K   s{  € ä
�)‰)×
Ñ
 Ó
"€Cð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AÜ˜1 [Ô1€AÜ	˜QÓ	€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AÜ˜1˜a¨Ô4€AÜ	˜Q Ó	"€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð × Ñ  Ó(×/Ñ/°À5Ð/ÓI€HØ× Ñ  Ó(×/Ñ/°À5Ð/ÓI€HÜ—V‘V€HˆT�NÜ—V‘V€HˆT�NÜ! (¨H¸_ÔM€HÜ'¨°(Ó;€IÜ�H˜iÔ(Ø�>‰>˜YŸ_™_Ô<°Ò<Ð<Ñ<Ð<Ð<ô ¹Ô;¹°#”e©Ó,© 1šQ¨Ñ,Õ-¸Ò;Ó<€HÜ¹Ô;¹°#”e©Ó,© 1šQ¨Ñ,Õ-¸Ò;Ó<€HÜ	˜H h°{Ô	C€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ð
 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)¨AÑ-€A‚aˆ€d�GØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)€A‚aˆ€d�GÜ˜1 [Ô1€AÜ	˜QÓ	€BÜ�A�rÔð 	×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)¨AÑ-€A‚aˆ€d�GØ’�A�‰w˜‰} Ñ!¤B§E¡EÑ)€A‚aˆ€d�GÜ˜1˜a¨Ô4€AÜ	˜Q Ó	"€BÜ�A�rÔô
 	˜1 [Ô1€AÜ	˜A¤iÔ	0€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÔô 	˜1˜a¨Ô4€AÜ	˜A˜q¬Ô	3€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÔô
 	˜1˜a¨Ô1€AÜ	˜A˜q¬Ô	0€BØ�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ø�7‰7�1‰:˜Ÿ™ ™Ò#Ð#Ð#Ü�A�rÕùò_ -ùÓ;ùÚ,ùÓ;s0   Æ4S

Ç	SÇ	S

Ç&S
Ç4	SÇ=	S
ÓS

ÓS
z#array_namespace, device, dtype_name)ÚidsrE   )r   rC   rN   c                 ó´  — t        | |«      }t        j                  j                  d«      }|j	                  d«      j                  |d¬«      }|j	                  d«      j                  |d¬«      }|j                  ||¬«      }|j                  ||¬«      }	t        d¬«      5  t        ||¬«      }
t        |
|¬	«      }t        |
«      d   j                  |j                  k(  sJ ‚|
j                  |j                  k(  sJ ‚|
j                  |j                  k(  sJ ‚t        ||¬«      }t        ||«       t        ||	|¬
«      }
t        |
|¬	«      }t        |
«      d   j                  |j                  k(  sJ ‚|
j                  |j                  k(  sJ ‚|
j                  |j                  k(  sJ ‚t        |||¬
«      }t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   r>   FrA   ©ÚdeviceT©Úarray_api_dispatchrD   ©Úxp©r^   rE   )r1   rO   rP   rQ   rR   rS   Úasarrayr   r#   r,   r.   Ú__name__rl   rT   r2   )Úarray_namespacerl   Ú
dtype_namerE   rp   rZ   ÚX_npÚY_npÚX_xpÚY_xpÚD_xpÚD_xp_npÚD_nps                rg   Ú!test_pairwise_distances_array_apir}   š   sš  € ô 
˜o¨vÓ	6€Bä
�)‰)×
Ñ
 Ó
"€Cà×Ñ˜VÓ$×+Ñ+¨J¸UÐ+ÓC€DØ×Ñ˜VÓ$×+Ñ+¨J¸UÐ+ÓC€DØ�:‰:�d 6ˆ:Ó*€DØ�:‰:�d 6ˆ:Ó*€Dä	¨4Ö	0ä! $¨vÔ6ˆÜ# D¨RÔ0ˆÜ˜TÓ" 1Ñ%×.Ñ.°"·+±+Ò=Ð=Ð=Ø�{‰{˜dŸk™kÒ)Ð)Ð)Ø�z‰z˜TŸZ™ZÒ'Ð'Ð'ä! $¨vÔ6ˆÜ˜ Ô&ô " $¨$°vÔ>ˆÜ# D¨RÔ0ˆÜ˜TÓ" 1Ñ%×.Ñ.°"·+±+Ò=Ð=Ð=Ø�{‰{˜dŸk™kÒ)Ð)Ð)Ø�z‰z˜TŸZ™ZÒ'Ð'Ð'ä! $¨$°vÔ>ˆÜ˜ Ô&÷' 
1×	0Ñ	0ús   Â"D#GÇGÚcoo_containerÚcsc_containerÚbsr_containerÚcsr_containerc                 óŽ  — t         j                  j                  d«      }|j                  d«      j	                  |d¬«      }|j                  d«      j	                  |d¬«      } ||«      } ||«      }	t        ||	d¬«      }
t        ||	«      }t        |
|«       |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚t        ||	d¬«      }
t        ||	«      }t        |
|«       |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚t        | ||«      d	¬«      }
t         ||«       | |«      «      }t        |
|«       |t         j                  k(  r$|
j                  |j                  cxk(  r|k(  sLJ ‚ J ‚t        j                  t        «      5  |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚	 d d d «       t        ||«      }t        |
|«       |t         j                  k(  r$|
j                  |j                  cxk(  r|k(  sLJ ‚ J ‚t        j                  t        «      5  |
j                  |j                  cxk(  r|k(  sJ ‚ J ‚	 d d d «       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 «       t        j                  t         «      5  t        ||	d¬«       d d d «       y # 1 sw Y   �ŒbxY w# 1 sw Y   ŒØxY w# 1 sw Y   ŒSxY w# 1 sw Y   y xY w)Nr   r>   FrA   rF   rC   rD   r   rN   Úpç       @rE   r	   )rO   rP   rQ   rR   rS   r#   r   r2   rT   r   r   Úfloat64ÚpytestÚraisesÚAssertionErrorr	   Ú	TypeError)r~   r   r€   r�   rY   rZ   r[   r^   ÚX_sparseÚY_sparser\   r]   Úkwdss                rg   Ú'test_pairwise_distances_for_sparse_datar�   Á   sâ  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AØ×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Añ ˜QÓ€HÙ˜QÓ€Hä˜8 X°kÔB€AÜ	˜X xÓ	0€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ä˜8 X°hÔ?€AÜ	˜( HÓ	-€BÜ�A�rÔØ�7‰7�b—h‘hÔ. ,Ò.Ð.Ñ.Ð.Ð.ä˜8¡]°1Ó%5¸kÔJ€AÜ	™]¨1Ó-©}¸QÓ/?Ó	@€BÜ�A�rÔØ”r—z‘zÒ!Ø�w‰w˜"Ÿ(™(Ô2 lÒ2Ð2Ñ2Ð2Ð2ô
 �]‰]œ>Õ*Ø—7‘7˜bŸh™hÔ6¨,Ò6Ð6Ñ6Ð6Ñ6÷ +ô 
˜Q Ó	"€BÜ�A�rÔØ”r—z‘zÒ!Ø�w‰w˜"Ÿ(™(Ô2 lÒ2Ð2Ñ2Ð2Ð2ô
 �]‰]œ>Õ*Ø—7‘7˜bŸh™hÔ6¨,Ò6Ð6Ñ6Ð6Ñ6÷ +ð �ˆ:€DÜ˜1˜aÑ<¨Ð<°tÑ<€AÜ	˜A˜qÑ	;¬Ð	;°dÑ	;€BÜ�A�rÔð �ˆ:€DÜ˜1Ñ9 [Ð9°DÑ9€AÜ	˜AÑ	8¤iÐ	8°4Ñ	8€BÜ�A�rÔô 
�‰”yÕ	!Ü˜8¨KÕ8÷ 
"ä	�‰”yÕ	!Ü˜1˜h¨{Õ;÷ 
"Ð	!÷; +Ñ*ú÷ +Ð*ú÷  
"Ð	!úç	!Ð	!ús0   Æ%LÈ&%L#ËL/Ë>L;ÌL Ì#L,Ì/L8Ì;M©Úcategoryc                 ój  — t         j                  j                  d«      }|j                  dd«      }|j	                  «       }d|d   z
  |d<   t        t        ¬«      5  |d fD ]D  }t        ||| ¬«      }t        j                  |d¬«       t        j                  |dk7  «      dk(  rŒDJ ‚ 	 d d d «       d	| z  }t        j                  t        |¬
«      5  t        || ¬«       d d d «       t        j                  t        |¬
«      5  t        |j                  t        «      || ¬«       d d d «       t        j                   «       5  t        j"                  dt        «       t        |j                  t        «      | ¬«       d d d «       y # 1 sw Y   ŒÜxY w# 1 sw Y   Œ²xY w# 1 sw Y   ŒyxY w# 1 sw Y   y xY w)Nr   r?   r@   rL   rH   rŽ   rD   )Ú
fill_valuez+Data was converted to boolean for metric %s©Úmatchrq   Úerror)rO   rP   rQ   ÚrandnrB   r5   r   r#   r/   Ú
nan_to_numÚsumr†   ÚwarnsrS   ÚboolÚwarningsÚcatch_warningsÚsimplefilter)rE   rZ   r[   r^   ÚZÚresÚmsgs          rg   Útest_pairwise_boolean_distancer      sI  € ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹€AØ	�‰‹€AØ�!�D‘'‰k€A€d�Gô 
Ô"7Ö	8Ø�T“ˆAÜ$ Q¨°&Ô9ˆCÜ�N‰N˜3¨1Õ-Ü—6‘6˜# ™(Ó# qÓ(Ð(Ð(ñ ÷ 
9ð 8¸&Ñ
@€CÜ	�‰Ô+°3Ö	7Ü˜1 VÕ,÷ 
8ô 
�‰Ô+°3Ö	7Ü˜1Ÿ8™8¤D›>¨Q°vÕ>÷ 
8ô 
×	 Ñ	 Õ	"Ü×Ñ˜gÔ'<Ô=Ü˜1Ÿ8™8¤D›>°&Õ9÷ 
#Ð	"÷# 
9Ð	8ú÷ 
8Ð	7ú÷ 
8Ð	7ú÷ 
#Ð	"ús7   ÁAFÂ&FÃFÄ"FÅ;F)ÆFÆFÆF&Æ)F2c                  ó  — t         j                  j                  d«      } | j                  dd«      }t	        j
                  «       5  t	        j                  dt        «       t        |d¬«       d d d «       y # 1 sw Y   y xY w)Nr   r?   r@   r”   r	   rD   )	rO   rP   rQ   r•   rš   r›   rœ   r   r#   )rZ   r[   s     rg   Útest_no_data_conversion_warningr¢   (  sX   € ä
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹€AÜ	×	 Ñ	 Õ	"Ü×Ñ˜gÔ'<Ô=Ü˜1 [Õ1÷ 
#×	"Ñ	"ús   Á(A7Á7B Úfuncc                 óª  — t        j                  t        d¬«      5   | t        j                  d«      d¬«       d d d «       t        j                  t        d¬«      5   | t        j                  d«      t        j                  d«      d¬«       d d d «       t        j                  t        d¬«      5   | t        j                  d«      t        j                  d«      d¬«       d d d «       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 ‚y # 1 sw Y   �ŒwxY w# 1 sw Y   �Œ/xY w# 1 sw Y   ŒæxY w)Nz.* shape .*r’   )r?   é   ÚprecomputedrD   )r@   r@   )r@   r¥   ©r?   r?   )r¥   r¥   rL   Úint©rT   Úfç      ð?)
r†   r‡   Ú
ValueErrorrO   ÚzerosÚarrayrT   ÚkindÚ
isinstanceÚndarray)r£   r\   r]   s      rg   Útest_pairwise_precomputedr²   1  s[  € ô 
�‰”z¨Ö	7ÙŒR�X‰X�fÓ mÕ4÷ 
8ô 
�‰”z¨Ö	7ÙŒR�X‰X�fÓœrŸx™x¨Ó/¸ÕF÷ 
8ô 
�‰”z¨Ö	7ÙŒR�X‰X�fÓœrŸx™x¨Ó/¸ÕF÷ 
8ô 	�‰�Ó€AÙ	ˆa˜Ô	&€BØ�‰7€Nˆ7ä
�‰�Ó€AÙ	ˆa”—‘˜&Ó!¨-Ô	8€BØ�‰7€Nˆ7ñ 	ŒR�X‰X˜�s�e 5Ô)°-Ô@€AØ�!—'‘'—,‘,ÒÐÐñ 	ˆsˆeˆW˜]Ô+€AÜ�aœŸ™Ô$Ð$Ñ$÷1 
8Ñ	7ú÷ 
8Ñ	7ú÷ 
8Ð	7ús#   œF/Á2F<Â22G	Æ/F9Æ<GÇ	Gc                  ó¦   — t        j                  t        d¬«      5  t        t	        j
                  dd«      d¬«       d d d «       y # 1 sw Y   y xY w)Nz.* non-negative values.*r’   r§   éÿÿÿÿr¦   rD   )r†   r‡   r¬   r#   rO   Úfull© ó    rg   Ú&test_pairwise_precomputed_non_negativer¸   O  s3   € ä	�‰”zÐ)CÖ	DÜœ2Ÿ7™7 6¨2Ó.°}ÕE÷ 
E×	DÑ	Dús   œ"AÁArL   r?   ÚdoubleFrA   )Úwrƒ   c                 ó$  — t        | |«      \  }}t        t        j                  | d|¬«      t        j                  |d|¬«      fi |¤Ž}|j                  dkD  r/|j                  |d«      }|j                  dk(  rt        |d   «      S t        d«      ‚)NrG   )Úndimrp   r   )r´   )rL   z6can only convert an array of size 1 to a Python scalar)	r.   r)   r/   Ú
atleast_ndr¼   ÚreshaperX   Úfloatr¬   )ÚxÚyrŒ   rp   Ú_ÚKÚK_flats          rg   Úcallable_rbf_kernelrÅ   X  s‡   € Ü˜!˜QÓ�E€BˆäÜ�‰�q˜q RÔ(¬#¯.©.¸ÀÀrÔ*Jñ	ØNRñ	€Að
 	‡v�v�‚zØ—‘˜A˜uÓ%ˆØ�<‰<˜4ÒÜ˜ ™Ó#Ð#Ü
ÐMÓ
NÐNr·   zfunc, metric, kwdsrC   r	   Ú
polynomialÚdegreeÚgammaçš™™™™™¹?rT   c                 óz  — t         j                  j                  d«      }t        j                  d|j	                  d«      z  |¬«      }t        j                  d|j	                  d«      z  |¬«      } | |f|ddœ|¤Ž} | |f|ddœ|¤Ž}t        ||«        | ||f|ddœ|¤Ž} | ||f|ddœ|¤Ž}t        ||«       y )	Nr   r?   r>   r©   ©r¥   r@   rL   ©rE   Ún_jobsrG   )rO   rP   rQ   r®   rR   r2   )	r£   rE   rŒ   rT   rZ   r[   r^   r\   r]   s	            rg   Útest_pairwise_parallelrÎ   g  sÈ   € ô( �)‰)×
Ñ
 Ó
"€CÜ
�‰��S×&Ñ& vÓ.Ñ.°eÔ<€AÜ
�‰��S×&Ñ& vÓ.Ñ.°eÔ<€AáˆQÐ0�v aÑ0¨4Ñ0€AÙ	ˆaÐ	1˜ qÑ	1¨DÑ	1€BÜ�A�rÔáˆQ�Ð3˜&¨Ñ3¨dÑ3€AÙ	ˆa�Ð	4˜6¨!Ñ	4¨tÑ	4€BÜ�A�rÕr·   rN   Ú	laplacianc                 óÜ  — t        ||«      }t        j                  j                  d«      }t        j                  d|j                  d«      z  |¬«      }t        j                  d|j                  d«      z  |¬«      }	|j                  ||¬«      }
|j                  |	|¬«      }t        d¬«      5  d	D �]!  }|€d n|}|€d n|	}	 | |
|f|d
dœ|¤Ž}t        ||¬«      }t        |«      d   j                  |j                  k(  sJ ‚|j                  |
j                  k(  sJ ‚|j                  |
j                  k(  sJ ‚ | |
|f|ddœ|¤Ž}t        ||¬«      }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 «       y # 1 sw Y   y xY w)Nr   r?   r>   r©   rË   rk   Trm   )Nznot nonerL   rÌ   ro   rG   )r1   rO   rP   rQ   r®   rR   rr   r   r,   r.   rs   rl   rT   r2   )r£   rE   rŒ   rt   rl   ru   rp   rZ   rv   rw   rx   ry   Úy_valÚ	n_job1_xpÚn_job1_xp_npÚ	n_job2_xpÚn_job2_xp_npÚ	n_job2_nps                     rg   Ú test_pairwise_parallel_array_apir×   ˆ  sÎ  € ô$ 
˜o¨vÓ	6€BÜ
�)‰)×
Ñ
 Ó
"€CÜ�8‰8�A˜×)Ñ)¨&Ó1Ñ1¸ÔD€DÜ�8‰8�A˜×)Ñ)¨&Ó1Ñ1¸ÔD€DØ�:‰:�d 6ˆ:Ó*€DØ�:‰:�d 6ˆ:Ó*€Dä	¨4Ö	0Ü'ˆEØ ˜=‘4¨dˆDØ ˜=‘4¨dˆDá˜T 4ÐI°¸qÑIÀDÑIˆIÜ,¨Y¸2Ô>ˆLÜ  Ó+¨AÑ.×7Ñ7¸2¿;¹;ÒFÐFÐFØ×#Ñ# t§{¡{Ò2Ð2Ð2Ø—?‘? d§j¡jÒ0Ð0Ð0á˜T 4ÐI°¸qÑIÀDÑIˆIÜ,¨Y¸2Ô>ˆLÜ  Ó+¨AÑ.×7Ñ7¸2¿;¹;ÒFÐFÐFØ×#Ñ# t§{¡{Ò2Ð2Ð2Ø—?‘? d§j¡jÒ0Ð0Ð0á˜TÐC¨&¸ÑC¸dÑCˆIä˜L¨,Ô7Ü˜L¨)Ö4ñ' (÷ 
1×	0Ñ	0ús   Â0D(G"Ç"G+c                  ó4   — t        dggd„ ¬«      d   dk(  sJ ‚y )Nr«   c                  ó   — y)Nr?   r¶   ©rÀ   rÁ   s     rg   Ú<lambda>z9test_pairwise_callable_nonstrict_metric.<locals>.<lambda>¼  s   € ¸1r·   rD   rH   r?   )r#   r¶   r·   rg   Ú'test_pairwise_callable_nonstrict_metricrÜ   ¸  s"   € ô  ˜u˜g©nÔ=¸dÑCÀqÒHÐHÑHr·   )ÚrbfrÏ   ÚsigmoidrÆ   ÚlinearÚchi2Úadditive_chi2c                 ó¨  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        |    }t        || ¬«      } ||«      }t        ||«       t        ||| ¬«      } |||¬«      }t        ||«       t        |D ��	cg c]  }t        |D �	cg c]  }	|	‘Œ c}	«      ‘Œ c}	}«      }
t        |D ��	cg c]  }t        |D �	cg c]  }	|	‘Œ c}	«      ‘Œ c}	}«      }t        |
|| ¬«      }t        ||«        ||«      } ||«      }| dv ry t        ||| ¬«      }t        ||«       y c c}	w c c}	}w c c}	w c c}	}w )Nr   r>   rF   rD   rq   ©r^   )rà   rá   )rO   rP   rQ   rR   r   r'   r2   rV   )rE   r�   rZ   r[   r^   ÚfunctionÚK1ÚK2rc   rd   re   rf   rŠ   r‹   s                 rg   Útest_pairwise_kernelsrç   À  s?  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÜ(¨Ñ0€Hä	˜! FÔ	+€BÙ	�!‹€BÜ�B˜Ôä	˜!˜q¨Ô	0€BÙ	�!�qÔ	€BÜ�B˜Ôä¹Ô;¹°#”e©Ó,© 1šQ¨Ñ,Õ-¸Ò;Ó<€HÜ¹Ô;¹°#”e©Ó,© 1šQ¨Ñ,Õ-¸Ò;Ó<€HÜ	˜( H°VÔ	<€BÜ�B˜Ôñ ˜QÓ€HÙ˜QÓ€HØÐ*Ñ*àÜ	˜( h°vÔ	>€BÜ�B˜Õùò -ùÓ;ùÚ,ùÓ;s0   ÂE
Â(	D>Â1	E
ÃE
Ã	E	Ã#	E
Ä>E
Å	E
)rÝ   rÞ   rÆ   rß   rÏ   rà   rá   c                 óÈ  — t        ||«      }t        j                  j                  d«      }d|j	                  d«      z  }|j                  |d¬«      }d|j	                  d«      z  }|j                  |d¬«      }|j                  ||¬«      }|j                  ||¬«      }	t        d¬	«      5  t        || ¬
«      }
t        |
|¬«      }t        |
«      d   j                  |j                  k(  sJ ‚|
j                  |j                  k(  sJ ‚|
j                  |j                  k(  sJ ‚t        || ¬
«      }t        ||«       t        ||	| ¬«      }
t        |
|¬«      }t        |
«      d   j                  |j                  k(  sJ ‚|
j                  |j                  k(  sJ ‚|
j                  |j                  k(  sJ ‚t        ||| ¬«      }t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   é
   r>   FrA   rF   rk   Trm   rD   ro   rq   )r1   rO   rP   rQ   rR   rS   rr   r   r'   r,   r.   rs   rl   rT   r2   )rE   rt   rl   ru   rp   rZ   rv   rw   rx   ry   ÚK_xpÚK_xp_npÚK_nps                rg   Útest_pairwise_kernels_array_apirí   ä  s¨  € ô 
˜o¨vÓ	6€Bä
�)‰)×
Ñ
 Ó
"€CØ�×!Ñ! &Ó)Ñ)€DØ�;‰;�z¨ˆ;Ó.€DØ�×!Ñ! &Ó)Ñ)€DØ�;‰;�z¨ˆ;Ó.€DØ�:‰:�d 6ˆ:Ó*€DØ�:‰:�d 6ˆ:Ó*€Dä	¨4Ö	0ä ¨VÔ4ˆÜ# D¨RÔ0ˆÜ˜TÓ" 1Ñ%×.Ñ.°"·+±+Ò=Ð=Ð=Ø�{‰{˜dŸk™kÒ)Ð)Ð)Ø�z‰z˜TŸZ™ZÒ'Ð'Ð'ä ¨VÔ4ˆÜ˜ Ô&ô   ¨°VÔ<ˆÜ# D¨RÔ0ˆÜ˜TÓ" 1Ñ%×.Ñ.°"·+±+Ò=Ð=Ð=Ø�{‰{˜dŸk™kÒ)Ð)Ð)Ø�z‰z˜TŸZ™ZÒ'Ð'Ð'ä ¨°VÔ<ˆÜ˜ Ô&÷' 
1×	0Ñ	0ús   Â,D#GÇG!c                  ó>  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t        }ddi}t        |f||dœ|¤Ž}t        |fd|i|¤Ž}t        ||«       t        |f||dœ|¤Ž}t        |fd|i|¤Ž}t        ||«       y )Nr   r>   rF   rÈ   rÉ   rq   r^   )rO   rP   rQ   rR   rÅ   r'   r)   r2   )rZ   r[   r^   rE   rŒ   rå   ræ   s          rg   Útest_pairwise_kernels_callablerï     s°   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€Aä €FØ�Sˆ>€DÜ	˜!Ð	8˜q¨Ñ	8°4Ñ	8€BÜ	�AÑ	#˜Ð	#˜dÑ	#€BÜ�B˜Ôô 
˜!Ð	8˜q¨Ñ	8°4Ñ	8€BÜ	�AÑ	#˜Ð	#˜dÑ	#€BÜ�B˜Õr·   c                  ó^  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        ||d¬«      }dddœ}t        ||fdd	d
œ|¤Ž}t        ||«       t        j                  t        «      5  t        ||fddi|¤Ž d d d «       y # 1 sw Y   y xY w)Nr   r>   rF   rÉ   ©rÈ   z:))rÈ   ÚblablarÝ   T)rE   Úfilter_paramsrE   )
rO   rP   rQ   rR   r)   r'   r2   r†   r‡   r‰   )rZ   r[   r^   rÃ   Úparamsræ   s         rg   Ú"test_pairwise_kernels_filter_paramrõ   "  sœ   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÜ�1�a˜sÔ#€AØ dÑ+€FÜ	˜!˜QÐ	K u¸DÑ	KÀFÑ	K€BÜ�A�rÔä	�‰”yÕ	!Ü˜˜AÑ6 eÐ6¨vÒ6÷ 
"×	!Ñ	!ús   Â
B#Â#B,zmetric, funcc                 ó€  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t	        ||| ¬«      } |||«      }t        ||«        | ||«       ||«      «      }t        ||«       | t        v r1t        |    ||«      }	t        j                  |	«      }	t        |	|«       y y )Nr   r>   rD   )rO   rP   rQ   rR   r    r2   r   Údiag)
rE   r£   r�   rZ   r[   r^   r\   r]   ÚS3Ú	distancess
             rg   Útest_paired_distancesrú   /  s´   € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!€Aà×Ñ˜&Ó!€Aä˜˜A fÔ-€AÙ	ˆa�‹€BÜ�A�rÔÙ	‰m˜AÓ¡¨aÓ 0Ó	1€BÜ�A�rÔØÔ,Ñ,ô 0°Ñ7¸¸1Ó=ˆ	Ü—G‘G˜IÓ&ˆ	Ü˜	 1Õ%ð -r·   c                 ó²  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }t        ||d¬«      }t        ||d„ ¬«      }t        ||«       |j                  d«      }t        j                  t        «      5  t        ||«       d d d «       y # 1 sw Y   y xY w)	Nr   r>   FrA   rN   rD   c                 óR   — t        j                  | |z
  «      j                  d¬«      S )Nr   ©Úaxis)rO   Úabsr—   rÚ   s     rg   rÛ   z0test_paired_distances_callable.<locals>.<lambda>P  s   € ´B·F±F¸1¸q¹5³M×4EÑ4EÈ1Ð4EÔ4Mr·   rË   )
rO   rP   rQ   rR   rS   r    r2   r†   r‡   r¬   )rY   rZ   r[   r^   r\   r]   s         rg   Útest_paired_distances_callabler   F  s³   € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aä˜˜A kÔ2€AÜ	˜!˜QÑ'MÔ	N€BÜ�A�rÔð 	×Ñ˜&Ó!€AÜ	�‰”zÕ	"Ü˜˜AÔ÷ 
#×	"Ñ	"ús   Â7CÃCÚ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                  j                  d«      }|j                  dd«      }|j                  dd«      }t        ||d¬	«      }|j                  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        ||«       y )Nr   rL   r©   éþÿÿÿr¥   rG   r@   rC   rD   ÚsqeuclideanÚsquaredT)rE   Úmetric_kwargsrN   rƒ   r	   éa   é•   éo   rý   )rþ   rE   çH¯¼šò×z>©Úrtol)rO   rr   r%   r$   r2   Útyper±   r	   rP   rQ   r•   r#   ÚargminÚrangeÚlenr4   Úasfortranarray)r  r�   rY   r[   r^   ÚXspÚYspÚexpected_idxÚexpected_valsÚexpected_vals_sqÚidxÚvalsÚidx2ÚidxspÚvalsspÚidxsp2Úvals2Úidx3Úidx4rZ   Ú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                                  rg   Ú"test_pairwise_distances_argmin_minr+  \  s6  € ô
 	�
‰
�Q�C˜!˜�: \Ô2€AÜ
�
‰
�R�D˜1˜#�; lÔ3€Aá
˜Ó
€CÙ
˜ Ô
.€Cà�q�6€LØ˜�F€MØ˜1�vÐô .¨a°¸;ÔG�I€CˆÜ$ Q¨°+Ô>€DÜ�C˜Ô&Ü�D˜,Ô'Ü�D˜-Ô(ä1°#°sÀ;ÔO�M€Eˆ6Ü& s¨C¸ÔD€FÜ�E˜<Ô(Ü�F˜LÔ)Ü�F˜MÔ*ä�‹;œ"Ÿ*™*Ò$Ð$Ð$Ü�‹<œ2Ÿ:™:Ò%Ð%Ð%ô .¨a°¸=ÔI�I€CˆÜ/Ø	ˆ1�[°¸DÐ0Aô�K€Dˆ%ô % Q¨°-Ô@€DÜ$Ø	ˆ1�[°¸DÐ0Aô€Dô �DÐ*Ô+Ü�EÐ+Ô,ä�C˜Ô&Ü�D˜,Ô'Ü�D˜,Ô'Ü�D˜,Ô'ô .¨a°¸;ÔG�I€CˆÜ$ Q¨°+Ô>€DÜ�C˜Ô&Ü�D˜,Ô'Ü�D˜-Ô(ä1°#°sÀ;ÔO�M€Eˆ6Ü& s¨C¸Ô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€DØ—K‘K Q�KÓ'€MØ˜¬¬c°-Ó.@Ó(AÐAÑB€Mä)FØ	ˆ1�1˜[ô*Ñ&ÐÐ&ô �MÐ#3¸$Õ?Ü�MÐ#3¸$Õ?ô 5°Q¸ÀÔBÑ€HˆfÜ4°Q¸ÀÔBÑ€Hˆfä�F˜FÔ#Ü�x Ô*ä4°Q¸ÀÔBÑ€HˆfÜ4°Q¸ÀÔBÑ€Hˆfä�F˜FÔ#Ü�x Ô*ô )¨¨A°AÔ6€HÜ(¨¨A°AÔ6€Hä�x Ô*ä(¨¨A°AÔ6€HÜ(¨¨A°AÔ6€Hä�x Ô*ô 4°A°qÓ9ÐÜ3Ü
×Ñ˜!Óœb×/Ñ/°Ó2óÐô Ð*Ð,?Õ@r·   c                 ó   — | d d …d d…f   S )Néd   r¶   ©r   Ústarts     rg   Ú_reduce_funcr0  Ø  s   € Ø’�4�C�4�‰=Ðr·   c                 ó¬  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |«      d d …d d…f   }t        |d t        d¬«      }t        |t        «      sJ ‚t        |«      }t        |«      dkD  sJ ‚|d   j                  |j                  k(  sJ ‚t        t        j                  |«      |d	¬
«       y )Nr   )i�  r@   FrA   r-  ç      ð>©Úreduce_funcÚworking_memoryrL   r
  ©Úatol)rO   rP   rQ   rR   rS   r#   r&   r0  r°   r   Úlistr  rT   r2   Úvstack)rY   rZ   r[   r\   ÚS_chunkss        rg   Ú&test_pairwise_distances_chunked_reducer;  Ü  sÀ   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€Aä˜1Óša  # ˜gÑ&€AÜ)Ø	ˆ4œ\¸&ô€Hô �h¤Ô.Ð.Ð.Ü�H‹~€HÜˆx‹=˜1ÒÐÐØ�A‰;×Ñ §¡Ò'Ð'Ð'ô ”B—I‘I˜hÓ'¨°Ö6r·   c                 ó(  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d d„ d¬«      }t        |t        «      sJ ‚t        |«      }t        |«      dkD  sJ ‚t        d	„ |D «       «      sJ ‚y )
Nr   ©ré   r@   FrA   c                  ó   — y ©Nr¶   r.  s     rg   rÛ   z=test_pairwise_distances_chunked_reduce_none.<locals>.<lambda>ò  s   € °r·   r2  r3  rL   c              3   ó$   K  — | ]  }|d u –— Œ
 y ­wr?  r¶   )Ú.0Úchunks     rg   Ú	<genexpr>z>test_pairwise_distances_chunked_reduce_none.<locals>.<genexpr>÷  s   è ø€ Ð3©( ˆu˜Œ}©(ùs   ‚)rO   rP   rQ   rR   rS   r&   r°   r   r8  r  Úall)rY   rZ   r[   r:  s       rg   Ú+test_pairwise_distances_chunked_reduce_nonerE  í  s‹   € ä
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜'Ó"×)Ñ)¨,¸UÐ)ÓC€AÜ)Ø	ˆ4Ñ5Àfô€Hô �h¤Ô.Ð.Ð.Ü�H‹~€HÜˆx‹=˜1ÒÐÐÜÑ3©(Ó3Ô3Ð3Ñ3r·   Úgood_reducec                 ó   — t        | «      S r?  ©r8  ©ÚDr/  s     rg   rÛ   rÛ   ý  s   € œ˜aœr·   c                 ó,   — t        j                  | «      S r?  )rO   r®   rI  s     rg   rÛ   rÛ   þ  s   € œŸ™ !œr·   c                 ó.   — t        | «      t        | «      fS r?  rH  rI  s     rg   rÛ   rÛ   ÿ  s   € œ$˜q›'¤4¨£7Ñ+r·   c                 ó   —  || «      S r?  r¶   )rJ  r/  Úscipy_csr_types      rg   rÛ   rÛ     s	   € ¹ÀqÔ8Ir·   c                 óP   —  || «      t        j                  | «      t        | «      fS r?  )rO   r®   r8  )rJ  r/  Úscipy_dok_types      rg   rÛ   rÛ     s!   € Ù˜1ÓÜ�H‰H�Q‹KÜ�‹Gñ9
r·   c                 ó‚   — t        j                  d«      j                  dd«      }t        |d | d¬«      }t	        |«       y )Nré   r´   rL   é@   r3  )rO   Úaranger¾   r&   Únext)rF  r[   r:  s      rg   Ú,test_pairwise_distances_chunked_reduce_validrU  ú  s:   € ô* 	�	‰	�"‹×Ñ˜b !Ó$€AÜ)Ø	ˆ4˜[¸ô€Hô 	ˆ…Nr·   )Ú
bad_reduceÚerr_typeÚmessagec                 ó6   — t        j                  | | dd  g«      S ©Nr´   ©rO   Úconcatenate©rJ  Úss     rg   rÛ   rÛ     s   € œŸ™¨¨A¨b¨c¨F¨Ô4r·   zlength 11\..* input: 10\.c                 ó:   — | t        j                  | | dd  g«      fS rZ  r[  r]  s     rg   rÛ   rÛ     s   € ˜!œRŸ^™^¨Q°°"°#°¨KÓ8Ñ9r·   z!length \(10, 11\)\..* input: 10\.c                 ó   — | d d | fS )Né	   r¶   r]  s     rg   rÛ   rÛ   #  s   € �q˜˜!�u˜a‘jr·   z length \(9, 10\)\..* input: 10\.c                  ó   — y)Né   r¶   r]  s     rg   rÛ   rÛ   %  s   € ˜r·   z2returned 7\. Expected sequence\(s\) of length 10\.c                  ó   — y)N)rc  é   r¶   r]  s     rg   rÛ   rÛ   *  s   € ˜r·   z9returned \(7, 8\)\. Expected sequence\(s\) of length 10\.c                 ó0   — t        j                  d«      dfS )Nré   ra  )rO   rS  r]  s     rg   rÛ   rÛ   /  s   € œ"Ÿ)™) B›-¨Ñ+r·   z-, 9\)\. Expected sequence\(s\) of length 10\.c                 óü   — t        j                  d«      j                  dd«      j                  | d¬«      }t	        |d |d¬«      }t        j                  ||¬«      5  t        |«       d d d «       y # 1 sw Y   y xY w)	Nré   r´   rL   FrA   rR  r3  r’   )rO   rS  r¾   rS   r&   r†   r‡   rT  )rY   rV  rW  rX  r[   r:  s         rg   Ú.test_pairwise_distances_chunked_reduce_invalidrh    se   € ôD 	�	‰	�"‹×Ñ˜b !Ó$×+Ñ+¨L¸uÐ+ÓE€AÜ)Ø	ˆ4˜Z¸ô€Hô 
�‰�x wÖ	/ÜˆXŒ÷ 
0×	/Ñ	/ús   ÁA2Á2A;c                 ó:  — t        | |||¬«      }t        |t        «      sJ ‚t        |«      }|€| n|}t	        |«      dz  dz  }|D ]"  }|j
                  }|t        ||«      dz  k  rŒ"J ‚ t        j                  |«      }t        | ||¬«      }	t        ||	d¬«       y )N©r5  rE   re  g      °>i   rD   r
  r6  )r&   r°   r   r8  r  ÚnbytesÚmaxrO   r9  r#   r2   )
r[   r^   r5  rE   ÚgenÚblockwise_distancesÚmin_block_mibÚblockÚmemory_usedr\   s
             rg   Ú check_pairwise_distances_chunkedrr  @  s¤   € Ü
$ Q¨¸.ÐQWÔ
X€CÜ�cœ=Ô)Ð)Ð)Ü˜s›)ÐØˆY‰˜A€AÜ˜“F˜Q‘J Ñ'€Mã$ˆØ—l‘lˆØœc .°-Ó@À5ÑHÓHÐHÐHð %ô Ÿ)™)Ð$7Ó8ÐÜ˜1˜a¨Ô/€AÜÐ'¨°Ö6r·   )rC   Úl2r  c                 ó@  — t         j                  j                  d«      }|j                  dd¬«      j	                  |d¬«      }t        t        |d| ¬«      «      }t        |«      dkD  sJ ‚t        t        j                  t        j                  |«      «      dd	¬
«       y )Nr   ©éè  ré   ç    _ B©ÚsizeÚscaleFrA   rL   rj  ç»½×Ùß|Û=r  )rO   rP   rQ   ÚnormalrS   r8  r&   r  r2   r÷   r9  )rE   rY   rZ   r[   Úchunkss        rg   Ú(test_pairwise_distances_chunked_diagonalr~  P  sz   € ä
�)‰)×
Ñ
 Ó
"€CØ�
‰
˜
¨$ˆ
Ó/×6Ñ6°|È%Ð6ÓP€AÜÔ,¨Q¸qÈÔPÓQ€FÜˆv‹;˜Š?Ðˆ?Ü”B—G‘GœBŸI™I fÓ-Ó.°¸Ö>r·   c                 óè   — t         j                  j                  d«      }|j                  dd¬«      j	                  |d¬«      }t        || d¬«      }t        t        j                  |«      dd	¬
«       y )Nr   ru  rw  rx  FrA   rG   rÌ   r{  r6  )rO   rP   rQ   r|  rS   r#   r2   r÷   )rE   rY   rZ   r[   rù   s        rg   Ú)test_parallel_pairwise_distances_diagonalr€  Y  s[   € ä
�)‰)×
Ñ
 Ó
"€CØ�
‰
˜
¨$ˆ
Ó/×6Ñ6°|È%Ð6ÓP€AÜ" 1¨V¸AÔ>€IÜ”B—G‘G˜IÓ&¨°Ö6r·   z0ignore:Could not adhere to working_memory configc                 óþ  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }t        |d dd¬«       t        dd«      D ]  }t        |d d	|z  d¬«       Œ t        |j                  «       d dd¬«       |j                  d
«      j	                  | d¬«      }t        ||dd¬«       t        |j                  «       |j                  «       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 «       y # 1 sw Y   y xY w)Nr   )éÈ   r@   FrA   rL   rC   rj  iðÿÿÿrG   )r-  r@   i'  r   r2  r¦   )rO   rP   rQ   rR   rS   rr  r  Útolistr#   r&   r°   r   rT  r†   r‡   ÚStopIteration)rY   rZ   r[   Úpowerr^   rJ  rm  s          rg   Útest_pairwise_distances_chunkedr†  a  sJ  € ô �)‰)×
Ñ
 Ó
"€Cà×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AÜ$ Q¨¸QÀ{ÕSä�s˜A–ˆÜ(Øˆt A u¡H°[ö	
ð ô
 %Ø	�‰‹
�D¨°;õð 	×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AÜ$ Q¨¸!ÀKÕPÜ$Ø	�‰‹
�A—H‘H“J¨q¸õô % Q¨¸%ÈÕTô % Q¨¸!ÀKÕPô 	˜1Ó€AÜ
$ Q°vÀmÔ
T€CÜ�cœ=Ô)Ð)Ð)Ü�‹9˜‰>Ðˆ>Ü	�‰”}Õ	%ÜˆSŒ	÷ 
&×	%Ñ	%ús   ÅE3Å3E<Úx_array_constrÚdenseÚy_array_constrc                 óf   —  | dgg«      } |dgdgg«      }t        ||«      }t        |ddgg«       y ©Nr   rL   rG   r«   r„   )r   r2   )r‡  r‰  r[   r^   rJ  s        rg   Ú%test_euclidean_distances_known_resultrŒ  †  s@   € ñ 	˜˜�uÓ€AÙ˜˜˜a˜S�zÓ"€AÜ˜A˜qÓ!€AÜ�A˜˜c˜
�|Õ$r·   c                 óv  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd	«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd	«      } ||«      }t        ||«      }t        |||¬
«      }t        |||¬«      }	t        ||||¬«      }
t        ||«       t        |	|«       t        |
|«       t        ||t        j                  |«      t        j                  |«      ¬«      }t        j                  t        «      5  t        ||«       d d d «       y # 1 sw Y   y xY w)Nr   ©ré   ré   FrA   ©é   ré   rG   rL   rý   r´   ©ÚX_norm_squared©ÚY_norm_squared©r’  r”  )rO   rP   rQ   rR   rS   r…   r—   r¾   r   r2   Ú
zeros_liker†   r‡   rˆ   )rY   r‰  rZ   r[   r^   Ú	X_norm_sqÚ	Y_norm_sqÚD1ÚD2ÚD3ÚD4Úwrong_Ds               rg   Ú#test_euclidean_distances_with_normsrž  ˜  sl  € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€Að —‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€Iá�qÓ€Aä	˜Q Ó	"€BÜ	˜Q °)Ô	<€BÜ	˜Q °)Ô	<€BÜ	˜Q °)ÈIÔ	V€BÜ�B˜ÔÜ�B˜ÔÜ�B˜Ôô "Ø	Ø	Ü—}‘} YÓ/Ü—}‘} YÓ/ô	€Gô 
�‰”~Õ	&Ü˜ Ô$÷ 
'×	&Ñ	&ús   ÆF/Æ/F8Ú	symmetricTc                 óL  — t         j                  j                  | «      }|j                  d«      }|r|n|j                  d«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd«      }|j	                  t         j
                  «      dz  j                  d¬«      j                  dd«      }t        ||«      }t        |||¬«      }t        |||¬«      }	t        ||||¬	«      }
t        ||«       t        |	|«       t        |
|«       y )
NrŽ  r�  rG   rL   rý   r´   r‘  r“  r•  )
rO   rP   rQ   rR   rS   Úfloat32r—   r¾   r   r2   )Úglobal_random_seedrŸ  rZ   r[   r^   r—  r˜  r™  rš  r›  rœ  s              rg   Ú&test_euclidean_distances_float32_normsr£  ½  s÷   € ô �)‰)×
Ñ
Ð 2Ó
3€CØ×Ñ˜(Ó#€AÙ‰˜C×-Ñ-¨hÓ7€AØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IØ—‘œ"Ÿ*™*Ó%¨Ñ*×/Ñ/°QÐ/Ó7×?Ñ?ÀÀ2ÓF€IÜ	˜Q Ó	"€BÜ	˜Q °)Ô	<€BÜ	˜Q °)Ô	<€BÜ	˜Q °)ÈIÔ	V€BÜ�B˜ÔÜ�B˜ÔÜ�B˜Õr·   c            	      óè  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }|dz  j	                  d¬«      }|dz  j	                  d¬«      }t        ||||¬«      }t        |||j                  dd«      |j                  dd«      ¬«      }t        |||j                  dd«      |j                  dd«      ¬«      }t        ||«       t        ||«       t        j                  t        d	¬
«      5  t        |||d d ¬«       d d d «       t        j                  t        d¬
«      5  t        |||d d ¬«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)Nr   rŽ  r�  rG   rL   rý   r•  r´   zIncompatible dimensions for Xr’   r?   r‘  zIncompatible dimensions for Yr“  )rO   rP   rQ   rR   r—   r   r¾   r2   r†   r‡   r¬   )rZ   r[   r^   r’  r”  r™  rš  r›  s           rg   Ú$test_euclidean_distances_norm_shapesr¥  Î  sO  € ä
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜(Ó#€AØ×Ñ˜(Ó#€Aà˜‘d—Z‘Z Q�ZÓ'€NØ˜‘d—Z‘Z Q�ZÓ'€Nä	Ø	ˆ1˜^¸Nô
€Bô 
Ø	Ø	Ø%×-Ñ-¨b°!Ó4Ø%×-Ñ-¨b°!Ó4ô	
€Bô 
Ø	Ø	Ø%×-Ñ-¨a°Ó4Ø%×-Ñ-¨a°Ó4ô	
€Bô �B˜ÔÜ�B˜Ôä	�‰”zÐ)HÖ	IÜ˜A˜q°ÀÀÐ1CÕD÷ 
Jä	�‰”zÐ)HÖ	IÜ˜A˜q°ÀÀÐ1CÕD÷ 
JÐ	I÷ 
JÐ	Iúç	IÐ	Iús   ÄEÅE(ÅE%Å(E1c                 óx  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }d||dk  <   |j                  d«      j	                  | d¬«      }d||dk  <   t        ||«      } ||«      } ||«      }t        ||«      }t        ||d¬«       |j                  | k(  sJ ‚y )	Nr   ©r-  ré   FrA   çš™™™™™é?rŽ  ç�íµ ÷Æ°>r  )	rO   rP   rQ   rR   rS   r   r   r2   rT   )rY   r‡  r‰  rZ   r[   r^   Úexpectedrù   s           rg   Útest_euclidean_distancesr«  ð  s½   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¨L¸uÐ+ÓE€AØ€A€aˆ#�g�JØ×Ñ˜(Ó#×*Ñ*¨<¸eÐ*ÓD€AØ€A€aˆ#�g�Jä�Q˜‹{€Há�qÓ€AÙ�qÓ€AÜ# A qÓ)€Iô �I˜x¨dÕ3Ø�?‰?˜lÒ*Ð*Ñ*r·   c                 ó"  — t         j                  j                  d«      }|j                  d«      j	                  | d¬«      }d||dk  <   t        t        |«      «      } ||«      }t        |«      }t        ||d¬«       |j                  | k(  sJ ‚y )Nr   r§  FrA   r¨  r©  r  )
rO   rP   rQ   rR   rS   r   r
   r   r2   rT   )rY   r‡  rZ   r[   rª  rù   s         rg   Útest_euclidean_distances_symr­    s‡   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¨L¸uÐ+ÓE€AØ€A€aˆ#�g�Jäœ% ›(Ó#€Há�qÓ€AÜ# AÓ&€Iô �I˜x¨dÕ3Ø�?‰?˜lÒ*Ð*Ñ*r·   Ú
batch_size)Nr?   rc  ée   c                 óÜ  — t         j                  j                  d«      }|j                  d«      j	                  t         j
                  «      }d||dk  <   |j                  d«      j	                  t         j
                  «      }d||dk  <   t        ||«      } ||«      } ||«      }t        ||| ¬«      }t        j                  t        j                  |d«      «      }t        ||d¬«       y )Nr   r§  r¨  rŽ  ©r^   r®  r©  r  )rO   rP   rQ   rR   rS   r¡  r   r   ÚsqrtÚmaximumr2   )r®  r‡  r‰  rZ   r[   r^   rª  rù   s           rg   Útest_euclidean_distances_upcastr´  &  sÄ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¬B¯J©JÓ7€AØ€A€aˆ#�g�JØ×Ñ˜(Ó#×*Ñ*¬2¯:©:Ó6€AØ€A€aˆ#�g�Jä�Q˜‹{€Há�qÓ€AÙ�qÓ€AÜ+¨A°¸zÔJ€IÜ—‘œŸ
™
 9¨aÓ0Ó1€Iô �I˜x¨dÖ3r·   c                 óp  — t         j                  j                  d«      }|j                  d«      j	                  t         j
                  «      }d||dk  <   t        t        |«      «      } ||«      }t        ||| ¬«      }t        j                  t        j                  |d«      «      }t        ||d¬«       y )Nr   r§  r¨  r±  r©  r  )rO   rP   rQ   rR   rS   r¡  r   r
   r   r²  r³  r2   )r®  r‡  rZ   r[   rª  rù   s         rg   Ú#test_euclidean_distances_upcast_symr¶  E  s‘   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$×+Ñ+¬B¯J©JÓ7€AØ€A€aˆ#�g�Jäœ% ›(Ó#€Há�qÓ€AÜ+¨A°¸zÔJ€IÜ—‘œŸ
™
 9¨aÓ0Ó1€Iô �I˜x¨dÖ3r·   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¬«       y )Nr«   r©   r·  r  )rO   r®   r   r   r2   )rT   Úepsr  rº  r[   r^   rù   rª  s           rg   Ú'test_euclidean_distances_extreme_valuesr½  \  s]   € ô  	�‰�3�%˜#‘+� eÔ,€AÜ
�‰�3˜‘9�+ Ñ#Ð$¨EÔ2€Aä# A qÓ)€IÜ�Q˜‹{€Hä�I˜x¨dÖ3r·   r  c                 óÚ   — t         j                  j                  d«      }|j                  dd«      }|j                  dd«      }t	        ||| ¬«      }t        ||| ¬«      }t        ||«       y )Né9  r¥   r@   )r^   r  )rO   rP   rQ   r•   r   r   r2   )r  rZ   r[   r^   Únormal_distanceÚnan_distances         rg   Ú8test_nan_euclidean_distances_equal_to_euclidean_distancerÂ  u  s\   € ô �)‰)×
Ñ
 Ó
%€CØ�	‰	�!�Q‹€AØ�	‰	�!�Q‹€Aä)¨!¨q¸'ÔB€OÜ*¨1°¸7ÔC€LÜ�O \Õ2r·   r[   r^   c                 ó²   — t        j                  t        «      5 }t        | |¬«       d d d «       d}|t	        j
                  «      k(  sJ ‚y # 1 sw Y   Œ&xY w)Nrã   zBInput contains infinity or a value too large for dtype('float64').)r†   r‡   r¬   r   ÚstrÚvalue)r[   r^   ÚexcinfoÚexp_msgs       rg   Ú,test_nan_euclidean_distances_infinite_valuesrÈ  �  sI   € ô 
�‰”zÔ	" gÜ  QÕ'÷ 
#ð S€GØ”c˜'Ÿ-™-Ó(Ò(Ð(Ñ(÷	 
#Ð	"ús   šAÁAzX, X_diag, missing_valuerG   r´   c                 ó*  — t        j                  d|g|dgg«      }t        | |¬«      }t        ||«       t        | d|¬«      }t        |dz  |«       t        | | |¬«      }t        ||«       t        | | j	                  «       |¬«      }t        ||«       y )Nç        r   ©Úmissing_valuesT©r  rÌ  rG   )rO   r®   r   r2   rB   )r[   ÚX_diagÚmissing_valueÚexp_distr   Údist_sqÚdist_twoÚdist_two_copys           rg   Ú test_nan_euclidean_distances_2x2rÔ  ‹  s‡   € ô  �x‰x˜#˜v˜¨°¨Ð4Ó5€Hä" 1°]ÔC€DÜ�H˜dÔ#ä% a°ÀmÔT€GÜ�H˜a‘K Ô)ä& q¨!¸MÔJ€HÜ�H˜hÔ'ä+¨A¨q¯v©v«xÈÔV€MÜ�H˜mÕ,r·   rÏ  c                 óF  — t        j                  | | gddgg«      }t        j                  t         j                  t         j                  gt         j                  dgg«      }t        || ¬«      }t	        ||«       t        ||j                  «       | ¬«      }t	        ||«       y )Nr   rL   rË  )rO   r®   rU   r   r2   rB   )rÏ  r[   rÐ  r   s       rg   Ú)test_nan_euclidean_distances_complete_nanrÖ  ª  sz   € ä
�‰�= -Ð0°1°a°&Ð9Ó:€Aä�x‰xœ"Ÿ&™&¤"§&¡&Ð)¬B¯F©F°A¨;Ð7Ó8€Hä" 1°]ÔC€DÜ�H˜dÔ#ä" 1 a§f¡f£h¸}ÔM€DÜ�H˜dÕ#r·   c           	      óœ  — 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        ||j                  «       | ¬«      }t        ||«       t        ||«       t        ||d
¬«      }t        ||d¬«      }	t        ||	«       y )Nr«   g      @g      @r„   g      @g      @g      @rË  rL   TrÍ  g      D@rG   Fg      9@rA   )rO   r®   r   r3   ÚTr2   r²  rB   )
rÏ  r[   r^   r™  rš  r›  rœ  ÚD5ÚD6ÚD7s
             rg   Ú'test_nan_euclidean_distances_not_trivalrÜ  ·  s„  € ä
�‰à�-  c¨3Ð/Ø˜C  c¨=Ð9Ø�- °¸sÐCð	
ó	€Aô 	�‰à˜C  m°SÐ9Ø˜M¨3°°SÐ9Ø˜M¨=¸#¸sÐCð	
ó	€Aô 
!  A°mÔ	D€BÜ	   A°mÔ	D€Bä˜˜BŸD™DÔ!ô ÜØˆbˆqˆE�1�R�a�5 $°}ô	
ð 4Ð	4Ð5ô	ô ÜØˆa�ˆF�A�a˜�F E¸-ô	
ô �'‰'Ð;Ó
<Ð	=Ð>ô	ô 
! °=Ô	A€BÜ	   A°mÔ	D€BÜ	   A§F¡F£H¸]Ô	K€BÜ�B˜ÔÜ�B˜Ôô 
!  A¨DÔ	1€BÜ	   A¨EÔ	2€BÜ�B˜Õr·   c                 óÆ   — t        j                  dd| dgd| d| gg«      }t        || d¬«      }t        j                  |dk\  «      sJ ‚t        || d¬«      }t	        |d	«       y )
Ngáz®G‘^Àg     @„@gÍÌÌÌÌìB@gÿ–|Ã¯Æ@T)rÌ  r  r   FrÊ  )rO   r®   r   rD  r2   )rÏ  r[   Údist_squaredr   s       rg   Ú7test_nan_euclidean_distances_one_feature_match_positiverß  ì  ss   € ô
 	�‰à�e˜]¨EÐ2Ø�m Z°Ð?ð	
ó	€Aô +Ø	˜-°ô€Lô �6‰6�, !Ñ#Ô$Ð$Ð$ä" 1°]ÈEÔR€DÜ�D˜#Õr·   c                  ó¦  — t         j                  j                  d«      } t        j                  | 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                  | j	                  dd«      «      }t        |«      }t        |t        j                  |«         dg|j                  d	   z  «       t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚y )
Nr¿  iŽ  rÊ  r{  r6  r„   rv  iˆ  r   )rO   rP   rQ   rÿ   Úrandr9  r   r2   rD  Údiag_indices_fromrX   )rZ   rÀ   ÚXArJ  ÚXBrš  r[   s          rg   Útest_cosine_distancesrå    s†  € ä
�)‰)×
Ñ
 Ó
%€CÜ
�‰ˆs�x‰x˜‹}Ó€AÜ	�‰�A�q�6Ó	€BÜ˜Ó€AÜ�A˜˜c˜
 S¨# JÐ/°eÕ<ä�6‰6�!�s‘(ÔÐÐÜ�6‰6�!�s‘(ÔÐÐä�A”b×*Ñ*¨1Ó-Ñ.°°c°
Ô;ä	�‰�A˜�r�7Ó	€BÜ	˜"Ó	€Bä�6‰6�"˜‘)ÔÐÐÜ�6‰6�"˜‘)ÔÐÐä�B˜#˜s˜ c¨3 ZÐ0Ô1ô 	�‰ˆs�x‰x˜˜dÓ#Ó$€AÜ˜Ó€Aä�A”b×*Ñ*¨1Ó-Ñ.°°¸¿¹À¹
Ñ0BÔCÜ�6‰6�!�s‘(ÔÐÐÜ�6‰6�!�s‘(ÔÐÑr·   c                  óâ  — d„ } t         j                  j                  d«      }|j                  d«      }|j                  d«      }t        j                  |D ��cg c]  }|D �cg c]  } | ||«      ‘Œ c}‘Œ c}}«      }t        ||«      }t        ||«       |j                  d«      }d}t        j                  t        |¬«      5  t        |«       d d d «       y c c}w c c}}w # 1 sw Y   y xY w)Nc                 óZ  — |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   rL   rG   )rO   ÚsinÚcosÚarcsinr²  )rÀ   rÁ   Údiff_latÚdiff_lonÚaÚcs         rg   Úslow_haversine_distancesz:test_haversine_distances.<locals>.slow_haversine_distances!  s™   € Ø�Q‘4˜!˜A™$‘;ˆØ�Q‘4˜!˜A™$‘;ˆÜ�F‰F�8˜a‘<Ó  AÑ%Ü�F‰F�1�Q‘4‹Lœ2Ÿ6™6 ! A¡$›<Ñ'¬"¯&©&°¸A±Ó*>À!Ñ*CÑCñ
ˆð ”—	‘	œ"Ÿ'™' !›*Ó%Ñ%ˆØˆr·   r   rJ   )ré   rG   )ré   r¥   z-Haversine distance only valid in 2 dimensionsr’   )
rO   rP   rQ   rR   r®   r   r2   r†   r‡   r¬   )	rï  rZ   r[   r^   rÀ   rÁ   r™  rš  Úerr_msgs	            rg   Útest_haversine_distancesrñ    sË   € òô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜'Ó"€AÜ	�‰ÉÔJÉÀ1¹AÓ>¹A°qÑ,¨Q°Õ2¸AÓ>ÈÒJÓ	K€BÜ	˜Q Ó	"€BÜ�B˜Ôà×Ñ˜'Ó"€AØ=€GÜ	�‰”z¨Ö	1Ü˜AÔ÷ 
2Ð	1ùò ?ùÓJ÷ 
2Ð	1ús$   Á	C
Á"CÁ2C
ÃC%ÃC
Ã%C.c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y r‹  )r!   r2   ©r[   r^   rJ  s      rg   Útest_paired_euclidean_distancesrô  :  ó6   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÜ" 1 aÓ(€AÜ�A˜˜S�zÕ"r·   c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y r‹  )r"   r2   ró  s      rg   Útest_paired_manhattan_distancesr÷  B  rõ  r·   c                  óP   — dgdgg} dgdgg}t        | |«      }t        |ddg«       y )Nr   rL   rG   rK   )r   r2   ró  s      rg   Útest_paired_cosine_distancesrù  J  s6   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÜ  1Ó%€AÜ�A˜˜S�zÕ"r·   c                  óT  — t         j                  j                  d«      } | j                  d«      }| j                  d«      }t	        ||«      }d}t        |||¬«      }|j                  t        k(  sJ ‚t        |«      D ]t  \  }}t        |«      D ]a  \  }}	t        j                  ||	z
  dz  ||	z   z  «       }
t        j                  ||
z  «      }t        |||f   |
«       t        |||f   |«       Œc Œv t        |«      }t        t        j                  |«      d«       t        j                  |dkD  «      sJ ‚t        j                  |t        j                  t        j                  |«      «      z
  dk  «      sJ ‚| j                  d«      j                  t         j                   «      }| j                  d«      j                  t         j                   «      }t        ||«      }|j                  t         j                   k(  sJ ‚| j                  d«      j                  t         j"                  «      }t        ||«      }t        j$                  |«      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   kD  sJ ‚|d   |d   kD  sJ ‚t'        j(                  t*        «      5  t        ddgg«       d d d «       t'        j(                  t*        «      5  t        ddggddgg«       d d d «       t'        j(                  t*        «      5  t        ddggddgg«       d d d «       t'        j(                  t*        «      5  t        ddggg d¢g«       d d d «       y # 1 sw Y   Œ¦xY w# 1 sw Y   Œ~xY w# 1 sw Y   ŒVxY w# 1 sw Y   y xY w)Nr   r>   r=  rÉ   rñ   rG   rL   g333333Ó?gffffffæ?r«   gÍÌÌÌÌÌì?rH   )r   rL   )rL   rL   )rL   r   r´   )çš™™™™™É?rû  g333333ã?)rO   rP   rQ   rR   r   r   rT   r¿   Ú	enumerater—   Úexpr3   r4   r÷   rD  rS   r¡  Úint32Úisfiniter†   r‡   r¬   )rZ   r[   r^   ÚK_addrÈ   rÃ   ÚirÀ   ÚjrÁ   rà   Úchi2_exps               rg   Útest_chi_square_kernelr  R  s  € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜'Ó"€AÜ   AÓ&€EØ€EÜ�A�q Ô&€AØ�7‰7”eÒÐÐÜ˜!–‰ˆˆ1Ü˜a–L‰DˆAˆqÜ—F‘F˜A ™E a™<¨1¨q©5Ñ1Ó2Ð2ˆDÜ—v‘v˜e d™lÓ+ˆHÜ  a¨ d¡¨TÔ2Ü  ! Q $¡¨Õ2ñ	 !ð ô 	�A‹€AÜ”r—w‘w˜q“z 1Ô%ä�6‰6�!�a‘%Œ=Ðˆ=Ü�6‰6�!”b—g‘gœbŸg™g a›jÓ)Ñ)¨AÑ-Ô.Ð.Ð.à×Ñ˜&Ó!×(Ñ(¬¯©Ó4€AØ×Ñ˜'Ó"×)Ñ)¬"¯*©*Ó5€AÜ�A�qÓ€AØ�7‰7”b—j‘jÒ Ð Ð ð 	×Ñ˜'Ó"×)Ñ)¬"¯(©(Ó3€AÜ�A�qÓ€AÜ�;‰;�q‹>×ÑÔÐÐØ�7‰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Õ	"Ü�a˜�V�HšÐ/Ô0÷ 
#Ð	"÷ 
#Ð	"úç	"Ð	"úç	"Ð	"ú÷ 
#Ð	"ús0   ËM:Ë6NÌ*NÍNÍ:NÎNÎNÎN'Úkernelc                 ó¤   — t         j                  j                  d«      }|j                  d«      } | ||«      }t	        ||j
                  d«       y )Nr   r>   é   )rO   rP   rQ   rR   r2   rØ  )r  rZ   r[   rÃ   s       rg   Útest_kernel_symmetryr  ˆ  sC   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÙˆq�!‹€AÜ�A�q—s‘s˜BÕr·   c                 ó°   — t         j                  j                  d«      }|j                  d«      } ||«      } | ||«      } | ||«      }t	        ||«       y ©Nr   r>   )rO   rP   rQ   rR   r2   )r  r�   rZ   r[   rŠ   rÃ   ræ   s          rg   Útest_kernel_sparser  ›  sS   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÙ˜QÓ€HÙˆq�!‹€AÙ	�˜(Ó	#€BÜ�A�rÕr·   c            	      ó  — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        |j                  d d d…   |D �cg c]  }t        j                  |«      dz  ‘Œ c}«       y c c}w )Nr   r>   é   rG   )	rO   rP   rQ   rR   r   r2   Úflatr   Únorm)rZ   r[   rÃ   rÀ   s       rg   Útest_linear_kernelr  °  sg   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ�a˜Ó€Aä�A—F‘F™3˜Q˜3‘K¹qÓ!A¹q¸!¤&§+¡+¨a£.°AÓ"5¸qÑ!AÕBùÒ!As   ÁA>
c                  óÚ   — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        |j                  d d d…   t        j                  d«      «       y )Nr   r>   r  r?   )rO   rP   rQ   rR   r)   r2   r  Úones©rZ   r[   rÃ   s      rg   Útest_rbf_kernelr  ¸  sP   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ�1�aÓ€Aä�A—F‘F™3˜Q˜3‘K¤§¡¨£Õ,r·   c                  óš  — t         j                  j                  d«      } | j                  d«      }t	        ||«      }t        t        j                  |«      t        j                  d«      «       t        j                  |dkD  «      sJ ‚t        j                  |t        j                  t        j                  |«      «      z
  dk  «      sJ ‚y )Nr   r>   r?   rL   )	rO   rP   rQ   rR   r   r2   r÷   r  rD  r  s      rg   Útest_laplacian_kernelr  À  s�   € Ü
�)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AÜ˜˜AÓ€Aä”B—G‘G˜A“J¤§¡¨£
Ô+ô �6‰6�!�a‘%Œ=Ðˆ=Ü�6‰6�!”b—g‘gœbŸg™g a›jÓ)Ñ)¨AÑ-Ô.Ð.Ñ.r·   zmetric, pairwise_funcrß   r   c                 óŠ  — t         j                  j                  d«      }|j                  d«      }|j                  d«      } ||«      } ||«      } |||d¬«      }t	        |«      sJ ‚ |||d¬«      }	t	        |	«      rJ ‚t        |j                  «       |	«       t        ||| ¬«      }
t        |j                  «       |
«       y )Nr   r>   rË   F)Údense_outputTrq   )rO   rP   rQ   rR   r   r2   Útoarrayr'   )rE   Úpairwise_funcr�   rZ   r[   r^   ÚXcsrÚYcsrrå   ræ   ÚK3s              rg   Ú&test_pairwise_similarity_sparse_outputr  Ì  sµ   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÙ˜Ó€DÙ˜Ó€Dñ 
�t˜T°Ô	6€BÜ�BŒ<Ðˆ<ñ 
�q˜!¨$Ô	/€BÜ˜Œ|ÐÐÜ�B—J‘J“L "Ô%ô 
˜!˜q¨Ô	0€BÜ�B—J‘J“L "Õ%r·   c                 óR  — t         j                  j                  d«      }|j                  d«      }|j                  d«      } | |«      } | |«      }|d f||f|d f||ffD ]E  \  }}t	        ||d¬«      }t        |«      }|�t        |«      }t	        ||d¬«      }	t        ||	«       ŒG y )Nr   r>   rË   r   rq   rß   )rO   rP   rQ   rR   r'   r+   r2   )
r�   rZ   r[   r^   r  r  ÚX_ÚY_rå   ræ   s
             rg   Útest_cosine_similarityr"  æ  s³   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜&Ó!€AØ×Ñ˜&Ó!€AÙ˜Ó€DÙ˜Ó€Dà�t�9˜q !˜f t¨T l°T¸4°LÓA‰ˆˆBô ˜b B¨xÔ8ˆÜ�r‹]ˆØˆ>Ü˜2“ˆBÜ˜b B¨xÔ8ˆÜ˜˜BÕñ Br·   c                  ó˜   — t        j                  t        j                  d«      d«      } t        | d «      \  }}||u sJ ‚t	        | |«       y ©Né(   ©r?   re  )rO   ÚresizerS  r   r4   )rã  Ú
XA_checkedÚ
XB_checkeds      rg   Útest_check_dense_matricesr*  û  sE   € ô 
�‰”2—9‘9˜R“= &Ó	)€BÜ2°2°tÓ<Ñ€J�
Ø˜Ñ#Ð#Ð#Ü�r˜:Õ&r·   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	        ||«       y )Nr%  r&  é    ©r@   re  )rO   r'  rS  r   r4   r   ©rã  rä  r(  r)  s       rg   Útest_check_XB_returnedr/    s–   € ô 
�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”2—9‘9˜R“= &Ó	)€BÜ2°2°rÓ:Ñ€J�
Ü�r˜:Ô&Ü�r˜:Ô&ä	�‰”2—9‘9˜R“= &Ó	)€BÜ0°°RÓ8Ñ€J�
Ü�r˜:Ô&Ü�r˜:Õ&r·   c                  óâ  — t        j                  t        j                  d«      d«      } t        j                  t        j                  d«      d«      }t        j                  t
        «      5  t        | |«       d d d «       t        j                  t        j                  d«      d«      }t        j                  t
        «      5  t        | |«       d d d «       y # 1 sw Y   ŒaxY w# 1 sw Y   y xY w)Né-   )r?   ra  r,  r-  é$   )r@   ra  )rO   r'  rS  r†   r‡   r¬   r   r   ©rã  rä  s     rg   Útest_check_different_dimensionsr4    s˜   € ä	�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”2—9‘9˜R“= &Ó	)€BÜ	�‰”zÕ	"Ü˜b "Ô%÷ 
#ô 
�‰”2—9‘9˜UÓ# VÓ	,€BÜ	�‰”zÕ	"Ü˜B Ô#÷ 
#Ð	"÷	 
#Ð	"ú÷ 
#Ð	"ús   Á,CÃC%ÃC"Ã%C.c                  ó  — t        j                  d«      j                  dd«      } t        j                  d«      j                  dd«      }t        j                  t
        «      5  t        | |«       d d d «       t        j                  d«      j                  dd«      } t        j                  d«      j                  dd«      }t        j                  t
        «      5  t        | |«       d d d «       y # 1 sw Y   Œ‚xY w# 1 sw Y   y xY w)Nr1  ra  r?   r,  r@   re  )rO   rS  r¾   r†   r‡   r¬   r   r3  s     rg   Útest_check_invalid_dimensionsr6     s·   € ô 
�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰”zÕ	"Ü˜b "Ô%÷ 
#ä	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰�2‹×	Ñ	˜q !Ó	$€BÜ	�‰”zÕ	"Ü˜b "Ô%÷ 
#Ð	"÷	 
#Ð	"ú÷ 
#Ð	"ús   Á$C2ÃC>Ã2C;Ã>Dc                 óR  — t         j                  j                  d«      }|j                  d«      } | |«      }|j                  d«      } | |«      }t	        ||«      \  }}t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t	        ||«      \  }}t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚t        |«      sJ ‚t        ||z
  «      j                  «       dk(  sJ ‚y r
  )rO   rP   rQ   rR   r   r   rÿ   r—   )	r�   rZ   rã  Ú	XA_sparserä  Ú	XB_sparser(  r)  ÚXA_2_checkeds	            rg   Útest_check_sparse_arraysr;  .  s,  € ô �)‰)×
Ñ
 Ó
"€CØ	×	Ñ	˜6Ó	"€BÙ˜bÓ!€IØ	×	Ñ	˜6Ó	"€BÙ˜bÓ!€IÜ2°9¸iÓHÑ€J�
ô �JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1Ü�JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1ä4°YÀ	ÓJÑ€J�Ü�JÔÐÐÜˆy˜:Ñ%Ó&×*Ñ*Ó,°Ò1Ð1Ð1Ü�LÔ!Ð!Ð!Üˆ|˜jÑ(Ó)×-Ñ-Ó/°1Ò4Ð4Ñ4r·   c                 ó~   — | j                   }t        |«      dkD  rt        d„ | D «       «      S t        d„ | D «       «      S )NrL   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr?  )Útuplify)rA  rc   s     rg   rC  ztuplify.<locals>.<genexpr>J  s   è ø€ Ð/©Q c”W˜S—\©Qùs   ‚c              3   ó    K  — | ]  }|–— Œ y ­wr?  r¶   )rA  Úrs     rg   rC  ztuplify.<locals>.<genexpr>M  s   è ø€ �N¡˜1”Q¡ùs   ‚)rX   r  rV   )r[   r^  s     rg   r>  r>  E  s8   € à	�‰€AÜ
ˆ1ƒv�‚zäÑ/©QÓ/Ó/Ð/ô ‘N¡“NÓ"Ð"r·   c                  ó   — t         j                  j                  d«      } | j                  d«      }t	        |«      }| j                  d«      }t	        |«      }t        ||«      \  }}t        ||«       t        ||«       y r
  )rO   rP   rQ   rR   r>  r   r4   )rZ   rã  Ú	XA_tuplesrä  Ú	XB_tuplesr(  r)  s          rg   Útest_check_tuple_inputrD  P  sm   € ä
�)‰)×
Ñ
 Ó
"€CØ	×	Ñ	˜6Ó	"€BÜ˜“€IØ	×	Ñ	˜6Ó	"€BÜ˜“€IÜ2°9¸iÓHÑ€J�
Ü�y *Ô-Ü�y *Õ-r·   c                  óB  — t        j                  t        j                  d«      d«      j                  t         j                  «      } t        j                  t        j                  d«      d«      j                  t         j                  «      }t        | d «      \  }}|j                  t         j                  k(  sJ ‚t        | |«      \  }}|j                  t         j                  k(  sJ ‚|j                  t         j                  k(  sJ ‚t        | j                  t        «      |«      \  }}|j                  t        k(  sJ ‚|j                  t        k(  sJ ‚t        | |j                  t        «      «      \  }}|j                  t        k(  sJ ‚|j                  t        k(  sJ ‚y r$  )rO   r'  rS  rS   r¡  r   rT   r¿   r.  s       rg   Útest_check_preserve_typerF  \  sD  € ä	�‰”2—9‘9˜R“= &Ó	)×	0Ñ	0´·±Ó	<€BÜ	�‰”2—9‘9˜R“= &Ó	)×	0Ñ	0´·±Ó	<€Bä2°2°tÓ<Ñ€J�
Ø×ÑœrŸz™zÒ)Ð)Ð)ô 3°2°rÓ:Ñ€J�
Ø×ÑœrŸz™zÒ)Ð)Ð)Ø×ÑœrŸz™zÒ)Ð)Ð)ô 3°2·9±9¼UÓ3CÀRÓHÑ€J�
Ø×ÑœuÒ$Ð$Ð$Ø×ÑœuÒ$Ð$Ð$ô 3°2°r·y±yÄÓ7GÓHÑ€J�
Ø×ÑœuÒ$Ð$Ð$Ø×ÑœuÒ$Ð$Ñ$r·   rÍ   Ú
seuclideanÚmahalanobisÚdist_functionc           
      ó8  — t        d¬«      5  t        j                  j                  d«      }|j	                  d«      }t        t        ||¬«      «      }t        j                  t         |||| ¬«      «      «      }t        ||«       d d d «       y # 1 sw Y   y xY w)NrÉ   )r5  r   r§  rD   rÌ   )
r   rO   rP   rQ   rR   r   r
   r9  rV   r2   )rÍ   rE   rI  rZ   r[   Úexpected_distr   s          rg   Ú+test_pairwise_distances_data_derived_paramsrL  t  ss   € ô 
 sÖ	+Ü�i‰i×#Ñ# AÓ&ˆØ×Ñ˜iÓ(ˆä"¤5¨°6Ô#:Ó;ˆÜ�y‰yœ™}¨Q°vÀfÔMÓNÓOˆä˜˜mÔ,÷ 
,×	+Ñ	+ús   �A:BÂBc                 ó
  — t         j                  j                  d«      }|j                  d«      }|j                  d«      }t	        j
                  t        d| › d�¬«      5  t        ||| ¬«       d d d «       y # 1 sw Y   y xY w)Nr   r§  z+The '(V|VI)' parameter is required for the z metricr’   rD   )rO   rP   rQ   rR   r†   r‡   r¬   r#   )rE   rZ   r[   r^   s       rg   Ú1test_pairwise_distances_data_derived_params_errorrN  †  sq   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜)Ó$€AØ×Ñ˜)Ó$€Aä	�‰ÜØ<¸V¸HÀGÐLö
ô 	˜1˜a¨Õ/÷	
÷ 
ñ 
ús   Á!A9Á9B)Ú
braycurtisÚcanberraÚ	chebyshevÚcorrelationÚhammingrH  r	   rG  r  r   r   rC   Úy_is_xzY is Xz
Y is not Xc           	      ó¢  — t         j                  j                  d«      }|j                  d«      j	                  |d¬«      }i }|r|}t        t        || ¬«      «      }nÖ|j                  d«      j	                  |d¬«      }t        ||| ¬«      }| dk(  r?dt        j                  t        j                  ||g«      ddt         j                  ¬	«      i}nb| d
k(  r]dt         j                  j                  t        j                  t        j                  ||g«      j                  «      «      j                  i}t        ||fd| i|¤Ž}t!        ||«       y )Nr   r>   FrA   rD   rG  ÚVrL   )rþ   ÚddofrT   rH  ÚVIrE   )rO   rP   rQ   rR   rS   r   r
   r   Úvarr9  r…   r   ÚinvÚcovrØ  r#   r2   )	rE   rY   rT  rZ   r[   rô   r^   rK  r   s	            rg   Ú)test_numeric_pairwise_distances_datatypesr\  •  s  € ô6 �)‰)×
Ñ
 Ó
"€Cà×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€Aà€FÙØˆÜ"¤5¨°6Ô#:Ó;‰à×Ñ˜fÓ%×,Ñ,¨\ÀÐ,ÓFˆÜ˜a ¨6Ô2ˆà�\Ò!Øœ2Ÿ6™6¤"§)¡)¨Q°¨FÓ"3¸!À!Ì2Ï:É:ÔVÐW‰FØ�}Ò$ØœBŸI™IŸM™M¬"¯&©&´·±¸A¸q¸6Ó1B×1DÑ1DÓ*EÓF×HÑHÐIˆFä˜a Ñ<¨6Ð<°VÑ<€Dä�D˜-Õ(r·   Úpairwise_distances_funcc                 óœ   — ddgdt         j                  gddgddgg} | ||d¬«      }t        j                  |«      j                  «       rJ ‚y)	z8Check that `nan_euclidean` is lenient with `nan` values.r   rL   rG   r¥   r?   rI   rD   N)rO   rU   ÚisnanÚany)r]  r[   Úoutputs      rg   Útest_nan_euclidean_supportrb  Æ  sR   € ð ˆQˆ�!”R—V‘V�˜q !˜f q¨! fÐ-€AÙ$ Q¨°/ÔB€Fä�x‰x˜Ó×#Ñ#Ô%Ð%Ð%Ð%r·   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        ||«       y)zyCheck that the behavior of constant input is the same in the case of
    full of nan vector and full of zero vector.
    rI   rD   r   N)rO   rU   r$   r2   )ÚX_nanÚ
argmin_nanÚX_constÚargmin_consts       rg   Ú(test_nan_euclidean_constant_input_argminrh  Ó  su   € ô
 �f‰f”b—f‘fÐ¤§¡¬¯©Ð/´"·&±&¼"¿&¹&Ð1AÐB€EÜ*¨5°%ÀÔP€Jà�1ˆv˜˜1�v  1˜vÐ&€GÜ,¨W°gÀoÔV€Lä�J Õ-r·   zX,Y,expected_distance)rí  ÚabÚabc)rÊ  r«   r„   )r«   rÊ  r«   )r„   r«   rÊ  rí  ri  rÊ  r«   r„   c                 ó>   — d„ }t        | ||¬«      }t        ||«       y)z8Check pairwise_distances with lists of strings as input.c                 óV   — t        j                  t        | «      t        |«      z
  «      S r?  )rO   rÿ   r  rÚ   s     rg   Údummy_string_similarityzLtest_pairwise_dist_custom_metric_for_string.<locals>.dummy_string_similarityó  s   € Ü�v‰v”c˜!“fœs 1›v‘oÓ&Ð&r·   )r[   r^   rE   N)r#   r2   )r[   r^   Úexpected_distancerm  Úactual_distances        rg   Ú+test_pairwise_dist_custom_metric_for_stringrp  á  s#   € ò$'ô )¨1°Ð:QÔR€OÜ�OÐ%6Õ7r·   c                  óÀ   — d„ } t        j                  g d¢g d¢g d¢gt        ¬«      }t        j                  g d¢g d¢g d¢g«      }t        || ¬	«      }t	        ||«       y
)zjCheck that pairwise_distances does not convert boolean input to float
    when using a custom metric.
    c                 óV   — d| |z  j                  «       | |z  j                  «       z  z
  S )NrL   )r—   )Úv1Úv2s     rg   Údummy_bool_distzBtest_pairwise_dist_custom_metric_for_bool.<locals>.dummy_bool_distÿ  s&   € à�B˜‘G—=‘=“? b¨2¡g§]¡]£_Ñ4Ñ4Ð4r·   )rL   r   r   r   )rL   r   rL   r   )rL   rL   rL   rL   r©   )rÊ  rK   ç      è?)rK   rÊ  rK   )rv  rK   rÊ  )r[   rE   N)rO   r®   r™   r#   r2   )ru  r[   rn  ro  s       rg   Ú)test_pairwise_dist_custom_metric_for_boolrw  ú  sV   € ò
5ô 	�‰’,¢ªlÐ;Ä4ÔH€AäŸ™âÚÚð	
óÐô )¨1°_ÔE€OÜ�OÐ%6Õ7r·   c                 ó¼   —  | t        j                  d«      «      g} | t        j                  d«      «      g} t        dd¬«      d„ t        ||«      D «       «       y )Nr§   rG   r   )rÍ   Ú
max_nbytesc              3   óN   K  — | ]  \  }} t        t        «      ||«      –— Œ y ­wr?  )r<   r   )rA  Úm1Úm2s      rg   rC  z9test_sparse_manhattan_readonly_dataset.<locals>.<genexpr>  s)   è ø€ ð %Ù;T±°°RÐ$ŒÔ#Ó$ R¨×,Ñ;Tùs   ‚#%)rO   r  r;   Úzip)r�   Ú	matrices1Ú	matrices2s      rg   Ú&test_sparse_manhattan_readonly_datasetr€    sU   € ñ œrŸw™w v›Ó/Ð0€IÙœrŸw™w v›Ó/Ð0€Ið %„H�A !Ô$ñ %Ü;>¸yÈ)Ô;Tó%õ r·   )rC   )¥rš   Útypesr   ÚnumpyrO   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/   r0   Úsklearn.utils._testingr1   r2   r3   r4   r5   Úsklearn.utils.fixesr6   r7   r8   r9   r:   Úsklearn.utils.parallelr;   r<   rh   ÚmarkÚparametrizer}   r�   ÚDeprecationWarningr    r¢   r²   r¸   rS  rS   Ú_minkowski_kwdsrÅ   r…   r¡  r¨   rÎ   r×   rÜ   rç   rí   rï   rõ   Úitemsrú   r   Úthread_unsafer+  r0  r;  rE  rU  r¬   r‰   rh  rr  r~  r€  Úfilterwarningsr†  r®   rs   rŒ  rž  r£  r¥  r«  r­  r´  r¶  ÚparamÚxfailr½  rÂ  ÚinfrÈ  r²  rU   rÔ  rÖ  rÜ  rß  rå  rñ  rô  r÷  rù  r  r  r  r  r  r  r  r"  r*  r/  r4  r6  r;  r>  rD  rF  rL  rN  r\  rb  rh  rp  rw  r€  )rN  rP  Ú	containers   000rg   Ú<module>r˜     sÃ  ðÛ Ý ã Û Ý Ý !÷÷ õ #Ý 4÷÷ ÷ ÷ ÷ ÷ ÷ õ õ> ,÷õ ÷õ ÷õ ÷ 5òLð^ ‡�×ÑØ)Ù-Ó/Ø'ð ó ð
 ‡�×Ñ˜Ò#GÓHñ'ó Ióð'ðB ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9ñ><ó :ó :ó :ó :ð><ñF Ð,Ô-Ø‡�×Ñ˜Ð#=Ó>ñ:ó ?ó .ð:ò<2ð ‡�×Ñ˜Ð"4Ð6FÐ!GÓHñ%ó Ið%ò:Fð "˜Ÿ	™	 ! Q›×.Ñ.¨x¸eÐ.ÓDÈ1ÑM€òOð ‡�×ÑØà	˜[¨"Ð-àØØð	
ð ØØð	
ð
 
˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?ðóð$ ‡�×Ñ˜ 2§:¡:¨r¯z©z¸3Ð"?Ó@ñó Aó%ð&ð ‡�×ÑØ)Ù-Ó/Ø'ð ó ð
 ‡�×ÑØà	˜[¨"Ð-Ø	˜[¨"Ð-Ø	˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?Ø	˜;¨°#¨Ð7ðó	ñ5ó	óð5òBIð ‡�×ÑØÚTóð ‡�×Ñ˜¨.Ó9ñó :ó	ð
ð> ‡�×ÑØ)Ù-Ó/Ø'ð ó ð
 ‡�×ÑØÚTóñ'ó	óð'òDò&
7ð ‡�×Ñ˜Ð)?Ð)9×)?Ñ)?Ó)AÓBØ‡�×Ñ˜¨.Ó9ñ&ó :ó Cð&ò*ð, ‡�×ÑØ‡�×Ñ˜¨.Ó9Ø‡�×Ñ˜¨.Ó9ñvAó :ó :ó ðvAòrò7ò"
4ð ‡�×ÑØá Ù$Ù+ðñ -óá,ˆNð )7ÔIØ,ñññ -óñ -ˆNð )7ô 	
ð
 -ññóñ(ó)ð(ð ‡�×ÑØ)ñ 5ØØ(ð	
ñ :ØØ0ð	
ñ
 
! *Ð.QÐRáØØAð	
ñ  ØØHð	
ñ ,ØØ<ð	
ð-óñ>ó?ð>ó7ð  ‡�×Ñ˜Ð#EÓFñ?ó Gð?ð ‡�×Ñ˜Ð#EÓFñ7ó Gð7ð ‡�×ÑÐNÓOñ!ó Pð!ðH ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ñ
%óóð%ð ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ñ
%óð
%ð@ ‡�×Ñ˜ t¨U mÓ4ñó 5ðò EðD ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ñ
+óóð+ð* ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ñ
+óð
+ð$ ‡�×Ñ˜Ò'8Ó9Ø‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ð
 ‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ñ
4óóó :ð4ð( ‡�×Ñ˜Ò'8Ó9Ø‡�×ÑØØ‡X�X€J�ÑØ	ˆ	¹ÓH¹¨I�Y×'Ó'¸ÑHÑHð ó ñ
4óó :ð4ð" ‡�×ÑØà	�‰�T˜4Ð Øˆ�‰Ø�J‰JØØØ—+‘+×#Ñ#Ð+MÐ#ÓNô		
ðóð ‡�×Ñ˜  G Ó-ñ	4ó .óð	4ð ‡�×Ñ˜ T¨5 MÓ2ñ3ó 3ð3ð ‡�×Ñ˜˜x˜rŸx™x¨"¯&ª&°!¨¨Ó6¸¸¿¹À1ÀrÇvÂvÀgÀ,ÀÓ8PÐQÓRØ‡�×Ñ˜˜x˜rŸx™x¨"¯&ª&°!¨¨Ó6¸¸¿¹À1ÀrÇvÂvÀgÀ,ÀÓ8PÐRVÐWÓXñ)ó Yó Sð)ð ‡�×ÑØà	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	# W R§W¢W¨Q£Z°·²Ð8Ø	ˆ�‰�A�q�6˜A˜rŸvšv˜;Ð'Ó	(¨'¨"¯'ª'°!«*°b·f²fÐ=Ø	ˆ�‰�B—F’F˜A�;  B§F¢F Ð,Ó	-¨r¯vªv°r·v²vÐ>Ø	ˆ�‰�B—F’F˜A�; §¢¨ Ð,Ó	-¨w¨r¯wªw°q«z¸2¿6º6ÐBØ	ˆ�‰�A�r—v’v�;  B§F¢F Ð,Ó	-¨w¨r¯wªw°q«z¸2¿6º6ÐBØ	ˆ�‰�A�q�6˜A˜q˜6Ð"Ó	# W R§W¢W¨Q£Z°Ð4Ø	ˆ�‰�A�q�6˜A˜r˜7Ð#Ó	$ g b§g¢g¨a£j°"Ð5Ø	ˆ�‰�B˜�7˜Q ˜GÐ$Ó	% r§v¢v¨rÐ2Ø	ˆ�‰�B˜�7˜R ˜GÐ$Ó	% w r§w¢w¨q£z°2Ð6Ø	ˆ�‰�A�r�7˜Q ˜GÐ$Ó	% w r§w¢w¨q£z°2Ð6ðóñ-óð-ð  ‡�×Ñ˜¨2¯6ª6°2¨,Ó7ñ	$ó 8ð	$ð ‡�×Ñ˜¨2¯6ª6°2¨,Ó7ñ1ó 8ð1ðh ‡�×Ñ˜¨2¯6ª6°2¨,Ó7ñó 8ðò(ò<ò6#ò#ò#ò31ðl ‡�×ÑØàØØØØØðó
ñ ó
ð ð ‡�×ÑØàØØØØØðó
ð ‡�×Ñ˜¨.Ó9ñó :ó
ðòCò-ò	/ð ‡�×ÑØØ�Ð Ð+<Ð =Ð>óð ‡�×Ñ˜¨.Ó9ñ&ó :ó	ð
&ð* ‡�×Ñ˜¨.Ó9ñ ó :ð ò('ò'ò 	$ò&ð ‡�×Ñ˜¨.Ó9ñ5ó :ð5ò,#ò	.ò%ð0 ‡�×Ñ˜ A q 6Ó*Ø‡�×Ñ˜ L°-Ð#@ÓAØ‡�×ÑØÐ(Ð*DÐEóñ
-óó Bó +ð

-ð ‡�×Ñ˜ L°-Ð#@ÓAñ0ó Bð0ð ‡�×ÑØòóð" ‡�×Ñ˜ D¨% =°xÀÐ6NÐÓOñ)ó Pó#ð$)ð> ‡�×ÑØØÐ2Ð4QÐRóñ&ó	ð&ò.ð ‡�×ÑØò ØÚšoªÐ?ð	
ò Ø�$ˆKØ�3ˆZ˜#˜s˜ c¨3 ZÐ0ð	
ðóñ8óð8ò8ð2 ‡�×ÑØ‡�×Ñ˜¨.Ó9ñó :ó ñùòi ùòùòH Iùò
 Iùò Iùòp Iùò
 Iùò4 Iùò0 Iùò
 Iùò4 IsB   Ð>|Ñ|"Õ|'Ö|,×|1Ù|6Ú|;Û(} Ý}Þ}
à}