+
    LV-j¼À  ã                   ó  € ^ RI t ^ RIHtHtHtHtHtHt ^ RIH	t
 ^ RIt^ RIHt ^ RIt^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIt]P0                  ! ]].R7      R	 4       tR
 tR t ! R R4      t] ! R R]4      4       t] ! R R]4      4       t] ! R R]4      4       t] ! R R]4      4       t  ! R R4      t! ! R R4      t" ! R R4      t#] ! R R]#4      4       t$] ! R R]#4      4       t%] ! R  R!]#4      4       t&] ! R" R#]$4      4       t'] ! R$ R%]$4      4       t(] ! R& R']$4      4       t)] ! R( R)]%4      4       t*] ! R* R+]$4      4       t+] ! R, R-]$4      4       t,R. t-]P\                  P_                  ^4      R/ 4       t0 ! R0 R14      t1] ! R2 R3]14      4       t2] ! R4 R5]14      4       t3] ! R6 R7]24      4       t4] ! R8 R9]34      4       t5] ! R: R;]24      4       t6] ! R< R=]34      4       t7 ! R> R?4      t8R@ t9RA t:RB t;RC t< ! RD RE4      t=] ! RF RG]=4      4       t> ! RH RI4      t?] ! RJ RK]?4      4       t@RL tARM tBRN tCRO tDRP tERQ tFRR tGRS tHRT tIRU tJRV tKRW tLRX tMRY tNRZ tOR[ tP]P\                  P_                  ^
4      R\ 4       tQR] tRR^ tSR_ tTR` tU]P\                  P­                  ]! 4       Ra8H  RbRc7      Rd 4       tWRe tX]P\                  P_                  ^
4      Rf 4       tYRg tZRh t[Ri t\Rj t]Rk t^Rl t_Rm t`]P\                  PÃ                  Rn. R{O4      Ro 4       tb] ! Rp Rq4      4       tcRr tdRs teRt tf]P\                  PÃ                  Ru]].4      Rv 4       tgRw thRx ti]P\                  PÃ                  Ry]].4      Rz 4       tjR# )|é    N)Úassert_equalÚassert_array_equalÚassert_Úassert_almost_equalÚassert_array_almost_equalÚassert_allclose)Úraises)Úpython_implementation)ÚKDTreeÚ	RectangleÚdistance_matrixÚcKDTree)ÚcKDTreeNode©Úminkowski_distance)Úparamsc                 ó   € V P                   # ©N)Úparam)Úrequests   &Úp/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/scipy/spatial/tests/test_kdtree.pyÚkdtree_typer      s   € à�=‰=Ðó    c                óT  € V P                   P                  R4      '       g   \        R4      h\        \        3 Fk  pV P                   R,          R,           VP                   ,           pV\        4       9   d   \        RV,           4      h\        W 3RV/4      pV\        4       V&   Km  	  V # )zƒClass decorator to create test cases for KDTree and cKDTree

Tests use the class variable ``kdtree_type`` as the tree constructor.
Ú_Testz)Expected a class name starting with _Test:é   NNÚ_zDuplicated test name: r   )Ú__name__Ú
startswithÚRuntimeErrorr   r   ÚglobalsÚtype)ÚklsÚtreeÚ	test_nameÚ	test_cases   &   r   Ú
KDTreeTestr'      s“   € ð
 �<‰<×"Ñ" 7×+Ò+ÜÐFÓGÐGäœÓ!ˆØ—L‘L Õ$ sÕ*¨T¯]©]Õ:ˆ	àœ›	Ô!ÜÐ7¸)ÕCÓDÐDô ˜ F¨]¸DÐ,AÓBˆ	Ø(Œ‹	�)Óñ "ð €Jr   c                 ó¨   € W,
          pWDR V,          8„  ;;,          V,          uu&   WDRV,          8  ;;,          V,          uu&   \        V^ V4      pV# )ç      à?g      à¿r   )ÚaÚbÚpÚboxsizeÚdiffÚds   &&&&  r   Údistance_boxr0   +   sJ   € Ø�5€DØ��g•Ñ	× 'Õ)ÓØ��w•Ñ	× 7Õ*ÓÜ˜4  AÓ&€AØ€Hr   c                   óJ   a € ] tR t^2t o R tR tR tR tR tR t	R t
RtV tR	# )
ÚConsistencyTestsc                ó   € \        WV4      # r   r   ©Úselfr*   r+   r,   s   &&&&r   ÚdistanceÚConsistencyTests.distance3   ó   € Ü! !¨Ó*Ð*r   c           
     óÒ  € V P                   pV P                  P                  V^4      w  r#\        V^,          \        P
                  ! WP                  V,          ,
          ^,          4      4       Rp\        \        P                  ! \        P
                  ! V P                  V\        P                  R3,          ,
          ^,          ^R7      V^,          V,
          8„  4      4       R# )r   ç:Œ0âŽyE>ºNNN©ÚaxisN)
ÚxÚkdtreeÚqueryr   ÚnpÚsumÚdatar   ÚallÚnewaxis)r5   r>   r/   ÚiÚepss   &    r   Útest_nearestÚConsistencyTests.test_nearest6   s’   € Ø�F‰FˆØ�{‰{× Ñ   AÓ&‰ˆÜ˜A˜q�D¤"§&¢&¨!¯I©I°a­L­.¸1Õ)<Ó"=Ô>ØˆÜ”—’”r—v’v˜tŸy™y¨¬2¯:©:°q¨=Õ)9Õ9¸AÕ=ÀAÔFÈÈAÍÈcÍÑQÓRÖSr   c           
     óP  € V P                   pV P                  pV P                  P                  W4      w  r4\        P
                  ! V4      pV\        P                  ! V4      ,          p\        V^,          \        P                  ! WP                  V,          ,
          ^,          4      4       Rp\        \        P                  ! \        P                  ! V P                  V\        P                  R3,          ,
          ^,          ^R7      V^,          V,           8  4      V4       R# )é   r:   r;   r<   N)r>   Úmr?   r@   rA   ÚamaxÚargmaxr   rB   rC   r   rE   )r5   r>   rL   ÚddÚiir/   rF   rG   s   &       r   Útest_m_nearestÚConsistencyTests.test_m_nearest=   s¾   € Ø�F‰FˆØ�F‰FˆØ—‘×"Ñ" 1Ó(‰ˆÜ�GŠG�B‹KˆØŒr�yŠy˜‹}ÕˆÜ˜A˜q�D¤"§&¢&¨!¯I©I°a­L­.¸1Õ)<Ó"=Ô>ØˆÜÜ�FŠF”2—6’6˜4Ÿ9™9 Q¤r§z¡z°1 }Õ%5Õ5¸Õ9ÀÔBÀQÈÅTÈ#ÅXÑMÓNØö	
r   c           	     óh  € V P                   pV P                  pV P                  P                  WP                  P                  VR 7      w  r4Rp^ p\        W44       F‡  w  rxV\        P                  8X  d   K  V^,          p\        V^,          \        P                  ! WP                  V,          ,
          ^,          4      4       \        WrV,           8  RVR RVR 24       K‰  	  \        \        P                  ! V P                  V P                  V^4      V^,          V,           8  4      V4       R# )©ÚkÚdistance_upper_boundr:   únear_d=Úgú should be less than N)r>   r/   r?   r@   ÚnÚziprA   Úinfr   rB   rC   r   r   r6   ©	r5   r>   r/   rO   rP   rG   ÚhitsÚnear_dÚnear_is	   &        r   Útest_points_nearÚ!ConsistencyTests.test_points_nearJ   sæ   € Ø�F‰FˆØ�F‰FˆØ—‘×"Ñ" 1¯©¯©ÈAÐ"ÓN‰ˆØˆØˆÜ! "žk‰NˆFØœŸ™ÔÙØ�A�IˆDÜ ¨¥	¬2¯6ª6°1·Y±Y¸vÕ5FÕ3FÈÕ2JÓ+KÔLÜ�F˜s�U‘N g¨f°Q¨ZÐ7LÈQÈqÈEÐ$RÖSñ *ô 	”R—V’V˜DŸM™M¨$¯)©)°Q¸Ó:¸QÀ½TÀ#½XÑEÓFÈÖMr   c           	     ó(  € V P                   pV P                  pV P                  P                  WP                  P                  ^VR7      w  r4Rp^ p\        W44       Fn  w  rxV\        P                  8X  d   K  V^,          p\        WpP                  WP                  V,          ^4      4       \        WrV,           8  RVR RVR 24       Kp  	  \        \        P                  ! V P                  V P                  V^4      W%,           8  4      V4       R# )r   ©rU   r,   rV   r:   rW   rX   rY   N)r>   r/   r?   r@   rZ   r[   rA   r\   r   r6   rC   r   r   rB   r]   s	   &        r   Útest_points_near_l1Ú$ConsistencyTests.test_points_near_l1X   s×   € Ø�F‰FˆØ�F‰FˆØ—‘×"Ñ" 1¯©¯©¸ÐQRÐ"ÓS‰ˆØˆØˆÜ! "žk‰NˆFØœŸ™ÔÙØ�A�IˆDÜ ¯©°a¿¹À6Õ9JÈAÓ(NÔOÜ�F˜s�U‘N g¨f°Q¨ZÐ7LÈQÈqÈEÐ$RÖSñ *ô 	”R—V’V˜DŸM™M¨$¯)©)°Q¸Ó:¸Q½UÑBÓCÀTÖJr   c           	     ó|  € V P                   pV P                  pV P                  P                  WP                  P                  \
        P                  VR 7      w  r4Rp^ p\        W44       F|  w  rxV\
        P                  8X  d   K  V^,          p\        WpP                  WP                  V,          \
        P                  4      4       \        WrV,           8  RVR RVR 24       K~  	  \        \
        P                  ! V P                  V P                  V\
        P                  4      W%,           8  4      V4       R# )rd   r:   rW   rX   rY   N)r>   r/   r?   r@   rZ   rA   r\   r[   r   r6   rC   r   r   rB   r]   s	   &        r   Útest_points_near_linfÚ&ConsistencyTests.test_points_near_linff   sã   € Ø�F‰FˆØ�F‰FˆØ—‘×"Ñ" 1¯©¯©¼¿¹ÐVWÐ"ÓX‰ˆØˆØˆÜ! "žk‰NˆFØœŸ™ÔÙØ�A�IˆDÜ ¯©°a¿¹À6Õ9JÌBÏFÉFÓ(SÔTÜ�F˜s�U‘N g¨f°Q¨ZÐ7LÈQÈqÈEÐ$RÖSñ *ô 	”R—V’V˜DŸM™M¨$¯)©)°Q¼¿¹Ó?À!Å%ÑGÓHÈ$ÖOr   c                ó  € V P                   pV P                  pR pV P                  P                  W4      w  rEV P                  P                  WVR7      w  rg\	        \
        P                  ! Wd^V,           ,          8*  4      4       R# )çš™™™™™¹?©rG   N)r>   rU   r?   r@   r   rA   rD   )r5   r>   rU   rG   Úd_realÚi_realr/   rF   s   &       r   Útest_approxÚConsistencyTests.test_approxt   sf   € Ø�F‰FˆØ�F‰FˆØˆØŸ™×*Ñ*¨1Ó0‰ˆØ�{‰{× Ñ  ¨3Ð Ó/‰ˆÜ”—’�q A c¥E�NÑ*Ó+Ö,r   © N)r   Ú
__module__Ú__qualname__Ú__firstlineno__r6   rH   rQ   ra   re   rh   ro   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r2   r2   2   s1   ø‡ € ò+òTò
òNòKòP÷-ð -r   r2   c                   ó&   a € ] tR t^}t o R tRtV tR# )Ú_Test_randomc                óŽ  € ^dV n         ^V n        \        P                  P	                  R4       \        P                  P                  V P                   V P                  4      V n        V P                  V P                  ^R7      V n        \        P                  P                  V P                  4      V n	        RV n
        ^
V n        R# )éd   éÒ  ©Úleafsizeçš™™™™™É?N)rZ   rL   rA   ÚrandomÚseedÚrandnrC   r   r?   r>   r/   rU   ©r5   s   &r   Úsetup_methodÚ_Test_random.setup_method   s   € ØˆŒØˆŒÜ
�	‰	�‰�tÔÜ—I‘I—O‘O D§F¡F¨D¯F©FÓ3ˆŒ	Ø×&Ñ& t§y¡y¸1Ð&Ó=ˆŒÜ—‘—‘ §¡Ó(ˆŒØˆŒØˆŽr   ©r/   rC   rU   r?   rL   rZ   r>   N©r   rr   rs   rt   r…   ru   rv   rw   s   @r   rz   rz   }   s   ø‡ € ÷ð r   rz   c                   ó2   a a€ ] tR t^Št oV 3R ltRtVtV ;t# )Ú_Test_random_farc                óŽ   <€ \         SV `  4        \        P                  P	                  V P
                  4      ^
,           V n        R# )é
   N)Úsuperr…   rA   r�   rƒ   rL   r>   ©r5   Ú	__class__s   &€r   r…   Ú_Test_random_far.setup_methodŒ   s+   ø€ Ü‰ÑÔÜ—‘—‘ §¡Ó(¨Õ+ˆŽr   )r>   ©r   rr   rs   rt   r…   ru   rv   Ú__classcell__©r�   rx   s   @@r   rŠ   rŠ   Š   s   ù‡ € ÷,õ ,r   rŠ   c                   ó2   a € ] tR t^‘t o R tR tR tRtV tR# )Ú_Test_smallc                óº  € \         P                  ! . RO. RO. RO. RO. RO. R	O. R
O. RO.4      V n        V P                  V P                  4      V n        V P                  P
                  V n        V P                  P                  V n        \         P                  P                  R4       \         P                  P                  ^4      V n
        RV n        ^V n        R# )r   r}   r)   N©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   )rA   ÚarrayrC   r   r?   rZ   rL   r�   r‚   rƒ   r>   r/   rU   r„   s   &r   r…   Ú_Test_small.setup_method“   s–   € Ü—H’HšiÚ'Ú'Ú'Ú'Ú'Ú'Ú'ð)ó *ˆŒ	ð ×&Ñ& t§y¡yÓ1ˆŒØ—‘—‘ˆŒØ—‘—‘ˆŒÜ
