§
    fŠtj¼À  ã                   ód  — d dl Z d dlmZmZmZmZmZmZ d dlm	Z
 d dlZd dlmZ d dlZd dlmZmZmZmZ d dlmZ d dlmZ d dlZ ej        eeg¬¦  «        d	„ ¦   «         Zd
„ Zd„ Z G d„ d¦  «        Ze G d„ de¦  «        ¦   «         Ze G d„ de¦  «        ¦   «         Ze G d„ de¦  «        ¦   «         Ze G d„ de¦  «        ¦   «         Z  G d„ d¦  «        Z! G d„ d¦  «        Z" G d„ d¦  «        Z#e G d„ de#¦  «        ¦   «         Z$e G d„ de#¦  «        ¦   «         Z%e G d „ d!e#¦  «        ¦   «         Z&e G d"„ d#e$¦  «        ¦   «         Z'e G d$„ d%e$¦  «        ¦   «         Z(e G d&„ d'e$¦  «        ¦   «         Z)e G d(„ d)e%¦  «        ¦   «         Z*e G d*„ d+e$¦  «        ¦   «         Z+e G d,„ d-e$¦  «        ¦   «         Z,d.„ Z-ej.         /                    d/¦  «        d0„ ¦   «         Z0 G d1„ d2¦  «        Z1e G d3„ d4e1¦  «        ¦   «         Z2e G d5„ d6e1¦  «        ¦   «         Z3e G d7„ d8e2¦  «        ¦   «         Z4e G d9„ d:e3¦  «        ¦   «         Z5e G d;„ d<e2¦  «        ¦   «         Z6e G d=„ d>e3¦  «        ¦   «         Z7 G d?„ d@¦  «        Z8dA„ Z9dB„ Z:dC„ Z;dD„ Z< G dE„ dF¦  «        Z=e G dG„ dHe=¦  «        ¦   «         Z> G dI„ dJ¦  «        Z?e G dK„ dLe?¦  «        ¦   «         Z@dM„ ZAdN„ ZBdO„ ZCdP„ ZDdQ„ ZEdR„ ZFdS„ ZGdT„ ZHdU„ ZIdV„ ZJdW„ ZKdX„ ZLdY„ ZMdZ„ ZNd[„ ZOd\„ ZPej.         /                    d]¦  «        d^„ ¦   «         ZQd_„ ZRd`„ ZSda„ ZTdb„ ZUej.         V                     e¦   «         dck    dd¬e¦  «        df„ ¦   «         ZWdg„ ZXej.         /                    d]¦  «        dh„ ¦   «         ZYdi„ ZZdj„ Z[dk„ Z\dl„ Z]dm„ Z^dn„ Z_do„ Z`ej.         a                    dpg dq¢¦  «        dr„ ¦   «         Zbe G ds„ dt¦  «        ¦   «         Zcdu„ Zddv„ Zedw„ Zfej.         a                    dxeeg¦  «        dy„ ¦   «         Zgdz„ Zhd{„ Ziej.         a                    d|eeg¦  «        d}„ ¦   «         ZjdS )~é    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                 ó   — | j         S ©N)Úparam)Úrequests    ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_kdtree.pyÚkdtree_typer      s
   € àŒ=Ðó    c                 ó<  — | j                              d¦  «        st          d¦  «        ‚t          t          fD ]c}| j         dd…         dz   |j         z   }|t          ¦   «         v rt          d|z   ¦  «        ‚t          || fd|i¦  «        }|t          ¦   «         |<   Œd| S )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é   NÚ_zDuplicated test name: r   )Ú__name__Ú
startswithÚRuntimeErrorr   r   ÚglobalsÚtype)ÚklsÚtreeÚ	test_nameÚ	test_cases       r   Ú
KDTreeTestr'      s¯   € ð
 Œ<×"Ò" 7Ñ+Ô+ð HÝÐFÑGÔGÐGå�Ð!ð )ð )ˆØ”L   Ô$ sÑ*¨T¬]Ñ:ˆ	à�™	œ	Ð!Ð!ÝÐ7¸)ÑCÑDÔDÐDõ ˜ S F¨]¸DÐ,AÑBÔBˆ	Ø(�‰	Œ	�)ÑÐØ€Jr   c                 óŽ   — | |z
  }||d|z  k    xx         |z  cc<   ||d|z  k     xx         |z  cc<   t          |d|¦  «        }|S )Nç      à?g      à¿r   r   )ÚaÚbÚpÚboxsizeÚdiffÚds         r   Údistance_boxr0   +   sk   € Øˆq‰5€DØˆ��g‘Ò	ÐÐÔ 'Ñ)ÐÐÑØˆ��w‘Ò	ÐÐÔ 7Ñ*ÐÐÑÝ˜4  AÑ&Ô&€AØ€Hr   c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚConsistencyTestsc                 ó$   — t          |||¦  «        S r   r   ©Úselfr*   r+   r,   s       r   ÚdistancezConsistencyTests.distance3   ó   € Ý! ! Q¨Ñ*Ô*Ð*r   c                 ó|  — | j         }| j                             |d¦  «        \  }}t          |dz  t	          j        || j        |         z
  dz  ¦  «        ¦  «         d}t          t	          j        t	          j        | j        |t          j	        d d …f         z
  dz  d¬¦  «        |dz  |z
  k    ¦  «        ¦  «         d S )Nr   é   ç:Œ0âŽyE>©Úaxis)
ÚxÚkdtreeÚqueryr   ÚnpÚsumÚdatar   ÚallÚnewaxis)r5   r=   r/   ÚiÚepss        r   Útest_nearestzConsistencyTests.test_nearest6   s«   € ØŒFˆØŒ{× Ò   AÑ&Ô&‰ˆˆ1Ý˜A˜q™D¥"¤&¨!¨D¬I°a¬L©.¸1Ñ)<Ñ"=Ô"=Ñ>Ô>Ð>ØˆÝ•”•r”v˜tœy¨­2¬:°q°q°q¨=Ô)9Ñ9¸AÑ=ÀAÐFÑFÔFÈÈAÉÈcÉÒQÑRÔRÑSÔSÐSÐSÐSr   c                 óè  — | j         }| j        }| j                             ||¦  «        \  }}t	          j        |¦  «        }|t	          j        |¦  «                 }t          |dz  t	          j        || j	        |         z
  dz  ¦  «        ¦  «         d}t          t	          j        t	          j        | j	        |t          j        d d …f         z
  dz  d¬¦  «        |dz  |z   k     ¦  «        |¦  «         d S )Nr9   r:   r   r;   )r=   Úmr>   r?   r@   ÚamaxÚargmaxr   rA   rB   r   rD   )r5   r=   rI   ÚddÚiir/   rE   rF   s           r   Útest_m_nearestzConsistencyTests.test_m_nearest=   sß   € ØŒFˆØŒFˆØ”×"Ò" 1 aÑ(Ô(‰ˆˆBÝŒG�B‰KŒKˆØ�rŒy˜‰}Œ}ÔˆÝ˜A˜q™D¥"¤&¨!¨D¬I°a¬L©.¸1Ñ)<Ñ"=Ô"=Ñ>Ô>Ð>ØˆÝÝŒF•2”6˜4œ9 Q¥r¤z°1°1°1 }Ô%5Ñ5¸Ñ9ÀÐBÑBÔBÀQÈÁTÈ#ÁXÒMÑNÔNØñ	