�	‰	�‰�tÔÜ—‘—‘ Ó#ˆŒØˆŒØˆŽr   c                óR   € \        V P                  P                  R^4      R4       R# )r   N©r   r   rk   )rk   r   ©r   r?   r@   r„   s   &r   rH   Ú_Test_small.test_nearest¤   s!   € ÜØ—‘×!Ñ! +¨qÓ1Øö	r   c                ó^   € \        V P                  P                  R^4      RR.^ ^.34       R# )r   rk   gÍÌÌÌÌÌì?Nr¢   r£   r„   s   &r   Útest_nearest_twoÚ_Test_small.test_nearest_two©   s.   € ÜØ—‘×!Ñ! +¨qÓ1Ø�s�˜a ˜VÐ$ö	&r   r‡   N)	r   rr   rs   rt   r…   rH   r¦   ru   rv   rw   s   @r   r•   r•   ‘   s   ø‡ € òò"÷
&ð &r   r•   c                   ó2   a a€ ] tR t^¯t oV 3R ltRtVtV ;t# )Ú_Test_small_nonleafc                óh   <€ \         SV `  4        V P                  V P                  ^R7      V n        R# )r   r~   N)r�   r…   r   rC   r?   rŽ   s   &€r   r…   Ú _Test_small_nonleaf.setup_method±   s)   ø€ Ü‰ÑÔØ×&Ñ& t§y¡y¸1Ð&Ó=ˆŽr   )r?   r‘   r“   s   @@r   r©   r©   ¯   s   ù‡ € ÷>õ >r   r©   c                   óD   a € ] tR t^¶t o R tR tR tR tR tR t	Rt
V tR# )	ÚTest_vectorization_KDTreec                ó    € \         P                  ! . RO. RO. RO. RO. RO. RO. RO. R	O.4      V n        \        V P                  4      V n        R# ©
r   Nr—   r˜   r™   rš   r›   rœ   r�   rž   )rA   rŸ   rC   r   r?   r„   s   &r   r…   Ú&Test_vectorization_KDTree.setup_method·   s@   € Ü—H’HšiÚ'Ú'Ú'Ú'Ú'Ú'Ú'ð)ó *ˆŒ	ô ˜TŸY™YÓ'ˆŽr   c                óú   € V P                   P                  \        P                  ! . RO4      4      w  r\	        \        V\        4      4       \	        \        P                  ! V\        P                  4      4       R# ©r   Nr—   )	r?   r@   rA   rŸ   r   Ú
isinstanceÚfloatÚ
issubdtypeÚsignedinteger©r5   r/   rF   s   &  r   Útest_single_queryÚ+Test_vectorization_KDTree.test_single_queryÂ   sI   € Ø�{‰{× Ñ ¤§¢ª)Ó!4Ó5‰ˆÜ”
˜1œeÓ$Ô%Ü”—’˜a¤×!1Ñ!1Ó2Ö3r   c                óè   € V P                   P                  \        P                  ! R4      4      w  r\	        \        P
                  ! V4      R4       \	        \        P
                  ! V4      R4       R# ©rK   N©rK   é   é   )rK   r½   ©r?   r@   rA   Úzerosr   Úshaper·   s   &  r   Útest_vectorized_queryÚ/Test_vectorization_KDTree.test_vectorized_queryÇ   óE   € Ø�{‰{× Ñ ¤§¢¨)Ó!4Ó5‰ˆÜ”R—X’X˜a“[ &Ô)Ü”R—X’X˜a“[ &Ö)r   c           	     ó  € ^pV P                   P                  V,           pV P                   P                  \        P                  ! . RO4      VR7      w  r4\        \        P                  ! V4      V34       \        \        P                  ! V4      V34       \        \        P                  ! \        P                  ! W1) R 4      ( 4      4       \        \        P                  ! WA) R V P                   P                  8H  4      4       R# ©é   ©rU   Nr—   )
r?   rZ   r@   rA   rŸ   r   rÁ   r   rD   Úisfinite©r5   ÚsÚkkr/   rF   s   &    r   Ú$test_single_query_multiple_neighborsÚ>Test_vectorization_KDTree.test_single_query_multiple_neighborsÌ   s«   € ØˆØ�[‰[�]‰]˜1�_ˆØ�{‰{× Ñ ¤§¢ª)Ó!4¸Ð Ó;‰ˆÜ”R—X’X˜a“[ 2 %Ô(Ü”R—X’X˜a“[ 2 %Ô(Ü”—’œŸš A b c FÓ+Ð+Ó,Ô-Ü”—’�q˜˜�v §¡§¡Ñ.Ó/Ö0r   c                ó>  € ^pV P                   P                  V,           pV P                   P                  \        P                  ! R4      VR7      w  r4\        \        P                  ! V4      ^^V34       \        \        P                  ! V4      ^^V34       \        \        P                  ! \        P                  ! VRRV) R13,          4      ( 4      4       \        \        P                  ! VRRV) R13,          V P                   P                  8H  4      4       R# ©rÇ   rÈ   r;   Nr¼   ©
r?   rZ   r@   rA   rÀ   r   rÁ   r   rD   rÉ   rÊ   s   &    r   Ú(test_vectorized_query_multiple_neighborsÚBTest_vectorization_KDTree.test_vectorized_query_multiple_neighborsÕ   óÃ   € ØˆØ�[‰[�]‰]˜1�_ˆØ�{‰{× Ñ ¤§¢¨)Ó!4¸Ð Ó;‰ˆÜ”R—X’X˜a“[ 1 a¨ *Ô-Ü”R—X’X˜a“[ 1 a¨ *Ô-Ü”—’œŸš A a¨¨Q¨B©C i¥LÓ1Ð1Ó2Ô3Ü”—’�q˜˜A ˜r™s˜•| t§{¡{§}¡}Ñ4Ó5Ö6r   c                óÆ   € R p\         P                  ! \        RR7      ;_uu_ 4        V P                  P	                  VRR7       RRR4       R#   + '       g   i     R# ; i)ç      ð?zk must be an integer or*©ÚmatchNrÈ   )Úpytestr	   Ú
ValueErrorr?   r@   )r5   r>   s   & r   Útest_query_raises_for_k_noneÚ6Test_vectorization_KDTree.test_query_raises_for_k_noneÞ   s@   € ØˆÜ�]Š]œ:Ð-G×HÖHØ�K‰K×Ñ˜a 4ÐÔ(÷ I×H×HÒHús   §AÁA 	©rC   r?   N)r   rr   rs   rt   r…   r¸   rÂ   rÍ   rÒ   rÛ   ru   rv   rw   s   @r   r­   r­   ¶   s(   ø‡ € ò	(ò4ò
*ò
1ò7÷)ð )r   r­   c                   óD   a € ] tR t^ãt o R tR tR tR tR tR t	Rt
V tR# )	ÚTest_vectorization_cKDTreec                ó    € \         P                  ! . RO. RO. RO. RO. RO. RO. RO. R	O.4      V n        \        V P                  4      V n        R# r¯   )rA   rŸ   rC   r   r?   r„   s   &r   r…   Ú'Test_vectorization_cKDTree.setup_methodä   s@   € Ü—H’HšiÚ'Ú'Ú'Ú'Ú'Ú'Ú'ð)ó *ˆŒ	ô ˜dŸi™iÓ(ˆŽr   c                ó¨   € V P                   P                  . RO4      w  r\        \        V\        4      4       \        \        V\
        4      4       R# r²   )r?   r@   r   r³   r´   Úintr·   s   &  r   r¸   Ú,Test_vectorization_cKDTree.test_single_queryï   s6   € Ø�{‰{× Ñ ¢Ó+‰ˆÜ”
˜1œeÓ$Ô%Ü”
˜1œcÓ"Ö#r   c                óè   € V P                   P                  \        P                  ! R4      4      w  r\	        \        P
                  ! V4      R4       \	        \        P
                  ! V4      R4       R# r»   r¿   r·   s   &  r   rÂ   Ú0Test_vectorization_cKDTree.test_vectorized_queryô   rÄ   r   c                óJ  € \         P                  P                  R 4       \         P                  P                  ^R4      P                  pV P
                  P                  V4      w  r#\        WV4       F,  w  rEp\        V P
                  P                  V4      WV34       K.  	  R# )r}   éè  N)	rA   r�   r‚   rƒ   ÚTr?   r@   r[   r   )r5   ÚqsÚdsÚi_sÚqr/   rF   s   &      r   Ú*test_vectorized_query_noncontiguous_valuesÚETest_vectorization_cKDTree.test_vectorized_query_noncontiguous_valuesù   sr   € Ü
�	‰	�‰�tÔÜ�Y‰Y�_‰_˜Q Ó%×'Ñ'ˆØ—+‘+×#Ñ# BÓ'‰ˆÜ˜2 3Ö'‰GˆA�!Ü˜Ÿ™×*Ñ*¨1Ó-°¨vÖ6ó (r   c           	     óê  € ^pV P                   P                  V,           pV P                   P                  . ROVR7      w  r4\        \        P
                  ! V4      V34       \        \        P
                  ! V4      V34       \        \        P                  ! \        P                  ! W1) R 4      ( 4      4       \        \        P                  ! WA) R V P                   P                  8H  4      4       R# rÆ   )	r?   rZ   r@   r   rA   rÁ   r   rD   rÉ   rÊ   s   &    r   rÍ   Ú?Test_vectorization_cKDTree.test_single_query_multiple_neighbors   s¢   € ØˆØ�[‰[�]‰]˜1�_ˆØ�{‰{× Ñ ¢¨bÐ Ó1‰ˆÜ”R—X’X˜a“[ 2 %Ô(Ü”R—X’X˜a“[ 2 %Ô(Ü”—’œŸš A b c FÓ+Ð+Ó,Ô-Ü”—’�q˜˜�v §¡§¡Ñ.Ó/Ö0r   c                ó>  € ^pV P                   P                  V,           pV P                   P                  \        P                  ! R4      VR7      w  r4\        \        P                  ! V4      ^^V34       \        \        P                  ! V4      ^^V34       \        \        P                  ! \        P                  ! VRRV) R13,          4      ( 4      4       \        \        P                  ! VRRV) R13,          V P                   P                  8H  4      4       R# rÐ   rÑ   rÊ   s   &    r   rÒ   ÚCTest_vectorization_cKDTree.test_vectorized_query_multiple_neighbors	  rÔ   r   rÝ   N)r   rr   rs   rt   r…   r¸   rÂ   rî   rÍ   rÒ   ru   rv   rw   s   @r   rß   rß   ã   s(   ø‡ € ò	)ò$ò
*ò
7ò1÷7ð 7r   rß   c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )Úball_consistencyi  ç        c                ó8   € \        VR ,          VR ,          V4      # ©rÖ   r   r4   s   &&&&r   r6   Úball_consistency.distance  s   € Ü! ! c¥'¨1¨s­7°AÓ6Ð6r   c                óä  € \         P                  ! V P                  4      p\         P                  ! V P                  VP
                  R R 4      pV P                  P                  WP                  V P                  V P                  R7      p\        V4       FÖ  w  rEV P                  V P                  V,          W,          V P                  4      W$,          RV P                  ,           ,          ,
          pV P                  V P                  V,          W,          V P                  4      W$,          RV P                  ,           ,          ,           p\        W`P                  V,          8  R4       KØ  	  R # )N©r,   rG   rÖ   Téÿÿÿÿ)rA   Ú
atleast_2dr>   Úbroadcast_tor/   rÁ   ré   Úquery_ball_pointr,   rG   Ú	enumerater6   rC   r   Útol)r5   r>   r/   ÚlrF   ÚindÚdistÚnorms   &       r   Útest_in_ballÚball_consistency.test_in_ball  sæ   € Ü�MŠM˜$Ÿ&™&Ó!ˆÜ�OŠO˜DŸF™F A§G¡G¨C¨R LÓ1ˆØ�F‰F×#Ñ# A§v¡v°·±¸T¿X¹XÐ#ÓFˆÜ –l‰FˆAØ—=‘= §¡¨3¥°µ°t·v±vÓ>ÀÅÀrÈ$Ï(É(Å{ÕASÕSˆDØ—=‘= §¡¨3¥°µ°t·v±vÓ>ÀÅÀrÈ$Ï(É(Å{ÕASÕSˆDÜ˜t§h¡h°¥oÑ5°tÖ<ó #r   c                óR  € \         P                  ! V P                  4      p\         P                  ! V P                  VP
                  R R 4      pV P                  P                  WP                  V P                  V P                  R7      p\        V4       EF  w  rE\         P                  ! V P                  P                  \        R7      pRWe&   V P                  V P                  V,          W,          V P                  4      W$,          RV P                  ,           ,          ,
          pV P                  V P                  V,          W,          V P                  4      W$,          RV P                  ,           ,          ,           p\!        WpP"                  ) V,          8„  R4       EK  	  R # )Nrû   ©ÚdtypeFrÖ   Trü   )rA   rý   r>   rþ   r/   rÁ   ré   rÿ   r,   rG   r   ÚonesrZ   Úboolr6   rC   r   r  )	r5   r>   r/   r  rF   r  Úcr  r  s	   &        r   Útest_found_allÚball_consistency.test_found_all!  s  € Ü�MŠM˜$Ÿ&™&Ó!ˆÜ�OŠO˜DŸF™F A§G¡G¨C¨R LÓ1ˆØ�F‰F×#Ñ# A§v¡v°·±¸T¿X¹XÐ#ÓFˆÜ —l‰FˆAÜ—’˜Ÿ™Ÿ™¬Ô-ˆAØˆA‰FØ—=‘= §¡¨1¥¨q­t°T·V±VÓ<¸q½tÀRÈÏÉÅ[Õ?QÕQˆDØ—=‘= §¡¨1¥¨q­t°T·V±VÓ<¸q½tÀRÈÏÉÅ[Õ?QÕQˆDÜ˜t§x¡x i°$Õ&6Ñ6¸×=ó #r   rq   N)
r   rr   rs   rt   r  r6   r  r  ru   rv   rw   s   @r   rõ   rõ     s   ø‡ € Ø
€Cò7ò=÷	>ð 	>r   rõ   c                   ó&   a € ] tR tRt o R tRtV tR# )Ú_Test_random_balli,  c                óJ  € ^dp^p\         P                  P                  R4       \         P                  P                  W4      V n        V P                  V P                  ^R7      V n        \         P                  P                  V4      V n        RV n        ^ V n	        RV n
        R# )r|   r}   r~   ç       @r€   N)rA   r�   r‚   rƒ   rC   r   ré   r>   r,   rG   r/   ©r5   rZ   rL   s   &  r   r…   Ú_Test_random_ball.setup_method.  st   € ØˆØˆÜ
�	‰	�‰�tÔÜ—I‘I—O‘O AÓ)ˆŒ	Ø×!Ñ! $§)¡)°aÐ!Ó8ˆŒÜ—‘—‘ Ó#ˆŒØˆŒØˆŒØˆŽr   ©ré   r/   rC   rG   r,   r>   Nrˆ   rw   s   @r   r  r  ,  s   ø‡ € ÷	ð 	r   r  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )Ú_Test_random_ball_periodici:  c                ó   € \        WVR 4      # rø   ©r0   r4   s   &&&&r   r6   Ú#_Test_random_ball_periodic.distance<  ó   € Ü˜A ! SÓ)Ð)r   c                ó@  € R p^p\         P                  P                  R4       \         P                  P                  W3R7      V n        V P                  V P                  ^^R7      V n        \         P                  ! VR4      V n        RV n	        ^ V n
        RV n        R# )i'  r}   ©Úsize©r   r-   rk   r  r€   N)rA   r�   r‚   ÚuniformrC   r   ré   Úfullr>   r,   rG   r/   r  s   &  r   r…   Ú'_Test_random_ball_periodic.setup_method?  sz   € ØˆØˆÜ
�	‰	�‰�tÔÜ—I‘I×%Ñ%¨A¨6Ð%Ó2ˆŒ	Ø×!Ñ! $§)¡)°aÀÐ!ÓCˆŒÜ—’˜˜C“ˆŒØˆŒØˆŒØˆŽr   c                óú  € V P                   P                  V P                  R ,           V P                  V P                  V P
                  R7      pV Fi  p\        V P                  V P                  V,          V P                  V P                  4      V P                  R V P
                  ,           ,          8*  4       Kk  	  V P                   P                  V P                  R ,
          V P                  V P                  V P
                  R7      pV Fi  p\        V P                  V P                  V,          V P                  V P                  4      V P                  R V P
                  ,           ,          8*  4       Kk  	  R# )rÖ   rû   N)	ré   rÿ   r>   r/   r,   rG   r   r6   rC   )r5   r  rF   s   &  r   Útest_in_ball_outsideÚ/_Test_random_ball_periodic.test_in_ball_outsideJ  sî   € Ø�F‰F×#Ñ# D§F¡F¨S¥L°$·&±&¸D¿F¹FÈÏÉÐ#ÓQˆÛˆAÜ�D—M‘M $§)¡)¨A¥,°·±¸¿¹Ó?À4Ç6Á6È2ÈdÏhÉhÍ;ÕCWÑWÖXñ à�F‰F×#Ñ# D§F¡F¨S¥L°$·&±&¸D¿F¹FÈÏÉÐ#ÓQˆÛˆAÜ�D—M‘M $§)¡)¨A¥,°·±¸¿¹Ó?À4Ç6Á6È2ÈdÏhÉhÍ;ÕCWÑWÖXó r   c                ó’  € \         P                  ! V P                  P                  \        R 7      pV P                  P                  V P                  R,           V P                  V P                  V P                  R7      pRW&   \         P                  ! V P                  V P                  V,          V P                  V P                  4      V P                  RV P                  ,           ,          8¬  4      '       g   Q hV P                  P                  V P                  R,
          V P                  V P                  V P                  R7      pRW&   \         P                  ! V P                  V P                  V,          V P                  V P                  4      V P                  RV P                  ,           ,          8¬  4      '       g   Q hR# )r	  rÖ   rû   FN)rA   r  ré   rZ   r  rÿ   r>   r/   r,   rG   rD   r6   rC   )r5   r  r  s   &  r   Útest_found_all_outsideÚ1_Test_random_ball_periodic.test_found_all_outsideR  s.  € Ü�GŠG�D—F‘F—H‘H¤DÔ)ˆØ�F‰F×#Ñ# D§F¡F¨S¥L°$·&±&¸D¿F¹FÈÏÉÐ#ÓQˆØˆ‰Ü�vŠvØ�M‰M˜$Ÿ)™) A�,¨¯©°·±Ó7¸4¿6¹6À2ÀdÇhÁhÅ;Õ;OÑO÷
ò 
ð 	
ð 
ð �F‰F×#Ñ# D§F¡F¨S¥L°$·&±&¸D¿F¹FÈÏÉÐ#ÓQˆØˆ‰Ü�vŠvØ�M‰M˜$Ÿ)™) A�,¨¯©°·±Ó7¸4¿6¹6À2ÀdÇhÁhÅ;Õ;OÑO÷
ò 
ð 	
ò 
r   r  N)
r   rr   rs   rt   r6   r…   r%  r(  ru   rv   rw   s   @r   r  r  :  s   ø‡ € ò*ò	òY÷
ð 
r   r  c                   ó*   a € ] tR tRt o RtR tRtV tR# )Ú"_Test_random_ball_largep_issue9890ia  g‚vIhÂ%<=c                ó(  € R p^p\         P                  P                  ^{4       \         P                  P                  ^dR W3R7      V n        V P                  V P                  4      V n        V P                  V n        ^dV n        ^ V n	        ^
V n
        R# )rè   r  N)rA   r�   r‚   ÚrandintrC   r   ré   r>   r,   rG   r/   r  s   &  r   r…   Ú/_Test_random_ball_largep_issue9890.setup_methodg  sq   € ØˆØˆÜ
�	‰	�‰�sÔÜ—I‘I×%Ñ% c¨4°q°fÐ%Ó=ˆŒ	Ø×!Ñ! $§)¡)Ó,ˆŒØ—‘ˆŒØˆŒØˆŒØˆŽr   r  N)r   rr   rs   rt   r  r…   ru   rv   rw   s   @r   r+  r+  a  s   ø‡ € ð €C÷	ð 	r   r+  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú_Test_random_ball_approxis  c                ó2   <€ \         SV `  4        R V n        R# ©rk   N©r�   r…   rG   rŽ   s   &€r   r…   Ú%_Test_random_ball_approx.setup_methodv  ó   ø€ Ü‰ÑÔØˆŽr   rl   r‘   r“   s   @@r   r0  r0  s  ó   ù‡ € ÷õ r   r0  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú!_Test_random_ball_approx_periodici{  c                ó2   <€ \         SV `  4        R V n        R# r2  r3  rŽ   s   &€r   r…   Ú._Test_random_ball_approx_periodic.setup_method~  r5  r   rl   r‘   r“   s   @@r   r8  r8  {  r6  r   r8  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú_Test_random_ball_fariƒ  c                ó2   <€ \         SV `  4        R V n        R# ©r  N©r�   r…   r/   rŽ   s   &€r   r…   Ú"_Test_random_ball_far.setup_method†  ó   ø€ Ü‰ÑÔØˆŽr   ©r/   r‘   r“   s   @@r   r<  r<  ƒ  ó   ù‡ € ÷õ r   r<  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú_Test_random_ball_far_periodiciŠ  c                ó2   <€ \         SV `  4        R V n        R# r>  r?  rŽ   s   &€r   r…   Ú+_Test_random_ball_far_periodic.setup_method�  rA  r   rB  r‘   r“   s   @@r   rE  rE  Š  rC  r   rE  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú_Test_random_ball_l1i’  c                ó2   <€ \         SV `  4        ^V n        R# )r   N)r�   r…   r,   rŽ   s   &€r   r…   Ú!_Test_random_ball_l1.setup_method•  ó   ø€ Ü‰ÑÔØˆŽr   ©r,   r‘   r“   s   @@r   rI  rI  ’  ó   ù‡ € ÷õ r   rI  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú_Test_random_ball_linfiš  c                óN   <€ \         SV `  4        \        P                  V n        R # r   ©r�   r…   rA   r\   r,   rŽ   s   &€r   r…   Ú#_Test_random_ball_linf.setup_method�  ó   ø€ Ü‰ÑÔÜ—‘ˆŽr   rM  r‘   r“   s   @@r   rP  rP  š  ó   ù‡ € ÷õ r   rP  c                 ód  € ^p^p\         P                  P                  R4       V ! \         P                  P                  W4      4      pVP	                  \         P                  P                  ^^V4      ^4      p\        VP                  R4       \        \        VR,          \        4      4       R# )é   r}   N©rK   r¾   ©r   r   )
rA   r�   r‚   rƒ   rÿ   r   rÁ   r   r³   Úlist)r   rZ   rL   ré   Úrs   &    r   Útest_random_ball_vectorizedr\  ¢  sw   € Ø
€AØ	€AÜ‡I�I‡N�N�4ÔÙ”B—I‘I—O‘O AÓ)Ó*€Aà	×Ñœ2Ÿ9™9Ÿ?™?¨1¨a°Ó3°QÓ7€AÜ�—‘˜&Ô!ÜŒJ�q˜•w¤Ó%Ö&r   c                 ó2  € \         P                  P                  ^ 4       Rp^p\         P                  P                  W4      pV ! V4      pVP	                  VR^R7      pVP	                  VR^@R7      pVP	                  VRRR7      p\        V4       F9  pWX,          '       g   Wh,          '       g   K!  \        WX,          Wh,          4       K;  	  \        V4       F9  pWX,          '       g   Wx,          '       g   K!  \        WX,          Wx,          4       K;  	  R# )r   éˆ  gú~j¼t“h?©ÚworkersNrü   )rA   r�   r‚   rƒ   rÿ   Úranger   )	r   rZ   rU   Úpointsré   Úl1Úl2Úl3rF   s	   &        r   Ú$test_query_ball_point_multithreadingrf  ­  sÑ   € ä‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜QÓ"€FÙ�FÓ€AØ	
×	Ñ	˜F E°1Ð	Ó	5€BØ	
×	Ñ	˜F E°2Ð	Ó	6€BØ	
×	Ñ	˜F E°2Ð	Ó	6€Bä�1ŽXˆØ�5Œ5�B—E–EÜ˜r�u b¥eÖ,ñ ô �1ŽXˆØ�5Œ5�B—E–EÜ˜r�u b¥eÖ,ó r   c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )Útwo_trees_consistencyiÁ  c                ó   € \        WV4      # r   r   r4   s   &&&&r   r6   Útwo_trees_consistency.distanceÃ  r8   r   c                óž  € V P                   P                  V P                  V P                  V P                  V P
                  R 7      p\        V4       Fv  w  r#V Fk  pV P                  V P                  V,          V P                  V,          V P                  4      V P                  RV P
                  ,           ,          8:  d   Kk  Q h	  Kx  	  R# )rû   rÖ   N)
ÚT1Úquery_ball_treeÚT2r/   r,   rG   r   r6   Údata1Údata2)r5   r[  rF   r  Újs   &    r   Útest_all_in_ballÚ&two_trees_consistency.test_all_in_ballÆ  s�   € Ø�G‰G×#Ñ# D§G¡G¨T¯V©V°t·v±vÀ4Ç8Á8Ð#ÓLˆÜ˜a–L‰DˆAÛ�ØŸ™ d§j¡j°¥m°T·Z±ZÀµ]ÀDÇFÁFÓKØŸ6™6 2 d§h¡h¥;Õ/ö0ð 1ð 0ó ó !r   c                ó$  € V P                   P                  V P                  V P                  V P                  V P
                  R 7      p\        V4       F¹  w  r#\        P                  ! V P                  P                  \        R7      pRWC&   \        P                  ! V P                  V P                  V,          V P                  V,          V P                  4      V P                  RV P
                  ,           ,          8¬  4      '       d   K¹  Q h	  R# )rû   r	  FrÖ   N)rl  rm  rn  r/   r,   rG   r   rA   r  rZ   r  rD   r6   rp  ro  )r5   r[  rF   r  r  s   &    r   r  Ú$two_trees_consistency.test_found_allÍ  sµ   € Ø�G‰G×#Ñ# D§G¡G¨T¯V©V°t·v±vÀ4Ç8Á8Ð#ÓLˆÜ˜a–L‰DˆAÜ—’˜Ÿ™Ÿ	™	¬Ô.ˆAØˆA‰DÜ—6’6˜$Ÿ-™-¨¯
©
°1­°t·z±zÀ!µ}ÀdÇfÁfÓMØ!ŸV™V R¨¯©¥[Õ1ñ2÷ 3ô 3ð 3ð 3ó !r   rq   N)	r   rr   rs   rt   r6   rr  r  ru   rv   rw   s   @r   rh  rh  Á  s   ø‡ € ò+ò1÷3ð 3r   rh  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú_Test_two_random_treesiÖ  c                óŽ  € ^2p^p\         P                  P                  R4       \         P                  P                  W4      V n        V P                  V P                  ^R7      V n        \         P                  P                  W4      V n        V P                  V P                  ^R7      V n        RV n	        ^ V n
        RV n        R# )é2   r}   r~   r  r€   N)rA   r�   r‚   rƒ   ro  r   rl  rp  rn  r,   rG   r/   r  s   &  r   r…   Ú#_Test_two_random_trees.setup_methodÙ  s�   € ØˆØˆÜ
�	‰	�‰�tÔÜ—Y‘Y—_‘_ QÓ*ˆŒ
Ø×"Ñ" 4§:¡:¸Ð"Ó:ˆŒÜ—Y‘Y—_‘_ QÓ*ˆŒ
Ø×"Ñ" 4§:¡:¸Ð"Ó:ˆŒØˆŒØˆŒØˆŽr   ©rl  rn  r/   ro  rp  rG   r,   Nrˆ   rw   s   @r   rw  rw  Ö  s   ø‡ € ÷
ð 
r   rw  c                   ó,   a € ] tR tRt o R tR tRtV tR# )Ú_Test_two_random_trees_periodiciæ  c                ó   € \        WVR 4      # rø   r  r4   s   &&&&r   r6   Ú(_Test_two_random_trees_periodic.distanceè  r  r   c                óš  € ^2p^p\         P                  P                  R4       \         P                  P                  W3R7      V n        V P                  V P                  ^RR7      V n        \         P                  P                  W3R7      V n        V P                  V P                  ^RR7      V n        RV n	        ^ V n
        RV n        R# )ry  r}   r  rÖ   r   r  r€   N)rA   r�   r‚   r!  ro  r   rl  rp  rn  r,   rG   r/   r  s   &  r   r…   Ú,_Test_two_random_trees_periodic.setup_methodë  s¡   € ØˆØˆÜ