ô 	
ð 	
ð 	
ð 	
r   c           	      ó  — | j         }| j        }| j                             || j        j        |¬¦  «        \  }}d}d}t          ||¦  «        D ]p\  }}|t          j        k    rŒ|dz  }t          |dz  t          j	        || j
        |         z
  dz  ¦  «        ¦  «         t          |||z   k     d|d›d|d›�¦  «         Œqt          t          j	        |                      | j
        |d¦  «        |dz  |z   k     ¦  «        |¦  «         d S )	N©ÚkÚdistance_upper_boundr:   r   r   r9   únear_d=Úgú should be less than )r=   r/   r>   r?   ÚnÚzipr@   Úinfr   rA   rB   r   r   r6   ©	r5   r=   r/   rL   rM   rF   ÚhitsÚnear_dÚnear_is	            r   Útest_points_nearz!ConsistencyTests.test_points_nearJ   s  € ØŒFˆØŒFˆØ”×"Ò" 1¨¬¬ÈAÐ"ÑNÔN‰ˆˆBØˆØˆÝ! " b™kœkð 	Tð 	T‰NˆF�FØ�œÒÐØØ�A‰IˆDÝ ¨¡	­2¬6°1°T´Y¸vÔ5FÑ3FÈÑ2JÑ+KÔ+KÑLÔLÐLÝ�F˜Q˜s™U’NÐ$R¨fÐ$RÐ$RÐ$RÈQÐ$RÐ$RÐ$RÑSÔSÐSÐSÝ•R”V˜DŸMšM¨$¬)°Q¸Ñ:Ô:¸QÀ¹TÀ#¹XÒEÑFÔFÈÑMÔMÐMÐMÐMr   c           	      óü  — | j         }| j        }| j                             || j        j        d|¬¦  «        \  }}d}d}t          ||¦  «        D ]j\  }}|t          j        k    rŒ|dz  }t          ||  	                    || j
        |         d¦  «        ¦  «         t          |||z   k     d|d›d|d›�¦  «         Œkt          t          j        |  	                    | j
        |d¦  «        ||z   k     ¦  «        |¦  «         d S )Nr   ©rQ   r,   rR   r:   r   rS   rT   rU   )r=   r/   r>   r?   rV   rW   r@   rX   r   r6   rB   r   r   rA   rY   s	            r   Útest_points_near_l1z$ConsistencyTests.test_points_near_l1X   s  € ØŒFˆØŒFˆØ”×"Ò" 1¨¬¬¸ÐQRÐ"ÑSÔS‰ˆˆBØˆØˆÝ! " b™kœkð 	Tð 	T‰NˆF�FØ�œÒÐØØ�A‰IˆDÝ ¨¯ª°a¸¼À6Ô9JÈAÑ(NÔ(NÑOÔOÐOÝ�F˜Q˜s™U’NÐ$R¨fÐ$RÐ$RÐ$RÈQÐ$RÐ$RÐ$RÑSÔSÐSÐSÝ•R”V˜DŸMšM¨$¬)°Q¸Ñ:Ô:¸Q¸s¹UÒBÑCÔCÀTÑJÔJÐJÐJÐJr   c           	      ó8  — | j         }| j        }| j                             || j        j        t
          j        |¬¦  «        \  }}d}d}t          ||¦  «        D ]t\  }}|t
          j        k    rŒ|dz  }t          ||  	                    || j
        |         t
          j        ¦  «        ¦  «         t          |||z   k     d|d›d|d›�¦  «         Œut          t          j        |  	                    | j
        |t
          j        ¦  «        ||z   k     ¦  «        |¦  «         d S )Nr_   r:   r   r   rS   rT   rU   )r=   r/   r>   r?   rV   r@   rX   rW   r   r6   rB   r   r   rA   rY   s	            r   Útest_points_near_linfz&ConsistencyTests.test_points_near_linff   s  € ØŒFˆØŒFˆØ”×"Ò" 1¨¬¬½¼ÐVWÐ"ÑXÔX‰ˆˆBØˆØˆÝ! " b™kœkð 	Tð 	T‰NˆF�FØ�œÒÐØØ�A‰IˆDÝ ¨¯ª°a¸¼À6Ô9JÍBÌFÑ(SÔ(SÑTÔTÐTÝ�F˜Q˜s™U’NÐ$R¨fÐ$RÐ$RÐ$RÈQÐ$RÐ$RÐ$RÑSÔSÐSÐSÝ•R”V˜DŸMšM¨$¬)°Q½¼Ñ?Ô?À!ÀCÁ%ÒGÑHÔHÈ$ÑOÔOÐOÐOÐOr   c                 óø   — | j         }| j        }d}| j                             ||¦  «        \  }}| j                             |||¬¦  «        \  }}t	          t          j        ||d|z   z  k    ¦  «        ¦  «         d S )Nçš™™™™™¹?)rF   r   )r=   rQ   r>   r?   r   r@   rC   )r5   r=   rQ   rF   Úd_realÚi_realr/   rE   s           r   Útest_approxzConsistencyTests.test_approxt   s{   € ØŒFˆØŒFˆØˆØœ×*Ò*¨1¨aÑ0Ô0‰ˆ�ØŒ{× Ò   A¨3Ð Ñ/Ô/‰ˆˆ1Ý•”�q˜F A c¡E™NÒ*Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,r   N)
r   Ú
__module__Ú__qualname__r6   rG   rN   r]   r`   rb   rg   © r   r   r2   r2   2   s‰   € € € € € ð+ð +ð +ðTð Tð Tð
ð 
ð 
ðNð Nð NðKð Kð KðPð Pð Pð-ð -ð -ð -ð -r   r2   c                   ó   — e Zd Zd„ ZdS )Ú_Test_randomc                 ón  — d| _         d| _        t          j                             d¦  «         t          j                             | j         | j        ¦  «        | _        |                      | j        d¬¦  «        | _        t          j                             | j        ¦  «        | _	        d| _
        d| _        d S )Néd   é   éÒ  r9   ©Úleafsizeçš™™™™™É?é
   )rV   rI   r@   ÚrandomÚseedÚrandnrB   r   r>   r=   r/   rQ   ©r5   s    r   Úsetup_methodz_Test_random.setup_method   s„   € ØˆŒØˆŒÝ
Œ	�Š�tÑÔÐÝ”I—O’O D¤F¨D¬FÑ3Ô3ˆŒ	Ø×&Ò& t¤y¸1Ð&Ñ=Ô=ˆŒÝ”—’ ¤Ñ(Ô(ˆŒØˆŒØˆŒˆˆr   N©r   rh   ri   ry   rj   r   r   rl   rl   }   s#   € € € € € ðð ð ð ð r   rl   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_farc                 ó    •— t          ¦   «                              ¦   «          t          j                             | j        ¦  «        dz   | _        d S )Nrt   )Úsuperry   r@   ru   rw   rI   r=   ©r5   Ú	__class__s    €r   ry   z_Test_random_far.setup_methodŒ   s9   ø€ Ý‰Œ×ÒÑÔÐÝ”—’ ¤Ñ(Ô(¨Ñ+ˆŒˆˆr   ©r   rh   ri   ry   Ú__classcell__©r€   s   @r   r|   r|   Š   s8   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,r   r|   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú_Test_smallc                 óŒ  — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        | _        |                      | j        ¦  «        | _        | j        j        | _        | j        j        | _        t           j                             d	¦  «         t           j         	                    d
¦  «        | _
        d| _        d| _        d S )N©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   rp   é   r)   ro   )r@   ÚarrayrB   r   r>   rV   rI   ru   rv   rw   r=   r/   rQ   rx   s    r   ry   z_Test_small.setup_method“   s»   € Ý”H˜i˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜ið)ñ *ô *ˆŒ	ð ×&Ò& t¤yÑ1Ô1ˆŒØ””ˆŒØ””ˆŒÝ
Œ	�Š�tÑÔÐÝ”—’ Ñ#Ô#ˆŒØˆŒØˆŒˆˆr   c                 óX   — t          | j                             dd¦  «        d¦  «         d S )N©r   r   rd   r   )rd   r   ©r   r>   r?   rx   s    r   rG   z_Test_small.test_nearest¤   s6   € ÝØ”×!Ò! +¨qÑ1Ô1Øñ	ô 	ð 	ð 	ð 	r   c                 ód   — t          | j                             dd¦  «        ddgddgf¦  «         d S )Nr’   r9   rd   gÍÌÌÌÌÌì?r   r   r“   rx   s    r   Útest_nearest_twoz_Test_small.test_nearest_two©   sC   € ÝØ”×!Ò! +¨qÑ1Ô1Ø�s�˜a ˜VÐ$ñ	&ô 	&ð 	&ð 	&ð 	&r   N)r   rh   ri   ry   rG   r•   rj   r   r   r…   r…   ‘   sA   € € € € € ðð ð ð"ð ð ð
&ð &ð &ð &ð &r   r…   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_small_nonleafc                 óŠ   •— t          ¦   «                              ¦   «          |                      | j        d¬¦  «        | _        d S )Nr   rq   )r~   ry   r   rB   r>   r   s    €r   ry   z _Test_small_nonleaf.setup_method±   s9   ø€ Ý‰Œ×ÒÑÔÐØ×&Ò& t¤y¸1Ð&Ñ=Ô=ˆŒˆˆr   r�   rƒ   s   @r   r—   r—   ¯   s8   ø€ € € € € ð>ð >ð >ð >ð >ð >ð >ð >ð >r   r—   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTest_vectorization_KDTreec                 óš   — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        | _        t          | j        ¦  «        | _        d S ©	Nr‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   )r@   r�   rB   r   r>   rx   s    r   ry   z&Test_vectorization_KDTree.setup_method·   sh   € Ý”H˜i˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜ið)ñ *ô *ˆŒ	õ ˜TœYÑ'Ô'ˆŒˆˆr   c                 ó  — | j                              t          j        g d¢¦  «        ¦  «        \  }}t	          t          |t          ¦  «        ¦  «         t	          t          j        |t          j        ¦  «        ¦  «         d S ©Nr‡   )	r>   r?   r@   r�   r   Ú
isinstanceÚfloatÚ
issubdtypeÚsignedinteger©r5   r/   rE   s      r   Útest_single_queryz+Test_vectorization_KDTree.test_single_queryÂ   sd   € ØŒ{× Ò ¥¤¨)¨)¨)Ñ!4Ô!4Ñ5Ô5‰ˆˆ1Ý•
˜1�eÑ$Ô$Ñ%Ô%Ð%Ý•”˜a¥Ô!1Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3r   c                 óì   — | j                              t          j        d¦  «        ¦  «        \  }}t	          t          j        |¦  «        d¦  «         t	          t          j        |¦  «        d¦  «         d S ©N©r9   ro   r�   )r9   ro   ©r>   r?   r@   Úzerosr   Úshaper£   s      r   Útest_vectorized_queryz/Test_vectorization_KDTree.test_vectorized_queryÇ   ó[   € ØŒ{× Ò ¥¤¨)Ñ!4Ô!4Ñ5Ô5‰ˆˆ1Ý•R”X˜a‘[”[ &Ñ)Ô)Ð)Ý•R”X˜a‘[”[ &Ñ)Ô)Ð)Ð)Ð)r   c           	      ó  — d}| j         j        |z   }| j                              t          j        g d¢¦  «        |¬¦  «        \  }}t          t          j        |¦  «        |f¦  «         t          t          j        |¦  «        |f¦  «         t          t          j        t          j	        || d …         ¦  «         ¦  «        ¦  «         t          t          j        || d …         | j         j        k    ¦  «        ¦  «         d S ©Né   r‡   ©rQ   )
r>   rV   r?   r@   r�   r   rª   r   rC   Úisfinite©r5   ÚsÚkkr/   rE   s        r   Ú$test_single_query_multiple_neighborsz>Test_vectorization_KDTree.test_single_query_multiple_neighborsÌ   sÔ   € ØˆØŒ[Œ]˜1‰_ˆØŒ{× Ò ¥¤¨)¨)¨)Ñ!4Ô!4¸Ð Ñ;Ô;‰ˆˆ1Ý•R”X˜a‘[”[ 2 %Ñ(Ô(Ð(Ý•R”X˜a‘[”[ 2 %Ñ(Ô(Ð(Ý•”�œ A q b c c¤FÑ+Ô+Ð+Ñ,Ô,Ñ-Ô-Ð-Ý•”�q˜!˜˜˜”v ¤¤Ò.Ñ/Ô/Ñ0Ô0Ð0Ð0Ð0r   c                 ó$  — d}| j         j        |z   }| j                              t          j        d¦  «        |¬¦  «        \  }}t          t          j        |¦  «        dd|f¦  «         t          t          j        |¦  «        dd|f¦  «         t          t          j        t          j	        |d d …d d …| d …f         ¦  «         ¦  «        ¦  «         t          t          j        |d d …d d …| d …f         | j         j        k    ¦  «        ¦  «         d S ©Nr¯   r§   r°   r9   ro   ©
r>   rV   r?   r@   r©   r   rª   r   rC   r±   r²   s        r   Ú(test_vectorized_query_multiple_neighborszBTest_vectorization_KDTree.test_vectorized_query_multiple_neighborsÕ   óô   € ØˆØŒ[Œ]˜1‰_ˆØŒ{× Ò ¥¤¨)Ñ!4Ô!4¸Ð Ñ;Ô;‰ˆˆ1Ý•R”X˜a‘[”[ 1 a¨ *Ñ-Ô-Ð-Ý•R”X˜a‘[”[ 1 a¨ *Ñ-Ô-Ð-Ý•”�œ A a a a¨¨¨¨Q¨B¨C¨C i¤LÑ1Ô1Ð1Ñ2Ô2Ñ3Ô3Ð3Ý•”�q˜˜˜˜A˜A˜A ˜r˜s˜s˜”| t¤{¤}Ò4Ñ5Ô5Ñ6Ô6Ð6Ð6Ð6r   c                 óª   — d}t          j        t          d¬¦  «        5  | j                             |d ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nç      ð?zk must be an integer or*©Úmatchr°   )Úpytestr	   Ú
ValueErrorr>   r?   )r5   r=   s     r   Útest_query_raises_for_k_nonez6Test_vectorization_KDTree.test_query_raises_for_k_noneÞ   sœ   € ØˆÝŒ]�:Ð-GÐHÑHÔHð 	)ð 	)ØŒK×Ò˜a 4ÐÑ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   žAÁAÁAN)	r   rh   ri   ry   r¤   r«   rµ   r¹   rÁ   rj   r   r   rš   rš   ¶   sn   € € € € € ð	(ð 	(ð 	(ð4ð 4ð 4ð
*ð *ð *ð
1ð 1ð 1ð7ð 7ð 7ð)ð )ð )ð )ð )r   rš   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTest_vectorization_cKDTreec                 óš   — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        | _        t          | j        ¦  «        | _        d S rœ   )r@   r�   rB   r   r>   rx   s    r   ry   z'Test_vectorization_cKDTree.setup_methodä   sh   € Ý”H˜i˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜iØ'˜i˜ið)ñ *ô *ˆŒ	õ ˜dœiÑ(Ô(ˆŒˆˆr   c                 óÌ   — | j                              g d¢¦  «        \  }}t          t          |t          ¦  «        ¦  «         t          t          |t
          ¦  «        ¦  «         d S rž   )r>   r?   r   rŸ   r    Úintr£   s      r   r¤   z,Test_vectorization_cKDTree.test_single_queryï   sU   € ØŒ{× Ò    Ñ+Ô+‰ˆˆ1Ý•
˜1�eÑ$Ô$Ñ%Ô%Ð%Ý•
˜1�cÑ"Ô"Ñ#Ô#Ð#Ð#Ð#r   c                 óì   — | j                              t          j        d¦  «        ¦  «        \  }}t	          t          j        |¦  «        d¦  «         t	          t          j        |¦  «        d¦  «         d S r¦   r¨   r£   s      r   r«   z0Test_vectorization_cKDTree.test_vectorized_queryô   r¬   r   c                 óL  — t           j                             d¦  «         t           j                             dd¦  «        j        }| j                             |¦  «        \  }}t          |||¦  «        D ]0\  }}}t          | j                             |¦  «        ||f¦  «         Œ1d S )Nrp   r�   éè  )	r@   ru   rv   rw   ÚTr>   r?   rW   r   )r5   ÚqsÚdsÚi_sÚqr/   rE   s          r   Ú*test_vectorized_query_noncontiguous_valueszETest_vectorization_cKDTree.test_vectorized_query_noncontiguous_valuesù   s™   € Ý
Œ	�Š�tÑÔÐÝŒY�_Š_˜Q Ñ%Ô%Ô'ˆØ”+×#Ò# BÑ'Ô'‰ˆˆCÝ˜2˜r 3Ñ'Ô'ð 	7ð 	7‰GˆAˆq�!Ý˜œ×*Ò*¨1Ñ-Ô-°°1¨vÑ6Ô6Ð6Ð6ð	7ð 	7r   c           	      óà  — d}| j         j        |z   }| j                              g d¢|¬¦  «        \  }}t          t	          j        |¦  «        |f¦  «         t          t	          j        |¦  «        |f¦  «         t          t	          j        t	          j        || d …         ¦  «         ¦  «        ¦  «         t          t	          j        || d …         | j         j        k    ¦  «        ¦  «         d S r®   )	r>   rV   r?   r   r@   rª   r   rC   r±   r²   s        r   rµ   z?Test_vectorization_cKDTree.test_single_query_multiple_neighbors   sÊ   € ØˆØŒ[Œ]˜1‰_ˆØŒ{× Ò    ¨bÐ Ñ1Ô1‰ˆˆ1Ý•R”X˜a‘[”[ 2 %Ñ(Ô(Ð(Ý•R”X˜a‘[”[ 2 %Ñ(Ô(Ð(Ý•”�œ A q b c c¤FÑ+Ô+Ð+Ñ,Ô,Ñ-Ô-Ð-Ý•”�q˜!˜˜˜”v ¤¤Ò.Ñ/Ô/Ñ0Ô0Ð0Ð0Ð0r   c                 ó$  — d}| j         j        |z   }| j                              t          j        d¦  «        |¬¦  «        \  }}t          t          j        |¦  «        dd|f¦  «         t          t          j        |¦  «        dd|f¦  «         t          t          j        t          j	        |d d …d d …| d …f         ¦  «         ¦  «        ¦  «         t          t          j        |d d …d d …| d …f         | j         j        k    ¦  «        ¦  «         d S r·   r¸   r²   s        r   r¹   zCTest_vectorization_cKDTree.test_vectorized_query_multiple_neighbors	  rº   r   N)	r   rh   ri   ry   r¤   r«   rÏ   rµ   r¹   rj   r   r   rÃ   rÃ   ã   sn   € € € € € ð	)ð 	)ð 	)ð$ð $ð $ð
*ð *ð *ð
7ð 7ð 7ð1ð 1ð 1ð7ð 7ð 7ð 7ð 7r   rÃ   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )Úball_consistencyç        c                 ó0   — t          |dz  |dz  |¦  «        S ©Nr¼   r   r4   s       r   r6   zball_consistency.distance  s   € Ý! ! c¡'¨1¨s©7°AÑ6Ô6Ð6r   c                 óF  — t          j        | j        ¦  «        }t          j        | j        |j        d d…         ¦  «        }| j                             || j        | j        | j	        ¬¦  «        }t          |¦  «        D ]£\  }}|                      | j        |         ||         | j        ¦  «        ||         d| j	        z   z  z
  }|                      | j        |         ||         | j        ¦  «        ||         d| j	        z   z  z   }t          || j        |z  k     d¦  «         Œ¤d S )Néÿÿÿÿ©r,   rF   r¼   T)r@   Ú
atleast_2dr=   Úbroadcast_tor/   rª   rÊ   Úquery_ball_pointr,   rF   Ú	enumerater6   rB   r   Útol)r5   r=   r/   ÚlrE   ÚindÚdistÚnorms           r   Útest_in_ballzball_consistency.test_in_ball  sÿ   € ÝŒM˜$œ&Ñ!Ô!ˆÝŒO˜DœF A¤G¨C¨R¨C¤LÑ1Ô1ˆØŒF×#Ò# A t¤v°´¸T¼XÐ#ÑFÔFˆÝ ‘l”lð 	=ð 	=‰FˆAˆsØ—=’= ¤¨3¤°°1´°t´vÑ>Ô>ÀÀ1ÄÀrÈ$Ì(Á{ÑASÑSˆDØ—=’= ¤¨3¤°°1´°t´vÑ>Ô>ÀÀ1ÄÀrÈ$Ì(Á{ÑASÑSˆDÝ˜t d¤h°¡oÒ5°tÑ<Ô<Ð<Ð<ð	=ð 	=r   c                 óœ  — t          j        | j        ¦  «        }t          j        | j        |j        d d…         ¦  «        }| j                             || j        | j        | j	        ¬¦  «        }t          |¦  «        D ]Î\  }}t          j        | j        j        t          ¬¦  «        }d||<   |                      | j        |         ||         | j        ¦  «        ||         d| j	        z   z  z
  }|                      | j        |         ||         | j        ¦  «        ||         d| j	        z   z  z   }t!          || j         |z  k    d¦  «         ŒÏd S )NrØ   rÙ   ©ÚdtypeFr¼   T)r@   rÚ   r=   rÛ   r/   rª   rÊ   rÜ   r,   rF   rÝ   ÚonesrV   Úboolr6   rB   r   rÞ   )	r5   r=   r/   rß   rE   rà   Úcrá   râ   s	            r   Útest_found_allzball_consistency.test_found_all!  s#  € ÝŒM˜$œ&Ñ!Ô!ˆÝŒO˜DœF A¤G¨C¨R¨C¤LÑ1Ô1ˆØŒF×#Ò# A t¤v°´¸T¼XÐ#ÑFÔFˆÝ ‘l”lð 	>ð 	>‰FˆAˆsÝ”˜œœ­Ð-Ñ-Ô-ˆAØˆAˆc‰FØ—=’= ¤¨1¤¨q°¬t°T´VÑ<Ô<¸qÀ¼tÀRÈÌÁ[Ñ?QÑQˆDØ—=’= ¤¨1¤¨q°¬t°T´VÑ<Ô<¸qÀ¼tÀRÈÌÁ[Ñ?QÑQˆDÝ˜t t¤x i°$Ñ&6Ò6¸Ñ=Ô=Ð=Ð=ð	>ð 	>r   N)r   rh   ri   rÞ   r6   rã   rê   rj   r   r   rÓ   rÓ     sF   € € € € € Ø
€Cð7ð 7ð 7ð=ð =ð =ð	>ð 	>ð 	>ð 	>ð 	>r   rÓ   c                   ó   — e Zd Zd„ ZdS )Ú_Test_random_ballc                 óJ  — d}d}t           j                             d¦  «         t           j                             ||¦  «        | _        |                      | j        d¬¦  «        | _        t           j                             |¦  «        | _        d| _        d| _	        d| _
        d S )	Nrn   ro   rp   r9   rq   ç       @r   rs   )r@   ru   rv   rw   rB   r   rÊ   r=   r,   rF   r/   ©r5   rV   rI   s      r   ry   z_Test_random_ball.setup_method.  s�   € ØˆØˆÝ
Œ	�Š�tÑÔÐÝ”I—O’O A qÑ)Ô)ˆŒ	Ø×!Ò! $¤)°aÐ!Ñ8Ô8ˆŒÝ”—’ Ñ#Ô#ˆŒØˆŒØˆŒØˆŒˆˆr   Nrz   rj   r   r   rì   rì   ,  s#   € € € € € ð	ð 	ð 	ð 	ð 	r   rì   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )Ú_Test_random_ball_periodicc                 ó&   — t          |||d¦  «        S rÖ   ©r0   r4   s       r   r6   z#_Test_random_ball_periodic.distance<  ó   € Ý˜A˜q ! SÑ)Ô)Ð)r   c                 ó<  — d}d}t           j                             d¦  «         t           j                             ||f¬¦  «        | _        |                      | j        dd¬¦  «        | _        t          j        |d¦  «        | _        d	| _	        d
| _
        d| _        d S )Ni'  ro   rp   ©Úsizer9   r   ©rr   r-   rd   rî   r   rs   )r@   ru   rv   ÚuniformrB   r   rÊ   Úfullr=   r,   rF   r/   rï   s      r   ry   z'_Test_random_ball_periodic.setup_method?  s†   € ØˆØˆÝ
Œ	�Š�tÑÔÐÝ”I×%Ò%¨A¨q¨6Ð%Ñ2Ô2ˆŒ	Ø×!Ò! $¤)°aÀÐ!ÑCÔCˆŒÝ”˜˜C‘”ˆŒØˆŒØˆŒØˆŒˆˆr   c                 ó"  — | j                              | j        dz   | j        | j        | j        ¬¦  «        }|D ]O}t          |                      | j        |         | j        | j        ¦  «        | j        d| j        z   z  k    ¦  «         ŒP| j                              | j        dz
  | j        | j        | j        ¬¦  «        }|D ]O}t          |                      | j        |         | j        | j        ¦  «        | j        d| j        z   z  k    ¦  «         ŒPd S )Nr¼   rÙ   )	rÊ   rÜ   r=   r/   r,   rF   r   r6   rB   )r5   rß   rE   s      r   Útest_in_ball_outsidez/_Test_random_ball_periodic.test_in_ball_outsideJ  sþ   € ØŒF×#Ò# D¤F¨S¡L°$´&¸D¼FÈÌÐ#ÑQÔQˆØð 	Yð 	YˆAÝ�D—M’M $¤)¨A¤,°´¸¼Ñ?Ô?À4Ä6È2ÈdÌhÉ;ÑCWÒWÑXÔXÐXÐXØŒF×#Ò# D¤F¨S¡L°$´&¸D¼FÈÌÐ#ÑQÔQˆØð 	Yð 	YˆAÝ�D—M’M $¤)¨A¤,°´¸¼Ñ?Ô?À4Ä6È2ÈdÌhÉ;ÑCWÒWÑXÔXÐXÐXð	Yð 	Yr   c                 óˆ  — t          j        | j        j        t          ¬¦  «        }| j                             | j        dz   | j        | j        | j	        ¬¦  «        }d||<   t          j
        |                      | j        |         | j        | j        ¦  «        | j        d| j	        z   z  k    ¦  «        sJ ‚| j                             | j        dz
  | j        | j        | j	        ¬¦  «        }d||<   t          j
        |                      | j        |         | j        | j        ¦  «        | j        d| j	        z   z  k    ¦  «        sJ ‚d S )Nrå   r¼   rÙ   F)r@   rç   rÊ   rV   rè   rÜ   r=   r/   r,   rF   rC   r6   rB   )r5   ré   rß   s      r   Útest_found_all_outsidez1_Test_random_ball_periodic.test_found_all_outsideR  s&  € ÝŒG�D”F”H¥DÐ)Ñ)Ô)ˆØŒF×#Ò# D¤F¨S¡L°$´&¸D¼FÈÌÐ#ÑQÔQˆØˆˆ!‰ÝŒvØ�MŠM˜$œ) Aœ,¨¬°´Ñ7Ô7¸4¼6À2ÀdÄhÁ;Ñ;OÒOñ
ô 
ð 	
ð 	
ð 
ð ŒF×#Ò# D¤F¨S¡L°$´&¸D¼FÈÌÐ#ÑQÔQˆØˆˆ!‰ÝŒvØ�MŠM˜$œ) Aœ,¨¬°´Ñ7Ô7¸4¼6À2ÀdÄhÁ;Ñ;OÒOñ
ô 
ð 	
ð 	
ð 
ð 	
ð 	
r   N)r   rh   ri   r6   ry   rü   rþ   rj   r   r   rñ   rñ   :  sS   € € € € € ð*ð *ð *ð	ð 	ð 	ðYð Yð Yð
ð 
ð 
ð 
ð 
r   rñ   c                   ó   — e Zd ZdZd„ ZdS )Ú"_Test_random_ball_largep_issue9890g‚vIhÂ%<=c                 ó  — d}d}t           j                             d¦  «         t           j                             dd||f¬¦  «        | _        |                      | j        ¦  «        | _        | j        | _        d| _        d| _	        d| _
        d S )NrÉ   r9   é{   rn   rö   r   rt   )r@   ru   rv   ÚrandintrB   r   rÊ   r=   r,   rF   r/   rï   s      r   ry   z/_Test_random_ball_largep_issue9890.setup_methodg  s{   € ØˆØˆÝ
Œ	�Š�sÑÔÐÝ”I×%Ò% c¨4°q¸!°fÐ%Ñ=Ô=ˆŒ	Ø×!Ò! $¤)Ñ,Ô,ˆŒØ”ˆŒØˆŒØˆŒØˆŒˆˆr   N)r   rh   ri   rÞ   ry   rj   r   r   r   r   a  s*   € € € € € ð €Cð	ð 	ð 	ð 	ð 	r   r   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_approxc                 óV   •— t          ¦   «                              ¦   «          d| _        d S ©Nrd   ©r~   ry   rF   r   s    €r   ry   z%_Test_random_ball_approx.setup_methodv  ó$   ø€ Ý‰Œ×ÒÑÔÐØˆŒˆˆr   r�   rƒ   s   @r   r  r  s  ó8   ø€ € € € € ðð ð ð ð ð ð ð ð r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú!_Test_random_ball_approx_periodicc                 óV   •— t          ¦   «                              ¦   «          d| _        d S r  r  r   s    €r   ry   z._Test_random_ball_approx_periodic.setup_method~  r	  r   r�   rƒ   s   @r   r  r  {  r
  r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_farc                 óV   •— t          ¦   «                              ¦   «          d| _        d S ©Nrî   ©r~   ry   r/   r   s    €r   ry   z"_Test_random_ball_far.setup_method†  ó$   ø€ Ý‰Œ×ÒÑÔÐØˆŒˆˆr   r�   rƒ   s   @r   r  r  ƒ  ó8   ø€ € € € € ðð ð ð ð ð ð ð ð r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_far_periodicc                 óV   •— t          ¦   «                              ¦   «          d| _        d S r  r  r   s    €r   ry   z+_Test_random_ball_far_periodic.setup_method�  r  r   r�   rƒ   s   @r   r  r  Š  r  r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_l1c                 óV   •— t          ¦   «                              ¦   «          d| _        d S )Nr   )r~   ry   r,   r   s    €r   ry   z!_Test_random_ball_l1.setup_method•  ó$   ø€ Ý‰Œ×ÒÑÔÐØˆŒˆˆr   r�   rƒ   s   @r   r  r  ’  ó8   ø€ € € € € ðð ð ð ð ð ð ð ð r   r  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_random_ball_linfc                 ój   •— t          ¦   «                              ¦   «          t          j        | _        d S r   ©r~   ry   r@   rX   r,   r   s    €r   ry   z#_Test_random_ball_linf.setup_method�  ó&   ø€ Ý‰Œ×ÒÑÔÐÝ”ˆŒˆˆr   r�   rƒ   s   @r   r  r  š  ó8   ø€ € € € € ðð ð ð ð ð ð ð ð r   r  c                 ó‚  — d}d}t           j                             d¦  «          | t           j                             ||¦  «        ¦  «        }|                     t           j                             dd|¦  «        d¦  «        }t          |j        d¦  «         t          t          |d         t          ¦  «        ¦  «         d S )	Né   é   rp   r9   r�   r   ©r9   r�   ©r   r   )
r@   ru   rv   rw   rÜ   r   rª   r   rŸ   Úlist)r   rV   rI   rÊ   Úrs        r   Útest_random_ball_vectorizedr*  ¢  sš   € Ø
€AØ	€AÝ„I‡N‚N�4ÑÔÐØˆ•B”I—O’O A qÑ)Ô)Ñ*Ô*€Aà	×Ò�2œ9Ÿ?š?¨1¨a°Ñ3Ô3°QÑ7Ô7€AÝ�”˜&Ñ!Ô!Ð!Ý�J�q˜”w¥Ñ%Ô%Ñ&Ô&Ð&Ð&Ð&r   r%  c                 ó*  — t           j                             d¦  «         d}d}t           j                             ||¦  «        } | |¦  «        }|                     |dd¬¦  «        }|                     |dd¬¦  «        }|                     |dd¬¦  «        }t          |¦  «        D ].}||         s||         rt          ||         ||         ¦  «         Œ/t          |¦  «        D ].}||         s||         rt          ||         ||         ¦  «         Œ/d S )	Nr   éˆ  r9   gú~j¼t“h?r   ©Úworkersé@   rØ   )r@   ru   rv   rw   rÜ   Úranger   )	r   rV   rQ   ÚpointsrÊ   Úl1Úl2Úl3rE   s	            r   Ú$test_query_ball_point_multithreadingr5  ­  s&  € å„I‡N‚N�1ÑÔÐØ€AØ	€AÝŒY�_Š_˜Q Ñ"Ô"€FØˆ�FÑÔ€AØ	
×	Ò	˜F E°1Ð	Ñ	5Ô	5€BØ	
×	Ò	˜F E°2Ð	Ñ	6Ô	6€BØ	
×	Ò	˜F E°2Ð	Ñ	6Ô	6€Bå�1‰XŒXð -ð -ˆØˆaŒ5ð 	-�B�q”Eð 	-Ý˜r !œu b¨¤eÑ,Ô,Ð,øå�1‰XŒXð -ð -ˆØˆaŒ5ð 	-�B�q”Eð 	-Ý˜r !œu b¨¤eÑ,Ô,Ð,øð-ð -r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Útwo_trees_consistencyc                 ó$   — t          |||¦  «        S r   r   r4   s       r   r6   ztwo_trees_consistency.distanceÃ  r7   r   c                 ó.  — | j                              | j        | j        | j        | j        ¬¦  «        }t          |¦  «        D ]R\  }}|D ]J}|                      | j        |         | j	        |         | j        ¦  «        | j        d| j        z   z  k    sJ ‚ŒKŒSd S )NrÙ   r¼   )
ÚT1Úquery_ball_treeÚT2r/   r,   rF   rÝ   r6   Údata1Údata2)r5   r)  rE   rß   Újs        r   Útest_all_in_ballz&two_trees_consistency.test_all_in_ballÆ  s©   € ØŒG×#Ò# D¤G¨T¬V°t´vÀ4Ä8Ð#ÑLÔLˆÝ˜a‘L”Lð 	1ð 	1‰DˆAˆqØð 1ð 1�ØŸš d¤j°¤m°T´ZÀ´]ÀDÄFÑKÔKØœ6 2 d¤h¡;Ñ/ò0ð 0ð 0ð 0ð 0ð1ð	1ð 	1r   c                 óœ  — | j                              | j        | j        | j        | j        ¬¦  «        }t          |¦  «        D ]‰\  }}t          j        | j        j	        t          ¬¦  «        }d||<   t          j        |                      | j        |         | j        |         | j        ¦  «        | j        d| j        z   z  k    ¦  «        sJ ‚ŒŠd S )NrÙ   rå   Fr¼   )r:  r;  r<  r/   r,   rF   rÝ   r@   rç   rV   rè   rC   r6   r>  r=  )r5   r)  rE   rß   ré   s        r   rê   z$two_trees_consistency.test_found_allÍ  sÄ   € ØŒG×#Ò# D¤G¨T¬V°t´vÀ4Ä8Ð#ÑLÔLˆÝ˜a‘L”Lð 	3ð 	3‰DˆAˆqÝ”˜œœ	­Ð.Ñ.Ô.ˆAØˆAˆa‰DÝ”6˜$Ÿ-š-¨¬
°1¬°t´zÀ!´}ÀdÄfÑMÔMØ!œV R¨¬¡[Ñ1ò2ñ 3ô 3ð 3ð 3ð 3ð 3ð	3ð 	3r   N)r   rh   ri   r6   r@  rê   rj   r   r   r7  r7  Á  sA   € € € € € ð+ð +ð +ð1ð 1ð 1ð3ð 3ð 3ð 3ð 3r   r7  c                   ó   — e Zd Zd„ ZdS )Ú_Test_two_random_treesc                 óŽ  — d}d}t           j                             d¦  «         t           j                             ||¦  «        | _        |                      | j        d¬¦  «        | _        t           j                             ||¦  «        | _        |                      | j        d¬¦  «        | _        d| _	        d| _
        d| _        d S )	Né2   ro   rp   r9   rq   rî   r   rs   )r@   ru   rv   rw   r=  r   r:  r>  r<  r,   rF   r/   rï   s      r   ry   z#_Test_two_random_trees.setup_methodÙ  sŸ   € ØˆØˆÝ
Œ	�Š�tÑÔÐÝ”Y—_’_ Q¨Ñ*Ô*ˆŒ
Ø×"Ò" 4¤:¸Ð"Ñ:Ô:ˆŒÝ”Y—_’_ Q¨Ñ*Ô*ˆŒ
Ø×"Ò" 4¤:¸Ð"Ñ:Ô:ˆŒØˆŒØˆŒØˆŒˆˆr   Nrz   rj   r   r   rC  rC  Ö  s#   € € € € € ð
ð 
ð 
ð 
ð 
r   rC  c                   ó   — e Zd Zd„ Zd„ ZdS )Ú_Test_two_random_trees_periodicc                 ó&   — t          |||d¦  «        S rÖ   ró   r4   s       r   r6   z(_Test_two_random_trees_periodic.distanceè  rô   r   c                 óš  — d}d}t           j                             d¦  «         t           j                             ||f¬¦  «        | _        |                      | j        dd¬¦  «        | _        t           j                             ||f¬¦  «        | _        |                      | j        dd¬¦  «        | _        d| _	        d	| _
        d
| _        d S )NrE  ro   rp   rö   r9   r¼   rø   rî   r   rs   )r@   ru   rv   rù   r=  r   r:  r>  r<  r,   rF   r/   rï   s      r   ry   z,_Test_two_random_trees_periodic.setup_methodë  s±   € ØˆØˆÝ
Œ	�Š�tÑÔÐÝ”Y×&Ò&¨Q°¨FÐ&Ñ3Ô3ˆŒ
Ø×"Ò" 4¤:¸À3Ð"ÑGÔGˆŒÝ”Y×&Ò&¨Q°¨FÐ&Ñ3Ô3ˆŒ
Ø×"Ò" 4¤:¸À3Ð"ÑGÔGˆŒØˆŒØˆŒØˆŒˆˆr   N)r   rh   ri   r6   ry   rj   r   r   rG  rG  æ  s2   € € € € € ð*ð *ð *ð
ð 
ð 
ð 
ð 
r   rG  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_two_random_trees_farc                 óV   •— t          ¦   «                              ¦   «          d| _        d S ©Nr9   r  r   s    €r   ry   z'_Test_two_random_trees_far.setup_methodû  r  r   r�   rƒ   s   @r   rK  rK  ø  r  r   rK  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú#_Test_two_random_trees_far_periodicc                 óV   •— t          ¦   «                              ¦   «          d| _        d S rM  r  r   s    €r   ry   z0_Test_two_random_trees_far_periodic.setup_method  r  r   r�   rƒ   s   @r   rO  rO     r  r   rO  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú_Test_two_random_trees_linfc                 ój   •— t          ¦   «                              ¦   «          t          j        | _        d S r   r   r   s    €r   ry   z(_Test_two_random_trees_linf.setup_method  r!  r   r�   rƒ   s   @r   rR  rR    r"  r   rR  c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú$_Test_two_random_trees_linf_periodicc                 ój   •— t          ¦   «                              ¦   «          t          j        | _        d S r   r   r   s    €r   ry   z1_Test_two_random_trees_linf_periodic.setup_method  r!  r   r�   rƒ   s   @r   rU  rU    r"  r   rU  c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTest_rectanglec                 ó8   — t          ddgddg¦  «        | _        d S ©Nr   r   )r   Úrectrx   s    r   ry   zTest_rectangle.setup_method  s   € Ý˜q !˜f q¨! fÑ-Ô-ˆŒ	ˆ	ˆ	r   c                 óZ   — t          | j                             ddg¦  «        d¦  «         d S )Nr)   r   ©r   r[  Úmin_distance_pointrx   s    r   Útest_min_insidezTest_rectangle.test_min_inside  s,   € Ý˜DœI×8Ò8¸#¸s¸ÑDÔDÀaÑHÔHÐHÐHÐHr   c                 óZ   — t          | j                             ddg¦  «        d¦  «         d S ©Nr)   g      ø?r]  rx   s    r   Útest_min_one_sidez Test_rectangle.test_min_one_side   s,   € Ý˜DœI×8Ò8¸#¸s¸ÑDÔDÀcÑJÔJÐJÐJÐJr   c                 ó~   — t          | j                             ddg¦  «        t          j        d¦  «        ¦  «         d S rM  )r   r[  r^  r@   Úsqrtrx   s    r   Útest_min_two_sidesz!Test_rectangle.test_min_two_sides#  s4   € Ý˜DœI×8Ò8¸!¸Q¸Ñ@Ô@Å"Ä'È!Á*Ä*ÑMÔMÐMÐMÐMr   c                 ó„   — t          | j                             ddg¦  «        dt          j        d¦  «        z  ¦  «         d S )Nr)   r   r9   ©r   r[  Úmax_distance_pointr@   rd  rx   s    r   Útest_max_insidezTest_rectangle.test_max_inside&  s9   € Ý˜DœI×8Ò8¸#¸s¸ÑDÔDÀaÍÌÐPQÉ
Ì
ÁlÑSÔSÐSÐSÐSr   c                 ó€   — t          | j                             ddg¦  «        t          j        dd¦  «        ¦  «         d S ra  )r   r[  rh  r@   Úhypotrx   s    r   Útest_max_one_sidez Test_rectangle.test_max_one_side)  sC   € Ý˜DœI×8Ò8¸#¸s¸ÑDÔDÝœH S¨#Ñ.Ô.ñ	0ô 	0ð 	0ð 	0ð 	0r   c                 ó„   — t          | j                             ddg¦  «        dt          j        d¦  «        z  ¦  «         d S rM  rg  rx   s    r   Útest_max_two_sidesz!Test_rectangle.test_max_two_sides-  s8   € Ý˜DœI×8Ò8¸!¸Q¸Ñ@Ô@À!ÅBÄGÈAÁJÄJÁ,ÑOÔOÐOÐOÐOr   c                 óú   — | j                              dd¦  «        \  }}t          |j        ddg¦  «         t          |j        ddg¦  «         t          |j        ddg¦  «         t          |j        ddg¦  «         d S )Nr   rd   r   )r[  Úsplitr   ÚmaxesÚmins)r5   ÚlessÚgreaters      r   Ú
test_splitzTest_rectangle.test_split0  sy   € Øœ	Ÿš¨¨3Ñ/Ô/‰ˆˆgÝ˜4œ:¨¨Q xÑ0Ô0Ð0Ý˜4œ9 q¨! fÑ-Ô-Ð-Ý˜7œ=¨1¨a¨&Ñ1Ô1Ð1Ý˜7œ<¨#¨q¨Ñ2Ô2Ð2Ð2Ð2r   N)r   rh   ri   ry   r_  rb  re  ri  rl  rn  ru  rj   r   r   rX  rX    s›   € € € € € ð.ð .ð .ðIð Ið IðKð Kð KðNð Nð NðTð Tð Tð0ð 0ð 0ðPð Pð Pð3ð 3ð 3ð 3ð 3r   rX  c                  óp   — t          t          ddgddgd¦  «        t          j        d¦  «        ¦  «         d S ©Nr   r   r9   )r   r   r@   rd  rj   r   r   Útest_distance_l2rx  8  s5   € ÝÕ*¨A¨q¨6°A°q°6¸1Ñ=Ô=½r¼wÀq¹z¼zÑJÔJÐJÐJÐJr   c                  óL   — t          t          ddgddgd¦  «        d¦  «         d S rw  )r   r   rj   r   r   Útest_distance_l1rz  <  s-   € ÝÕ*¨A¨q¨6°A°q°6¸1Ñ=Ô=¸qÑAÔAÐAÐAÐAr   c                  ó`   — t          t          ddgddgt          j        ¦  «        d¦  «         d S rZ  )r   r   r@   rX   rj   r   r   Útest_distance_linfr|  @  s/   € ÝÕ*¨A¨q¨6°A°q°6½2¼6ÑBÔBÀAÑFÔFÐFÐFÐFr   c                  ó  — t           j                             d¦  «         t           j                             ddd¦  «        } t           j                             ddd¦  «        }t	          t          | |¦  «        j        d¦  «         d S )Nrp   rt   r   r�   é   )rt   r~  )r@   ru   rv   rw   r   r   rª   )r=   Úys     r   Útest_distance_vectorizationr€  D  sh   € Ý„I‡N‚N�4ÑÔÐÝ
Œ	�Š˜˜A˜qÑ!Ô!€AÝ
Œ	�Š˜˜1˜aÑ Ô €AÝÕ# A qÑ)Ô)Ô/°Ñ9Ô9Ð9Ð9Ð9r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Úcount_neighbors_consistencyc           
      óÚ   — d}t          | j                             | j        |¦  «        t	          j        d„ | j                             | j        |¦  «        D ¦   «         ¦  «        ¦  «         d S )Nrs   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rj   ©Úlen©Ú.0rß   s     r   ú
<listcomp>z?count_neighbors_consistency.test_one_radius.<locals>.<listcomp>O  ó   € ÐLÐLÐL 1�˜A™œÐLÐLÐLr   ©r   r:  Úcount_neighborsr<  r@   rA   r;  ©r5   r)  s     r   Útest_one_radiusz+count_neighbors_consistency.test_one_radiusL  sn   € ØˆÝ�T”W×,Ò,¨T¬W°aÑ8Ô8Ý”ÐLÐL¨¬×(?Ò(?ÀÄÈÑ(KÔ(KÐLÑLÔLÑMÔMñ	Oô 	Oð 	Oð 	Oð 	Or   c           
      óÚ   — d}t          | j                             | j        |¦  «        t	          j        d„ | j                             | j        |¦  «        D ¦   «         ¦  «        ¦  «         d S )NrÉ   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rj   r…  r‡  s     r   r‰  zAcount_neighbors_consistency.test_large_radius.<locals>.<listcomp>T  rŠ  r   r‹  r�  s     r   Útest_large_radiusz-count_neighbors_consistency.test_large_radiusQ  sn   € ØˆÝ�T”W×,Ò,¨T¬W°aÑ8Ô8Ý”ÐLÐL¨¬×(?Ò(?ÀÄÈÑ(KÔ(KÐLÑLÔLÑMÔMñ	Oô 	Oð 	Oð 	Oð 	Or   c                 óÔ  — t          j        t          j        t          j        d¦  «        t          j        d¦  «        d¦  «        ¦  «        }| j                             | j        |¦  «        }t          t          j        t          j	        |¦  «        dk    ¦  «        ¦  «         t          ||¦  «        D ]3\  }}t          | j                             | j        |¦  «        |¦  «         Œ4d S )Nç{®Gáz„?rt   r�   r   )r@   ÚexpÚlinspaceÚlogr:  rŒ  r<  r   rC   r.   rW   r   )r5   ÚrsÚresultsr)  Úresults        r   Útest_multiple_radiusz0count_neighbors_consistency.test_multiple_radiusV  sÁ   € ÝŒV•B”K¥¤ t¡¤­b¬f°R©j¬j¸!Ñ<Ô<Ñ=Ô=ˆØ”'×)Ò)¨$¬'°2Ñ6Ô6ˆÝ•”•r”w˜wÑ'Ô'¨1Ò,Ñ-Ô-Ñ.Ô.Ð.Ý˜R Ñ)Ô)ð 	Fð 	F‰IˆAˆvÝ˜œ×0Ò0°´¸!Ñ<Ô<¸fÑEÔEÐEÐEð	Fð 	Fr   N)r   rh   ri   rŽ  r‘  rš  rj   r   r   r‚  r‚  K  sL   € € € € € ðOð Oð Oð