�	‰	�‰�tÔÜ—Y‘Y×&Ñ&¨Q¨FÐ&Ó3ˆŒ
Ø×"Ñ" 4§:¡:¸À3Ð"ÓGˆŒÜ—Y‘Y×&Ñ&¨Q¨FÐ&Ó3ˆŒ
Ø×"Ñ" 4§:¡:¸À3Ð"ÓGˆŒØˆŒØˆŒØˆŽr   r{  N)r   rr   rs   rt   r6   r…   ru   rv   rw   s   @r   r}  r}  æ  s   ø‡ € ò*÷
ð 
r   r}  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú_Test_two_random_trees_fariø  c                ó2   <€ \         SV `  4        ^V n        R# ©rK   Nr?  rŽ   s   &€r   r…   Ú'_Test_two_random_trees_far.setup_methodû  rL  r   rB  r‘   r“   s   @@r   rƒ  rƒ  ø  rN  r   rƒ  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú#_Test_two_random_trees_far_periodici   c                ó2   <€ \         SV `  4        ^V n        R# r…  r?  rŽ   s   &€r   r…   Ú0_Test_two_random_trees_far_periodic.setup_method  rL  r   rB  r‘   r“   s   @@r   rˆ  rˆ     rN  r   rˆ  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú_Test_two_random_trees_linfi  c                óN   <€ \         SV `  4        \        P                  V n        R # r   rR  rŽ   s   &€r   r…   Ú(_Test_two_random_trees_linf.setup_method  rT  r   rM  r‘   r“   s   @@r   rŒ  rŒ    rU  r   rŒ  c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )Ú$_Test_two_random_trees_linf_periodici  c                óN   <€ \         SV `  4        \        P                  V n        R # r   rR  rŽ   s   &€r   r…   Ú1_Test_two_random_trees_linf_periodic.setup_method  rT  r   rM  r‘   r“   s   @@r   r�  r�    rU  r   r�  c                   óP   a € ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )ÚTest_rectanglei  c                ó0   € \        ^ ^ .^^.4      V n        R# ©r   N)r   Úrectr„   s   &r   r…   ÚTest_rectangle.setup_method  s   € Ü˜q !˜f q¨! fÓ-ˆŽ	r   c                óT   € \        V P                  P                  R R .4      ^ 4       R# ©r)   N©r   r—  Úmin_distance_pointr„   s   &r   Útest_min_insideÚTest_rectangle.test_min_inside  s   € Ü˜DŸI™I×8Ñ8¸#¸s¸ÓDÀaÖHr   c                óT   € \        V P                  P                  R R.4      R 4       R# ©r)   g      ø?Nr›  r„   s   &r   Útest_min_one_sideÚ Test_rectangle.test_min_one_side   s   € Ü˜DŸI™I×8Ñ8¸#¸s¸ÓDÀcÖJr   c                ó|   € \        V P                  P                  ^^.4      \        P                  ! ^4      4       R# r…  )r   r—  rœ  rA   Úsqrtr„   s   &r   Útest_min_two_sidesÚ!Test_rectangle.test_min_two_sides#  s'   € Ü˜DŸI™I×8Ñ8¸!¸Q¸Ó@Ä"Ç'Â'È!Ã*ÖMr   c                óŠ   € \        V P                  P                  R R .4      ^\        P                  ! ^4      ,          4       R# rš  ©r   r—  Úmax_distance_pointrA   r¤  r„   s   &r   Útest_max_insideÚTest_rectangle.test_max_inside&  s,   € Ü˜DŸI™I×8Ñ8¸#¸s¸ÓDÀaÌÏÊÐPQË
ÅlÖSr   c                ó~   € \        V P                  P                  R R.4      \        P                  ! R R4      4       R# r   )r   r—  r©  rA   Úhypotr„   s   &r   Útest_max_one_sideÚ Test_rectangle.test_max_one_side)  s-   € Ü˜DŸI™I×8Ñ8¸#¸s¸ÓDÜŸHšH S¨#Ó.ö	0r   c                óŠ   € \        V P                  P                  ^^.4      ^\        P                  ! ^4      ,          4       R# r…  r¨  r„   s   &r   Útest_max_two_sidesÚ!Test_rectangle.test_max_two_sides-  s+   € Ü˜DŸI™I×8Ñ8¸!¸Q¸Ó@À!ÄBÇGÂGÈAÃJÅ,ÖOr   c                ó  € V P                   P                  ^ R4      w  r\        VP                  R^.4       \        VP                  ^ ^ .4       \        VP                  ^^.4       \        VP                  R^ .4       R# )r   rk   N)r—  Úsplitr   ÚmaxesÚmins)r5   ÚlessÚgreaters   &  r   Ú
test_splitÚTest_rectangle.test_split0  s`   € ØŸ	™	Ÿ™¨¨3Ó/‰ˆÜ˜4Ÿ:™:¨¨Q xÔ0Ü˜4Ÿ9™9 q¨! fÔ-Ü˜7Ÿ=™=¨1¨a¨&Ô1Ü˜7Ÿ<™<¨#¨q¨Ö2r   )r—  N)r   rr   rs   rt   r…   r�  r¡  r¥  rª  r®  r±  r¹  ru   rv   rw   s   @r   r”  r”    s7   ø‡ € ò.òIòKòNòTò0òP÷3ð 3r   r”  c                  ód   € \        \        ^ ^ .^^.^4      \        P                  ! ^4      4       R# r–  )r   r   rA   r¤  rq   r   r   Útest_distance_l2r¼  8  s&   € ÜÔ*¨A¨q¨6°A°q°6¸1Ó=¼r¿wºwÀq»zÖJr   c                  ó<   € \        \        ^ ^ .^^.^4      ^4       R# r–  )r   r   rq   r   r   Útest_distance_l1r¾  <  s   € ÜÔ*¨A¨q¨6°A°q°6¸1Ó=¸qÖAr   c                  óX   € \        \        ^ ^ .^^.\        P                  4      ^4       R# r–  )r   r   rA   r\   rq   r   r   Útest_distance_linfrÀ  @  s"   € ÜÔ*¨A¨q¨6°A°q°6¼2¿6¹6ÓBÀAÖFr   c                  ó  € \         P                  P                  R 4       \         P                  P                  ^
^^4      p \         P                  P                  ^^^4      p\	        \        W4      P                  R4       R# )r}   N)rŒ   é   )rA   r�   r‚   rƒ   r   r   rÁ   )r>   Úys     r   Útest_distance_vectorizationrÄ  D  sT   € Ü‡I�I‡N�N�4ÔÜ
�	‰	�‰˜˜A˜qÓ!€AÜ
�	‰	�‰˜˜1˜aÓ €AÜÔ# AÓ)×/Ñ/°Ö9r   c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )Úcount_neighbors_consistencyiK  c                ó  € R p\        V P                  P                  V P                  V4      \        P
                  ! V P                  P                  V P                  V4       Uu. uF  p\        V4      NK  	  up4      4       R# u upi )r€   N©r   rl  Úcount_neighborsrn  rA   rB   rm  Úlen©r5   r[  r  s   &  r   Útest_one_radiusÚ+count_neighbors_consistency.test_one_radiusL  s`   € ØˆÜ�T—W‘W×,Ñ,¨T¯W©W°aÓ8Ü—’¨¯©×(?Ñ(?ÀÇÁÈÔ(KÓLÑ(K 1œ˜AžÑ(KÑLÓMö	OùÚLó   Á%Bc                ó  € R p\        V P                  P                  V P                  V4      \        P
                  ! V P                  P                  V P                  V4       Uu. uF  p\        V4      NK  	  up4      4       R# u upi )rè   NrÈ  rË  s   &  r   Útest_large_radiusÚ-count_neighbors_consistency.test_large_radiusQ  s`   € ØˆÜ�T—W‘W×,Ñ,¨T¯W©W°aÓ8Ü—’¨¯©×(?Ñ(?ÀÇÁÈÔ(KÓLÑ(K 1œ˜AžÑ(KÑLÓMö	OùÚLrÎ  c                óî  € \         P                  ! \         P                  ! \         P                  ! R 4      \         P                  ! ^
4      ^4      4      pV P                  P                  V P                  V4      p\        \         P                  ! \         P                  ! V4      ^ 8¬  4      4       \        W4       F5  w  r4\        V P                  P                  V P                  V4      V4       K7  	  R# )ç{®Gáz„?N)rA   ÚexpÚlinspaceÚlogrl  rÉ  rn  r   rD   r.   r[   r   )r5   ÚrsÚresultsr[  Úresults   &    r   Útest_multiple_radiusÚ0count_neighbors_consistency.test_multiple_radiusV  s–   € Ü�VŠV”B—K’K¤§¢ t£¬b¯fªf°R«j¸!Ó<Ó=ˆØ—'‘'×)Ñ)¨$¯'©'°2Ó6ˆÜ”—’”r—w’w˜wÓ'¨1Ñ,Ó-Ô.Ü˜RÖ)‰IˆAÜ˜Ÿ™×0Ñ0°·±¸!Ó<¸fÖEó *r   rq   N)	r   rr   rs   rt   rÌ  rÐ  rÚ  ru   rv   rw   s   @r   rÆ  rÆ  K  s   ø‡ € òOò
O÷
Fð Fr   rÆ  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú_Test_count_neighborsi]  c                ó   € ^2p^p\         P                  P                  R4       V P                  \         P                  P	                  W4      ^R7      V n        V P                  \         P                  P	                  W4      ^R7      V n        R# )ry  r}   r~   N)rA   r�   r‚   r   rƒ   rl  rn  r  s   &  r   r…   Ú"_Test_count_neighbors.setup_method_  sd   € ØˆØˆÜ
�	‰	�‰�tÔØ×"Ñ"¤2§9¡9§?¡?°1Ó#8À1Ð"ÓEˆŒØ×"Ñ"¤2§9¡9§?¡?°1Ó#8À1Ð"ÓEˆŽr   )rl  rn  Nrˆ   rw   s   @r   rÝ  rÝ  ]  s   ø‡ € ÷Fð Fr   rÝ  c                   óD   a € ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
Ú"sparse_distance_matrix_consistencyig  c                ó   € \        WV4      # r   r   r4   s   &&&&r   r6   Ú+sparse_distance_matrix_consistency.distancei  r8   r   c           
     ó.  € V P                   P                  V P                  V P                  4      pV P                   P	                  V P                  V P                  4      p\        V4       Fu  w  r4V Fj  p\        WV3,          V P                  V P                   P                  V,          V P                  P                  V,          V P                  4      ^R7       Kl  	  Kw  	  VP                  4        F  w  w  r5p\        WRV,          9   4       K  	  R# )é   ©ÚdecimalN)rl  Úsparse_distance_matrixrn  r[  rm  r   r   r6   rC   r,   Úitemsr   )r5   ÚMr[  rF   r  rq  r/   s   &      r   Útest_consistency_with_neighborsÚBsparse_distance_matrix_consistency.test_consistency_with_neighborsl  s¾   € Ø�G‰G×*Ñ*¨4¯7©7°D·F±FÓ;ˆØ�G‰G×#Ñ# D§G¡G¨T¯V©VÓ4ˆÜ˜a–L‰DˆAÛ�Ü#Ø˜�d•GØ—M‘M $§'¡'§,¡,¨q¥/°4·7±7·<±<Àµ?ÀDÇFÁFÓKØ÷ó ñ !ð Ÿ7™7ž9‰K‰Vˆa�QÜ�A˜1�‘IÖó %r   c                óf   € V P                   P                  V P                   V P                  4       R # r   )rl  rè  r[  r„   s   &r   Útest_zero_distanceÚ5sparse_distance_matrix_consistency.test_zero_distancey  s   € à�‰×&Ñ& t§w¡w°·±Ö7r   c                ó(  € V P                   P                  V P                  V P                  4      p\	        V P                   P
                  V P                  P
                  4      p^ W"V P                  8„  &   \        VP                  4       V^R7       R# )r   ræ  N)rl  rè  rn  r[  r   rC   r   Útoarray)r5   ÚM1Úexpecteds   &  r   Útest_consistencyÚ3sparse_distance_matrix_consistency.test_consistency}  s_   € à�W‰W×+Ñ+¨D¯G©G°T·V±VÓ<ˆÜ" 4§7¡7§<¡<°·±·±Ó>ˆØ&'ˆ˜DŸF™FÑ"Ñ#Ü! "§*¡*£,°À"×Er   c                óN  € \         P                  P                  ^ 4       \         P                  ! \         P                  P	                  ^^4      \
        R7      pV P                  VRRR7      pVP                  V^4      P                  4       p\        W3P                  ^R7       R# )r   r	  F©Úbalanced_treeÚcompact_nodesræ  N)rA   r�   r‚   rŸ   rƒ   rã   r   rè  rñ  r   ré   )r5   Útoo_manyr$   r/   s   &   r   Ú#test_against_logic_error_regressionÚFsparse_distance_matrix_consistency.test_against_logic_error_regression„  sw   € ä
�	‰	�‰�qÔÜ—8’8œBŸI™IŸO™O¨B°Ó2¼#Ô>ˆØ×ÑØ E¸ð  ó @ˆà×'Ñ'¨¨aÓ0×8Ñ8Ó:ˆÜ! !§S¡S°"×5r   c                óŒ  € \         P                  ! V P                  V P                  34      p\        V P                  4       Fh  p\        V P                  4       FL  pV P                  VR 3,          V P
                  VR 3,          ,
          p\         P                  ! WD4      WV3&   KN  	  Kj  	  \         P                  ! V4      pRWV P                  8„  &   \         P                  ! V P                  V P                  34      pV P                  P                  V P                  V P                  RR7      pVP                  4        F  w  r#WbV3,          WRV3&   K  	  \        W^R7       \         P                  ! V P                  V P                  34      pV P                  P                  V P                  V P                  RR7      p\        VP                  ^ ,          4       F8  pVR,          V,          pVR,          V,          pVR,          V,          pWEW#3&   K:  	  \        W^R7       V P                  P                  V P                  V P                  R	R7      p\        WP                  4       ^R7       V P                  P                  V P                  V P                  R
R7      p\        WP                  4       ^R7       R# )r;   rö   Údict©Úoutput_typeræ  ÚndarrayrF   rq  ÚvÚ
dok_matrixÚ
coo_matrixN)rA   rÀ   rZ   ra  ro  rp  Údotr¤  r[  rl  rè  rn  Úkeysr   rÁ   rñ  )r5   ÚrefrF   rq  r  r  r[  rU   s   &       r   Útest_ckdtree_return_typesÚ<sparse_distance_matrix_consistency.test_ckdtree_return_types�  s  € ä�hŠh˜Ÿ™ §¡Ð'Ó(ˆÜ�t—v‘v–ˆAÜ˜4Ÿ6™6–]�Ø—J‘J˜q !˜tÕ$ t§z¡z°!°Q°$Õ'7Õ7�ÜŸFšF 1›L��q�D“	ó #ñ ô �gŠg�c‹lˆØˆ�$—&‘&‰LÑä�xŠx˜Ÿ™ §¡Ð(Ó)ˆØ�G‰G×*Ñ*¨4¯7©7°D·F±FÈÐ*ÓOˆØ—F‘F–H‰DˆAØ˜q˜6�ˆD�A�‹Jñ ä! #°RÕ8ä�xŠx˜Ÿ™ §¡Ð(Ó)ˆØ�G‰G×*Ñ*¨4¯7©7°D·F±FØ!ð +ó #ˆä�q—w‘w˜q•zÖ"ˆAØ�#•�q•	ˆAØ�#•�q•	ˆAØ�#•�q•	ˆAØ��‹Jñ	 #ô
 	" #°RÕ8à�G‰G×*Ñ*¨4¯7©7°D·F±FØ$ð +ó &ˆä! #§y¡y£{¸BÕ?à�G‰G×*Ñ*¨4¯7©7°D·F±FØ$ð +ó &ˆä! #§y¡y£{¸B×?r   rq   N)r   rr   rs   rt   r6   rë  rî  rô  rû  r  ru   rv   rw   s   @r   rá  rá  g  s+   ø‡ € ò+òò8òFò6÷ @ð  @r   rá  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú_Test_sparse_distance_matrixi°  c                ót  € ^2p^p\         P                  P                  R4       \         P                  P                  W4      p\         P                  P                  W4      pV P	                  V^R7      V n        V P	                  V^R7      V n        RV n        ^V n        W0n	        W@n
        Wn        W n        R# )ry  r}   r~   r)   N)rA   r�   r‚   rƒ   r   rl  rn  r[  r,   ro  rp  rZ   rL   )r5   rZ   rL   ro  rp  s   &    r   r…   Ú)_Test_sparse_distance_matrix.setup_method²  s�   € ØˆØˆÜ
�	‰	�‰�tÔÜ—	‘	—‘ Ó%ˆÜ—	‘	—‘ Ó%ˆØ×"Ñ" 5°1Ð"Ó5ˆŒØ×"Ñ" 5°1Ð"Ó5ˆŒØˆŒØˆŒØŒ
ØŒ
ØŒØŽr   )rl  rn  ro  rp  rL   rZ   r,   r[  Nrˆ   rw   s   @r   r  r  °  s   ø‡ € ÷ð r   r  c            	      ó¬  € ^
p ^p^p\         P                  P                  R4       \         P                  P                  W4      p\         P                  P                  W4      p\	        W44      p\        VP                  W34       \        V 4       F?  p\        V4       F-  p\        \        W6,          WG,          4      WVV3,          4       K/  	  KA  	  R# )rŒ   r}   N)
rA   r�   r‚   rƒ   r   r   rÁ   ra  r   r   )rL   rZ   rU   ÚxsÚysrë   rF   rq  s           r   Útest_distance_matrixr  Â  s—   € Ø
€AØ
€AØ	€AÜ‡I�I‡N�N�4ÔÜ	�‰�‰˜Ó	€BÜ	�‰�‰˜Ó	€BÜ	˜Ó	 €BÜ�—‘˜A˜6Ô"Ü�1ŽXˆÜ�q–ˆAÜÔ 2°2µ5¸"½%Ó @À"ÈÀTÅ(ÖKó ó r   c                  ó  € ^
p ^p^p\         P                  P                  R4       \         P                  P                  W4      p\         P                  P                  W4      p\	        W44      p\	        W4^R7      p\        WV4       R# )rŒ   r}   )Ú	thresholdN)rA   r�   r‚   rƒ   r   r   )rL   rZ   rU   r  r  rë   Údsls          r   Útest_distance_matrix_loopingr  Ð  sc   € Ø
€AØ
€AØ	€AÜ‡I�I‡N�N�4ÔÜ	�‰�‰˜Ó	€BÜ	�‰�‰˜Ó	€BÜ	˜Ó	 €BÜ
˜"¨AÔ
.€CÜ�Ör   c                 óâ   € V P                  W4      p\        4       p\        V4       F(  w  rEV F  pWF8  g   K  VP                  WF34       K  	  K*  	  \	        W0P                  V4      8H  4       R # r   )rm  Úsetr   Úaddr   Úquery_pairs)ré   r/   r[  rË   rF   r  rq  s   &&     r   Úcheck_onetree_queryr  Ü  s[   € Ø	×Ñ˜!Ó€AÜ‹€AÜ˜!–‰ˆÛˆAØŽuØ—‘�q�f–ó ñ ô
 ˆA—‘˜qÓ!Ñ!Ö"r   c                 óÄ  € \         P                  P                  ^ 4       ^2p^p\         P                  P                  W4      pV ! V4      p\	        VR4       \         P                  P                  ^V,          V4      pVRV;;; R,          uuu% W1^V,          ;;; ^,          uuu% V ! V4      p\	        VR4       \	        VR4       \	        VR4       \	        VR4       R# )r   rk   Ngü©ñÒMbP?gñhãˆµøä>g�íµ ÷Æ°>)rA   r�   r‚   rƒ   r  )r   rZ   rU   rb  ré   s   &    r   Útest_onetree_queryr  æ  s®   € Ü‡I�I‡N�N�1ÔØ
€AØ	€AÜ�Y‰Y�_‰_˜QÓ"€FÙ�FÓ€AÜ˜˜3Ôä�Y‰Y�_‰_˜Q˜q�S !Ó$€FØ
ˆ2ˆAƒJ�%ÕƒJØ
ˆQˆq�SƒM�QÕƒMÙ�FÓ€AÜ˜˜3ÔÜ˜˜5Ô!Ü˜˜7Ô#Ü˜˜4Ö r   c                 ób   € V ! ^ ^..4      p\        VP                  R4      \        4       4       R# )r   r)   N)r   r  r  )r   r$   s   & r   Útest_query_pairs_single_noder  ø  s)   € Ù˜˜A˜�xÓ €DÜ�×!Ñ! #Ó&¬«Ö.r   c           	      óx  € \         P                  P                  ^ 4       ^2p^pRpV^,          p\         P                  P                  W4      pV ! V4      p\	        4       p\        V4       Fe  p\        V^,           V4       FK  p	WXR3,          WYR3,          ,
          p
\         P                  ! Wª4      V8:  g   K9  VP                  W‰34       KM  	  Kg  	  \        V4      pVP                  V4      p\        V4      p\        W½4       VP                  VRR7      p\        V4      p\        W½4       \	        4       pVP                  VRR7      p\        VP                  ^ ,          4       F8  pVP                  \        Wè^ 3,          4      \        Wè^3,          4      34       K:  	  \        V4      p\        W¿4       R# )r   rk   r;   r  rÿ  r  N)rA   r�   r‚   rƒ   r  ra  r  r  Úsortedr  r   rÁ   rã   )r   rZ   rU   r[  Úr2rb  ré   ÚbruterF   rq  r  Úl0rË   rc  Úarrrd  s   &               r   Útest_kdtree_query_pairsr%  ý  sV  € Ü‡I�I‡N�N�1ÔØ
€AØ	€AØ€AØ	
ˆA�€BÜ�Y‰Y�_‰_˜QÓ"€FÙ�FÓ€Aä‹E€EÜ�1ŽXˆÜ�q˜•s˜A–ˆAØ˜!�t•˜v¨ d�|Õ+ˆAÜ�vŠv�a‹|˜rÖ!Ø—	‘	˜1˜&Ö!ó ñ ô
 
�‹€Bà	�‰�aÓ€AÜ	�‹€BÜ�rÔà	�‰�a UˆÓ+€AÜ	�‹€BÜ�rÔä‹€AØ
�-‰-˜ yˆ-Ó
1€CÜ�3—9‘9˜Q•<Ö ˆØ	�‰Œs�3˜!�t•9‹~œs 3¨! t¥9›~Ð.Ö/ñ !ä	�‹€BÜ�rÖr   c                 óp  € \         P                  ! ^4      p\         P                  ! ^ ^V,          ^4      p\         P                  ! ^ ^V,          ^4      pV UUu. uF  qC F  qTV3NK  	  K  	  pppV ! V4      pVP                  VRR7      pVP                  VR,          R7      p	\	        W˜4       R# u uppi )rK   rk   )r[  rG   ç)\�Âõ(ð?©r[  N)rA   r¤  rÕ  r  r   )
r   ÚspacingÚx_rangeÚy_rangeÚxiÚyiÚxy_arrayr$   Ú	pairs_epsÚpairss
   &         r   Útest_query_pairs_epsr1    sœ   € Ü�gŠg�a‹j€Gä�kŠk˜!˜Q �[¨!Ó,€GÜ�kŠk˜!˜Q �[¨!Ó,€GÙ#*Ô=¡7˜R²W¨r�R“±W‘¡7€HÑ=Ù�xÓ €DØ× Ñ  7°Ð Ó3€Ià×Ñ˜w¨�~ÐÓ.€Eä�Ö"ùó >s   ÁB2c           	      ó²  € \         P                  R,          w  r\        \        VP	                  4       VP	                  4       4      4      pV ! V4      p\        \        . RO4      \        VP                  R^4      4      4       \         P                  ! V\        R7      pV ! V4      p\        \        . RO4      \        VP                  R^4      4      4       R# )ºr   r½   Nr	  N)r3  r3  )r½   é   é	   é   )rK   r   )
rA   ÚmgridrZ  r[   Úravelr   r   rÿ   Úasarrayr´   )r   r>   rÃ  rb  r$   s   &    r   Útest_ball_point_intsr:  ,  s›   € ä�8‰8�HÕ�D€AÜ”#�a—g‘g“i §¡£Ó+Ó,€FÙ�vÓ€DÜ”šÓ&Ü˜×-Ñ-¨f°aÓ8Ó9ô;ä�ZŠZ˜¤eÔ,€FÙ�vÓ€DÜ”šÓ&Ü˜×-Ñ-¨f°aÓ8Ó9ö;r   c            	      óº   € \        ^4       U u. uF  p \        P                  ! 4       NK  	  pp \        \	        V4      \	        VRRR1,          4      4       R# u up i )r¾   Nrü   )ra  r   Únoder   r   )r   Únodess     r   Útest_kdtree_comparisonsr>  9  s@   € ä$)¨!¤HÓ-¡H˜qŒV�[Š[Ž]¡H€EÐ-Ü”˜“¤ u©T¨r¨T¥{Ó 3Ö4ùò .s   ŽAc                 óÚ  € \         P                  P                  ^ 4       Rp^p\         P                  P                  W4      pV ! V4      P	                  V^R7      R,          pV ! VRR7      P	                  V^R7      R,          pV ! VRR7      P	                  V^R7      R,          pV ! VRRR7      P	                  V^R7      R,          p\        WE4       \        WF4       \        WG4       R# )	r   r^  rÈ   F)rù  )rø  )rù  rø  Nrü   )rA   r�   r‚   rƒ   r@   r   )r   rZ   rU   rb  rl  rn  ÚT3ÚT4s   &       r   Útest_kdtree_build_modesrB  ?  sÎ   € ä‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜QÓ"€FÙ	�VÓ	×	"Ñ	" 6¨QÐ	"Ó	/°Õ	3€BÙ	�V¨5Ô	1×	7Ñ	7¸À!Ð	7Ó	DÀRÕ	H€BÙ	�V¨5Ô	1×	7Ñ	7¸À!Ð	7Ó	DÀRÕ	H€BÙ	�V¨5Ø#(ô
*ß*/©%°¸!¨%Ó*<¸Rõ
A€Bä�rÔÜ�rÔÜ�rÖr   c                 ód  € ^ RI p\        P                  P                  ^ 4       ^2p^p\        P                  P	                  W#4      pV ! V4      pVP                  V4      pVP                  V4      pVP                  V^R7      R,          pVP                  V^R7      R,          p\        WW4       R# )r   NrÈ   rü   )	ÚpicklerA   r�   r‚   rƒ   ÚdumpsÚloadsr@   r   ©r   rD  rZ   rU   rb  rl  Útmprn  s   &       r   Útest_kdtree_picklerI  N  s�   € ãÜ‡I�I‡N�N�1ÔØ
€AØ	€AÜ�Y‰Y�_‰_˜QÓ"€FÙ	�VÓ	€BØ
�,‰,�rÓ
€CØ	�‰�cÓ	€BØ	�‰�&˜AˆÓ	˜rÕ	"€BØ	�‰�&˜AˆÓ	˜rÕ	"€BÜ�rÖr   c                 ól  € ^ RI p\        P                  P                  ^ 4       ^2p^p\        P                  P	                  W#3R7      pV ! VRR7      pVP                  V4      pVP                  V4      pVP                  V^R7      R,          pVP                  V^R7      R,          p\        WW4       R# )r   Nr  rÖ   )r-   rÈ   rü   )	rD  rA   r�   r‚   r!  rE  rF  r@   r   rG  s   &       r   Útest_kdtree_pickle_boxsizerK  \  s–   € ãÜ‡I�I‡N�N�1ÔØ
€AØ	€AÜ�Y‰Y×Ñ Q FÐÓ+€FÙ	�V SÔ	)€BØ
�,‰,�rÓ
€CØ	�‰�cÓ	€BØ	�‰�&˜AˆÓ	˜rÕ	"€BØ	�‰�&˜AˆÓ	˜rÕ	"€BÜ�rÖr   c                 ó€  € \         P                  P                  ^ 4       Rp^p\         P                  P                  W4      pV ! VRR7      pVP	                  4       pVP                  V^R7      R,          p\         P                  P                  W4      VR&   VP                  V^R7      R,          p\        Wg4       R# )r   r^  T)Ú	copy_datarÈ   .Nrü   )rA   r�   r‚   rƒ   Úcopyr@   r   )r   rZ   rU   rb  ré   rí   rl  rn  s   &       r   Útest_kdtree_copy_datarO  j  s‘   € ô ‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜QÓ"€FÙ�F dÔ+€AØ�‰‹€AØ	
�‰��aˆ‹˜Õ	€BÜ—)‘)—/‘/ !Ó'€Fˆ3�KØ	
�‰��aˆ‹˜Õ	€BÜ�rÖr   c                 ó@  € \         P                  P                  ^ 4       Rp^p\         P                  P                  W#4      pV ! V4      pVP	                  V^^@R7      R
,          pVP	                  V^R
R7      R
,          pVP	                  V^R7      R
,          p\        Wg4       \        Wh4       VP                  \        RR 4       \        P                  ! \        RR7      ;_uu_ 4        VP	                  V^R
R7       R	R	R	4       R	#   + '       g   i     R	# ; i)r   r^  )rU   r`  rÈ   Ú	cpu_countc                  ó   € R # r   rq   rq   r   r   Ú<lambda>Ú'test_ckdtree_parallel.<locals>.<lambda>†  s   € ±r   zCannot determine ther×   r_  Nrü   )rA   r�   r‚   rƒ   r@   r   ÚsetattrÚosrÙ   r	   ÚNotImplementedError)	r   ÚmonkeypatchrZ   rU   rb  ré   rl  rn  r@  s	   &&       r   Útest_ckdtree_parallelrY  y  sØ   € ä‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜QÓ"€FÙ�FÓ€AØ	
�‰�˜1 bˆÓ	)¨"Õ	-€BØ	
�‰�˜1 bˆÓ	)¨"Õ	-€BØ	
�‰�˜1ˆÓ	˜bÕ	!€BÜ�rÔÜ�rÔà×Ñœ˜K©Ô6Ü	�ŠÔ*Ð2H×	IÖ	IØ	�‰�˜ 2ˆÔ&÷ 
J×	I×	IÒ	Iús   Ã-DÄD	c                  óº  aa€ \         P                  P                  ^ 4       ^dp ^p\         P                  P                  W4      p\	        V4      oVV3R loS! SP
                  4       SP
                  p \        \         P                  ! V P                  4      \        ^d4      4       \        SP                  V P                  R3,          V P                  4       R# )r   c                 ób  <€ \        \        V \        4      4       V P                  R8X  dd   \        V P                  RJ 4       \        V P
                  RJ 4       \        V P                  P                  ^ ,          SP                  8*  4       R# S! V P                  4       S! V P
                  4       V P                  P                  RV P                  3,          pV P
                  P                  RV P                  3,          p\        VP                  4       VP                  4       8  4       R# )r   Nr;   rü   )r   r³   r   Ú	split_dimÚlesserr¸  ÚindicesrÁ   r   Údata_pointsÚmaxÚmin)rZ   r>   rÃ  r?   Úrecurse_trees   &  €€r   rb  Ú'test_ckdtree_view.<locals>.recurse_tree–  sÇ   ø€ Ü”
˜1œkÓ*Ô+Ø�;‰;˜"ÔÜ�A—H‘H Ð$Ô%Ü�A—I‘I Ð%Ô&Ü�A—I‘I—O‘O AÕ&¨&¯/©/Ñ9Ö:á˜Ÿ™Ô"Ù˜Ÿ™Ô#Ø—‘×$Ñ$ Q¨¯© ^Õ4ˆAØ—	‘	×%Ñ% a¨¯© nÕ5ˆAÜ�A—E‘E“G˜aŸe™e›gÑ%Ö&r   r;   N)rA   r�   r‚   rƒ   r   r$   r   Úsortr^  ra  rC   r_  )rZ   rU   rb  r?   rb  s      @@r   Útest_ckdtree_viewre  ‹  s�   ù€ ô ‡I�I‡N�N�1ÔØ€AØ	€AÜ�Y‰Y�_‰_˜QÓ"€FÜ�V‹_€Fö'ñ �—‘Ôà�‰€AÜ”r—w’w˜qŸy™yÓ)¬5°«:Ô6ä�v—{‘{ 1§9¡9¨a <Õ0°!·-±-Ö@r   c                 ó`  € ^Èp^p. ROp^p\         P                  P                  R4       \         P                  P                  W3R7      pV ! V^R7      pVP	                  WS4      w  rxVP	                  WT4      w  rš\        Wy4       \        WŠ4       \         P                  ! ^^.4      p^pVP	                  WT4      w  rxVP	                  WS4      w  rš\        W—RV^,
          3,          4       \        W¨RV^,
          3,          4       VP	                  V^4      w  rxVP	                  V^.4      w  rš\        \        VP                  4      ^4       \        \        V	P                  4      ^4       \        V\         P                  ! V	4      4       \        V\         P                  ! V
4      4       R# )éÈ   r}   r  r~   .N)r   rK   r¾   )
rA   r�   r‚   r!  r@   r   rŸ   rÊ  rÁ   r8  )r   rZ   rL   ÚklistÚkintrC   r?   rO   rP   Údd1Úii1s   &          r   Útest_kdtree_list_krl  ­  sP  € à€AØ	€AÚ€EØ€Dä‡I�I‡N�N�4ÔÜ�9‰9×Ñ 1 &ÐÓ)€DÙ˜¨Ô*€Fð �\‰\˜$Ó&�F€BØ�|‰|˜DÓ'�H€CÜ�ÔÜ�Ôô �HŠH�a˜�VÓ€EØ€DØ�\‰\˜$Ó%�F€BØ�|‰|˜DÓ(�H€CÜ�˜˜e a�i˜Õ(Ô)Ü�˜˜e a�i˜Õ(Ô)ð �\‰\˜$ Ó"�F€BØ�|‰|˜D 1 #Ó&�H€CÜ”�R—X‘X“ Ô"Ü”�S—Y‘Y“ Ô#Ü�”R—X’X˜c“]Ô#Ü�”R—X’X˜c“]Ö#r   c           	      ó2  € R p^p^p\         P                  P                  R4       \         P                  P                  W3R7      pV ! V^RR7      pV ! V^R7      p^^R\         P                  3 F£  pVP                  WCVR7      w  r‰VP                  VR,           W7R7      w  r«\        WŠ4       \        W›4       VP                  VR,
          W7R7      w  r«\        WŠ4       \        W›4       \        WdVRVR7      w  rÍ\        WŒ4       \        W�4       K¥  	  R	# )