Oð Oð Oð
Fð Fð Fð Fð Fr   r‚  c                   ó   — e Zd Zd„ ZdS )Ú_Test_count_neighborsc                 ó4  — d}d}t           j                             d¦  «         |                      t           j                             ||¦  «        d¬¦  «        | _        |                      t           j                             ||¦  «        d¬¦  «        | _        d S )NrE  r9   rp   rq   )r@   ru   rv   r   rw   r:  r<  rï   s      r   ry   z"_Test_count_neighbors.setup_method_  sx   € ØˆØˆÝ
Œ	�Š�tÑÔÐØ×"Ò"¥2¤9§?¢?°1°aÑ#8Ô#8À1Ð"ÑEÔEˆŒØ×"Ò"¥2¤9§?¢?°1°aÑ#8Ô#8À1Ð"ÑEÔEˆŒˆˆr   Nrz   rj   r   r   rœ  rœ  ]  s(   € € € € € ðFð Fð Fð Fð Fr   rœ  c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú"sparse_distance_matrix_consistencyc                 ó$   — t          |||¦  «        S r   r   r4   s       r   r6   z+sparse_distance_matrix_consistency.distancei  r7   r   c           
      óÞ  — | j                              | j        | j        ¦  «        }| j                              | j        | j        ¦  «        }t          |¦  «        D ]^\  }}|D ]V}t          |||f         |                      | j         j        |         | j        j        |         | j	        ¦  «        d¬¦  «         ŒWŒ_| 
                    ¦   «         D ]\  \  }}}t          |||         v ¦  «         Œ d S )Né   ©Údecimal)r:  Úsparse_distance_matrixr<  r)  r;  rÝ   r   r6   rB   r,   Úitemsr   )r5   ÚMr)  rE   rß   r?  r/   s          r   Útest_consistency_with_neighborszBsparse_distance_matrix_consistency.test_consistency_with_neighborsl  sø   € ØŒG×*Ò*¨4¬7°D´FÑ;Ô;ˆØŒG×#Ò# D¤G¨T¬VÑ4Ô4ˆÝ˜a‘L”Lð 	ð 	‰DˆAˆqØð ð �Ý#Ø�a˜�d”GØ—M’M $¤'¤,¨q¤/°4´7´<À´?ÀDÄFÑKÔKØðñ ô ð ð ðð Ÿ7š7™9œ9ð 	ð 	‰K‰Vˆa��QÝ�A˜˜1œ�IÑÔÐÐð	ð 	r   c                 óP   — | j                              | j         | j        ¦  «         d S r   )r:  r¥  r)  rx   s    r   Útest_zero_distancez5sparse_distance_matrix_consistency.test_zero_distancey  s$   € àŒ×&Ò& t¤w°´Ñ7Ô7Ð7Ð7Ð7r   c                 óü   — | j                              | j        | j        ¦  «        }t	          | j         j        | j        j        ¦  «        }d||| j        k    <   t          |                     ¦   «         |d¬¦  «         d S )Nr   r¢  r£  )r:  r¥  r<  r)  r   rB   r   Útoarray)r5   ÚM1Úexpecteds      r   Útest_consistencyz3sparse_distance_matrix_consistency.test_consistency}  sh   € àŒW×+Ò+¨D¬G°T´VÑ<Ô<ˆÝ" 4¤7¤<°´´Ñ>Ô>ˆØ&'ˆ�˜DœFÒ"Ñ#Ý! "§*¢*¡,¤,°À"ÐEÑEÔEÐEÐEÐEr   c                 ód  — t           j                             d¦  «         t          j        t           j                             dd¦  «        t
          ¬¦  «        }|                      |dd¬¦  «        }|                     |d¦  «                             ¦   «         }t          ||j
        d¬	¦  «         d S )
Nr   é   r9   rå   F©Úbalanced_treeÚcompact_nodesr�   r¢  r£  )r@   ru   rv   r�   rw   rÆ   r   r¥  r¬  r   rÊ   )r5   Útoo_manyr$   r/   s       r   Ú#test_against_logic_error_regressionzFsparse_distance_matrix_consistency.test_against_logic_error_regression„  s›   € å
Œ	�Š�qÑÔÐÝ”8�BœIŸOšO¨B°Ñ2Ô2½#Ð>Ñ>Ô>ˆØ×ÒØ E¸ð  ñ @ô @ˆà×'Ò'¨¨aÑ0Ô0×8Ò8Ñ:Ô:ˆÝ! ! Q¤S°"Ð5Ñ5Ô5Ð5Ð5Ð5r   c                 óÞ  — t          j        | j        | j        f¦  «        }t          | j        ¦  «        D ]V}t          | j        ¦  «        D ]?}| j        |d d …f         | j        |d d …f         z
  }t          j        ||¦  «        |||f<   Œ@ŒWt          j        |¦  «        }d||| j        k    <   t          j        | j        | j        f¦  «        }| j	         
                    | j        | j        d¬¦  «        }|                     ¦   «         D ]\  }}|||f         |||f<   Œt          ||d¬¦  «         t          j        | j        | j        f¦  «        }| j	         
                    | j        | j        d¬¦  «        }t          |j        d         ¦  «        D ]3}|d         |         }|d	         |         }|d
         |         }||||f<   Œ4t          ||d¬¦  «         | j	         
                    | j        | j        d¬¦  «        }t          ||                     ¦   «         d¬¦  «         | j	         
                    | j        | j        d¬¦  «        }t          ||                     ¦   «         d¬¦  «         d S )NrÔ   Údict©Úoutput_typer¢  r£  Úndarrayr   rE   r?  ÚvÚ
dok_matrixÚ
coo_matrix)r@   r©   rV   r0  r=  r>  Údotrd  r)  r:  r¥  r<  Úkeysr   rª   r¬  )r5   ÚrefrE   r?  r¼  rá   r)  rQ   s           r   Útest_ckdtree_return_typesz<sparse_distance_matrix_consistency.test_ckdtree_return_types�  sa  € åŒh˜œ ¤Ð'Ñ(Ô(ˆÝ�t”v‘”ð 	)ð 	)ˆAÝ˜4œ6‘]”]ð )ð )�Ø”J˜q ! ! !˜tÔ$ t¤z°!°Q°Q°Q°$Ô'7Ñ7�ÝœF 1 a™LœL��A�q�D‘	�	ð)õ Œg�c‰lŒlˆØˆˆC�$”&ŠLÑåŒx˜œ ¤Ð(Ñ)Ô)ˆØŒG×*Ò*¨4¬7°D´FÈÐ*ÑOÔOˆØ—F’F‘H”Hð 	#ð 	#‰DˆAˆqØ˜A˜q˜6œˆD��A�‰JˆJÝ! # t°RÐ8Ñ8Ô8Ð8åŒx˜œ ¤Ð(Ñ)Ô)ˆØŒG×*Ò*¨4¬7°D´FØ!ð +ñ #ô #ˆå�q”w˜q”zÑ"Ô"ð 	ð 	ˆAØ�#”�q”	ˆAØ�#”�q”	ˆAØ�#”�q”	ˆAØˆD��A�‰JˆJÝ! # t°RÐ8Ñ8Ô8Ð8àŒG×*Ò*¨4¬7°D´FØ$ð +ñ &ô &ˆå! # q§y¢y¡{¤{¸BÐ?Ñ?Ô?Ð?àŒG×*Ò*¨4¬7°D´FØ$ð +ñ &ô &ˆå! # q§y¢y¡{¤{¸BÐ?Ñ?Ô?Ð?Ð?Ð?r   N)	r   rh   ri   r6   r¨  rª  r¯  r¶  rÂ  rj   r   r   rŸ  rŸ  g  sv   € € € € € ð+ð +ð +ðð ð ð8ð 8ð 8ðFð Fð Fð6ð 6ð 6ð @ð  @ð  @ð  @ð  @r   rŸ  c                   ó   — e Zd Zd„ ZdS )Ú_Test_sparse_distance_matrixc                 ó�  — d}d}t           j                             d¦  «         t           j                             ||¦  «        }t           j                             ||¦  «        }|                      |d¬¦  «        | _        |                      |d¬¦  «        | _        d| _        d| _        || _	        || _
        || _        || _        d S )NrE  ro   rp   r9   rq   r)   )r@   ru   rv   rw   r   r:  r<  r)  r,   r=  r>  rV   rI   )r5   rV   rI   r=  r>  s        r   ry   z)_Test_sparse_distance_matrix.setup_method²  s¬   € ØˆØˆÝ
Œ	�Š�tÑÔÐÝ”	—’  1Ñ%Ô%ˆÝ”	—’  1Ñ%Ô%ˆØ×"Ò" 5°1Ð"Ñ5Ô5ˆŒØ×"Ò" 5°1Ð"Ñ5Ô5ˆŒØˆŒØˆŒØˆŒ
ØˆŒ
ØˆŒØˆŒˆˆr   Nrz   rj   r   r   rÄ  rÄ  °  s#   € € € € € ðð ð ð ð r   rÄ  c            	      óÊ  — d} d}d}t           j                             d¦  «         t           j                             | |¦  «        }t           j                             ||¦  «        }t	          ||¦  «        }t          |j        | |f¦  «         t          | ¦  «        D ]F}t          |¦  «        D ]4}t          t          ||         ||         ¦  «        |||f         ¦  «         Œ5ŒGd S )Nrt   é   ro   rp   )
r@   ru   rv   rw   r   r   rª   r0  r   r   )rI   rV   rQ   ÚxsÚysrÌ   rE   r?  s           r   Útest_distance_matrixrÊ  Â  sâ   € Ø
€AØ
€AØ	€AÝ„I‡N‚N�4ÑÔÐÝ	Œ�Š˜˜AÑ	Ô	€BÝ	Œ�Š˜˜AÑ	Ô	€BÝ	˜˜RÑ	 Ô	 €BÝ�”˜A˜q˜6Ñ"Ô"Ð"Ý�1‰XŒXð Lð LˆÝ�q‘”ð 	Lð 	LˆAÝÕ 2°2°a´5¸"¸Q¼%Ñ @Ô @À"ÀQÈÀTÄ(ÑKÔKÐKÐKð	LðLð Lr   c                  ó4  — d} d}d}t           j                             d¦  «         t           j                             | |¦  «        }t           j                             ||¦  «        }t	          ||¦  «        }t	          ||d¬¦  «        }t          ||¦  «         d S )Nrt   rÇ  ro   rp   r   )Ú	threshold)r@   ru   rv   rw   r   r   )rI   rV   rQ   rÈ  rÉ  rÌ   Údsls          r   Útest_distance_matrix_loopingrÎ  Ð  sˆ   € Ø
€AØ
€AØ	€AÝ„I‡N‚N�4ÑÔÐÝ	Œ�Š˜˜AÑ	Ô	€BÝ	Œ�Š˜˜AÑ	Ô	€BÝ	˜˜RÑ	 Ô	 €BÝ
˜"˜b¨AÐ
.Ñ
.Ô
.€CÝ��SÑÔÐÐÐr   c                 ó  — |                       | |¦  «        }t          ¦   «         }t          |¦  «        D ]'\  }}|D ]}||k     r|                     ||f¦  «         Œ Œ(t	          ||                      |¦  «        k    ¦  «         d S r   )r;  ÚsetrÝ   Úaddr   Úquery_pairs)rÊ   r/   r)  r³   rE   rß   r?  s          r   Úcheck_onetree_queryrÓ  Ü  s‘   € Ø	×Ò˜!˜QÑÔ€AÝ‰Œ€AÝ˜!‘”ð ð ‰ˆˆ1Øð 	ð 	ˆAØ�1ŠuˆuØ—’�q˜!�f‘”�øð	õ ˆA�—’˜qÑ!Ô!Ò!Ñ"Ô"Ð"Ð"Ð"r   c                 óì  — t           j                             d¦  «         d}d}t           j                             ||¦  «        } | |¦  «        }t	          |d¦  «         t           j                             d|z  |¦  «        }|d |…xx         dz  cc<   ||d|z  …xx         dz  cc<    | |¦  «        }t	          |d¦  «         t	          |d¦  «         t	          |d¦  «         t	          |d	¦  «         d S )
Nr   rE  ro   rd   r�   gü©ñÒMbP?r9   gñhãˆµøä>g�íµ ÷Æ°>)r@   ru   rv   rw   rÓ  )r   rV   rQ   r1  rÊ   s        r   Útest_onetree_queryrÕ  æ  sú   € Ý„I‡N‚N�1ÑÔÐØ
€AØ	€AÝŒY�_Š_˜Q Ñ"Ô"€FØˆ�FÑÔ€AÝ˜˜3ÑÔÐåŒY�_Š_˜Q˜q™S !Ñ$Ô$€FØ
ˆ2ˆAˆ2€J€J„J�%Ñ€J€J�JØ
ˆ1ˆQˆq‰Sˆ5€M€M„M�QÑ€M€M�MØˆ�FÑÔ€AÝ˜˜3ÑÔÐÝ˜˜5Ñ!Ô!Ð!Ý˜˜7Ñ#Ô#Ð#Ý˜˜4Ñ Ô Ð Ð Ð r   c                 ó€   —  | ddgg¦  «        }t          |                     d¦  «        t          ¦   «         ¦  «         d S )Nr   r   r)   )r   rÒ  rÐ  )r   r$   s     r   Útest_query_pairs_single_noder×  ø  s?   € Øˆ;˜˜A˜�xÑ Ô €DÝ�×!Ò! #Ñ&Ô&­©¬Ñ.Ô.Ð.Ð.Ð.r   c           	      óä  — t           j                             d¦  «         d}d}d}|dz  }t           j                             ||¦  «        } | |¦  «        }t	          ¦   «         }t          |¦  «        D ]a}t          |dz   |¦  «        D ]K}	||d d …f         ||	d d …f         z
  }