éÐ  r}   r  rÖ   r   r~   g      @rM  )r-   r,   N)	rA   r�   r‚   r!  r\   r@   r   r   Úsimulate_periodic_box)r   rZ   rL   rU   rC   r?   Úkdtree2r,   rO   rP   rj  rk  Údd2Úii2s   &             r   Útest_kdtree_boxrs  Ï  sõ   € ð 	€AØ	€AØ	€AÜ‡I�I‡N�N�4ÔÜ�9‰9×Ñ 1 &ÐÓ)€DÙ˜¨°3Ô7€Fñ ˜$¨Ô+€Gà��CœŸ™Ó ˆØ—‘˜d¨�Ó+‰ˆà—<‘<  s¥
¨A�<Ó3‰ˆÜ˜BÔ$Ü�RÔà—<‘<  s¥
¨A�<Ó3‰ˆÜ˜BÔ$Ü�RÔä(¨¸À3È!ÔL‰ˆÜ˜BÔ$Ü�RÖó !r   c                 óp  € R p^p^p\         P                  P                  R4       \         P                  P                  W3R7      pV ! V^RR7      pV ! V^R7      p^^\         P                  3 FC  pVP                  WCVR7      w  r‰VP                  WCVR7      w  r«\        WŠ4       \        W›4       KE  	  R# )rn  r}   r  rö   r   r~   rM  N)rA   r�   r‚   r!  r\   r@   r   r   )r   rZ   rL   rU   rC   r?   rp  r,   rO   rP   rj  rk  s   &           r   Útest_kdtree_box_0boxsizeru  ë  s¢   € à€AØ	€AØ	€AÜ‡I�I‡N�N�4ÔÜ�9‰9×Ñ 1 &ÐÓ)€DÙ˜¨°3Ô7€Fñ ˜$¨Ô+€Gà�”B—F‘F‹^ˆØ—‘˜d¨�Ó+‰ˆà—=‘= ¨A�=Ó.‰ˆÜ˜BÔ$Ü�RÖó r   c                 óº  € \         P                  ! ^ ^^
4      P                  R^4      pVR;;,          ^
,          uu&   \        P                  ! \
        4      ;_uu_ 4        V ! V^RR7       RRR4       \        P                  ! \
        4      ;_uu_ 4        V ! V^RR7       RRR4       V ! V^RR7       R#   + '       g   i     LS; i  + '       g   i     L0; i)r   rÖ   r   Nrü   )r;   r   )rö   r  )r  rö   )rA   rÕ  ÚreshaperÙ   r	   rÚ   ©r   rC   s   & r   Útest_kdtree_box_upper_boundsry  þ  s�   € Ü�;Š;�q˜!˜RÓ ×(Ñ(¨¨QÓ/€DØˆ‡J�"ÕƒJÜ	�Š”z×	"Õ	"Ù�D 1¨cÕ2÷ 
#ä	�Š”z×	"Õ	"Ù�D 1¨jÕ9÷ 
#ñ �˜q¨*×5÷ 
#×	"úç	"×	"ús   Á B7ÂC
Â7C	Ã
C	c                 ó\   € \         P                  ! R^^
4      p\        \        W^RR7       R# )r   rÖ   r   Nrü   )rA   rÕ  Úassert_raisesrÚ   rx  s   & r   Útest_kdtree_box_lower_boundsr|    s"   € Ü�;Š;�r˜1˜bÓ!€DÜ”*˜k¸!ÀS×Ir   c                 ór  € . p. p\         P                  ! ^VP                  ^,          ,          4      p\         P                  ! \         P                  ! V^.VP                  ^,          ,          4      4      P
                  pVR,
          pV Ft  p	WR,          V,          ,           p
V P                  W¢VR7      w  r¼VP                  R
V4      pVP                  R
V4      pVP                  V4       VP                  V4       Kv  	  \         P                  ! VR
R7      p\         P                  ! VR
R7      p\         P                  ! \        V4      \        V4      V,          .RR.R7      pWmR,          R&   W]R,          R&   VP                  RR7       VR,          RR	V13,          VR,          RR	V13,          3# )r¾   rÖ   rM  r<   rP   rO   r	  r;   )ÚorderNrü   )rP   Úi8)rO   Úf8)rA   ÚarangerÁ   rŸ   Úunravel_indexré   r@   rw  ÚappendÚconcatenateÚemptyrÊ  rd  )r?   rC   rU   r-   r,   rO   rP   r>   ÚnnrZ   Úimagerq  rr  rÙ  s   &&&&&         r   ro  ro    sf  € Ø	€BØ	€BÜ
�	Š	�!�t—z‘z !•}Õ$Ó%€AÜ	�Š”"×"Ò" 1 q c¨D¯J©J°q­MÕ&9Ó:Ó	;×	=Ñ	=€BØ	ˆc�€BÛˆØ˜3•w Õ(Õ(ˆØ—<‘< ¨A�<Ó.‰ˆØ�k‰k˜"˜aÓ ˆØ�k‰k˜"˜aÓ ˆØ
�	‰	�#ŒØ
�	‰	�#Žñ ô 
�Š˜ Ô	$€BÜ	�Š˜ Ô	$€Bä�XŠX”s˜4“y¤# b£'¨A¥+Ð.ØØð7ô €Fð ˆ4…L��OØˆ4…L��OØ
‡K�K�d€KÔØ�$�<˜˜2˜A˜2˜Õ  t¥¨Q°°°¨UÕ 3Ð3Ð3r   ÚPyPyz Fails on PyPy CI runs. See #9507)Úreasonc                  ó  €  ^ RI p RRr!\        P                  \	        ^^T,           T4      \	        ^^T,           T4      3,          w  r4\        P
                  ! T4      ^