t          j        |
|
¦  «        |k    r|                     ||	f¦  «         ŒLŒbt          |¦  «        }| 	                    |¦  «        }t          |¦  «        }t          ||¦  «         | 	                    |d¬¦  «        }t          |¦  «        }t          ||¦  «         t	          ¦   «         }| 	                    |d¬¦  «        }t          |j        d         ¦  «        D ]C}|                     t          ||df         ¦  «        t          ||df         ¦  «        f¦  «         ŒDt          |¦  «        }t          ||¦  «         d S )	Nr   rE  r9   rd   r   rÐ  r¹  r»  )r@   ru   rv   rw   rÐ  r0  r¿  rÑ  ÚsortedrÒ  r   rª   rÆ   )r   rV   rQ   r)  Úr2r1  rÊ   ÚbruterE   r?  r¼  Úl0r³   r2  Úarrr3  s                   r   Útest_kdtree_query_pairsrÞ  ý  sÙ  € Ý„I‡N‚N�1ÑÔÐØ
€AØ	€AØ€AØ	
ˆA‰€BÝŒY�_Š_˜Q Ñ"Ô"€FØˆ�FÑÔ€Aå‰EŒE€EÝ�1‰XŒXð "ð "ˆÝ�q˜‘s˜A‘”ð 	"ð 	"ˆAØ�q˜!˜!˜!�t”˜v a¨¨¨ dœ|Ñ+ˆAÝŒv�a˜‰|Œ|˜rÒ!Ð!Ø—	’	˜1˜a˜&Ñ!Ô!Ð!øð	"õ 
�‰Œ€Bà	�Š�aÑÔ€AÝ	�‰Œ€BÝ�r˜2ÑÔÐà	�Š�a UˆÑ+Ô+€AÝ	�‰Œ€BÝ�r˜2ÑÔÐå‰Œ€AØ
�-Š-˜ yˆ-Ñ
1Ô
1€CÝ�3”9˜Q”<Ñ Ô ð 0ð 0ˆØ	�Š�s�3�q˜!�t”9‰~Œ~�s 3 q¨! t¤9™~œ~Ð.Ñ/Ô/Ð/Ð/Ý	�‰Œ€BÝ�r˜2ÑÔÐÐÐr   c                 óF  ‡— t          j        d¦  «        }t          j        dd|z  d¦  «        }t          j        dd|z  d¦  «        Šˆfd„|D ¦   «         } | |¦  «        }|                     |d¬¦  «        }|                     |dz  ¬	¦  «        }t	          ||¦  «         d S )
Nr9   r   r�   ro   c                 ó"   •— g | ]}‰D ]}||f‘ŒŒS rj   rj   )rˆ  ÚxiÚyiÚy_ranges      €r   r‰  z(test_query_pairs_eps.<locals>.<listcomp>#  s*   ø€ Ð=Ð=Ð=˜R°WÐ=Ð=¨r��R�Ð=Ð=Ð=Ð=r   rd   )r)  rF   ç)\�Âõ(ð?©r)  )r@   rd  r•  rÒ  r   )r   ÚspacingÚx_rangeÚxy_arrayr$   Ú	pairs_epsÚpairsrã  s          @r   Útest_query_pairs_epsrë    s®   ø€ ÝŒg�a‰jŒj€GåŒk˜!˜Q ™[¨!Ñ,Ô,€GÝŒk˜!˜Q ™[¨!Ñ,Ô,€GØ=Ð=Ð=Ð= 7Ð=Ñ=Ô=€HØˆ;�xÑ Ô €DØ× Ò  7°Ð Ñ3Ô3€Ià×Ò˜w¨™~ÐÑ.Ô.€Eå�˜	Ñ"Ô"Ð"Ð"Ð"r   c           	      ó   — t           j        dd…dd…f         \  }}t          t          |                     ¦   «         |                     ¦   «         ¦  «        ¦  «        } | |¦  «        }t          t          g d¢¦  «        t          |                     dd¦  «        ¦  «        ¦  «         t          j        |t          ¬¦  «        } | |¦  «        }t          t          g d¢¦  «        t          |                     dd¦  «        ¦  «        ¦  «         d S )Nr   ro   )ro   é   é	   é   )r9   r   r   rå   )
r@   Úmgridr(  rW   Úravelr   rÙ  rÜ   Úasarrayr    )r   r=   r  r1  r$   s        r   Útest_ball_point_intsró  ,  s÷   € åŒ8�A�a�C˜˜1˜�HÔ�D€A€qÝ•#�a—g’g‘i”i §¢¡¤Ñ+Ô+Ñ,Ô,€FØˆ;�vÑÔ€DÝ•˜˜˜Ñ&Ô&Ý˜×-Ò-¨f°aÑ8Ô8Ñ9Ô9ñ;ô ;ð ;åŒZ˜¥eÐ,Ñ,Ô,€FØˆ;�vÑÔ€DÝ•˜˜˜Ñ&Ô&Ý˜×-Ò-¨f°aÑ8Ô8Ñ9Ô9ñ;ô ;ð ;ð ;ð ;r   c            	      óž   — d„ t          d¦  «        D ¦   «         } t          t          | ¦  «        t          | d d d…         ¦  «        ¦  «         d S )Nc                 ó4   — g | ]}t          j        ¦   «         ‘ŒS rj   )r   Únode©rˆ  r   s     r   r‰  z+test_kdtree_comparisons.<locals>.<listcomp>;  s   € Ð-Ð-Ð-˜q�VŒ[‰]Œ]Ð-Ð-Ð-r   r�   rØ   )r0  r   rÙ  )Únodess    r   Útest_kdtree_comparisonsrù  9  sI   € à-Ð-¥E¨!¡H¤HÐ-Ñ-Ô-€EÝ•˜‘”¥ u¨T¨T¨r¨T¤{Ñ 3Ô 3Ñ4Ô4Ð4Ð4Ð4r   c                 ó*  — t           j                             d¦  «         d}d}t           j                             ||¦  «        } | |¦  «                             |d¬¦  «        d         } | |d¬¦  «                             |d¬¦  «        d         } | |d¬	¦  «                             |d¬¦  «        d         } | |dd¬
¦  «                             |d¬¦  «        d         }t          ||¦  «         t          ||¦  «         t          ||¦  «         d S )Nr   r,  ro   r%  r°   rØ   F)r´  )r³  )r´  r³  )r@   ru   rv   rw   r?   r   )r   rV   rQ   r1  r:  r<  ÚT3ÚT4s           r   Útest_kdtree_build_modesrý  ?  s   € å„I‡N‚N�1ÑÔÐØ€AØ	€AÝŒY�_Š_˜Q Ñ"Ô"€FØ	ˆ�VÑ	Ô	×	"Ò	" 6¨QÐ	"Ñ	/Ô	/°Ô	3€BØ	ˆ�V¨5Ð	1Ñ	1Ô	1×	7Ò	7¸À!Ð	7Ñ	DÔ	DÀRÔ	H€BØ	ˆ�V¨5Ð	1Ñ	1Ô	1×	7Ò	7¸À!Ð	7Ñ	DÔ	DÀRÔ	H€BØ	ˆ�V¨5Ø#(ð
*ñ 
*ô 
*ß*/ª%°¸!¨%Ñ*<Ô*<¸Rô
A€Bå�r˜2ÑÔÐÝ�r˜2ÑÔÐÝ�r˜2ÑÔÐÐÐr   c                 ó’  — dd l }t          j                             d¦  «         d}d}t          j                             ||¦  «        } | |¦  «        }|                     |¦  «        }|                     |¦  «        }|                     |d¬¦  «        d         }|                     |d¬¦  «        d         }t          ||¦  «         d S )Nr   rE  ro   r%  r°   rØ   )	Úpickler@   ru   rv   rw   ÚdumpsÚloadsr?   r   ©r   rÿ  rV   rQ   r1  r:  Útmpr<  s           r   Útest_kdtree_pickler  N  s¹   € à€M€M€MÝ„I‡N‚N�1ÑÔÐØ
€AØ	€AÝŒY�_Š_˜Q Ñ"Ô"€FØ	ˆ�VÑ	Ô	€BØ
�,Š,�rÑ
Ô
€CØ	�Š�cÑ	Ô	€BØ	�Š�&˜AˆÑ	Ô	˜rÔ	"€BØ	�Š�&˜AˆÑ	Ô	˜rÔ	"€BÝ�r˜2ÑÔÐÐÐr   c                 óš  — dd l }t          j                             d¦  «         d}d}t          j                             ||f¬¦  «        } | |d¬¦  «        }|                     |¦  «        }|                     |¦  «        }|                     |d¬¦  «        d	         }|                     |d¬¦  «        d	         }t          ||¦  «         d S )
Nr   rE  ro   rö   r¼   )r-   r%  r°   rØ   )	rÿ  r@   ru   rv   rù   r   r  r?   r   r  s           r   Útest_kdtree_pickle_boxsizer  \  sÅ   € à€M€M€MÝ„I‡N‚N�1ÑÔÐØ
€AØ	€AÝŒY×Ò Q¨ FÐÑ+Ô+€FØ	ˆ�V SÐ	)Ñ	)Ô	)€BØ
�,Š,�rÑ
Ô
€CØ	�Š�cÑ	Ô	€BØ	�Š�&˜AˆÑ	Ô	˜rÔ	"€BØ	�Š�&˜AˆÑ	Ô	˜rÔ	"€BÝ�r˜2ÑÔÐÐÐr   c                 ó¨  — t           j                             d¦  «         d}d}t           j                             ||¦  «        } | |d¬¦  «        }|                     ¦   «         }|                     |d¬¦  «        d         }t           j                             ||¦  «        |d	<   |                     |d¬¦  «        d         }t          ||¦  «         d S )
Nr   r,  ro   T)Ú	copy_datar%  r°   rØ   .)r@   ru   rv   rw   Úcopyr?   r   )r   rV   rQ   r1  rÊ   rÎ   r:  r<  s           r   Útest_kdtree_copy_datar
  j  s·   € õ „I‡N‚N�1ÑÔÐØ€AØ	€AÝŒY�_Š_˜Q Ñ"Ô"€FØˆ�F dÐ+Ñ+Ô+€AØ�Š‰Œ€AØ	
�Š��aˆ‰Œ˜Ô	€BÝ”)—/’/ ! QÑ'Ô'€Fˆ3�KØ	
�Š��aˆ‰Œ˜Ô	€BÝ�r˜2ÑÔÐÐÐr   c                 óf  — t           j                             d¦  «         d}d}t           j                             ||¦  «        } | |¦  «        }|                     |dd¬¦  «        d         }|                     |dd¬¦  «        d         }|                     |d¬¦  «        d         }t          ||¦  «         t          ||¦  «         |                     t          d	d
„ ¦  «         t          j	        t          d¬¦  «        5  |                     |dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r,  ro   r%  r/  )rQ   r.  rØ   r°   Ú	cpu_countc                  ó   — d S r   rj   rj   r   r   ú<lambda>z'test_ckdtree_parallel.<locals>.<lambda>†  s   € °€ r   zCannot determine ther½   r   r-  )r@   ru   rv   rw   r?   r   ÚsetattrÚosr¿   r	   ÚNotImplementedError)	r   ÚmonkeypatchrV   rQ   r1  rÊ   r:  r<  rû  s	            r   Útest_ckdtree_parallelr  y  sc  € å„I‡N‚N�1ÑÔÐØ€AØ	€AÝŒY�_Š_˜Q Ñ"Ô"€FØˆ�FÑÔ€AØ	
�Š�˜1 bˆÑ	)Ô	)¨"Ô	-€BØ	
�Š�˜1 bˆÑ	)Ô	)¨"Ô	-€BØ	
�Š�˜1ˆÑ	Ô	˜bÔ	!€BÝ�r˜2ÑÔÐÝ�r˜2ÑÔÐà×Ò�˜K¨¨Ñ6Ô6Ð6Ý	ŒÕ*Ð2HÐ	IÑ	IÔ	Ið 'ð 'Ø	�Š�˜ 2ˆÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   Ä D&Ä&D*Ä-D*c                  ó¢  ‡‡— t           j                             d¦  «         d} d}t           j                             | |¦  «        }t	          |¦  «        Šˆˆfd„Š ‰‰j        ¦  «         ‰j        } t          t          j        | j        ¦  «        t          d¦  «        ¦  «         t          ‰j
        | j        d d …f         | j        ¦  «         d S )Nr   rn   ro   c                 ó(  •— t          t          | t          ¦  «        ¦  «         | j        dk    rVt          | j        d u ¦  «         t          | j        d u ¦  «         t          | j        j        d         ‰j        k    ¦  «         d S  ‰| j        ¦  «          ‰| j        ¦  «         | j        j	        d d …| j        f         }| j        j	        d d …| j        f         }t          | 
                    ¦   «         |                     ¦   «         k     ¦  «         d S )NrØ   r   )r   rŸ   r   Ú	split_dimÚlesserrt  Úindicesrª   rr   Údata_pointsÚmaxÚmin)rV   r=   r  r>   Úrecurse_trees      €€r   r  z'test_ckdtree_view.<locals>.recurse_tree–  sõ   ø€ Ý•
˜1�kÑ*Ô*Ñ+Ô+Ð+ØŒ;˜"ÒÐÝ�A”H Ð$Ñ%Ô%Ð%Ý�A”I Ð%Ñ&Ô&Ð&Ý�A”I”O AÔ&¨&¬/Ò9Ñ:Ô:Ð:Ð:Ð:àˆL˜œÑ"Ô"Ð"ØˆL˜œÑ#Ô#Ð#Ø”Ô$ Q Q Q¨¬ ^Ô4ˆAØ”	Ô% a a a¨¬ nÔ5ˆAÝ�A—E’E‘G”G˜aŸeše™gœgÒ%Ñ&Ô&Ð&Ð&Ð&r   )r@   ru   rv   rw   r   r$   r   Úsortr  r0  rB   r  )rV   rQ   r1  r>   r  s      @@r   Útest_ckdtree_viewr  ‹  sÈ   øø€ õ „I‡N‚N�1ÑÔÐØ€AØ	€AÝŒY�_Š_˜Q Ñ"Ô"€FÝ�V‰_Œ_€Fð'ð 'ð 'ð 'ð 'ð 'ð €L�”ÑÔÐàŒ€AÝ•r”w˜qœyÑ)Ô)­5°©:¬:Ñ6Ô6Ð6å�v”{ 1¤9¨a¨a¨a <Ô0°!´-Ñ@Ô@Ð@Ð@Ð@r   c                 óÐ  — d}d}g d¢}d}t           j                             d¦  «         t           j                             ||f¬¦  «        } | |d¬¦  «        }|                     ||¦  «        \  }}|                     ||¦  «        \  }	}
t          ||	¦  «         t          ||
¦  «         t          j        ddg¦  «        }d}|                     ||¦  «        \  }}|                     ||¦  «        \  }	}
t          |	|d	|dz
  f         ¦  «         t          |
|d	|dz
  f         ¦  «         |                     |d¦  «        \  }}|                     |dg¦  «        \  }	}