,          \        P                  ! ^
Y4,          ,           4      \        P                  ! T4      ,          ,           p\        P                  ! T4      pYVR&   Rp\        P                  P                  ^ TP                  \        P                  P                  ^24      ^,           4      pYvP                  T&   \        P                  ! \        P                  ! YG8g  4      4      P                  p	\        P                  ! \        P                  ! YG8H  4      4      P                  p
T P                  T P                   4      P"                  p\%        ^
4       F  p\'        T	4      pK  	  ^ p\%        ^d4       F�  pT P                  T P                   4      P"                  p\'        T	4      pTP)                  T
^^R7      w  ppT P                  T P                   4      P"                  pTT8”  g   Kx  T^,          pKƒ  	  \+        T^
8  4       R#   \         d     R# i ; i)r   Nçš™™™™™©?r;   g     ÀX@)rU   r,   )ÚresourceÚImportErrorrA   r7  ÚsliceÚsinÚcosÚ
empty_liker�   r-  r  ÚflatÚvstackÚnonzeroré   Ú	getrusageÚRUSAGE_SELFÚ	ru_maxrssra  r   r@   r   )rŒ  ÚdxÚdyrÃ  r>   ÚzÚz_copyÚFILLVALÚmaskÚigoodÚibadÚmem_userF   r$   Ú	num_leaksr  ÚiqueryÚnew_mem_uses                     r   Útest_ckdtree_memuser¤  %  sá  € ðÛð
 �4ˆÜ�8‰8”E˜!˜Q �V RÓ(Ü˜!˜Q �V RÓ(ð)õ *�D€Aä
�Šˆq‹	�2�œŸš˜r A¥C�xÓ(¬2¯6ª6°!«9Õ4Õ4€AÜ�]Š]˜1Ó€FØˆ1�Ià€GÜ�9‰9×Ñ˜Q §¡¬¯	©	×(9Ñ(9¸"Ó(=ÀÕ(AÓB€DØ‡K�K�ÑÜ�IŠI”b—j’j ¡Ó.Ó/×1Ñ1€EÜ�9Š9”R—Z’Z ¡Ó-Ó.×0Ñ0€DØ× Ñ  ×!5Ñ!5Ó6×@Ñ@€Gä�2ŽYˆÜ�u‹~Šñ ð €IÜ�3ŽZˆØ×$Ñ$ X×%9Ñ%9Ó:×DÑDˆÜ�u‹~ˆØ—z‘z $¨!¨q�zÓ1‰ˆˆfØ×(Ñ(¨×)=Ñ)=Ó>×HÑHˆØ˜Ö Ø˜�NŠIñ ô ˆI˜‰NÖøô? ô âðús   ‚I1 É1J É?J c                 óÞ  € \         P                  ! ^ ^^4      P                  R^4      pV ! V^R7      p\         P                  ! \	        V4      RR7      pVP                  V4      p\        V. RO4       \        \        VP
                  VRR 4       \        ^
4       Fù  pVP                  V\         P                  ! ^ ^
V4      4      pVP                  V\         P                  ! ^ ^
V4      W33R7      pVP                  V\         P                  ! ^ ^
V4      VR3R7      pVP                  V\         P                  ! ^ ^
V4      RV3R7      p	VP                  V\         P                  ! ^ ^
V4      VR7       \        Wg4       \        Wh4       \        Wi4       Kû  	  \        \	        V4      4       F¼  pVP                  4       p
^ W¥&   W^ 8g  ,          pV ! V4      pVP                  V\         P                  ! ^ ^
^d4      Wª3R7      pVP                  V\         P                  ! ^ ^
^d4      4      p\        Wg4       \        \        VP                  V\         P                  ! ^ ^
^d4      V
R7       K¾  	  R# )r   r~   Úf4r	  N)Úweightsrü   )r½   rK   r   r   rK   r   r   )rA   rÕ  rw  r  rÊ  Ú_build_weightsr   r{  rÚ   ra  rÉ  rN  )r   rC   Útree1r§  ÚnwrF   Úc1Úc2Úc3Úc4Úw1rp  Útree2s   &            r   Útest_kdtree_weightsr±  P  s   € ä�;Š;�q˜!˜QÓ×'Ñ'¨¨AÓ.€DÙ˜ qÔ)€EÜ�gŠg”c˜$“i tÔ,€Gà	×	Ñ	˜gÓ	&€BÜ�rÒ0Ô1ä”*˜e×2Ñ2°G¸C¸R°LÔAä�2ŽYˆà×"Ñ" 5¬"¯+ª+°a¸¸QÓ*?Ó@ˆØ×"Ñ" 5¬"¯+ª+°a¸¸QÓ*?Ø Ð*ð #ó ,ˆà×"Ñ" 5¬"¯+ª+°a¸¸QÓ*?Ø  $˜ð #ó )ˆà×"Ñ" 5¬"¯+ª+°a¸¸QÓ*?Ø˜w˜ð #ó )ˆà×Ñ˜e¤R§[¢[°°B¸Ó%:Øð 	ô 	!ô 	˜2Ô"Ü˜2Ô"Ü˜2Ö"ñ ô  ”3�t“9Öˆà�\‰\‹^ˆØˆ‰Ø˜1‘W•ˆÙ˜EÓ"ˆà×"Ñ" 5¬"¯+ª+°a¸¸SÓ*AØ˜ð #ó "ˆð ×"Ñ" 5¬"¯+ª+°a¸¸SÓ*AÓBˆä˜2Ô"ô 	”j %×"7Ñ"7Ø”2—;’;˜q " cÓ*°B÷	8ó! r   c                 ó4  € R p^p\         P                  P                  R4       \         P                  P                  W3R7      pV ! V^R7      p. ROp\         P                  ! \        V4      4      pVP                  WE4      pVP                  WERR7      p\        WxP                  4       4       \        \        P                  ! V4      \        P                  ! V4      4       F1  w  ršVP                  WJ4      p\        W\        V	4      ,          4       K3  	  R# )rn  r}   r  r~   F©Ú
cumulativeN)r   rÓ  rÓ  g{®Gáz”?r‹  )rA   r�   r‚   Únormalr�  rÊ  rÉ  r   Úcumsumr[   Ú	itertoolsÚpermutationsr   rZ  )r   rZ   rL   rC   r?   Úr0Úi0Ún0ÚnncrF   r[  s   &          r   Ú&test_kdtree_count_neighbous_multiple_rr½  ~  sÙ   € à€AØ	€AÜ‡I�I‡N�N�4ÔÜ�9‰9×Ñ ! ÐÓ(€DÙ˜¨Ô*€FÚ	$€BÜ	�Š”3�r“7Ó	€BØ	×	Ñ	 Ó	+€BØ
×
 Ñ
  ¸Ð
 Ó
>€CÜ�—Z‘Z“\Ô"ä”I×*Ò*¨2Ó.Ü×*Ò*¨2Ó.ö0‰ˆð ×"Ñ" 6Ó-ˆÜ˜1¤ a£�kÖ*ó	0r   c                 ób  € \         P                  P                  R 4      pVP                  ^
^4      pVP                  ^
^4      pV ! V4      pVP	                  RR.^R7      w  rVVP                  RR.RV,          4      p\        V. 4       VP	                  V^R7      w  rVVP                  4       pVP                  VRV,          4      p\         P                  ! R\        R7      p	V	P                  . 4       \        W—4       V ! V4      p
VP                  V
RV,          4      p	\        ^
. .,          V	4       VP                  V
RV,          4      p	\        V	^ 8H  4       VP                  V
RV,          RR7      p	\        V	\         P                  ! R4      8H  R4       VP                  V
RV,          RR7      p	\        V	\         P                  ! R4      8H  R4       VP                  V
RV,          R	R7      p	\!        V	/ 4       VP                  V
RV,          R
R7      p	R\         P"                  3R\         P"                  3R\         P$                  3.p\         P&                  ! VRR7      p\         P                  ! RVR7      p\        W—4       VP	                  V^R7      w  rVVR,          P                  4       pVP)                  RV,          RR7      p	\!        V	\+        4       4       VP)                  RV,          R
R7      p	\         P                  ! R\         P"                  R7      p\        W—4       R# )r}   r)   rÈ   rk   )rÁ   r
  r  rÿ  Tr  rþ  r  rF   rq  r  )Úalignr  N)rŒ   )rŒ   rŒ   )r   )r;   rü   )r   rK   )rA   r�   ÚRandomStateÚrandr@   rÿ   r   ra  r…  ÚobjectÚfillrm  rÉ  r   rè  rÀ   r   ÚintpÚfloat64r
  r  r  )r   ÚrngÚXÚYr$   r/   rF   rš  ÚmindrÃ  ÚotherÚ_dtypeÚ	res_dtypes   &            r   Útest_len0_arraysrÍ  ‘  s“  € ô �)‰)×
Ñ
 Ó
%€CØ�‰��Q‹€AØ�‰��Q‹€AÙ�q‹>€Dà�:‰:�r˜2�h !ˆ:Ó$�D€AØ×Ñ˜r 2˜h¨¨A­Ó.€AÜ�q˜"Ôà�:‰:�a˜1ˆ:Ó�D€AØ�5‰5‹7€DØ×Ñ˜a  T¥Ó*€AÜ
�Š�v¤VÔ,€AØ‡F�Fˆ2„JÜ�qÔá˜‹N€EØ×Ñ˜U C¨¥HÓ-€AÜ�r˜2˜$•w Ô"à×Ñ˜U C¨¥HÓ-€AÜˆA�‰F„Oà×#Ñ# E¨3¨t­8ÀÐ#ÓN€AÜ�qœBŸHšH XÓ.Ñ.°Ô5Ø×#Ñ# E¨3¨t­8ÀÐ#ÓN€AÜ�qœBŸHšH XÓ.Ñ.°Ô5Ø×#Ñ# E¨3¨t­8ÀÐ#ÓH€AÜ��BÔØ×#Ñ# E¨3¨t­8ÀÐ#ÓK€AØ”B—G‘Gˆn˜s¤B§G¡G˜n¨s´B·J±JÐ.?Ð@€FÜ—’˜ tÔ,€IÜ
�Š�u IÔ.€AÜ�qÔà�:‰:�a˜1ˆ:Ó�D€AØˆU�8�<‰<‹>€DØ×Ñ˜˜T�¨uÐÓ5€AÜ�”C“EÔØ×Ñ˜˜T�¨yÐÓ9€AÜ
�Š�v¤R§W¡WÔ-€AÜ�qÖr   c           
      óŽ  € R p\        ^^4       EF1  p\        P                  ! W34      p^W1^,          R% \        P                  ! R^R7       Fï  w  rEV ! W4V^R7      pVP
                  ^8X  g   Q hV \        J d   VP                  MVP                  P                  p\        \        P                  ! VP                  P                  4      \        P                  ! ^ V^,          4      4       \        \        P                  ! VP                  P                  4      \        P                  ! V^,          V4      4       Kñ  	  EK4  	  R# )i   N)Úrepeat)rø  rù  r   ©FT)ra  rA   r  r·  Úproductr  r   r$   Ú_noder   rd  r]  r^  r�  r¸  )r   rZ   rL   rC   ÚbalancedÚcompactr?   r$   s   &       r   Útest_kdtree_duplicated_inputsrÕ  ¿  sö   € à€AÜ�1�a�[ˆÜ�wŠw˜�v‹ˆØˆ��TˆUˆä!*×!2Ò!2°=È×!KÑˆHÙ  Ø/6ÀôDˆFà—;‘; !Ô#Ð#Ð#à#.´'Ó#9�F—K’KØ—K‘K×%Ñ%ð ô Ü—’˜Ÿ™×+Ñ+Ó,Ü—	’	˜!˜Q !�VÓ$ô&ô Ü—’˜Ÿ™×,Ñ,Ó-Ü—	’	˜!˜q�& !Ó$ö&ô "Ló	 r   c                 ó^   € V ! ^ ..^R7      p\        \        VP                  VR^ .RR7       R# )r   r~   rk   Fr³  N)r{  rÚ   rÉ  )r   r?   s   & r   Ú'test_kdtree_noncumulative_nondecreasingr×  Ö  s1   € ñ
 ˜1˜#˜¨Ô+€Fä”*˜f×4Ñ4Ø��a� U÷,r   c                 ór  € \         P                  ! . RO. RO. R	O. R
O. RO. RO.RR7      pV ! V4      pVP                  V^RR7      w  r4\        VR \         P                  \         P                  \         P                  .R R\         P                  \         P                  .R R\         P                  \         P                  .R R\         P                  \         P                  .R R\         P                  \         P                  .R \         P                  \         P                  \         P                  ..4       R# )rö   rÅ  r	  r€   rT   rÓ  N)rö   rö   rö   )r'  rö   rö   )rö   rÖ   rö   )rö   r'  rö   )rÖ   rö   rö   )rÖ   rÖ   rö   )rA   rŸ   r@   r   r\   )r   ÚxyzÚckdtÚdeqÚieqs   &    r   Útest_short_knnrÝ  à  sß   € ô �(Š(ÚÚÚÚÚÚðð ô€Cñ �sÓ€Dà�z‰z˜# ¸ˆzÓ=�H€Cä˜cØ”"—&‘&œ"Ÿ&™&¤"§&¡&Ð)Ø�”r—v‘vœrŸv™vÐ&Ø�”r—v‘vœrŸv™vÐ&Ø�”r—v‘vœrŸv™vÐ&Ø�”r—v‘vœrŸv™vÐ&Ø”—‘œŸ™¤§¡Ð(ð*ö+r   c                 ó  € \         P                  P                  R 4       \         P                  P                  RR7      p\         P                  P                  RR7      pV ! V4      p\         P                  P	                  ^ R\        V4      R7      pVP                  W$4      p\        W$4       UUu. uF  w  rgVP                  Wg4      NK  	  ppp\        WX4       F#  w  rš\        \        V	4      \        V
4      4       K%  	  R# u uppi )r}   r  ç333333Ó?N©r|   r¾   )
rA   r�   r‚   rµ  r!  rÊ  rÿ   r[   r   r   )r   rC   r@   r$   r/   ÚrvectorÚqiÚdiÚrscalarr*   r+   s   &          r   Útest_query_ball_point_vector_rrå  ù  sÇ   € ä‡I�I‡N�N�4ÔÜ�9‰9×Ñ ÐÓ*€DÜ�I‰I×Ñ (ÐÓ+€EÙ�tÓ€DÜ
�	‰	×Ñ˜!˜S¤s¨5£zÐÓ2€Aà×#Ñ# EÓ-€GÜ;>¸u¼=ÔI¹=±°ˆt×$Ñ$ RÖ,¹=€GÑIÜ�GÖ%‰ˆÜœ6 !›9¤f¨Q£iÖ0ó &ùó Js   Â2Dc           	      óH  € \         P                  P                  R 4       \         P                  P                  RR7      p\         P                  P                  RR7      pV ! V4      pRpVP	                  W$RR7      pVP	                  W$RR7       Uu. uF  p\        V4      NK  	  ppV Uu. uF  p\        VP	                  W„4      4      NK  	  p	pV Uu. uF  qƒP	                  W„RR7      NK  	  p
p\        WW4       \        WY4       \        WZ4       R# u upi u upi u upi )r}   r  rß  T©Úreturn_lengthFNrà  )rA   r�   r‚   rµ  rÿ   rÊ  r   )r   rC   r@   r$   r/   Úlengthr  Úlength2râ  Úlength3Úlength4s   &          r   Útest_query_ball_point_lengthrí    sù   € ä‡I�I‡N�N�4ÔÜ�9‰9×Ñ ÐÓ*€DÜ�I‰I×Ñ (ÐÓ+€EÙ�tÓ€DØ€Aà×"Ñ" 5¸4Ð"Ó@€FØ#'×#8Ñ#8¸ÐQVÐ#8Ô#WÓXÑ#W˜CŒs�3ŽxÑ#W€GÐXÙ;@ÓA¹5°RŒs�4×(Ñ(¨Ó/Ö0¹5€GÐAÙJOÓPÉ%ÀB×$Ñ$ R¸$Ð$Ö?É%€GÐPÜ�vÔ'Ü�vÔ'Ü�vÖ'ùò YùÚAùÚPs   ÂDÂ,#DÃDc                 óz  € \         P                  P                  R 4       \         P                  P                  RR7      p\         P                  ! ^d4      R,          p\         P
                  ! \         P                  ! ^d4      RRR1,          R,          4      RRR1,          p\         P                  P                  RR7      p\         P
                  ! VP                  4      P                  pVP                  R,          VP                  R,          8w  g   Q hVP                  R,          VP                  R,          8w  g   Q hV ! V4      pVP                  VVRR7      pVP                  VVRR7      p\        Wx4       VP                  V^4      w  ršVP                  V^4      w  r¼\        W›4       \        W¬4       R# )r}   r  g{®Gáz¤?NTrç  rà  rü   )rA   r�   r‚   rµ  r�  Úascontiguousarrayré   Ústridesrÿ   r   r@   )r   rC   Úd_contiguousÚd_discontiguousÚquery_contiguousÚquery_discontiguousr$   Úlength1rê  Úd1Úi1Úd2Úi2s   &            r   Útest_discontiguousrú    su  € ä‡I�I‡N�N�4ÔÜ�9‰9×Ñ ÐÓ*€DÜ—9’9˜S“> DÕ(€LÜ×*Ò*ÜŸ)š) C›.©¨2¨Õ.°Õ5ó7Ù7;¸°tõ=€Oä—y‘y×'Ñ'¨XÐ'Ó6ÐÜ×.Ò.Ð/?×/AÑ/AÓB×DÑDÐØ×&Ñ& rÕ*Ð.>×.FÑ.FÀrÕ.JÔJÐJÐJØ×"Ñ" 2Õ&¨,×*>Ñ*>¸rÕ*BÔBÐBÐBá�tÓ€Dà×#Ñ#Ð$4Ø$0Àð $ó F€Gà×#Ñ#Ð$7Ø$3À4ð $ó I€Gô �wÔ(à�Z‰ZÐ(¨!Ó,�F€BØ�Z‰ZÐ+¨QÓ/�F€Bä�rÔÜ�rÖr   zbalanced_tree, compact_nodesc                 óv  € \         P                  P                  R 4       \         P                  ! RR7      p\         P                  ! RR7      p\         P                  ! R	R7      pV ! W1VR7      pVP                  VRRR7      pV^ 8X  g   Q hVP                  V^4      w  r‰V	P                  R
8X  g   Q hVP                  R
8X  g   Q h\         P                  ! V4      P                  4       '       g   Q hVP                  V^ ^.4      p
\        V
^ ^ .4       VP                  VR4      pVP                  R8X  g   Q hR# )r}   )rÁ   r÷  rß  Trç  N)r   r¾   )r   r¾   rX  )rK   rK   rY  )rA   r�   r‚   r…  r  rÿ   r@   rÁ   ÚisinfrD   rÉ  r   rè  )r   rø  rù  Úempty_v3Úquery_v3Úquery_v2r$   ré  rO   rP   ÚNrê  s   &&&         r   Útest_kdtree_empty_inputr  2  s  € ô ‡I�I‡N�N�4ÔÜ�xŠx˜fÔ%€HÜ�wŠw˜VÔ$€HÜ�wŠw˜VÔ$€Há�xØ%2ô4€Dà×"Ñ" 8¨SÀÐ"ÓE€FØ�QŒ;Ðˆ;à�Z‰Z˜ !Ó$�F€BØ�8‰8�vÔÐÐØ�8‰8�vÔÐÐÜ�8Š8�B‹<×Ñ×ÒÐÐà×Ñ˜T A q 6Ó*€AÜ�q˜1˜a˜&Ô!à×#Ñ# D¨#Ó.€AØ�7‰7�fÔÐÒr   c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )Ú_Test_sorted_query_ball_pointiN  c                óÎ   € \         P                  P                  R 4       \         P                  P                  ^d^4      V n        V P                  V P                  4      V n        R# )r}   N)rA   r�   r‚   rƒ   r>   r   rÚ  r„   s   &r   r…   Ú*_Test_sorted_query_ball_point.setup_methodP  s>   € Ü
�	‰	�‰�tÔÜ—‘—‘  aÓ(ˆŒØ×$Ñ$ T§V¡VÓ,ˆŽ	r   c                ó  € V P                   P                  V P                  R RR7      pV F  p\        V\	        V4      4       K  	  V P                   F6  pV P                   P                  VR RR7      p\        V\	        V4      4       K8  	  R# )rÖ   T©Úreturn_sortedN)rÚ  rÿ   r>   r   r   )r5   Ú	idxs_listÚidxsr,  s   &   r   Útest_return_sorted_TrueÚ5_Test_sorted_query_ball_point.test_return_sorted_TrueU  sr   € Ø—I‘I×.Ñ.¨t¯v©v°rÈÐ.ÓNˆ	ÛˆDÜ˜t¤V¨D£\Ö2ñ ð —&”&ˆBØ—9‘9×-Ñ-¨b°"ÀDÐ-ÓIˆDÜ˜t¤V¨D£\Ö2ó r   c                óŽ  € V P                   P                  V P                  R4      pV F  p\        V\	        V4      4       K  	  V P                   Uu. uF  q0P                   P                  VR4      NK   	  ppV P                   P                  V P                  RRR7      p\        WT4       F  w  rg\        Wg4       K  	  R# u upi )z“Previous behavior was to sort the returned indices if there were
multiple points per query but not sort them if there was a single point
per query.rÖ   Fr  N)rÚ  rÿ   r>   r   r   r[   )r5   r	  r
  r,  Úidxs_list_singleÚidxs_list_FalseÚidxs0Úidxs1s   &       r   Útest_return_sorted_NoneÚ5_Test_sorted_query_ball_point.test_return_sorted_None^  s¡   € ð —I‘I×.Ñ.¨t¯v©v°rÓ:ˆ	ÛˆDÜ˜t¤V¨D£\Ö2ñ ð JNÏÊÓPÉÀ2ŸI™I×6Ñ6°r¸2Ö>ÉÐÐPØŸ)™)×4Ñ4°T·V±V¸RÈuÐ4ÓUˆÜ ÖB‰LˆEÜ˜uÖ,ó Cùò Qs   Á$C)rÚ  r>   N)	r   rr   rs   rt   r…   r  r  ru   rv   rw   s   @r   r  r  N  s   ø‡ € ò-ò