t          t          |j        ¦  «        d¦  «         t          t          |	j        ¦  «        d¦  «         t          |t          j	        |	¦  «        ¦  «         t          |t          j	        |
¦  «        ¦  «         d S )
NéÈ   r9   )r   r9   r�   r�   rp   rö   r   rq   .)
r@   ru   rv   rù   r?   r   r�   r†  rª   rñ  )r   rV   rI   ÚklistÚkintrB   r>   rL   rM   Údd1Úii1s              r   Útest_kdtree_list_kr%  ­  sÈ  € à€AØ	€AØˆIˆI€EØ€Då„I‡N‚N�4ÑÔÐÝŒ9×Ò 1 a &ÐÑ)Ô)€DØˆ[˜¨Ð*Ñ*Ô*€Fð �\Š\˜$ Ñ&Ô&�F€BˆØ�|Š|˜D $Ñ'Ô'�H€CˆÝ��SÑÔÐÝ��SÑÔÐõ ŒH�a˜�VÑÔ€EØ€DØ�\Š\˜$ Ñ%Ô%�F€BˆØ�|Š|˜D %Ñ(Ô(�H€CˆÝ��b˜˜e a™i˜Ô(Ñ)Ô)Ð)Ý��b˜˜e a™i˜Ô(Ñ)Ô)Ð)ð �\Š\˜$ Ñ"Ô"�F€BˆØ�|Š|˜D 1 #Ñ&Ô&�H€CˆÝ•�R”X‘” Ñ"Ô"Ð"Ý•�S”Y‘” Ñ#Ô#Ð#Ý�•R”X˜c‘]”]Ñ#Ô#Ð#Ý�•R”X˜c‘]”]Ñ#Ô#Ð#Ð#Ð#r   rt   c                 óŒ  — d}d}d}t           j                             d¦  «         t           j                             ||f¬¦  «        } | |dd¬¦  «        } | |d¬¦  «        }dd	d
t           j        fD ]Ð}|                     |||¬¦  «        \  }}	|                     |dz   ||¬¦  «        \  }
}t          ||
¦  «         t          |	|¦  «         |                     |dz
  ||¬¦  «        \  }
}t          ||
¦  «         t          |	|¦  «         t          |||d|¬¦  «        \  }}t          ||¦  «         t          |	|¦  «         ŒÑd S )NéÐ  r�   rp   rö   r   r¼   rø   rq   r9   g      @©r,   )r-   r,   )	r@   ru   rv   rù   rX   r?   r   r   Úsimulate_periodic_box)r   rV   rI   rQ   rB   r>   Úkdtree2r,   rL   rM   r#  r$  Údd2Úii2s                 r   Útest_kdtree_boxr-  Ï  sk  € ð 	€AØ	€AØ	€AÝ„I‡N‚N�4ÑÔÐÝŒ9×Ò 1 a &ÐÑ)Ô)€DØˆ[˜¨°3Ð7Ñ7Ô7€Fð ˆk˜$¨Ð+Ñ+Ô+€Gà��C�œÐ ð ð ˆØ—’˜d A¨�Ñ+Ô+‰ˆˆBà—<’<  s¡
¨A°�<Ñ3Ô3‰ˆˆSÝ˜B Ñ$Ô$Ð$Ý�R˜ÑÔÐà—<’<  s¡
¨A°�<Ñ3Ô3‰ˆˆSÝ˜B Ñ$Ô$Ð$Ý�R˜ÑÔÐå(¨°$¸À3È!ÐLÑLÔL‰ˆˆSÝ˜B Ñ$Ô$Ð$Ý�R˜ÑÔÐÐðð r   c                 óš  — d}d}d}t           j                             d¦  «         t           j                             ||f¬¦  «        } | |dd¬¦  «        } | |d¬	¦  «        }ddt           j        fD ]X}|                     |||¬
¦  «        \  }}	|                     |||¬
¦  «        \  }
}t          ||
¦  «         t          |	|¦  «         ŒYd S )Nr'  r9   r�   rp   rö   r   rÔ   rø   rq   r(  )r@   ru   rv   rù   rX   r?   r   r   )r   rV   rI   rQ   rB   r>   r*  r,   rL   rM   r#  r$  s               r   Útest_kdtree_box_0boxsizer/  ë  sç   € à€AØ	€AØ	€AÝ„I‡N‚N�4ÑÔÐÝŒ9×Ò 1 a &ÐÑ)Ô)€DØˆ[˜¨°3Ð7Ñ7Ô7€Fð ˆk˜$¨Ð+Ñ+Ô+€Gà�•B”Fˆ^ð ð ˆØ—’˜d A¨�Ñ+Ô+‰ˆˆBà—=’=  q¨A�=Ñ.Ô.‰ˆˆSÝ˜B Ñ$Ô$Ð$Ý�R˜ÑÔÐÐðð r   c                 óš  — t          j        ddd¦  «                             dd¦  «        }|d d …dfxx         dz  cc<   t          j        t
          ¦  «        5   | |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t
          ¦  «        5   | |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y    | |dd	¬¦  «         d S )
Nr   r9   rt   rØ   r   r¼   rø   )rÔ   rî   )rî   rÔ   )r@   r•  Úreshaper¿   r	   rÀ   ©r   rB   s     r   Útest_kdtree_box_upper_boundsr3  þ  sZ  € ÝŒ;�q˜!˜RÑ Ô ×(Ò(¨¨QÑ/Ô/€DØˆˆˆˆAˆ€J€J„J�"Ñ€J€J�JÝ	Œ•zÑ	"Ô	"ð 3ð 3Øˆ�D 1¨cÐ2Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3å	Œ•zÑ	"Ô	"ð :ð :Øˆ�D 1¨jÐ9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð €K�˜q¨*Ð5Ñ5Ô5Ð5Ð5Ð5s$   ÁA3Á3A7Á:A7ÂB2Â2B6Â9B6c                 ód   — t          j        ddd¦  «        }t          t          | |dd¬¦  «         d S )NrØ   r   rt   r¼   rø   )r@   r•  Úassert_raisesrÀ   r2  s     r   Útest_kdtree_box_lower_boundsr6    s4   € ÝŒ;�r˜1˜bÑ!Ô!€DÝ•*˜k¨4¸!ÀSÐIÑIÔIÐIÐIÐIr   c                 óF  — g }g }t          j        d|j        d         z  ¦  «        }t          j        t          j        |dg|j        d         z  ¦  «        ¦  «        j        }|dz
  }|D ]~}	||	dz  |z  z   }
|                      |
||¬¦  «        \  }}|                     d|¦  «        }|                     d|¦  «        }|                     |¦  «         |                     |¦  «         Œt          j	        |d¬¦  «        }t          j	        |d¬¦  «        }t          j
        t          |¦  «        t          |¦  «        |z  gddg¬	¦  «        }||d
         d d …<   ||d         d d …<   |                     d¬¦  «         |d         d d …d |…f         |d
         d d …d |…f         fS )Nr�   r   r¼   r(  rØ   r;   )rM   Úi8)rL   Úf8rå   rM   rL   )Úorder)r@   Úarangerª   r�   Úunravel_indexrÊ   r?   r1  ÚappendÚconcatenateÚemptyr†  r  )r>   rB   rQ   r-   r,   rL   rM   r=   ÚnnrV   Úimager+  r,  r™  s                 r   r)  r)    s«  € Ø	€BØ	€BÝ
Œ	�!�t”z !”}Ñ$Ñ%Ô%€AÝ	Œ•"Ô" 1 q c¨D¬J°q¬MÑ&9Ñ:Ô:Ñ	;Ô	;Ô	=€BØ	ˆc‰€BØð ð ˆØ�q˜3‘w Ñ(Ñ(ˆØ—<’<  q¨A�<Ñ.Ô.‰ˆˆSØ�kŠk˜"˜aÑ Ô ˆØ�kŠk˜"˜aÑ Ô ˆØ
�	Š	�#‰ŒˆØ
�	Š	�#‰ŒˆˆÝ	Œ˜ Ð	$Ñ	$Ô	$€BÝ	Œ˜ Ð	$Ñ	$Ô	$€BåŒX•s˜4‘y”y¥# b¡'¤'¨A¡+Ð.ØØð7ð ñ ô €Fð €Fˆ4„L����OØ€Fˆ4„L����OØ
‡K‚K�d€KÑÔÐØ�$Œ<˜˜˜˜2˜A˜2˜Ô  t¤¨Q¨Q¨Q°°°¨UÔ 3Ð3Ð3r   ÚPyPyz Fails on PyPy CI runs. See #9507)Úreasonc                  óŒ  — 	 dd l } n# t          $ r Y d S w xY wd\  }}t          j        t	          dd|z   |¦  «        t	          dd|z   |¦  «        f         \  }}t          j        |¦  «        dz  t          j        d||z  z   ¦  «        t          j        |¦  «        z  z   }t          j        |¦  «        }||d d …<   d}t          j         	                    d|j
        t          j         	                    d¦  «        dz   ¦  «        }||j        |<   t          j        t          j        ||k    ¦  «        ¦  «        j        }	t          j        t          j        ||k    ¦  «        ¦  «        j        }
|                      | j        ¦  «        j        }t%          d¦  «        D ]}t'          |	¦  «        }Œd}t%          d¦  «        D ]u}|                      | j        ¦  «        j        }t'          |	¦  «        }|                     |
d	d
¬¦  «        \  }}|                      | j        ¦  «        j        }||k    r|dz  }Œvt+          |dk     ¦  «         d S )Nr   )çš™™™™™©?rE  r   r%  rt   g     ÀX@rE  rn   ro   r9   )rQ   r,   )ÚresourceÚImportErrorr@   rð  ÚsliceÚsinÚcosÚ
empty_likeru   r  r÷   ÚflatÚvstackÚnonzerorÊ   Ú	getrusageÚRUSAGE_SELFÚ	ru_maxrssr0  r   r?   r   )rF  ÚdxÚdyr  r=   ÚzÚz_copyÚFILLVALÚmaskÚigoodÚibadÚmem_userE   r$   Ú	num_leaksrá   ÚiqueryÚnew_mem_uses                     r   Útest_ckdtree_memuser^  %  s'  € ðØˆˆˆˆøÝð ð ð àˆˆðøøøð �F€BˆÝŒ8•E˜!˜Q ™V RÑ(Ô(Ý˜!˜Q ™V RÑ(Ô(ð)ô *�D€A€qå
Œˆq‰	Œ	�2‰�œ˜r A a¡C™xÑ(Ô(­2¬6°!©9¬9Ñ4Ñ4€AÝŒ]˜1ÑÔ€FØ€Fˆ1ˆ1ˆ1�Ià€GÝŒ9×Ò˜Q ¤­¬	×(9Ò(9¸"Ñ(=Ô(=ÀÑ(AÑBÔB€DØ€F„K�ÑÝŒI•b”j  g¢Ñ.Ô.Ñ/Ô/Ô1€EÝŒ9•R”Z  W¢Ñ-Ô-Ñ.Ô.Ô0€DØ× Ò  Ô!5Ñ6Ô6Ô@€Gå�2‰YŒYð ð ˆÝ�u‰~Œ~ˆˆà€IÝ�3‰ZŒZð ð ˆØ×$Ò$ XÔ%9Ñ:Ô:ÔDˆÝ�u‰~Œ~ˆØ—z’z $¨!¨q�zÑ1Ô1‰ˆˆfØ×(Ò(¨Ô)=Ñ>Ô>ÔHˆØ˜Ò Ð Ø˜‰NˆIøõ ˆI˜ŠNÑÔÐÐÐs   ‚ ‡
”c                 óh  — t          j        ddd¦  «                             dd¦  «        } | |d¬¦  «        }t          j        t	          |¦  «        d¬¦  «        }|                     |¦  «        }t          |g d¢¦  «         t          t          |j        |d d…         ¦  «         t          d	¦  «        D �]}| 
                    |t          j        dd	|¦  «        ¦  «        }| 
                    |t          j        dd	|¦  «        ||f¬
¦  «        }| 
                    |t          j        dd	|¦  «        |d f¬
¦  «        }| 
                    |t          j        dd	|¦  «        d |f¬
¦  «        }	| 
                    |t          j        dd	|¦  «        |¬
¦  «         t          ||¦  «         t          ||¦  «         t          ||	¦  «         �Œt          t	          |¦  «        ¦  «        D ]Ì}|                     ¦   «         }
d|
|<   ||
dk             } | |¦  «        }| 
                    |t          j        dd	d¦  «        |
|
f¬
¦  «        }| 
                    |t          j        dd	d¦  «        ¦  «        }t          ||¦  «         t          t          |j
        |t          j        dd	d¦  «        |
¬
¦  «         ŒÍd S )Nr   r   ro   rØ   rq   Úf4rå   )ro   r9   r   r   r9   r   r   rt   )Úweightsrn   )r@   r•  r1  rç   r†  Ú_build_weightsr   r5  rÀ   r0  rŒ  r	  )r   rB   Útree1ra  ÚnwrE   Úc1Úc2Úc3Úc4Úw1r>  Útree2s                r   Útest_kdtree_weightsrk  P  sÎ  € åŒ;�q˜!˜QÑÔ×'Ò'¨¨AÑ.Ô.€DØˆK˜ qÐ)Ñ)Ô)€EÝŒg•c˜$‘i”i tÐ,Ñ,Ô,€Gà	×	Ò	˜gÑ	&Ô	&€BÝ�rÐ0Ð0Ð0Ñ1Ô1Ð1å•*˜eÔ2°G¸C¸R¸C´LÑAÔAÐAå�2‰YŒYð #ñ #ˆà×"Ò" 5­"¬+°a¸¸QÑ*?Ô*?Ñ@Ô@ˆØ×"Ò" 5­"¬+°a¸¸QÑ*?Ô*?Ø  'Ð*ð #ñ ,ô ,ˆà×"Ò" 5­"¬+°a¸¸QÑ*?Ô*?Ø  $˜ð #ñ )ô )ˆà×"Ò" 5­"¬+°a¸¸QÑ*?Ô*?Ø˜w˜ð #ñ )ô )ˆà×Ò˜e¥R¤[°°B¸Ñ%:Ô%:Øð 	ñ 	!ô 	!ð 	!õ 	˜2˜rÑ"Ô"Ð"Ý˜2˜rÑ"Ô"Ð"Ý˜2˜rÑ"Ô"Ð"Ñ"å•3�t‘9”9ÑÔð 8ð 8ˆà�\Š\‰^Œ^ˆØˆˆ1‰Ø�R˜1’W”ˆØ�˜EÑ"Ô"ˆà×"Ò" 5­"¬+°a¸¸SÑ*AÔ*AØ˜R˜ð #ñ "ô "ˆð ×"Ò" 5­"¬+°a¸¸SÑ*AÔ*AÑBÔBˆå˜2˜rÑ"Ô"Ð"õ 	•j %Ô"7Ø•2”;˜q " cÑ*Ô*°Bð	8ñ 	8ô 	8ð 	8ð 	8ð!8ð 8r   c                 óz  — d}d}t           j                             d¦  «         t           j                             ||f¬¦  «        } | |d¬¦  «        }g d¢}t          j        t          |¦  «        ¦  «        }|                     ||¦  «        }|                     ||d¬	¦  «        }t          ||                     ¦   «         ¦  «         t          t          j        |¦  «        t          j        |¦  «        ¦  «        D ]>\  }	}
|                     ||
¦  «        }t          ||t          |	¦  «                 ¦  «         Œ?d S )
Nr'  r9   rp   rö   r   rq   )r   r“  r“  g{®Gáz”?rE  F©Ú
cumulative)r@   ru   rv   Únormalr;  r†  rŒ  r   ÚcumsumrW   Ú	itertoolsÚpermutationsr   r(  )r   rV   rI   rB   r>   Úr0Úi0Ún0ÚnncrE   r)  s              r   Ú&test_kdtree_count_neighbous_multiple_rrw  ~  s-  € à€AØ	€AÝ„I‡N‚N�4ÑÔÐÝŒ9×Ò ! Q ÐÑ(Ô(€DØˆ[˜¨Ð*Ñ*Ô*€FØ	$Ð	$Ð	$€BÝ	Œ•3�r‘7”7Ñ	Ô	€BØ	×	Ò	 ¨Ñ	+Ô	+€BØ
×
 Ò
  ¨¸Ð
 Ñ
>Ô
>€CÝ��S—Z’Z‘\”\Ñ"Ô"Ð"å•IÔ*¨2Ñ.Ô.ÝÔ*¨2Ñ.Ô.ñ0ô 0ð +ð +‰ˆˆ1ð ×"Ò" 6¨1Ñ-Ô-ˆÝ˜1˜b¥ a¡¤œkÑ*Ô*Ð*Ð*ð	+ð +r   c                 óà  — t           j                             d¦  «        }|                     dd¦  «        }|                     dd¦  «        } | |¦  «        }|                     ddgd¬¦  «        \  }}|                     ddgd|z  ¦  «        }t          |g ¦  «         |                     |d¬¦  «        \  }}|                     ¦   «         }|                     |d|z  ¦  «        }t          j        dt          ¬	¦  «        }	|	 
                    g ¦  «         t          |	|¦  «          | |¦  «        }
|                     |
d|z  ¦  «        }	t          dg gz  |	¦  «         |                     |
d|z  ¦  «        }	t          |	d
k    ¦  «         |                     |
d|z  d¬¦  «        }	t          |	t          j        d¦  «        k    d¦  «         |                     |
d|z  d¬¦  «        }	t          |	t          j        d¦  «        k    d¦  «         |                     |
d|z  d¬¦  «        }	t!          |	i ¦  «         |                     |
d|z  d¬¦  «        }	dt           j        fdt           j        fdt           j        fg}t          j        |d¬¦  «        }t          j        d|¬	¦  «        }t          |	|¦  «         |                     |d¬¦  «        \  }}|d d …df                              ¦   «         }|                     d|z  d¬¦  «        }	t!          |	t+          ¦   «         ¦  «         |                     d|z  d¬¦  «        }	t          j        dt           j        ¬	¦  «        }t          |	|¦  «         d S )Nrp   rt   r9   r)   r   r°   rd   )rt   )rª   ræ   r   r½  r¹  )rt   rt   Tr¾  r¸  r»  rE   r?  r¼  )Úalign)r   rØ   rÐ  )r   r9   )r@   ru   ÚRandomStateÚrandr?   rÜ   r   r  r?  ÚobjectÚfillr;  rŒ  r   r¥  r©   r   ÚintpÚfloat64ræ   rÒ  rÐ  )r   ÚrngÚXÚYr$   r/   rE   rT  Úmindr  ÚotherÚ_dtypeÚ	res_dtypes                r   Útest_len0_arraysr‡  ‘  s/  € õ Œ)×
Ò
 Ñ