3÷-ð -r   r  c                  óv  € \         P                  P                  ^
^4      P                  \        4      p \
        P                  ! \        RR7      ;_uu_ 4        \        V 4      pRRR4       \        V P                  4      p\
        P                  ! \        RR7      ;_uu_ 4        VP                  V 4       RRR4       \
        P                  ! \        RR7      ;_uu_ 4        VP                  V ^R7       RRR4       R#   + '       g   i     L¥; i  + '       g   i     Le; i  + '       g   i     R# ; i)rŒ   zcomplex datar×   Nr(  )rA   r�   rÁ  ÚviewÚcomplexrÙ   r	   Ú	TypeErrorr   Úrealr@   rÿ   ©rb  Úts     r   Útest_kdtree_complex_datar  l  s½   € ä�Y‰Y�^‰^˜B Ó"×'Ñ'¬Ó0€Fä	�Š”y¨×	7Ö	7Ü�6‹Nˆ÷ 
8ô 	ˆv�{‰{Ó€Aä	�Š”y¨×	7Ö	7Ø	�‰�Œ÷ 
8ô 
�Š”y¨×	7Ö	7Ø	×Ñ˜6 QÐÔ'÷ 
8Ñ	7÷ 
8×	7ú÷
 
8×	7ú÷ 
8×	7Ð	7ús$   ÁDÂ%DÃ#D'ÄD	ÄD$	Ä'D8	c                  ó  € \         P                  P                  R 4       \         P                  P                  ^d^4      p \	        V 4      pVP
                  p\        V\        P                  4      '       g   Q hVP                  V P                  ^ ,          8X  g   Q hV.pV'       Ed×   VP                  R4      p\        V\        P                  4      '       d{   \        VP                  \        4      '       g   Q hVP                  \        VP                  4      8X  g   Q h\        WP                  ,          VP                   P"                  4       K´  \        V\        P                  4      '       g   Q h\        VP$                  \        4      '       g   Q h^ VP$                  u;8:  d   VP&                  8  g   Q h Q h\        VP(                  \*        4      '       g   Q h\        VP                  \        4      '       g   Q hVP                  VP,                  P                  VP.                  P                  ,           8X  g   Q hVP1                  VP.                  4       VP1                  VP,                  4       EKß  R# )r}   Nrü   )rA   r�   r‚   rÁ  r   r$   r³   Ú	innernodeÚchildrenrÁ   ÚpopÚleafnoderã   rÊ  Úidxr   rÒ  r_  r\  rL   r´  r´   r·  r¸  rƒ  )rb  r  Úrootr=  rZ   s        r   Útest_kdtree_tree_accessr#  |  s¯  € ä‡I�I‡N�N�4ÔÜ�Y‰Y�^‰^˜C Ó#€FÜˆv‹€AØ�6‰6€Dä�dœF×,Ñ,×-Ò-Ð-Ð-Ø�=‰=˜FŸL™L¨�OÔ+Ð+Ð+ð ˆF€Eß
ˆ%Ø�I‰I�b‹Mˆä�aœŸ™×)Ò)Ü˜aŸj™j¬#×.Ò.Ð.Ð.Ø—:‘:¤ Q§U¡U£Ô+Ð+Ð+Ü˜v§e¡e�}¨a¯g©g×.AÑ.AÖBä˜a¤×!1Ñ!1×2Ò2Ð2Ð2Ü˜aŸk™k¬3×/Ò/Ð/Ð/Ø˜Ÿ™Ö) a§c¡cÔ)Ð)Ñ)Ð)Ð)Ü˜aŸg™g¤u×-Ò-Ð-Ð-Ü˜aŸj™j¬#×.Ò.Ð.Ð.Ø—:‘: §¡§¡°1·9±9×3EÑ3EÕ!EÔEÐEÐEØ�L‰L˜Ÿ™Ô#Ø�L‰L˜Ÿ™× ñ r   c                  óð  € \         P                  P                  R 4       \         P                  P                  ^d^4      p \	        V 4      p\        VP                  \        4      '       g   Q hVP                  V P                  ^ ,          8X  g   Q h\        VP                  \        4      '       g   Q hVP                  V P                  ^,          8X  g   Q h\        VP                  \        4      '       g   Q hVP                  ^
8X  g   Q h\        VP                  \         P                  ! V ^ R7      4       \        VP                  \         P                  ! V ^ R7      4       VP                   V J g   Q hR# )r}   r<   N)rA   r�   r‚   rÁ  r   r³   rL   rã   rZ   rÁ   r   r   rµ  rM   r¶  ÚaminrC   r  s     r   Útest_kdtree_attributesr&  š  sþ   € ä‡I�I‡N�N�4ÔÜ�Y‰Y�^‰^˜C Ó#€FÜˆv‹€Aä�a—c‘cœ3×ÒÐÐØ�3‰3�&—,‘,˜q•/Ô!Ð!Ð!ä�a—c‘cœ3×ÒÐÐØ�3‰3�&—,‘,˜q•/Ô!Ð!Ð!ä�a—j‘j¤#×&Ò&Ð&Ð&Ø�:‰:˜ÔÐÐä�q—w‘w¤§¢¨°QÔ 7Ô8Ü�q—v‘vœrŸwšw v°AÔ6Ô7Ø�6‰6�VÓÐÒr   Úkdtree_classc           
      óú  € \         P                  P                  R 4      p\         P                  ! R^R4      pVP                  ^4      P	                  R4      pVP                  ^-4      P	                  R4      pVP                  ^4      pVP                  ^4      pV ! V4      pV ! V4      pVP                  W‚RWV3R7      p	VR,          VR	,          ,          p
\         P                  P                  VR
,          VR,          ,
          RR7      p\        \        P                  ! ^ .VRR 4      V4       UUu. uF-  w  rÍ\         P                  ! W¬V8  W½8*  ,          ,          4      NK/  	  ppp\        Wž4       R# u uppi )r}   r‹  F)r´  r§  Nr<   )rÂ  r¾   )é   r¾   )Nr;   ©r;   N)Nr;   r;   )r;   Nr;   rü   )rA   r�   rÀ  r�  rw  rÉ  Úlinalgr  r[   r·  ÚchainrB   r   )r'  rÆ  r[  ÚAÚBÚwAÚwBÚkdAÚkdBÚnABr§  r  Úprev_radiusÚradiusÚexpects   &              r   Ú$test_kdtree_count_neighbors_weightedr7  ®  s9  € ä
�)‰)×
Ñ
 Ó
%€CÜ
�	Š	�$˜˜4Ó €Aà�
‰
�2‹×Ñ˜uÓ%€AØ�
‰
�2‹×Ñ˜vÓ&€Aà	�‰�A‹€BØ	�‰�B‹€Bá
�q‹/€CÙ
�q‹/€Cà
×
Ñ
˜c°ÀÀÐ
Ó
H€Cð ��k˜B˜w�KÕ'€GÜ�9‰9�>‰>˜!˜J�-¨!¨J­-Õ7¸bˆ>ÓA€Dä),¬Y¯_ª_¸a¸SÀ!ÀCÀRÀ&Ó-IÈ1Ô)MôOÙ)MÑ%�+ô �fŠf�W¨DÑ0°T±^ÕDÕEÖFÙ)Mð ñ Oä�CÖ ùóOs   Ä43E7c                  ó@  € . ROp \        V 4      p\        P                  ! V \        P                  ! V\        P                  4      .4      R,          p\
        P                  ! \        RR7      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; i)r   Númust be finiter×   )
r   é   iöÿÿÿrÂ  éüÿÿÿiðÿÿÿiúÿÿÿé   r¾   iõÿÿÿr*  )	rÊ  rA   r„  r"  ÚnanrÙ   r	   rÚ   r   )ÚvalsrZ   rC   s      r   Útest_kdtree_nanr?  Æ  s_   € Ú1€DÜˆD‹	€AÜ�>Š>˜4¤§¢¨¬B¯F©FÓ!3Ð4Ó5°gÕ>€DÜ	�Š”zÐ)9×	:Ö	:ÜˆtŒ÷ 
;×	:×	:Ò	:ús   Á6BÂB	c                  óÄ  € \         P                  P                  R 4      p V P                  R
RRR7      p\	        VRRR7      p\        ^4       Uu. uF  p\         P                  NK  	  pp\        P                  ! \        RR7      ;_uu_ 4        VP                  V4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  V^4       RRR4       \         P                  VR&   \        P                  ! \        RR7      ;_uu_ 4        \	        VR	RR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VRR	R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VR	R	R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VRRR7       RRR4       R# u upi   + '       g   i     ELV; i  + '       g   i     EL+; i  + '       g   i     Lð; i  + '       g   i     LÈ; i  + '       g   i     L ; i  + '       g   i     R# ; i)i90  rö   rk   )r  ÚlowÚhighFr÷  r9  r×   NTrà  )r   r;   )rA   r�   Údefault_rngr!  r   ra  r=  rÙ   r	   rÚ   r@   rÿ   )rÆ  Úcoordsr  r   Ú	bad_coords        r   Útest_nonfinite_inputs_gh_18223rF  Î  sv  € Ü
�)‰)×
Ñ
 Ó
&€CØ�[‰[˜h¨C°cˆ[Ó:€FÜˆv U¸%Ô@€AÜ!& q¤Ó*¡˜A”—”¡€IÐ*ä	�Š”zÐ)9×	:Ö	:Ø	�‰�	Ô÷ 
;ä	�Š”zÐ)9×	:Ö	:Ø	×Ñ˜9 aÔ(÷ 
;ô —6‘6€Fˆ4�LÜ	�Š”zÐ)9×	:Ö	:Üˆv T¸Õ?÷ 
;ä	�Š”zÐ)9×	:Ö	:Üˆv U¸$Õ?÷ 
;ä	�Š”zÐ)9×	:Ö	:Üˆv T¸Õ>÷ 
;ä	�Š”zÐ)9×	:Ö	:Üˆv U¸%Õ@÷ 
;Ñ	:ùò +ç	:×	:Ð	:úç	:×	:Ð	:ú÷ 
;×	:úç	:×	:úç	:×	:úç	:×	:Ð	:úsN   ÁG(ÂG-ÃHÄHÅH(ÆH;ÇIÇ-G>	ÈH	ÈH%	È(H8	È;I	ÉI	Úincantationc                 óä   €  ! R  R\         P                  4      pRR.RR.RR..p\         P                  ! V4      pV! V4      pV ! V^
4      pVP                  V^4       VP	                  V^È4       R# )	c                   ó,   a € ] tR tRt o R tR tRtV tR# )Útest_gh_18800.<locals>.ArrLikeiê  c                ó^   € \         P                  ! V4      P                  V 4      pR Vn        V# r   )rA   r9  r  rD   )ÚclsÚinput_arrayÚobjs   && r   Ú__new__Ú&test_gh_18800.<locals>.ArrLike.__new__ë  s)   € Ü—*’*˜[Ó)×.Ñ.¨sÓ3ˆCð ˆCŒGØˆJr   c                ó6   € Vf   R # \        VRR 4      V n        R # )NrD   )ÚgetattrrD   )r5   rN  s   &&r   Ú__array_finalize__Ú1test_gh_18800.<locals>.ArrLike.__array_finalize__ò  s   € ØŠ{ÙÜ˜s E¨4Ó0ˆDŽHr   )rD   N)r   rr   rs   rt   rO  rS  ru   rv   rw   s   @r   ÚArrLikerJ  ê  s   ø‡ € ò	÷	1ð 	1r   rU  g®GázŽP@g…ëQ¸E@@g…ëQ¸…6@g¤p=
×c6@gÃõ(\�?@g=
×£pMT@N)rA   r  rŸ   r@   rÿ   )rG  rU  rb  r$  Úarr_liker$   s   &     r   Útest_gh_18800rW  ä  ss   € ô1”"—*‘*ô 1ð 
�ˆØ	�ˆØ	�ˆð
€Fô
 �(Š(�6Ó
€CÙ�s‹|€HÙ�v˜rÓ"€DØ‡J�Jˆx˜ÔØ×Ñ˜( CÖ(r   ))TF)TT)FFrÐ  )krV  Únumpy.testingr   r   r   r   r   r   rÙ   r	   r{  Úplatformr
   ÚnumpyrA   Úscipy.spatialr   r   r   r   Úscipy.spatial._ckdtreer   r   r·  Úfixturer   r'   r0   r2   rz   rŠ   r•   r©   r­   rß   rõ   r  r  r+  r0  r8  r<  rE  rI  rP  r\  ÚmarkÚ	fail_slowrf  rh  rw  r}  rƒ  rˆ  rŒ  r�  r”  r¼  r¾  rÀ  rÄ  rÆ  rÝ  rá  r  r  r  r  r  r  r%  r1  r:  r>  rB  rI  rK  rO  rY  re  rl  rs  ru  ry  r|  ro  Úskipifr¤  r±  r½  rÍ  rÕ  r×  rÝ  rå  rí  rú  Úparametrizer  r  r  r#  r&  r7  r?  rF  rW  rq   r   r   Ú<module>rb     s  ðó 
÷,÷ ,õ +Û Ý *Û ß EÓ EÝ .Ý ,ã à‡‚˜ Ð(Ô)ñó *ðòò(÷H-ñ H-ðV ô	Ð#ó 	ó ð	ð ô,�|ó ,ó ð,ð ô&Ð"ó &ó ð&ð: ô>˜+ó >ó ð>÷+)ñ +)÷Z-7ñ -7÷^>ñ >ð4 ô
Ð(ó 
ó ð
ð ô#
Ð!1ó #
ó ð#
ðL ôÐ)9ó ó ðð" ôÐ0ó ó ðð ôÐ(9ó ó ðð ôÐ-ó ó ðð ôÐ%?ó ó ðð ôÐ,ó ó ðð ôÐ.ó ó ðò'ð ‡�×Ñ�qÓñ-ó ð-÷&3ñ 3ð* ôÐ2ó ó ðð ôÐ&;ó ó ðð" ôÐ!7ó ó ðð ôÐ*Ió ó ðð ôÐ"8ó ó ðð ôÐ+Jó ó ð÷3ñ 3ò@KòBòGò:÷Fñ Fð$ ôFÐ7ó Fó ðF÷F@ñ F@ðR ôÐ#Eó ó ðò"Lò	ò#ò!ò$/ò
òB#ò
;ò5òòòòò'ò$AòD $ðD ‡�×Ñ�rÓñó ðò6ò&6òJò4ð2 ‡�×ÑÑ)Ó+¨vÑ5Ø=ð ó ?ñ'ó?ð'òR,8ð\ ‡�×Ñ�rÓñ+ó ð+ò$,ò\&ò.,ò+ò21ò(ò ð8 ‡�×ÑÐ7òóñ
óð
ð. ÷-ð -ó ð-ò:(ò !ò<ð( ‡�×Ñ˜¨&°'Ð):Ó;ñ!ó <ð!ò.òAð, ‡�×Ñ˜¨°&Ð(9Ó:ñ)ó ;ò)r   