%Ô
%€CØ�Š��Q‰Œ€AØ�Š��Q‰Œ€AØˆ;�q‰>Œ>€Dà�:Š:�r˜2�h !ˆ:Ñ$Ô$�D€A€qØ×Ò˜r 2˜h¨¨A©Ñ.Ô.€AÝ�q˜"ÑÔÐà�:Š:�a˜1ˆ:ÑÔ�D€A€qØ�5Š5‰7Œ7€DØ×Ò˜a  T¡Ñ*Ô*€AÝ
Œ�v¥VÐ,Ñ,Ô,€AØ‡F‚Fˆ2�J„J€JÝ�q˜!ÑÔÐàˆK˜‰NŒN€EØ×Ò˜U C¨¡HÑ-Ô-€AÝ�r˜2˜$‘w Ñ"Ô"Ð"à×Ò˜U C¨¡HÑ-Ô-€AÝˆA�ŠF�O„O€Oà×#Ò# E¨3¨t©8ÀÐ#ÑNÔN€AÝ�q�BœH XÑ.Ô.Ò.°Ñ5Ô5Ð5Ø×#Ò# E¨3¨t©8ÀÐ#ÑNÔN€AÝ�q�BœH XÑ.Ô.Ò.°Ñ5Ô5Ð5Ø×#Ò# E¨3¨t©8ÀÐ#ÑHÔH€AÝ��BÑÔÐØ×#Ò# E¨3¨t©8ÀÐ#ÑKÔK€AØ•B”Gˆn˜s¥B¤G˜n¨sµB´JÐ.?Ð@€FÝ”˜ tÐ,Ñ,Ô,€IÝ
Œ�u IÐ.Ñ.Ô.€AÝ�q˜!ÑÔÐà�:Š:�a˜1ˆ:ÑÔ�D€A€qØˆQˆQˆQ�ˆUŒ8�<Š<‰>Œ>€DØ×Ò˜˜T™¨uÐÑ5Ô5€AÝ�•C‘E”EÑÔÐØ×Ò˜˜T™¨yÐÑ9Ô9€AÝ
Œ�v¥R¤WÐ-Ñ-Ô-€AÝ�q˜!ÑÔÐÐÐr   c           
      ó   — d}t          dd¦  «        D ]ú}t          j        ||f¦  «        }d||dz  d …<   t          j        dd¬¦  «        D ]Á\  }} | |||d¬¦  «        }|j        dk    sJ ‚| t          u r|j        n|j        j        }t          t          j
        |j        j        ¦  «        t          j        d	|dz  ¦  «        ¦  «         t          t          j
        |j        j        ¦  «        t          j        |dz  |¦  «        ¦  «         ŒÂŒûd S )
Ni   r   rí  r9   ©FT)Úrepeat)r³  r´  rr   r�   r   )r0  r@   rç   rq  Úproductr÷   r   r$   Ú_noder   r  r  r  r;  rt  )r   rV   rI   rB   ÚbalancedÚcompactr>   r$   s           r   Útest_kdtree_duplicated_inputsr�  ¿  s=  € à€AÝ�1�a‰[Œ[ð &ð &ˆÝŒw˜˜1�v‰ŒˆØˆˆQ�‰TˆUˆU‰å!*Ô!2°=ÈÐ!KÑ!KÔ!Kð 	&ð 	&ÑˆH�gØ �[ °XØ/6ÀðDñ Dô DˆFà”; !Ò#Ð#Ð#Ð#à#.µ'Ð#9Ð#9�F”K�KØ”KÔ%ð õ Ý”˜œÔ+Ñ,Ô,Ý”	˜!˜Q !™VÑ$Ô$ñ&ô &ð &õ Ý”˜œÔ,Ñ-Ô-Ý”	˜!˜q™& !Ñ$Ô$ñ&ô &ð &ð &ð	&ð	&ð &r   c                 ód   —  | dggd¬¦  «        }t          t          |j        |ddgd¬¦  «         d S )Nr   r   rq   rd   Frm  )r5  rÀ   rŒ  )r   r>   s     r   Ú'test_kdtree_noncumulative_nondecreasingr‘  Ö  sO   € ð
 ˆ[˜1˜#˜¨Ð+Ñ+Ô+€Få•*˜fÔ4Ø��a� Uð,ñ ,ô ,ð ,ð ,ð ,r   c                 ó  — t          j        g d¢g d¢g d¢g d¢g d¢g d¢gd¬¦  «        } | |¦  «        }|                     |d	d
¬¦  «        \  }}t          |dt           j        t           j        t           j        gddt           j        t           j        gddt           j        t           j        gddt           j        t           j        gddt           j        t           j        gdt           j        t           j        t           j        gg¦  «         d S )N)rÔ   rÔ   rÔ   )rä  rÔ   rÔ   )rÔ   r¼   rÔ   )rÔ   rä  rÔ   )r¼   rÔ   rÔ   )r¼   r¼   rÔ   r  rå   ro   rs   rP   rÔ   r“  )r@   r�   r?   r   rX   )r   ÚxyzÚckdtÚdeqÚieqs        r   Útest_short_knnr—  à  s  € õ Œ(ØˆˆØˆˆØˆˆØˆˆØˆˆØˆˆðð ðñ ô €Cð ˆ;�sÑÔ€Dà�zŠz˜# ¸ˆzÑ=Ô=�H€Cˆå˜cØ•"”&�"œ&¥"¤&Ð)Ø�•r”v�rœvÐ&Ø�•r”v�rœvÐ&Ø�•r”v�rœvÐ&Ø�•r”v�rœvÐ&Ø•”�œ¥¤Ð(ð*ñ+ô +ð +ð +ð +r   c                 ó  ‡— t           j                             d¦  «         t           j                             d¬¦  «        }t           j                             d¬¦  «        } | |¦  «        Št           j                             ddt          |¦  «        ¬¦  «        }‰                     ||¦  «        }ˆfd„t          ||¦  «        D ¦   «         }t          ||¦  «        D ]/\  }}t          t          |¦  «        t          |¦  «        ¦  «         Œ0d S )Nrp   ©rn   r�   rö   r   ç333333Ó?c                 óB   •— g | ]\  }}‰                      ||¦  «        ‘ŒS rj   ©rÜ   )rˆ  ÚqiÚdir$   s      €r   r‰  z2test_query_ball_point_vector_r.<locals>.<listcomp>  s-   ø€ ÐIÐIÐI±°°Rˆt×$Ò$ R¨Ñ,Ô,ÐIÐIÐIr   )
r@   ru   rv   ro  rù   r†  rÜ   rW   r   rÙ  )	r   rB   r?   r/   ÚrvectorÚrscalarr*   r+   r$   s	           @r   Útest_query_ball_point_vector_rr¡  ù  sô   ø€ å„I‡N‚N�4ÑÔÐÝŒ9×Ò ÐÑ*Ô*€DÝŒI×Ò (ÐÑ+Ô+€EØˆ;�tÑÔ€DÝ
Œ	×Ò˜!˜S¥s¨5¡z¤zÐÑ2Ô2€Aà×#Ò# E¨1Ñ-Ô-€GØIÐIÐIÐI½3¸uÀa¹=¼=ÐIÑIÔI€GÝ�G˜WÑ%Ô%ð 1ð 1‰ˆˆ1Ý�6 !™9œ9¥f¨Q¡i¤iÑ0Ô0Ð0Ð0ð1ð 1r   c                 óò  ‡‡— t           j                             d¦  «         t           j                             d¬¦  «        }t           j                             d¬¦  «        } | |¦  «        ŠdŠ‰                     |‰d¬¦  «        }d„ ‰                     |‰d¬¦  «        D ¦   «         }ˆˆfd	„|D ¦   «         }ˆˆfd
„|D ¦   «         }t          ||¦  «         t          ||¦  «         t          ||¦  «         d S )Nrp   r™  rö   rš  T©Úreturn_lengthc                 ó,   — g | ]}t          |¦  «        ‘ŒS rj   r…  )rˆ  rà   s     r   r‰  z0test_query_ball_point_length.<locals>.<listcomp>  s   € ÐXÐXÐX˜C�s�3‰xŒxÐXÐXÐXr   Fc                 óV   •— g | ]%}t          ‰                     |‰¦  «        ¦  «        ‘Œ&S rj   )r†  rÜ   ©rˆ  r�  r/   r$   s     €€r   r‰  z0test_query_ball_point_length.<locals>.<listcomp>  s1   ø€ ÐAÐAÐA°R�s�4×(Ò(¨¨QÑ/Ô/Ñ0Ô0ÐAÐAÐAr   c                 ó@   •— g | ]}‰                      |‰d ¬¦  «        ‘ŒS )Tr£  rœ  r§  s     €€r   r‰  z0test_query_ball_point_length.<locals>.<listcomp>  s.   ø€ ÐPÐPÐPÀBˆt×$Ò$ R¨¸$Ð$Ñ?Ô?ÐPÐPÐPr   )r@   ru   rv   ro  rÜ   r   )	r   rB   r?   ÚlengthÚlength2Úlength3Úlength4r/   r$   s	          @@r   Útest_query_ball_point_lengthr­    s  øø€ å„I‡N‚N�4ÑÔÐÝŒ9×Ò ÐÑ*Ô*€DÝŒI×Ò (ÐÑ+Ô+€EØˆ;�tÑÔ€DØ€Aà×"Ò" 5¨!¸4Ð"Ñ@Ô@€FØXÐX 4×#8Ò#8¸ÀÐQVÐ#8Ñ#WÔ#WÐXÑXÔX€GØAÐAÐAÐAÐA¸5ÐAÑAÔA€GØPÐPÐPÐPÐPÈ%ÐPÑPÔP€GÝ�v˜wÑ'Ô'Ð'Ý�v˜wÑ'Ô'Ð'Ý�v˜wÑ'Ô'Ð'Ð'Ð'r   c                 óV  — t           j                             d¦  «         t           j                             d¬¦  «        }t          j        d¦  «        dz  }t          j        t          j        d¦  «        d d d…         dz  ¦  «        d d d…         }t           j                             d¬¦  «        }t          j        |j        ¦  «        j        }|j        d         |j        d         k    sJ ‚|j        d         |j        d         k    sJ ‚ | |¦  «        }|                     ||d¬¦  «        }|                     ||d¬¦  «        }t          ||¦  «         | 
                    |d	¦  «        \  }	}
| 
                    |d	¦  «        \  }}t          |	|¦  «         t          |
|¦  «         d S )
Nrp   r™  rö   rn   g{®Gáz¤?rØ   Tr£  r   )r@   ru   rv   ro  r;  ÚascontiguousarrayrÊ   ÚstridesrÜ   r   r?   )r   rB   Úd_contiguousÚd_discontiguousÚquery_contiguousÚquery_discontiguousr$   Úlength1rª  Úd1Úi1Úd2Úi2s                r   Útest_discontiguousrº    s®  € å„I‡N‚N�4ÑÔÐÝŒ9×Ò ÐÑ*Ô*€DÝ”9˜S‘>”> DÑ(€LÝÔ*Ýœ) C™.œ.¨¨¨2¨Ô.°Ñ5ñ7ô 7Ø7;°t¸°tô=€Oå”y×'Ò'¨XÐ'Ñ6Ô6ÐÝÔ.Ð/?Ô/AÑBÔBÔDÐØÔ& rÔ*Ð.>Ô.FÀrÔ.JÒJÐJÐJÐJØÔ" 2Ô&¨,Ô*>¸rÔ*BÒBÐBÐBÐBàˆ;�tÑÔ€Dà×#Ò#Ð$4Ø$0Àð $ñ Fô F€Gà×#Ò#Ð$7Ø$3À4ð $ñ Iô I€Gõ �w Ñ(Ô(Ð(à�ZŠZÐ(¨!Ñ,Ô,�F€BˆØ�ZŠZÐ+¨QÑ/Ô/�F€Bˆå�r˜2ÑÔÐÝ�r˜2ÑÔÐÐÐr   zbalanced_tree, compact_nodes))TF)TT)FFr‰  c                 ón  — t           j                             d¦  «         t          j        d¬¦  «        }t          j        d¬¦  «        }t          j        d¬¦  «        } | |||¬¦  «        }|                     |dd¬	¦  «        }|d
k    sJ ‚|                     |d¦  «        \  }}	|	j        dk    sJ ‚|j        dk    sJ ‚t          j        |¦  «         	                    ¦   «         sJ ‚| 
                    |d
dg¦  «        }
t          |
d
d
g¦  «         |                     |d¦  «        }|j        dk    sJ ‚d S )Nrp   )r   r�   )rª   )r   r�   r&  r²  rš  Tr£  r   r9   )r9   r9   r   r'  )r@   ru   rv   r?  rç   rÜ   r?   rª   ÚisinfrC   rŒ  r   r¥  )r   r³  r´  Úempty_v3Úquery_v3Úquery_v2r$   r©  rL   rM   ÚNr§  s               r   Útest_kdtree_empty_inputrÁ  2  sJ  € õ „I‡N‚N�4ÑÔÐÝŒx˜fÐ%Ñ%Ô%€HÝŒw˜VÐ$Ñ$Ô$€HÝŒw˜VÐ$Ñ$Ô$€Hàˆ;�x¨}Ø%2ð4ñ 4ô 4€Dà×"Ò" 8¨SÀÐ"ÑEÔE€FØ�QŠ;ˆ;ˆ;ˆ;à�ZŠZ˜ !Ñ$Ô$�F€BˆØŒ8�vÒÐÐÐØŒ8�vÒÐÐÐÝŒ8�B‰<Œ<×ÒÑÔÐÐÐà×Ò˜T A q 6Ñ*Ô*€AÝ�q˜1˜a˜&Ñ!Ô!Ð!à×#Ò# D¨#Ñ.Ô.€AØŒ7�fÒÐÐÐÐÐr   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú_Test_sorted_query_ball_pointc                 óÌ   — t           j                             d¦  «         t           j                             dd¦  «        | _        |                      | j        ¦  «        | _        d S )Nrp   rn   r   )r@   ru   rv   rw   r=   r   r”  rx   s    r   ry   z*_Test_sorted_query_ball_point.setup_methodP  sH   € Ý
Œ	�Š�tÑÔÐÝ”—’  aÑ(Ô(ˆŒØ×$Ò$ T¤VÑ,Ô,ˆŒ	ˆ	ˆ	r   c                 ó  — | j                              | j        dd¬¦  «        }|D ]}t          |t	          |¦  «        ¦  «         Œ | j        D ]<}| j                              |dd¬¦  «        }t          |t	          |¦  «        ¦  «         Œ=d S )Nr¼   T©Úreturn_sorted)r”  rÜ   r=   r   rÙ  )r5   Ú	idxs_listÚidxsrá  s       r   Útest_return_sorted_Truez5_Test_sorted_query_ball_point.test_return_sorted_TrueU  s˜   € Ø”I×.Ò.¨t¬v°rÈÐ.ÑNÔNˆ	Øð 	3ð 	3ˆDÝ˜t¥V¨D¡\¤\Ñ2Ô2Ð2Ð2à”&ð 	3ð 	3ˆBØ”9×-Ò-¨b°"ÀDÐ-ÑIÔIˆDÝ˜t¥V¨D¡\¤\Ñ2Ô2Ð2Ð2ð	3ð 	3r   c                 óB  ‡ — ‰ j                              ‰ j        d¦  «        }|D ]}t          |t	          |¦  «        ¦  «         Œ ˆ fd„‰ j        D ¦   «         }‰ j                              ‰ j        dd¬¦  «        }t          ||¦  «        D ]\  }}t          ||¦  «         ŒdS )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¼   c                 óF   •— g | ]}‰j                              |d ¦  «        ‘ŒS )r¼   )r”  rÜ   )rˆ  rá  r5   s     €r   r‰  zI_Test_sorted_query_ball_point.test_return_sorted_None.<locals>.<listcomp>f  s+   ø€ ÐPÐPÐPÀ2˜DœI×6Ò6°r¸2Ñ>Ô>ÐPÐPÐPr   FrÆ  N)r”  rÜ   r=   r   rÙ  rW   )r5   rÈ  rÉ  Úidxs_list_singleÚidxs_list_FalseÚidxs0Úidxs1s   `      r   Útest_return_sorted_Nonez5_Test_sorted_query_ball_point.test_return_sorted_None^  s»   ø€ ð ”I×.Ò.¨t¬v°rÑ:Ô:ˆ	Øð 	3ð 	3ˆDÝ˜t¥V¨D¡\¤\Ñ2Ô2Ð2Ð2àPÐPÐPÐPÈÌÐPÑPÔPÐØœ)×4Ò4°T´V¸RÈuÐ4ÑUÔUˆÝ Ð1AÑBÔBð 	-ð 	-‰LˆE�5Ý˜u eÑ,Ô,Ð,Ð,ð	-ð 	-r   N)r   rh   ri   ry   rÊ  rÑ  rj   r   r   rÃ  rÃ  N  sA   € € € € € ð-ð -ð -ð
3ð 3ð 3ð-ð -ð -ð -ð -r   rÃ  c                  óH  — t           j                             dd¦  «                             t          ¦  «        } t          j        t          d¬¦  «        5  t          | ¦  «        }d d d ¦  «         n# 1 swxY w Y   t          | j	        ¦  «        }t          j        t          d¬¦  «        5  | 
                    | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                     | d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrt   r9   zcomplex datar½   r   rå  )r@   ru   r{  ÚviewÚcomplexr¿   r	   Ú	TypeErrorr   Úrealr?   rÜ   ©r1  Úts     r   Útest_kdtree_complex_datarÙ  l  s¸  € åŒY�^Š^˜B Ñ"Ô"×'Ò'­Ñ0Ô0€Få	Œ•y¨Ð	7Ñ	7Ô	7ð ð Ý�6‰NŒNˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 	ˆvŒ{ÑÔ€Aå	Œ•y¨Ð	7Ñ	7Ô	7ð ð Ø	�Š�‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
Œ•y¨Ð	7Ñ	7Ô	7ð (ð (Ø	×Ò˜6 QÐÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s6   ÁA0Á0A4Á7A4Â*CÃCÃCÃ2DÄDÄDc                  ó  — t           j                             d¦  «         t           j                             dd¦  «        } t	          | ¦  «        }|j        }t          |t          j        ¦  «        sJ ‚|j        | j	        d         k    sJ ‚|g}|�rx| 
                    d¦  «        }t          |t          j        ¦  «        rat          |j        t          ¦  «        sJ ‚|j        t          |j        ¦  «        k    sJ ‚t          | |j                 |j        j        ¦  «         nãt          |t          j        ¦  «        sJ ‚t          |j        t          ¦  «        sJ ‚d|j        cxk    r|j        k     sn J ‚t          |j        t*          ¦  «        sJ ‚t          |j        t          ¦  «        sJ ‚|j        |j        j        |j        j        z   k    sJ ‚|                     |j        ¦  «         |                     |j        ¦  «         |�°vd S d S )Nrp   rn   ro   r   rØ   )r@   ru   rv   r{  r   r$   rŸ   Ú	innernodeÚchildrenrª   ÚpopÚleafnoderÆ   r†  Úidxr   rŒ  r  r  rI   rp  r    rs  rt  r=  )r1  rØ  Úrootrø  rV   s        r   Útest_kdtree_tree_accessrá  |  så  € å„I‡N‚N�4ÑÔÐÝŒY�^Š^˜C Ñ#Ô#€FÝˆv‰Œ€AØŒ6€Då�d�FÔ,Ñ-Ô-Ð-Ð-Ð-ØŒ=˜FœL¨œOÒ+Ð+Ð+Ð+ð ˆF€EØ
ñ !Ø�IŠI�b‰MŒMˆå�a�œÑ)Ô)ð 	!Ý˜aœj­#Ñ.Ô.Ð.Ð.Ð.Ø”:¥ Q¤U¡¤Ò+Ð+Ð+Ð+Ý˜v a¤eœ}¨a¬gÔ.AÑBÔBÐBÐBå˜a¥Ô!1Ñ2Ô2Ð2Ð2Ð2Ý˜aœk­3Ñ/Ô/Ð/Ð/Ð/Ø˜œÐ)Ð)Ò)Ð) a¤cÒ)Ð)Ð)Ð)Ð)Ð)Ý˜aœg¥uÑ-Ô-Ð-Ð-Ð-Ý˜aœj­#Ñ.Ô.Ð.Ð.Ð.Ø”: ¤¤°1´9Ô3EÑ!EÒEÐEÐEÐEØ�LŠL˜œÑ#Ô#Ð#Ø�LŠL˜œÑ Ô Ð ð ñ !ð !ð !ð !ð !r   c                  ó~  — t           j                             d¦  «         t           j                             dd¦  «        } t	          | ¦  «        }t          |j        t          ¦  «        sJ ‚|j        | j	        d         k    sJ ‚t          |j        t          ¦  «        sJ ‚|j        | j	        d         k    sJ ‚t          |j
        t          ¦  «        sJ ‚|j
        dk    sJ ‚t          |j        t          j        | d¬¦  «        ¦  «         t          |j        t          j        | d¬¦  «        ¦  «         |j        | u sJ ‚d S )Nrp   rn   ro   r   r   rt   r;   )r@   ru   rv   r{  r   rŸ   rI   rÆ   rV   rª   rr   r   rq  rJ   rr  ÚaminrB   r×  s     r   Útest_kdtree_attributesrä  š  s  € å„I‡N‚N�4ÑÔÐÝŒY�^Š^˜C Ñ#Ô#€FÝˆv‰Œ€Aå�a”c�3ÑÔÐÐÐØŒ3�&”,˜q”/Ò!Ð!Ð!Ð!å�a”c�3ÑÔÐÐÐØŒ3�&”,˜q”/Ò!Ð!Ð!Ð!å�a”j¥#Ñ&Ô&Ð&Ð&Ð&ØŒ:˜ÒÐÐÐå�q”w¥¤¨°QÐ 7Ñ 7Ô 7Ñ8Ô8Ð8Ý�q”v�rœw v°AÐ6Ñ6Ô6Ñ7Ô7Ð7ØŒ6�VÐÐÐÐÐÐr   Úkdtree_classc           	      ó
  ‡‡— t           j                             d¦  «        }t          j        ddd¦  «        }|                     d¦  «                             d¦  «        }|                     d¦  «                             d¦  «        }|                     d¦  «        }|                     d	¦  «        } | |¦  «        } | |¦  «        }|                     ||d
||f¬¦  «        }	|d d d …f         |d d …d f         z  Št           j                             |d d d …d d …f         |d d …d d d …f         z
  d¬¦  «        Šˆˆfd„t          t          j
        dg|d d…         ¦  «        |¦  «        D ¦   «         }
t          |	|
¦  «         d S )Nrp   rE  r   é   )r~  r�   é-   )é   r�   r~  ré  F)rn  ra  rØ   r;   c                 ó`   •— g | ]*\  }}t          j        ‰|‰k     ‰|k    z           ¦  «        ‘Œ+S rj   )r@   rA   )rˆ  Úprev_radiusÚradiusrá   ra  s      €€r   r‰  z8test_kdtree_count_neighbors_weighted.<locals>.<listcomp>Á  sP   ø€ ð Oð Oð OÙ%�+˜võ Œf�W˜k¨DÒ0°T¸V²^ÑDÔEÑFÔFð Oð Oð Or   r   )r@   ru   rz  r;  r1  rŒ  Úlinalgrâ   rW   rq  Úchainr   )rå  r€  r)  ÚAÚBÚwAÚwBÚkdAÚkdBÚnABÚexpectrá   ra  s              @@r   Ú$test_kdtree_count_neighbors_weightedr÷  ®  s�  øø€ å
Œ)×
Ò
 Ñ
%Ô
%€CÝ
Œ	�$˜˜4Ñ Ô €Aà�
Š
�2‰Œ×Ò˜uÑ%Ô%€AØ�
Š
�2‰Œ×Ò˜vÑ&Ô&€Aà	�Š�A‰Œ€BØ	�Š�B‰Œ€Bà
ˆ,�q‰/Œ/€CØ
ˆ,�q‰/Œ/€Cà
×
Ò
˜c 1°ÀÀBÀÐ
Ñ
HÔ
H€Cð ��q�q�q�Œk˜B˜q˜q˜q $˜wœKÑ'€GÝŒ9�>Š>˜!˜D ! ! ! Q Q Q˜Jœ-¨!¨A¨A¨A¨t°Q°Q°Q¨J¬-Ñ7¸bˆ>ÑAÔA€DðOð Oð Oð Oð OÝ),­Y¬_¸a¸SÀ!ÀCÀRÀCÄ&Ñ-IÔ-IÈ1Ñ)MÔ)MðOñ Oô O€Få�C˜Ñ Ô Ð Ð Ð r   c                  ó,  — g d¢} t          | ¦  «        }t          j        | t          j        |t          j        ¦  «        g¦  «        d d …d f         }t          j        t          d¬¦  «        5  t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)
r   r%  iöÿÿÿr~  éüÿÿÿiðÿÿÿiúÿÿÿé   r�   iõÿÿÿúmust be finiter½   )	r†  r@   r>  rú   Únanr¿   r	   rÀ   r   )ÚvalsrV   rB   s      r   Útest_kdtree_nanrþ  Æ  sÌ   € Ø1Ð1Ð1€DÝˆD‰	Œ	€AÝŒ>˜4¥¤¨­B¬FÑ!3Ô!3Ð4Ñ5Ô5°a°a°a¸°gÔ>€DÝ	Œ•zÐ)9Ð	:Ñ	:Ô	:ð ð Ýˆt‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á,B	Â	BÂBc                  ó<  — t           j                             d¦  «        } |                      ddd¬¦  «        }t	          |dd¬¦  «        }d„ t          d	¦  «        D ¦   «         }t          j        t          d
¬¦  «        5  | 	                    |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  | 
                    |d¦  «         d d d ¦  «         n# 1 swxY w Y   t           j        |dd d …f<   t          j        t          d
¬¦  «        5  t	          |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  t	          |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  t	          |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  t	          |dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Ni90  r™  rÔ   rd   )r÷   ÚlowÚhighFr²  c                 ó&   — g | ]}t           j        ‘ŒS rj   )r@   rü  r÷  s     r   r‰  z2test_nonfinite_inputs_gh_18223.<locals>.<listcomp>Ò  s   € Ð*Ð*Ð*˜A•”Ð*Ð*Ð*r   r�   rû  r½   r   r   T)r@   ru   Údefault_rngrù   r   r0  r¿   r	   rÀ   r?   rÜ   rü  )r€  ÚcoordsrØ  Ú	bad_coords       r   Útest_nonfinite_inputs_gh_18223r  Î  s³  € Ý
Œ)×
Ò
 Ñ
&Ô
&€CØ�[Š[˜h¨C°cˆ[Ñ:Ô:€FÝˆv U¸%Ð@Ñ@Ô@€AØ*Ð*¥ q¡¤Ð*Ñ*Ô*€Iå	Œ•zÐ)9Ð	:Ñ	:Ô	:ð ð Ø	�Š�	ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•zÐ)9Ð	:Ñ	:Ô	:ð )ð )Ø	×Ò˜9 aÑ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ ”6€Fˆ1ˆaˆaˆaˆ4�LÝ	Œ•zÐ)9Ð	:Ñ	:Ô	:ð @ð @Ýˆv T¸Ð?Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @å	Œ•zÐ)9Ð	:Ñ	:Ô	:ð @ð @Ýˆv U¸$Ð?Ñ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @å	Œ•zÐ)9Ð	:Ñ	:Ô	:ð ?ð ?Ýˆv T¸Ð>Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?å	Œ•zÐ)9Ð	:Ñ	:Ô	:ð Að AÝˆv U¸%Ð@Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Að Aøøøð Að Að Að Að Að Asl   Á>B Â B$Â'B$ÃC)Ã)C-Ã0C-Ä"EÅEÅEÅ'FÆF
ÆF
Æ,GÇGÇGÇ1HÈHÈHÚincantationc                 óú   —  G d„ dt           j        ¦  «        }ddgddgddgg}t          j        |¦  «        } ||¦  «        } | |d	¦  «        }|                     |d
¦  «         |                     |d¦  «         d S )Nc                   ó   — e Zd Zd„ Zd„ ZdS )útest_gh_18800.<locals>.ArrLikec                 ób   — t          j        |¦  «                             | ¦  «        }d |_        |S r   )r@   rò  rÓ  rC   )ÚclsÚinput_arrayÚobjs      r   Ú__new__z&test_gh_18800.<locals>.ArrLike.__new__ë  s-   € Ý”*˜[Ñ)Ô)×.Ò.¨sÑ3Ô3ˆCð ˆCŒGØˆJr   c                 ó:   — |€d S t          |dd ¦  «        | _        d S )NrC   )ÚgetattrrC   )r5   r  s     r   Ú__array_finalize__z1test_gh_18800.<locals>.ArrLike.__array_finalize__ò  s#   € Øˆ{Ø�Ý˜s E¨4Ñ0Ô0ˆDŒHˆHˆHr   N)r   rh   ri   r  r  rj   r   r   ÚArrLiker
  ê  s2   € € € € € ð	ð 	ð 	ð	1ð 	1ð 	1ð 	1ð 	1r   r  g®GázŽP@g…ëQ¸E@@g…ëQ¸…6@g¤p=
×c6@gÃõ(\�?@g=
×£pMT@rt   r   r   )r@   r»  r�   r?   rÜ   )r  r  r1  rÝ  Úarr_liker$   s         r   Útest_gh_18800r  ä  s«   € ð1ð 1ð 1ð 1ð 1•"”*ñ 1ô 1ð 1ð 
�ˆØ	�ˆØ	�ˆð
€Fõ
 Œ(�6Ñ
Ô
€CØˆw�s‰|Œ|€HØˆ;�v˜rÑ"Ô"€DØ‡J‚Jˆx˜ÑÔÐØ×Ò˜( CÑ(Ô(Ð(Ð(Ð(r   )kr  Únumpy.testingr   r   r   r   r   r   r¿   r	   r5  Úplatformr
   Únumpyr@   Úscipy.spatialr   r   r   r   Úscipy.spatial._ckdtreer   r   rq  Úfixturer   r'   r0   r2   rl   r|   r…   r—   rš   rÃ   rÓ   rì   rñ   r   r  r  r  r  r  r  r*  ÚmarkÚ	fail_slowr5  r7  rC  rG  rK  rO  rR  rU  rX  rx  rz  r|  r€  r‚  rœ  rŸ  rÄ  rÊ  rÎ  rÓ  rÕ  r×  rÞ  rë  ró  rù  rý  r  r  r
  r  r  r%  r-  r/  r3  r6  r)  Úskipifr^  rk  rw  r‡  r�  r‘  r—  r¡  r­  rº  ÚparametrizerÁ  rÃ  rÙ  rá  rä  r÷  rþ  r  r  rj   r   r   ú<module>r      s2  ðð 
€	€	€	ð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð +Ð *Ð *Ð *Ð *Ð *Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ .Ð .Ð .Ð .Ð .Ð .Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à Ð Ð Ð à€„˜ Ð(Ð)Ñ)Ô)ðð ñ *Ô)ððð ð ð(ð ð ðH-ð H-ð H-ð H-ð H-ñ H-ô H-ð H-ðV ð	ð 	ð 	ð 	ð 	Ð#ñ 	ô 	ñ „ð	ð ð,ð ,ð ,ð ,ð ,�|ñ ,ô ,ñ „ð,ð ð&ð &ð &ð &ð &Ð"ñ &ô &ñ „ð&ð: ð>ð >ð >ð >ð >˜+ñ >ô >ñ „ð>ð+)ð +)ð +)ð +)ð +)ñ +)ô +)ð +)ðZ-7ð -7ð -7ð -7ð -7ñ -7ô -7ð -7ð^>ð >ð >ð >ð >ñ >ô >ð >ð4 ð
ð 
ð 
ð 
ð 
Ð(ñ 
ô 
ñ „ð
ð ð#
ð #
ð #
ð #
ð #
Ð!1ñ #
ô #
ñ „ð#
ðL ðð ð ð ð Ð)9ñ ô ñ „ðð" ðð ð ð ð Ð0ñ ô ñ „ðð ðð ð ð ð Ð(9ñ ô ñ „ðð ðð ð ð ð Ð-ñ ô ñ „ðð ðð ð ð ð Ð%?ñ ô ñ „ðð ðð ð ð ð Ð,ñ ô ñ „ðð ðð ð ð ð Ð.ñ ô ñ „ðð'ð 'ð 'ð „×Ò�qÑÔð-ð -ñ Ôð-ð&3ð 3ð 3ð 3ð 3ñ 3ô 3ð 3ð* ðð ð ð ð Ð2ñ ô ñ „ðð ðð ð ð ð Ð&;ñ ô ñ „ðð" ðð ð ð ð Ð!7ñ ô ñ „ðð ðð ð ð ð Ð*Iñ ô ñ „ðð ðð ð ð ð Ð"8ñ ô ñ „ðð ðð ð ð ð Ð+Jñ ô ñ „ðð3ð 3ð 3ð 3ð 3ñ 3ô 3ð 3ð@Kð Kð KðBð Bð BðGð Gð Gð:ð :ð :ðFð Fð Fð Fð Fñ Fô Fð Fð$ ðFð Fð Fð Fð FÐ7ñ Fô Fñ „ðFðF@ð F@ð F@ð F@ð F@ñ F@ô F@ð F@ðR ðð ð ð ð Ð#Eñ ô ñ „ðð"Lð Lð Lð	ð 	ð 	ð#ð #ð #ð!ð !ð !ð$/ð /ð /ð
ð ð ðB#ð #ð #ð
;ð 
;ð 
;ð5ð 5ð 5ðð ð ðð ð ðð ð ðð ð ð'ð 'ð 'ð$Að Að AðD $ð  $ð  $ðD „×Ò�rÑÔðð ñ Ôðð6ð ð ð&6ð 6ð 6ðJð Jð Jð4ð 4ð 4ð2 „×ÒÐ)Ð)Ñ+Ô+¨vÒ5Ø=ð ñ ?ô ?ð'ð 'ñ?ô ?ð'ðR,8ð ,8ð ,8ð\ „×Ò�rÑÔð+ð +ñ Ôð+ð$,ð ,ð ,ð\&ð &ð &ð.,ð ,ð ,ð+ð +ð +ð21ð 1ð 1ð(ð (ð (ð ð ð ð8 „×ÒÐ7ðð ð ñô ð
ð ñô ð
ð. ð-ð -ð -ð -ð -ñ -ô -ñ „ð-ð:(ð (ð (ð !ð !ð !ð<ð ð ð( „×Ò˜¨&°'Ð):Ñ;Ô;ð!ð !ñ <Ô;ð!ð.ð ð ðAð Að Að, „×Ò˜¨°&Ð(9Ñ:Ô:ð)ð )ñ ;Ô:ð)ð )ð )r   