§
    fŠtjÉÃ  ã                   óÞ  — d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dl
Z
d dl
mZ d dlmc mZ d dlmZ d dlmZ d dlZd„ Zefd„Zej                             d¦  «         g d	¢Z ej        g d
d
g‘d
dg‘d
dg‘d
dg‘d
dg‘d
dg‘d
dg‘d
dg‘d
dg‘dd
g‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘dd
g‘ddg‘ddg‘ddg‘ddg‘ddg‘dd
g‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘dd
g‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘dd
g‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘dd
g‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘dd
g‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘dd
g‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘ddg‘¦  «        Z ej        ddgdd gddgd dgd d gd dgdd ej        ej        ¦  «        j         z
  gdd gddgg	¦  «        Z!ej         "                    dd¦  «         ej        d d gd dgdd gddgg¦  «        gZ#e#ej         "                    dd¦  «        d ej        d d gd dgdd gddgg¦  «        z   gz   Z$ ej%        e¦  «        ej         "                    dd¦  «        ej         "                    dd¦  «        ej         "                    dd¦  «        ej         "                    dd¦  «        ej         "                    dd¦  «        ej         "                    dd¦  «        ej         "                    dd¦  «        ee!dœ
Z&e#dfe$dfd œZ'd!„ Z(e&D ]Z)d"D ]Z* e(e)e*¦  «         ŒŒ G d#„ d$¦  «        Z+ G d%„ d&¦  «        Z, G d'„ d(¦  «        Z- G d)„ d*¦  «        Z.d+„ Z/ G d,„ d-¦  «        Z0 G d.„ d/¦  «        Z1 G d0„ d1¦  «        Z2e
j3         4                    d2eej5        g¦  «        d3„ ¦   «         Z6d4„ Z7d5„ Z8dS )6é    N)Úassert_equalÚassert_almost_equalÚassert_Úassert_allcloseÚassert_array_equal)Úraises)ÚcKDTree)ÚVoronoic                 ó:   — t          t          | ¦  «        ¦  «        S ©N©ÚtupleÚsorted©Úxs    ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_qhull.pyÚsorted_tupler      s   € Ý•˜‘”ÑÔÐó    c                 ó¢  — t          | t          j        ¦  «        r|                      ¦   «         } t          |t          j        ¦  «        r|                     ¦   «         }t	          t          || ¦  «        ¦  «        } |                      ¦   «          t	          t          ||¦  «        ¦  «        }|                     ¦   «          t          | |¦  «         d S r   )Ú
isinstanceÚnpÚndarrayÚtolistÚlistÚmapÚsortr   )ÚaÚbÚtpls      r   Ú!assert_unordered_tuple_list_equalr       sž   € Ý�!•R”ZÑ Ô ð Ø�HŠH‰JŒJˆÝ�!•R”ZÑ Ô ð Ø�HŠH‰JŒJˆÝ�S��a‰[Œ[ÑÔ€AØ‡F‚F�H„H€HÝ�S��a‰[Œ[ÑÔ€AØ‡F‚F�H„H€HÝ��AÑÔÐÐÐr   éÒ  )©r   r   ©r   é   ©r$   r   ©r$   r$   ©ç      à?r(   )r(   g      ø?g…ëQ¸	Àgáz®GáÀg…ëQ¸ù¿gHáz®Gé¿ç        gHáz®Gé?g…ëQ¸ù?gáz®Gá@g…ëQ¸	@éÿÿÿÿr$   é
   é   ç      Ð?é   é   é   é   é   é   é   )
úsome-pointsz	random-2dz	random-3dz	random-4dz	random-5dz	random-6dz	random-7dz	random-8dúpathological-1úpathological-2)zbug-2850z
bug-2850-2c                 ó>  — t           |          }|j        d         }d}|dz   }| dk    rd}n| dk    rd}|d|…         g}t          |t          |¦  «        |¦  «        D ]"}|                     ||||z   …         ¦  «         Œ#| › d|› �}|t
          vsJ ‚||ft
          |<   dS )	z<
    Generate incremental datasets from basic data sets
    r$   Nr,   r5   zQJ Ppr6   é   z-chunk-)ÚDATASETSÚshapeÚrangeÚlenÚappendÚINCREMENTAL_DATASETS)	ÚnameÚ	chunksizeÚpointsÚndimÚoptsÚnminÚchunksÚjÚnew_names	            r   Ú_add_inc_datarI   ]   sÕ   € õ �dŒ^€FØŒ<˜Œ?€Dà€DØ�!‰8€Dàˆ}ÒÐàˆˆØ	Ð!Ò	!Ð	!àˆà�U�d�UŒmˆ_€FÝ�4�˜V™œ iÑ0Ô0ð -ð -ˆØ�Š�f˜Q˜q ™{˜]Ô+Ñ,Ô,Ð,Ð,àÐ*Ð*˜yÐ*Ð*€HØÕ/Ð/Ð/Ð/Ð/Ø&,¨d ^Õ˜Ñ"Ð"Ð"r   )r$   r0   é   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú
Test_Qhullc                 ó   — t          j        dt          j        ddgddgddgddgddgg¦  «        d¦  «        }t	          j        |                     ¦   «         ¦  «        }t          j        dt          j        ddgddgddgddgg¦  «        d¦  «        }t	          j        |                     ¦   «         ¦  «        }t	          j        |                     ¦   «         ¦  «        }|                     ¦   «          t	          j        |                     ¦   «         ¦  «        }|                     ¦   «          t          t          |j        ¦  «         t          t          |j        ¦  «         t          |d         |d         ¦  «         t          |d         |d         t          ¬¦  «         t          |d	         |d	         t          ¬¦  «         t          |d
         |d
         t          ¬¦  «         t          |d         |d         ¦  «         t          |d         |d         ¦  «         t          |d         |d         t          ¬¦  «         t          |d	         |d	         t          ¬¦  «         t          |d
         |d
         t          ¬¦  «         t          |d         |d         ¦  «         |                     ¦   «          t          t          |j        ¦  «         |                     ¦   «          t          t          |j        ¦  «         d S )Nó   vr   r$   ç      ð?r(   s   Qzç       @©r   r,   r/   r0   )ÚqhullÚ_Qhullr   ÚarrayÚcopyÚdeepcopyÚget_voronoi_diagramÚcloseÚassert_raisesÚRuntimeErrorr   r    r   r   )Úselfr   ÚxdÚyÚydÚxd2Úyd2s          r   Útest_swappingzTest_Qhull.test_swapping}   s†  € õ ŒL˜Ýœ A a 5¨!¨A¨°°!¨u°a¸°V¸SÀ¸IÐ"FÑGÔGØñ ô  ˆõ Œ]˜1×0Ò0Ñ2Ô2Ñ3Ô3ˆåŒL˜Ýœ A a 5¨!¨A¨°°!¨u°a¸°VÐ"<Ñ=Ô=Øñ ô  ˆõ Œ]˜1×0Ò0Ñ2Ô2Ñ3Ô3ˆåŒm˜A×1Ò1Ñ3Ô3Ñ4Ô4ˆØ	�Š‰	Œ	ˆ	ÝŒm˜A×1Ò1Ñ3Ô3Ñ4Ô4ˆØ	�Š‰	Œ	ˆ	å•l AÔ$9Ñ:Ô:Ð:Ý•l AÔ$9Ñ:Ô:Ð:å˜˜1œ˜s 1œvÑ&Ô&Ð&Ý)¨"¨Q¬%°°Q´½\ÐJÑJÔJÐJÝ)¨"¨Q¬%°°Q´½\ÐJÑJÔJÐJÝ)¨"¨Q¬%°°Q´½\ÐJÑJÔJÐJÝ˜2˜aœ5 # a¤&Ñ)Ô)Ð)å˜˜1œ˜s 1œvÑ&Ô&Ð&Ý)¨"¨Q¬%°°Q´½\ÐJÑJÔJÐJÝ)¨"¨Q¬%°°Q´½\ÐJÑJÔJÐJÝ)¨"¨Q¬%°°Q´½\ÐJÑJÔJÐJÝ˜2˜aœ5 # a¤&Ñ)Ô)Ð)à	�Š‰	Œ	ˆ	Ý•l AÔ$9Ñ:Ô:Ð:Ø	�Š‰	Œ	ˆ	Ý•l AÔ$9Ñ:Ô:Ð:Ð:Ð:r   c                 ó‚   — t          j        ddgddgddgddgddgddgddgddgddgg	¦  «        }t          |¦  «         d S )Nr   r$   r,   )r   rT   r
   )r[   rB   s     r   Útest_issue_8051zTest_Qhull.test_issue_8051£   s_   € Ý”Ø�ˆV�a˜�V˜a ˜V a¨ V¨a°¨V°a¸°V¸QÀ¸FÀQÈÀFÈQÐPQÈFÐSñ
ô 
ˆõ 	�‰Œˆˆˆr   N)Ú__name__Ú
__module__Ú__qualname__ra   rc   © r   r   rL   rL   |   s3   € € € € € ð$;ð $;ð $;ðLð ð ð ð r   rL   c                   óô   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z		 	 	 dd„Z
ej                             d¦  «        d„ ¦   «         Zej        j        ej                             d¦  «        d„ ¦   «         ¦   «         ZdS )ÚTestUtilitiesz-
    Check that utility functions work.

    c                 óx  — t          j        g d¢t           j        ¬¦  «        }t          j        |¦  «        }t          |j        g d¢g d¢g¦  «         dD ]e}|                     |d d…         ¦  «        }t          ||d         |›¬¦  «         t          j        ||d d…         ¦  «        }t          ||¦  «         Œfd S )N©r"   r#   r&   r%   ©Údtype©r$   r/   r,   ©r/   r$   r   ))r-   r-   r$   )ç      è?rp   r   )ç333333Ó?çš™™™™™É?r$   r,   ©Úerr_msg)	r   rT   Úfloat64rR   ÚDelaunayr   Ú	simplicesÚfind_simplexÚtsearch)r[   rB   ÚtriÚpÚirG   s         r   Útest_find_simplexzTestUtilities.test_find_simplex°   sÎ   € å”Ð6Ð6Ð6½b¼jÐIÑIÔIˆÝŒn˜VÑ$Ô$ˆõ 	�S”] Y Y Y°	°	°	Ð$:Ñ;Ô;Ð;ð!ð 	ð 	ˆAð × Ò   2 A 2¤Ñ'Ô'ˆAÝ˜˜A˜aœD¨Q¨(Ð3Ñ3Ô3Ð3Ý”˜c 1 R a R¤5Ñ)Ô)ˆAÝ˜˜AÑÔÐÐð	ð 	r   c                 óÞ  — t          j        g d¢t           j        ¬¦  «        }t          j        ddgt           j        ¬¦  «        }t          j        |¦  «        }|                     |¦  «        }|                     |¦  «        }|                     |¦  «        }t          |j        ¦  «        D ]À\  }}||d                  }	||d                  }
||d                  }t          j	        |	|z
  |
|z
  ¦  «        }|t          j
        t          j        ||¦  «        ¦  «        z  }|t          j        |d         ¦  «         z  }t          j        |||z
  ¦  «        }t          ||         |¦  «         ŒÁd S )N)r"   r&   r%   )g]2Ê�½ï?g>mj‡Ø?)g~T›!Òï?g^RÎz¥êÜ?rl   gä†›Býï?gÒÝÄ?r   r$   r,   )r   rT   ru   rR   rv   Úlift_pointsÚplane_distanceÚ	enumeraterw   ÚcrossÚsqrtÚdotÚsignr   )r[   r   r{   rz   ÚzÚpzÚdistrG   ÚvÚx1Úx2Úx3ÚnÚds                 r   Útest_plane_distancez!TestUtilities.test_plane_distanceÅ   sY  € õ ŒHð 0ð 0ð 0Ý79´zðCñ Cô CˆåŒH�j *Ð-µR´ZÐ@Ñ@Ô@ˆåŒn˜QÑÔˆà�OŠO˜AÑÔˆØ�_Š_˜QÑÔˆà×!Ò! !Ñ$Ô$ˆå˜cœmÑ,Ô,ð 	,ð 	,‰DˆAˆqØ�1�Q”4”ˆBØ�1�Q”4”ˆBØ�1�Q”4”ˆBå”˜˜b™ " r¡'Ñ*Ô*ˆAØ•”�œ  1™œÑ&Ô&Ñ&ˆAØ•"”'˜!˜Aœ$‘-”-�ÑˆAå”�q˜"˜r™'Ñ"Ô"ˆAå  Q¤¨Ñ+Ô+Ð+Ð+ð	,ð 	,r   c                 ó´   — t          j        g d¢t           j        ¬¦  «        }t          j        |¦  «        }t          |j        ddgddgddgddgg¦  «         d S )Nrk   rl   r/   r,   r$   r   )r   rT   ru   rR   rv   r   Úconvex_hull©r[   rB   rz   s      r   Útest_convex_hullzTestUtilities.test_convex_hullà   sa   € å”Ð6Ð6Ð6½b¼jÐIÑIÔIˆÝŒn˜VÑ$Ô$ˆõ 	�S”_¨¨1 v°°1¨v¸¸1°vÀÀ1¸vÐ&FÑGÔGÐGÐGÐGr   c                 óº   — t          j        g d¢¦  «        }t          j        |¦  «        }t	          |j        dd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$   rO   ç›+¡†›„=zVolume of cube is incorrect©Úrtolrt   ç      @zArea of cube is incorrect©r   rT   rR   Ú
ConvexHullr   ÚvolumeÚarea©r[   rB   Úhulls      r   Útest_volume_areazTestUtilities.test_volume_areaí   s…   € å”ð Gð Gð Gñ Hô HˆåÔ Ñ'Ô'ˆå˜œ R¨eØ =ð	?ñ 	?ô 	?ð 	?å˜œ	 2¨EØ ;ð	=ñ 	=ô 	=ð 	=ð 	=ð 	=r   c                 óº   — t          j        g d¢¦  «        }t          j        |¦  «        }t	          |j        ddd¬¦  «         t	          |j        ddd¬¦  «         d S )N)
)g¿„ñQ4×?gŽÎœRë@Þ?gX&ÜlL5Ö?)gfÙÇN»zç?gjýž©Mä?g{Dí�šjî?)ga?8å\à?g®µ‚–ì?g�w5­KÁÚ?)g,lnq›³?g6½„î=àà?gŒ UáÔä?)gwì»�æÆÂ?g�ã°`ã?gaè‚³¢ì?)gâ+´qà?g\h½¿Ï±?gLƒg¼ýà?)g¾GéÕeà?gEˆ9²;å?gd:ëL£?)gÈŠK×BÞ?gB²Y’M”Ý?g�ßñÈÿÁ?)g~EHàyËÎ?gUƒdkÈêè?gmÖVq"ç?)gæÉÌqÑpî?g•¹e«ñî?g\û*L€ì?gY þ/®£Â?çH¯¼šò×z>z(Volume of random polyhedron is incorrectr—   g\¬¨Á4¬ú?z&Area of random polyhedron is incorrectrš   rž   s      r   Útest_random_volume_areaz%TestUtilities.test_random_volume_areaø   s“   € õ ”ð 	Mð 	Mð 	Mñ 	Nô 	Nˆõ Ô Ñ'Ô'ˆÝ˜œ Z°eØ Jð	Lñ 	Lô 	Lð 	Lå˜œ	 9°5Ø Hð	Jñ 	Jô 	Jð 	Jð 	Jð 	Jr   c                 óÊ  — d}d}t           j                             ||f¦  «        }t          j        |d|dz   …dd…f         d¬¦  «        }t          j        |d|dz   …dd…f         d¬¦  «        }t	          |dz   |¦  «        D ]ß}t          j        |d|dz   …dd…f         ¦  «        }|                     |||dz   …dd…f         ¦  «         |                     |||dz   …dd…f         d¬¦  «         t          |j        |j        d¬	¦  «         t          |j        |j        d¬	¦  «         t          |j        |j        d¬	¦  «         t          |j        |j        d¬	¦  «         ŒàdS )
zwTest that incremental mode gives the same volume/area as
        non-incremental mode and incremental mode with restarté   r/   Nr$   T©Úincremental©Úrestartr¢   ©r˜   )	r   ÚrandomrR   r›   r<   Ú
add_pointsr   rœ   r�   )r[   Ú	nr_pointsÚdimrB   Úinc_hullÚinc_restart_hullr|   rŸ   s           r   Ú)test_incremental_volume_area_random_inputz7TestUtilities.test_incremental_volume_area_random_input  sŽ  € ð ˆ	ØˆÝ”×!Ò! 9¨cÐ"2Ñ3Ô3ˆÝÔ# F¨6¨C°©E¨6°1°1°1¨9Ô$5À4ÐHÑHÔHˆÝ Ô+¨F°6°C¸±E°6¸1¸1¸1°9Ô,=È4ÐPÑPÔPÐÝ�s˜1‘u˜iÑ(Ô(ð 	Ið 	IˆAÝÔ# F¨4¨A¨a©C¨4°°°¨7¤OÑ4Ô4ˆDØ×Ò  q¨¨1© u¨a¨a¨a xÔ 0Ñ1Ô1Ð1Ø×'Ò'¨¨q°°1±¨u°a°a°a¨xÔ(8À$Ð'ÑGÔGÐGÝ˜DœK¨¬¸tÐDÑDÔDÐDÝ˜DœKÐ)9Ô)@ÀtÐLÑLÔLÐLÝ˜DœI x¤}¸4Ð@Ñ@Ô@Ð@Ý˜DœIÐ'7Ô'<À4ÐHÑHÔHÐHÐHð	Ið 	Ir   Ú Fr   c                 óâ  ‡— |j         |j                 }d|j        dz   z  }|                     d¬¦  «        |z  }d„ }t	          j        t          ¦  «        j        }	 ||j        |¦  «        }
t	          j	        d¬¦  «        5  t	          j
        |
¦  «                             d¬¦  «        t          |
|z
  ¦  «        |z  dk                          d¬¦  «        z  }ddd¦  «         n# 1 swxY w Y   t          |                     ¦   «         |› d	t	          j        | ¦  «        › �¦  «         |dd…dd
…dd…f         |dd…d
ddd…f         z
  Št	          j        ˆfd„t!          |j        ¦  «        D ¦   «         ¦  «        }t	          j        |j        dd…ddf         ¦  «        |t	          j        |	¦  «        k     z  }t          |                     ¦   «         |› d	t	          j        | ¦  «        › �¦  «         |                     |¦  «        }|d
k    t	          j
        |j        dd…ddf         ¦  «        z  }t          |                     ¦   «         |› d	t	          j        | ¦  «        › �¦  «         |r||k                         d¬¦  «        }||d|z
  k                         d¬¦  «        z  }|d
k    |z  }t          |                     ¦   «         |› d	t	          j        | ¦  «        › �¦  «         dS dS )z@Check that a triangulation has reasonable barycentric transformsr$   rO   ©Úaxisc                 ót   — | d d …dd d …f         }| d d …d d…d d …f         }t          j        d|||z
  ¦  «        S )Nr*   z
ijk,ik->ij)r   Úeinsum)Útrr   ÚrÚTinvs       r   Úbarycentric_transformzJTestUtilities._check_barycentric_transforms.<locals>.barycentric_transform(  sL   € Ø�1�1�1�R˜˜˜�6”
ˆAØ�a�a�a˜˜˜˜A˜A˜A�g”;ˆDÝ”9˜\¨4°°Q±Ñ7Ô7Ð7r   Úignore)Úinvalidgš™™™™™¹?Nú r*   c           	      óh   •— g | ].}t           j                             ‰|d d …d d …f         ¦  «        ‘Œ/S r   )r   ÚlinalgÚdet)Ú.0ÚkÚqs     €r   ú
<listcomp>z?TestUtilities._check_barycentric_transforms.<locals>.<listcomp>7  sI   ø€ ð 9ð 9ð 9Ø õ œ9Ÿ=š=¨¨1¨Q¨Q¨Q¨q¨q¨q¨5¬Ñ2Ô2ð 9ð 9ð 9r   r   )rB   rw   rC   Úsumr   ÚfinfoÚfloatÚepsÚ	transformÚerrstateÚisnanÚallÚabsr   ÚnonzerorT   r<   ÚnsimplexÚisfiniterƒ   rx   Úany)r[   rz   rt   Ú	unit_cubeÚunit_cube_tolÚverticesÚscÚ	centroidsr»   rÉ   ÚcÚokrœ   rG   Úat_boundaryrÄ   s                  @r   Ú_check_barycentric_transformsz+TestUtilities._check_barycentric_transforms  s>  ø€ ð ”:˜cœmÔ,ˆØ�”˜3‘ÑˆØ—L’L a�LÑ(Ô(¨2Ñ-ˆ	ð
	8ð 	8ð 	8õ
 Œh•u‰oŒoÔ!ˆà!Ð! #¤-°Ñ;Ô;ˆÝŒ[ Ð*Ñ*Ô*ð 	Nð 	NÝ”˜!‘”—’ a�Ñ(Ô(­C°°B±©K¬K¸©N¸SÒ,@×+EÒ+EÈ1Ð+EÑ+MÔ+MÑMˆBð	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nõ 	�—’‘”˜WÐ8Ð8¥r¤z°2°#¡¤Ð8Ð8Ñ9Ô9Ð9ð �Q�Q�Q�s˜�s˜1˜1˜1�WÔ ¨¨¨¨2¨d°1°1°1¨Ô 5Ñ5ˆÝ”ð 9ð 9ð 9ð 9Ý$)¨#¬,Ñ$7Ô$7ð9ñ 9ô 9ñ :ô :ˆåŒ[˜œ q q q¨¨1 uÔ-Ñ.Ô.°&½2¼7À3¹<¼<Ò2GÑHˆÝ�—’‘”˜WÐ8Ð8¥r¤z°2°#¡¤Ð8Ð8Ñ9Ô9Ð9ð ×Ò˜YÑ'Ô'ˆØ�2Šg�œ #¤-°°°°!°A°Ô"6Ñ7Ô7Ñ7ˆÝ�—’‘”˜WÐ8Ð8¥r¤z°2°#¡¤Ð8Ð8Ñ9Ô9Ð9àð 	>à$¨Ò5×:Ò:ÀÐ:ÑBÔBˆKØ˜I¨¨]Ñ):Ò:×?Ò?ÀQÐ?ÑGÔGÑGˆKà�r’'˜[Ñ(ˆBÝ�B—F’F‘H”H Ð<Ð<­2¬:°r°c©?¬?Ð<Ð<Ñ=Ô=Ð=Ð=Ð=ð	>ð 	>s   ÂAC$Ã$C(Ã+C(r+   c                 óÎ  — t          j        t          j                             t          j                             t          ¦  «        dd¦  «        ¦  «        }|d         }|                     ¦   «          t          j	        |¦  «        }t          j
        |j        d d …ddf         ¦  «                             ¦   «         }t          |dk     |¦  «         |                      |¦  «         d S )NÚdatazdegenerate_pointset.npzrØ   r   é   )r   ÚloadÚosÚpathÚjoinÚdirnameÚ__file__rX   rR   rv   rÌ   rÊ   rÆ   r   rÛ   )r[   rÝ   rB   rz   Ú	bad_counts        r   Ú&test_degenerate_barycentric_transformsz4TestUtilities.test_degenerate_barycentric_transformsJ  sÁ   € õ Œw•r”w—|’|¥B¤G§O¢OµHÑ$=Ô$=¸vØ$=ñ?ô ?ñ @ô @ˆà�c”ˆØ�
Š
‰ŒˆåŒn˜VÑ$Ô$ˆõ ”H˜Sœ]¨1¨1¨1¨Q¨q¨5Ô1Ñ2Ô2×6Ò6Ñ8Ô8ˆ	Ý�	˜B’ 	Ñ*Ô*Ð*ð 	×*Ò*¨3Ñ/Ô/Ð/Ð/Ð/r   r¥   c                 ó¼  — t          j        t          ¦  «        j        }dddddœ}t	          dd¦  «        D �]¤}t          j        dd	||         ¦  «        }t           j        t          t          t           j	        t          j
        t          j        |g|z  Ž Ž ¦  «        ¦  «                 j        }d
|› �}t          j        |¦  «        }|                      ||d¬¦  «         t           j                             d¦  «         t           j                             |j        d         ¦  «        dk     }||d d …fxx         d|z  t          j        j        ||d d …f         j        Ž dz
  z  z  cc<   t          j        |¦  «        }|                      ||dd|z  ¬¦  «         t          j        t           j        ||f         ¦  «        }|                      ||dd|z  ¬¦  «         �Œ¦d S )NéF   é   r1   r/   )r,   r/   r0   r1   r,   r2   r   r$   zndim=T)rt   rÓ   r!   rr   r(   )rt   rÓ   rÔ   )r   rÇ   rÈ   rÉ   r<   ÚlinspaceÚc_r   r   ÚravelÚbroadcast_arraysÚix_ÚTrR   rv   rÛ   r«   ÚseedÚrandr;   Úr_)	r[   rÉ   ÚnpointsrC   r   Úgridrt   rz   Úms	            r   Ú test_more_barycentric_transformsz.TestUtilities.test_more_barycentric_transforms\  så  € õ Œh•u‰oŒoÔ!ˆà˜R A¨!Ð,Ð,ˆå˜!˜Q‘K”Kð 	Dñ 	DˆDå”˜A˜q '¨$¤-Ñ0Ô0ˆAÝ”5Ý•S�œ¥2Ô#6½¼À!ÀÀTÁÐ8KÐ#LÑMÔMÑNÔNôäð ð %˜d�n�nˆGõ ”. Ñ&Ô&ˆCØ×.Ò.¨s¸GØ9=ð /ñ ?ô ?ð ?õ ŒI�NŠN˜4Ñ Ô Ð Ý”—’ ¤
¨1¤Ñ.Ô.°Ò4ˆAØ��1�1�1�ˆIˆIŒI˜˜3™¥¤	¤°°Q°q°q°q°S´	´Ð @À3Ñ FÑGÑGˆIˆI‰Iå”. Ñ&Ô&ˆCØ×.Ò.¨s¸GØ9=Ø=>¸s¹Uð /ñ Dô Dð Dõ
 ”.¥¤ t¨T zÔ!2Ñ3Ô3ˆCØ×.Ò.¨s¸GØ9=Ø=>¸s¹Uð /ñ Dô Dð Dñ Dð5	Dð 	Dr   N)r²   Fr   )rd   re   rf   Ú__doc__r}   r�   r“   r    r£   r±   rÛ   ÚpytestÚmarkÚ	fail_slowræ   Úslowrö   rg   r   r   ri   ri   ª   s  € € € € € ðð ð
ð ð ð*,ð ,ð ,ð6Hð Hð Hð	=ð 	=ð 	=ðJð Jð Jð(Ið Ið Ið" :<Ø05Ø45ð+>ð +>ð +>ð +>ðZ „[×Ò˜2ÑÔð0ð 0ñ Ôð0ð" „[ÔØ„[×Ò˜2ÑÔð#Dð #Dñ Ôñ Ôð#Dð #Dð #Dr   ri   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestVertexNeighborVerticesc                 ó`  ‡‡— d„ t          |j        j        d         ¦  «        D ¦   «         }|j        D ]-}|D ](}|D ]#}||k    r||                              |¦  «         Œ$Œ)Œ.|j        \  ŠŠˆˆfd„t          |j        j        d         ¦  «        D ¦   «         }t          |||›d|›�¬¦  «         d S )Nc                 ó*   — g | ]}t          ¦   «         ‘ŒS rg   )Úset)rÂ   rG   s     r   rÅ   z5TestVertexNeighborVertices._check.<locals>.<listcomp>‡  s   € Ð>Ð>Ð>˜a•C‘E”EÐ>Ð>Ð>r   r   c                 ó‚   •— g | ];}t          t          t          ‰‰|         ‰|d z            …         ¦  «        ¦  «        ‘Œ<S ©r$   )r   r   Úint)rÂ   rG   ÚindicesÚindptrs     €€r   rÅ   z5TestVertexNeighborVertices._check.<locals>.<listcomp>�  sQ   ø€ ð 4ð 4ð 4Øõ •3•s˜G F¨1¤I¨f°Q°q±S¬kÐ$9Ô:Ñ;Ô;Ñ<Ô<ð 4ð 4ð 4r   z != rs   )r<   rB   r;   rw   ÚaddÚvertex_neighbor_verticesr   )	r[   rz   ÚexpectedÚsr   r   Úgotr  r  s	          @@r   Ú_checkz!TestVertexNeighborVertices._check†  sú   øø€ Ø>Ð>¥5¨¬Ô)9¸!Ô)<Ñ#=Ô#=Ð>Ñ>Ô>ˆØ”ð 	+ð 	+ˆAØð +ð +�Øð +ð +�AØ˜A’v�vØ  œŸš¨Ñ*Ô*Ð*øð+ð+ð
 Ô6‰ˆ�ð4ð 4ð 4ð 4ð 4Ý˜cœjÔ.¨qÔ1Ñ2Ô2ð4ñ 4ô 4ˆõ 	�S˜(¨sÐ,FÐ,F¸(Ð,FÐ,FÐGÑGÔGÐGÐGÐGr   c                 óœ   — t          j        g d¢t           j        ¬¦  «        }t          j        |¦  «        }|                      |¦  «         d S )N)r"   r#   r%   rl   ©r   rT   ru   rR   rv   r  r’   s      r   Útest_trianglez(TestVertexNeighborVertices.test_triangle•  sF   € Ý”Ð/Ð/Ð/µr´zÐBÑBÔBˆÝŒn˜VÑ$Ô$ˆØ�Š�CÑÔÐÐÐr   c                 óœ   — t          j        g d¢t           j        ¬¦  «        }t          j        |¦  «        }|                      |¦  «         d S )Nrk   rl   r  r’   s      r   Útest_rectanglez)TestVertexNeighborVertices.test_rectangleš  sF   € Ý”Ð6Ð6Ð6½b¼jÐIÑIÔIˆÝŒn˜VÑ$Ô$ˆØ�Š�CÑÔÐÐÐr   c                 óœ   — t          j        g d¢t           j        ¬¦  «        }t          j        |¦  «        }|                      |¦  «         d S )N)r"   r#   r&   r%   r'   )gÍÌÌÌÌÌì?r(   rl   r  r’   s      r   Útest_complicatedz+TestVertexNeighborVertices.test_complicatedŸ  sV   € Ý”ð 3ð 3ð 3Ý:<¼*ðFñ Fô FˆåŒn˜VÑ$Ô$ˆØ�Š�CÑÔÐÐÐr   N)rd   re   rf   r  r  r  r  rg   r   r   rý   rý   …  sS   € € € € € ðHð Hð Hðð ð ð
ð ð ð
ð ð ð ð r   rý   c                   ó¢   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zej                             d ee¦  «        ¦  «        d„ ¦   «         ZdS )ÚTestDelaunayz*
    Check that triangulation works.

    c                 ó„   — t           j                             d¦  «        }t          t          t
          j        |¦  «         d S ©Nr$   )r   ÚmaÚ
masked_allrY   Ú
ValueErrorrR   rv   ©r[   Úmasked_arrays     r   Útest_masked_array_failsz$TestDelaunay.test_masked_array_fails«  s1   € Ý”u×'Ò'¨Ñ*Ô*ˆÝ•j¥%¤.°,Ñ?Ô?Ð?Ð?Ð?r   c                 ó¦   — t          j        ddddt           j        fgt           j        ¬¦  «        }t	          t
          t          j        |¦  «         d S )Nr"   r#   r&   r$   rl   )r   rT   Únanru   rY   r  rR   rv   ©r[   Úpoints_with_nans     r   Útest_array_with_nans_failsz'TestDelaunay.test_array_with_nans_fails²  sA   € Ýœ( E¨5°%¸!½B¼F¸Ð#DÍBÌJÐWÑWÔWˆÝ•j¥%¤.°/ÑBÔBÐBÐBÐBr   c           	      óî  — t          dd¦  «        D ]ã}t          j        |dz   |f¦  «        }t          |¦  «        D ]	}d|||f<   Œ
d|dd d …f<   t          j        |¦  «        }|j                             ¦   «          t          |j        t          j        |dz   t          ¬¦  «        d d d …f         ¦  «         t          |j
        dt          j        |dz   t          ¬¦  «        d d d …f         z   ¦  «         Œäd S )Nr,   r4   r$   rO   r*   rl   )r<   r   ÚzerosrR   rv   rw   r   r   Úaranger  Ú	neighbors)r[   ÚndrB   rG   rz   s        r   Útest_nd_simplexzTestDelaunay.test_nd_simplex¶  s  € å˜˜1‘+”+ð 	Rð 	RˆBÝ”X˜r !™t R˜jÑ)Ô)ˆFÝ˜2‘Y”Yð "ð "�Ø!��q˜�s‘�ØˆF�2�a�a�a�4‰Lå”. Ñ(Ô(ˆCàŒM×ÒÑ Ô Ð å˜œ­¬	°"°Q±$½cÐ(BÑ(BÔ(BÀ4ÈÈÈÀ7Ô(KÑLÔLÐLÝ˜œ¨­R¬X°r¸!±tÅCÐ-HÑ-HÔ-HÈÈaÈaÈaÈÔ-PÑ(PÑQÔQÐQÐQð	Rð 	Rr   c                 óÞ   — t          j        g d¢t           j        ¬¦  «        }t          j        |¦  «        }t          |j        g d¢g d¢g¦  «         t          |j        g d¢g d¢g¦  «         d S )Nrk   rl   rn   ro   )r*   r*   r$   )r*   r*   r   )r   rT   ru   rR   rv   r   rw   r%  r’   s      r   Útest_2d_squarezTestDelaunay.test_2d_squareÅ  sr   € å”Ð6Ð6Ð6½b¼jÐIÑIÔIˆÝŒn˜VÑ$Ô$ˆå�S”] Y Y Y°	°	°	Ð$:Ñ;Ô;Ð;Ý�S”] [ [ [°+°+°+Ð$>Ñ?Ô?Ð?Ð?Ð?r   c                 óv  — t          j        g d¢t           j        ¬¦  «        }t          j        g d¢t           j        ¬¦  «        }t           j        ||f         }t           j        ||f         }t	          j        t           j        ||f         ¦  «         t	          j        t           j        ||f         ¦  «         d S )N)r   r$   r   r$   rl   )r   r   r$   r$   )r   rT   ru   rò   rR   rv   rë   )r[   r   r]   ÚxpÚyps        r   Útest_duplicate_pointsz"TestDelaunay.test_duplicate_pointsÍ  s�   € ÝŒH�\�\�\­¬Ð4Ñ4Ô4ˆÝŒH�\�\�\­¬Ð4Ñ4Ô4ˆåŒU�1�a�4Œ[ˆÝŒU�1�a�4Œ[ˆõ 	Œ•r”u˜Q ˜T”{Ñ#Ô#Ð#ÝŒ•r”u˜R ˜V”}Ñ%Ô%Ð%Ð%Ð%r   c                 óª  — t           d         }t          j        |¦  «        }t          |j        |j                                      ¦   «         |                     ¦   «         ¦  «         t          |j        |j                                      ¦   «         |                     ¦   «         ¦  «         t           d         }t          j        |¦  «        }t          |j        |j                                      ¦   «         |                     ¦   «         ¦  «         t          |j        |j                                      ¦   «         |                     ¦   «         ¦  «         d S )Nr6   r7   )r:   rR   rv   r   rB   rw   ÚmaxÚminr’   s      r   Útest_pathologicalzTestDelaunay.test_pathologicalØ  sð   € åÐ*Ô+ˆÝŒn˜VÑ$Ô$ˆÝ�S”Z ¤Ô.×2Ò2Ñ4Ô4°f·j²j±l´lÑCÔCÐCÝ�S”Z ¤Ô.×2Ò2Ñ4Ô4°f·j²j±l´lÑCÔCÐCåÐ*Ô+ˆÝŒn˜VÑ$Ô$ˆÝ�S”Z ¤Ô.×2Ò2Ñ4Ô4°f·j²j±l´lÑCÔCÐCÝ�S”Z ¤Ô.×2Ò2Ñ4Ô4°f·j²j±l´lÑCÔCÐCÐCÐCr   c                 óJ  — t           j                             dd¦  «        }t           j        ||f         }t	          j        |d¬¦  «        }t          t          j        |j         	                    ¦   «         ¦  «        t          j
        t          |¦  «        ¦  «        ¦  «         d S )Nr+   r,   z	QJ Qbb Pp©Úqhull_options)r   r«   rñ   rò   rR   rv   r   Úuniquerw   rì   r$  r=   r’   s      r   Útest_jogglezTestDelaunay.test_joggleä  s†   € õ ”—’  AÑ&Ô&ˆÝ”�v˜v�~Ô&ˆåŒn˜V°;Ð?Ñ?Ô?ˆÝ�2œ9 S¤]×%8Ò%8Ñ%:Ô%:Ñ;Ô;Ýœ9¥S¨¡[¤[Ñ1Ô1ñ	3ô 	3ð 	3ð 	3ð 	3r   c           	      ó¨  — t           j                             dd¦  «        }t           j        ||f         }t	          j        |¦  «        }t          t          t          j        |j	         
                    ¦   «         ¦  «        ¦  «        t          |¦  «        dz  k    ¦  «         t          t          |j        ¦  «        t          |¦  «        dz  k    ¦  «         t          t          t          j        |j        d d …df         ¦  «        ¦  «        t          |¦  «        dz  k    ¦  «         t          t          j        |j        dk    ¦  «        ¦  «         d S )Nr+   r,   r   )r   r«   rñ   rò   rR   rv   r   r=   r5  rw   rì   ÚcoplanarrÍ   Úvertex_to_simplexr’   s      r   Útest_coplanarzTestDelaunay.test_coplanarï  sþ   € å”—’  AÑ&Ô&ˆÝ”�v˜v�~Ô&ˆåŒn˜VÑ$Ô$ˆå••B”I˜cœm×1Ò1Ñ3Ô3Ñ4Ô4Ñ5Ô5½¸V¹¼Àa¹ÒGÑHÔHÐHÝ•�C”LÑ!Ô!¥S¨¡[¤[°!¡^Ò3Ñ4Ô4Ð4å••B”I˜cœl¨1¨1¨1¨Q¨3Ô/Ñ0Ô0Ñ1Ô1µS¸±[´[À!±^ÒCÑDÔDÐDå•”�sÔ,°Ò1Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3r   c                 ó�   — g d¢}t          j        |d¬¦  «        }t          j        ddg¦  «        }t	          |j        |¦  «         d S )N©r"   r#   r%   r'   )çš™™™™™ñ?r=  T©Úfurthest_site)r$   r0   r   )r0   r,   r   )rR   rv   r   rT   r   rw   )r[   rB   rz   r  s       r   Útest_furthest_sitezTestDelaunay.test_furthest_siteý  sM   € ØAÐAÐAˆÝŒn˜V°4Ð8Ñ8Ô8ˆå”8˜Y¨	Ð2Ñ3Ô3ˆÝ˜3œ=¨(Ñ3Ô3Ð3Ð3Ð3r   r@   c                 óÆ  — t           |         \  }}t          j        |d¬¦  «        }t          j        |d         d|¬¦  «        }|dd …         D ]}|                     |¦  «         Œt          j        |¦  «        }t          j        |d         d|¬¦  «        }t          |¦  «        dk    r3|                     t          j        |dd …         d¬¦  «        d¬¦  «         |                     d¦  «        r­t          t          j	        |j
                             ¦   «         ¦  «        t          j        |j        d         ¦  «        ¦  «         t          t          j	        |j
                             ¦   «         ¦  «        t          j        |j        d         ¦  «        ¦  «         n!t          |j
        |j
        t          ¬¦  «         t          |j
        |j
        t          ¬¦  «         d S )	Nr   r´   T©r§   r4  r$   r¨   ÚpathologicalrQ   )r?   r   ÚconcatenaterR   rv   r¬   r=   Ú
startswithr   r5  rw   rì   r$  r;   r    r   )	r[   r@   rF   rD   rB   ÚobjÚchunkÚobj2Úobj3s	            r   Útest_incrementalzTestDelaunay.test_incremental  sÛ  € õ ,¨DÔ1‰ˆ�Ý” ¨QÐ/Ñ/Ô/ˆåŒn˜V AœY°DØ+/ð1ñ 1ô 1ˆà˜A˜B˜B”Zð 	"ð 	"ˆEØ�NŠN˜5Ñ!Ô!Ð!Ð!åŒ~˜fÑ%Ô%ˆåŒ~˜f Qœi°TØ,0ð2ñ 2ô 2ˆåˆv‰;Œ;˜Š?ˆ?Ø�OŠO�BœN¨6°!°"°"¬:¸AÐ>Ñ>Ô>Ø$(ð ñ *ô *ð *ð �?Š?˜>Ñ*Ô*ð 
	@õ �rœy¨¬×)<Ò)<Ñ)>Ô)>Ñ?Ô?Ý!œy¨¬°a¬Ñ9Ô9ñ;ô ;ð ;å�rœy¨¬×)=Ò)=Ñ)?Ô)?Ñ@Ô@Ý!œy¨¬°a¬Ñ9Ô9ñ;ô ;ð ;ð ;õ .¨c¬m¸T¼^Ý2>ð@ñ @ô @ð @õ 	*¨$¬.¸$¼.Ý.:ð	<ñ 	<ô 	<ð 	<ð 	<ð 	<r   N)rd   re   rf   r÷   r  r!  r'  r)  r-  r1  r6  r:  r@  rø   rù   Úparametrizer   r?   rJ  rg   r   r   r  r  ¦  sî   € € € € € ðð ð@ð @ð @ðCð Cð CðRð Rð Rð@ð @ð @ð	&ð 	&ð 	&ð
Dð 
Dð 
Dð	3ð 	3ð 	3ð4ð 4ð 4ð4ð 4ð 4ð „[×Ò˜V V VÐ,@Ñ%AÔ%AÑBÔBð!<ð !<ñ CÔBð!<ð !<ð !<r   r  c                 ól  — t          t          t          |¦  «        ¦  «        }t          t          t          |¦  «        ¦  «        }||k    �rØ| j        d         dk    �rÆdt	          j        t          ¦  «        j        z  }|D �]Ÿ\  }}|D �]†\  }}| |         | |         z
  }|t          j         	                    |¦  «        z  }t	          j
        |d          |d         g¦  «        }	t	          j        |	| |         | |         z
  ¦  «        }
t	          j        |	| |         | |         z
  ¦  «        }t	          j        t	          j        |
|	¦  «        d¦  «        sŒÍt	          j        t	          j        ||	¦  «        d¦  «        sŒöt	          j        || |         | |         z
  ¦  «        }
t	          j        || |         | |         z
  ¦  «        }t	          j        || |         | |         z
  ¦  «        }|
| k     s	|
||z   k    r�Œt|| k     s	|||z   k    r�Œ† nt          d¦  «        ‚�Œ¡d S t          ||¦  «         d S )Nr$   r,   iè  r   zcomparison fails)r   r   r   r;   r   rÇ   rÈ   rÉ   rÀ   ÚnormrT   r„   ÚallcloseÚAssertionErrorr   )rB   Úfacets_1Úfacets_2rÉ   r   r   ÚapÚbpÚtr�   Úc1Úc2Úc3s                r   Úassert_hulls_equalrX  )  s  € õ •3•| XÑ.Ô.Ñ/Ô/€HÝ•3•| XÑ.Ô.Ñ/Ô/€Hà�8ÒÑ ¤¨Q¤°1Ò 4Ñ 4ð •R”X�e‘_”_Ô(Ñ(ˆàð 	9ñ 	9‰DˆAˆqØ"ð 9ñ 9‘��BØ˜2”J ¨¤Ñ+�Ø•R”Y—^’^ AÑ&Ô&Ñ&�Ý”H˜q œt˜e Q q¤T˜]Ñ+Ô+�õ ”V˜A˜v aœy¨6°"¬:Ñ5Ñ6Ô6�Ý”V˜A˜v aœy¨6°"¬:Ñ5Ñ6Ô6�Ý”{¥2¤6¨"¨a¡=¤=°!Ñ4Ô4ð ØÝ”{¥2¤6¨"¨a¡=¤=°!Ñ4Ô4ð Øõ ”V˜A˜v aœy¨6°"¬:Ñ5Ñ6Ô6�Ý”V˜A˜v aœy¨6°"¬:Ñ5Ñ6Ô6�Ý”V˜A˜v bœz¨F°2¬JÑ6Ñ7Ô7�Ø˜˜’9�9  R¨#¡X¢ ÙØ˜˜’9�9  R¨#¡X¢ Ùð �å$Ð%7Ñ8Ô8Ð8ñ ð
 	ˆå�˜8Ñ$Ô$Ð$Ð$Ð$r   c                   ó  — e Zd Zd„ Zd„ Zej                             d ee	¦  «        ¦  «        d„ ¦   «         Z
ej                             d ee¦  «        ¦  «        d„ ¦   «         Zd„ Zd„ Zej                             dd	d
g¦  «        d„ ¦   «         Zej                             dddg¦  «        ej                             d ej        ddgg¦  «         ej        g d¢e¬¦  «        f ej        ddgg¦  «         ej        g d¢e¬¦  «        f ej        ddgg¦  «         ej        g d¢e¬¦  «        f ej        ddgddgg¦  «         ej        g d¢e¬¦  «        f ej        ddgg¦  «         ej        g d¢e¬¦  «        fg¦  «        d„ ¦   «         ¦   «         Zej                             dd	d
g¦  «        d„ ¦   «         Zej                             dd	d
g¦  «        d„ ¦   «         Zej                             dd	d
g¦  «        d„ ¦   «         Zd S )!ÚTestConvexHullc                 ó„   — t           j                             d¦  «        }t          t          t
          j        |¦  «         d S r  )r   r  r  rY   r  rR   r›   r  s     r   r  z&TestConvexHull.test_masked_array_failsa  s2   € Ý”u×'Ò'¨Ñ*Ô*ˆÝ•j¥%Ô"2°LÑAÔAÐAÐAÐAr   c                 ó¤   — t          j        dddt           j        fgt           j        ¬¦  «        }t	          t
          t          j        |¦  «         d S )Nr"   r&   r,   rl   )r   rT   r  ru   rY   r  rR   r›   r  s     r   r!  z)TestConvexHull.test_array_with_nans_failse  s@   € Ýœ( E¨5°1µR´V°*Ð#=ÅRÄZÐPÑPÔPˆÝ•j¥%Ô"2°OÑDÔDÐDÐDÐDr   r@   c                 ó   — t           |         }t          j        |¦  «        }t          j        |¦  «        }t	          ||j        |j        ¦  «         |j        d         dk    r@t          t          j
        |j        ¦  «        t          j        |j        ¦  «        ¦  «         d S t          t          j
        |j        ¦  «        |j        ¦  «         d S )Nr$   r,   )r:   rR   rv   r›   rX  r‘   rw   r;   r   r   r5  r   rÕ   )r[   r@   rB   rz   rŸ   s        r   Útest_hull_consistency_triz(TestConvexHull.test_hull_consistency_trii  s§   € õ ˜$”ˆåŒn˜VÑ$Ô$ˆÝÔ Ñ'Ô'ˆå˜6 3¤?°D´NÑCÔCÐCð Œ<˜Œ?˜aÒÐÝ�œ 4¤>Ñ2Ô2µB´G¸D¼MÑ4JÔ4JÑKÔKÐKÐKÐKå�œ 4¤>Ñ2Ô2°D´MÑBÔBÐBÐBÐBr   c                 ó&  — t           |         \  }}t          j        |d¬¦  «        }t          j        |d         d¬¦  «        }|dd …         D ]}|                     |¦  «         Œt          j        |¦  «        }t          j        |d         d¬¦  «        }t          |¦  «        dk    r3|                     t          j        |dd …         d¬¦  «        d¬¦  «         t          ||j        |j        ¦  «         t          ||j        |j        ¦  «         d S )Nr   r´   Tr¦   r$   r¨   )	r?   r   rD  rR   r›   r¬   r=   rX  rw   )	r[   r@   rF   Ú_rB   rF  rG  rH  rI  s	            r   rJ  zTestConvexHull.test_incrementalz  s  € õ )¨Ô.‰	ˆ�Ý” ¨QÐ/Ñ/Ô/ˆåÔ˜v aœy°dÐ;Ñ;Ô;ˆØ˜A˜B˜B”Zð 	"ð 	"ˆEØ�NŠN˜5Ñ!Ô!Ð!Ð!åÔ Ñ'Ô'ˆåÔ  q¤	°tÐ<Ñ<Ô<ˆÝˆv‰;Œ;˜Š?ˆ?Ø�OŠO�BœN¨6°!°"°"¬:¸AÐ>Ñ>Ô>Ø$(ð ñ *ô *ð *õ 	˜6 3¤=°$´.ÑAÔAÐAÝ˜6 3¤=°$´.ÑAÔAÐAÐAÐAr   c           	      ól  — t           j                             d¦  «         t           j                             dd¦  «        }t	          j        |¦  «        }t          t          j        |j        ¦  «        t          j	        |j
        ¦  «        ¦  «         |j        |j
                 j        \  }}t          j        ||                     ¦   «         z
  ||                     ¦   «         z
  ¦  «        }t          t          j        t          j        t          j        |¦  «        ¦  «        dk    ¦  «        ¦  «         d S )Nr!   r.   r,   r   )r   r«   rð   rñ   rR   r›   r   r5  rw   r   rÕ   rB   rï   Úarctan2Úmeanr   rÍ   ÚdiffÚunwrap)r[   rB   rŸ   r   r]   Úangles         r   Útest_vertices_2dzTestConvexHull.test_vertices_2d�  sÚ   € å
Œ	�Š�tÑÔÐÝ”—’  AÑ&Ô&ˆåÔ Ñ'Ô'ˆÝ•R”Y˜tœ~Ñ.Ô.µ´¸¼Ñ0FÔ0FÑGÔGÐGð Œ{˜4œ=Ô)Ô+‰ˆˆ1Ý”
˜1˜qŸvšv™xœx™<¨¨Q¯VªV©X¬X©Ñ6Ô6ˆÝ•”•r”w�rœy¨Ñ/Ô/Ñ0Ô0°1Ò4Ñ5Ô5Ñ6Ô6Ð6Ð6Ð6r   c                 ó¶   — t          j        g d¢¦  «        }t          j        |¦  «        }t	          |j        dd¬¦  «         t	          |j        dd¬¦  «         d S )Nr•   rO   r–   rª   r™   rš   r’   s      r   r    zTestConvexHull.test_volume_areaœ  sk   € å”ð Gð Gð Gñ Hô HˆåÔ˜vÑ&Ô&ˆå˜œ
 B¨UÐ3Ñ3Ô3Ð3Ý˜œ "¨5Ð1Ñ1Ô1Ð1Ð1Ð1r   r§   FTc                 óâ   — t          j        ddgddgddgddgddgg¦  «        }t          j        ||d¬¦  «        }t          j        g d¢t          ¬¦  «        }|j        }t          ||¦  «         d S )	Nrr   çš™™™™™Ù?rq   ç333333ã?ÚQG4©rB   r§   r4  )FTFFrl   ©r   rT   rR   r›   ÚboolÚgoodr   ©r[   r§   rB   rŸ   r  Úactuals         r   Útest_good2dzTestConvexHull.test_good2d¥  s—   € õ ”˜C ˜:Ø ˜:Ø ˜:Ø ˜:Ø ˜:ð	'ñ (ô (ˆõ
 Ô vØ,7Ø.3ð5ñ 5ô 5ˆõ ”8Ð7Ð7Ð7½tÐDÑDÔDˆØ”ˆÝ�V˜XÑ&Ô&Ð&Ð&Ð&r   Ú
visibilityrl  zQG-4znew_gen, expectedrq   gffffffæ?)FFFFFrl   gffffffæ¿)FTFFFg=
×£p=Ú?)FFFTTr(   rk  )FFTFFg433333ã?c                 ó  — t          j        ddgddgddgddgddgg¦  «        }t          j        |d|¬¦  «        }|                     |¦  «         |j        }d|v rt          j        |¦  «        }t          ||¦  «         d S )Nrr   rj  rq   rk  Trm  ú-)r   rT   rR   r›   r¬   rp  Úinvertr   )r[   Únew_genr  rt  rB   rŸ   rr  s          r   Útest_good2d_incremental_changesz.TestConvexHull.test_good2d_incremental_changes´  s©   € õN ”˜C ˜:Ø ˜:Ø ˜:Ø ˜:Ø ˜:ð	'ñ (ô (ˆõ
 Ô vØ,0Ø.8ð:ñ :ô :ˆð 	�Š˜Ñ Ô Ð Ø”ˆØ�*ÐÐÝ”y Ñ*Ô*ˆHÝ�V˜XÑ&Ô&Ð&Ð&Ð&r   c                 óú   — t          j        ddgddgddgddgddgg¦  «        }t          j        ||¬¦  «        }|j        }|�J ‚|r2|                     t          j        d¦  «        ¦  «         |j        }|�J ‚d S d S )Nrr   rj  rq   rk  )rB   r§   ©r$   r,   )r   rT   rR   r›   rp  r¬   r#  )r[   r§   rB   rŸ   rr  s        r   Útest_good2d_no_optionz$TestConvexHull.test_good2d_no_optioné  s¯   € õ ”˜C ˜:Ø ˜:Ø ˜:Ø ˜:Ø ˜:ð	'ñ (ô (ˆõ
 Ô vØ,7ð9ñ 9ô 9ˆà”ˆØˆ~ˆ~ˆ~àð 	"Ø�OŠO�BœH VÑ,Ô,Ñ-Ô-Ð-Ø”YˆFØ�>�>�>ð	"ð 	"ð "�>r   c                 óâ   — t          j        ddgddgddgddgddgg¦  «        }t          j        ||d¬¦  «        }t          j        g d¢t          ¬¦  «        }|j        }t          ||¦  «         d S )Nrr   rj  rq   rl  rm  )FFFFrl   rn  rq  s         r   Útest_good2d_insidez!TestConvexHull.test_good2d_insideü  s—   € õ
 ”˜C ˜:Ø ˜:Ø ˜:Ø ˜:Ø ˜:ð	'ñ (ô (ˆõ
 Ô vØ,7Ø.3ð5ñ 5ô 5ˆõ ”8Ð8Ð8Ð8ÅÐEÑEÔEˆØ”ˆÝ�V˜XÑ&Ô&Ð&Ð&Ð&r   c                 óÞ   — t          j        g d¢g d¢g d¢g d¢g d¢g¦  «        }t          j        ||d¬¦  «        }t          j        g d¢t          ¬	¦  «        }t          |j        |¦  «         d S )
N©r)   r)   r)   )gŠNžË7Ïì?g+ï²xÙ¿g¸gÈ>é@È?)gFE÷%'ß?gW¯¦Û§=ç¿g¤úÎ/Jß?)g›˜ä6Ðrâ?gtÄ­Ä4úé¿g¤¾��Å·¿)g¶w6y¶å?g’«QÂæ¿gÿ€b¿‚�Ç?ÚQG0rm  )TFFFrl   )r   rT   rR   r›   ro  r   rp  )r[   r§   rB   rŸ   r  s        r   Útest_good3dzTestConvexHull.test_good3d  s�   € õ ”˜?˜?˜?Ø@Ð@Ð@Ø@Ð@Ð@ØAÐAÐAØ@Ð@Ð@ð	Bñ Cô Cˆõ
 Ô vØ,7Ø.3ð5ñ 5ô 5ˆõ ”8Ð7Ð7Ð7½tÐDÑDÔDˆÝ�T”Y Ñ)Ô)Ð)Ð)Ð)r   N)rd   re   rf   r  r!  rø   rù   rK  r   r:   r^  r?   rJ  rg  r    rs  r   rT   ro  ry  r|  r~  r‚  rg   r   r   rZ  rZ  `  s  € € € € € ðBð Bð BðEð Eð Eð „[×Ò˜V V V¨HÑ%5Ô%5Ñ6Ô6ðCð Cñ 7Ô6ðCð  „[×Ò˜V V VÐ,@Ñ%AÔ%AÑBÔBðBð Bñ CÔBðBð(7ð 7ð 7ð2ð 2ð 2ð „[×Ò˜]¨U°D¨MÑ:Ô:ð'ð 'ñ ;Ô:ð'ð „[×Ò˜\Ø#Ø$ð, ñ !ô !ð „[×ÒÐ0ð 
ˆŒ�C˜�:�,Ñ	Ô	Ø	ˆŒÐ5Ð5Ð5¸TÐ	BÑ	BÔ	Bð	Dð
 
ˆŒ�C˜�;�-Ñ	 Ô	 Ø	ˆŒÐ4Ð4Ð4¸DÐ	AÑ	AÔ	Að	Cð
 
ˆŒ�C˜�;�-Ñ	 Ô	 Ø	ˆŒÐ3Ð3Ð3¸4Ð	@Ñ	@Ô	@ð	Bð 
ˆŒ�C˜�:  S˜zÐ*Ñ	+Ô	+Ø	ˆŒÐ4Ð4Ð4¸DÐ	AÑ	AÔ	Að	Cð 
ˆŒ�C˜Ð%Ð&Ñ	'Ô	'Ø	ˆŒÐ5Ð5Ð5¸TÐ	BÑ	BÔ	Bð	Dð93
ñ ô ð>'ð 'ñ?ô ñ	!ô !ðF'ð$ „[×Ò˜]¨U°D¨MÑ:Ô:ð"ð "ñ ;Ô:ð"ð$ „[×Ò˜]¨U°D¨MÑ:Ô:ð'ð 'ñ ;Ô:ð'ð  „[×Ò˜]¨U°D¨MÑ:Ô:ð*ð *ñ ;Ô:ð*ð *ð *r   rZ  c                   óø  — e Zd Zej                             dddg¦  «        ej                             dddg¦  «        ej                             ddd	g¦  «        d
„ ¦   «         ¦   «         ¦   «         Zd„ Zd„ Zd„ Z	ej                             d e
e¦  «        ¦  «        d„ ¦   «         Zd„ Zd„ Zej                             d¦  «        ej                             d e
e¦  «        ¦  «        d„ ¦   «         ¦   «         ZdS )ÚTestVoronoizqhull_opts, extra_pts)z	Qbb Qc Qzr$   )zQbb Qcr   Ún_ptsé2   éd   rC   r,   r/   c                 ó"  — t           j                             d¦  «        }|                     ||f¦  «        }t          ||¬¦  «        }|j        }|                     ¦   «         |dz
  |z   k    sJ ‚|j        t          |j        ¦  «        |z
  k    sJ ‚t          |j        ¦  «        ||z   k    sJ ‚|j	        j
        d         |k    sJ ‚|rEd„ |j        D ¦   «         }	|	                     d¦  «        dk    sJ ‚|	                     d¦  «        |vsJ ‚d S d S )Nin  r3  r$   r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rg   ©r=   ©rÂ   r   s     r   rÅ   z;TestVoronoi.test_point_region_structure.<locals>.<listcomp>:  s   € Ð3Ð3Ð3 !•s˜1‘v”vÐ3Ð3Ð3r   )r   r«   Údefault_rngr
   Úpoint_regionr/  Úsizer=   ÚregionsrB   r;   ÚcountÚindex)
r[   Ú
qhull_optsr…  Ú	extra_ptsrC   ÚrngrB   ÚvorÚ	pt_regionÚsublenss
             r   Útest_point_region_structurez'TestVoronoi.test_point_region_structure  s4  € õ Œi×#Ò# DÑ)Ô)ˆØ—’˜U D˜MÑ*Ô*ˆÝ�f¨JÐ7Ñ7Ô7ˆØÔ$ˆ	Ø�}Š}‰Œ %¨!¡)¨iÑ"7Ò7Ð7Ð7Ð7ØŒ~¥ S¤[Ñ!1Ô!1°IÑ!=Ò=Ð=Ð=Ð=Ý�3”;ÑÔ 5¨9Ñ#4Ò4Ð4Ð4Ð4ØŒzÔ Ô" eÒ+Ð+Ð+Ð+ð ð 	5Ø3Ð3 s¤{Ð3Ñ3Ô3ˆGð —=’= Ñ#Ô# qÒ(Ð(Ð(Ð(Ø—=’= Ñ#Ô#¨9Ð4Ð4Ð4Ð4ð	5ð 	5ð
 5Ð4r   c                 ó„   — t           j                             d¦  «        }t          t          t
          j        |¦  «         d S r  )r   r  r  rY   r  rR   r
   r  s     r   r  z#TestVoronoi.test_masked_array_fails@  s1   € Ý”u×'Ò'¨Ñ*Ô*ˆÝ•j¥%¤-°Ñ>Ô>Ð>Ð>Ð>r   c                 ó>   — g d¢}d}|                       ||¦  «         d S )N)	r"   r#   )r   r,   r%   r&   r{  )r,   r   )r,   r$   )r,   r,   a	  
        2
        5 10 1
        -10.101 -10.101
           0.5    0.5
           0.5    1.5
           1.5    0.5
           1.5    1.5
        2 0 1
        3 2 0 1
        2 0 2
        3 3 0 1
        4 1 2 4 3
        3 4 0 2
        2 0 3
        3 4 0 3
        2 0 4
        0
        12
        4 0 3 0 1
        4 0 1 0 1
        4 1 4 1 2
        4 1 2 0 2
        4 2 5 0 2
        4 3 4 1 3
        4 3 6 0 3
        4 4 5 2 4
        4 4 7 3 4
        4 5 8 0 4
        4 6 7 0 3
        4 7 8 0 4
        ©Ú_compare_qvoronoi©r[   rB   Úoutputs      r   Útest_simplezTestVoronoi.test_simpleD  s9   € ð*ð *ð *ˆð
ˆð@ 	×Ò˜v vÑ.Ô.Ð.Ð.Ð.r   c                 óÀ  — d„ |                      ¦   «                              ¦   «         D ¦   «         }t          |d         d         ¦  «        }t          t	          t
          |dd|z   …         ¦  «        ¦  «        }t          |d         d         ¦  «        }d„ |d|z   d|z   |z   …         D ¦   «         }d„ |d|z   |z   d…         D ¦   «         }d	„ |d|z   |z   d…         D ¦   «         }	t          j        |fi |¤Ž}
d
„ }t          |
j	        |¦  «         t          t          t	          t
          |
j        ¦  «        ¦  «        t          t	          t
          |¦  «        ¦  «        ¦  «         t          t          t          t	          ||¦  «        ¦  «        t          t	          ||	¦  «        ¦  «        ¦  «        ¦  «        }t          t          t          t	          ||
j                             ¦   «         ¦  «        ¦  «        t          t	          ||
j        ¦  «        ¦  «        ¦  «        ¦  «        }|                     ¦   «          |                     ¦   «          t          ||¦  «         dS )z:Compare to output from 'qvoronoi o Fv < data' to Voronoi()c           	      óv   — g | ]6}t          t          t          |                     ¦   «         ¦  «        ¦  «        ‘Œ7S rg   )r   r   rÈ   Úsplitr‹  s     r   rÅ   z1TestVoronoi._compare_qvoronoi.<locals>.<listcomp>q  s2   € ÐSÐSÐS°!•$•s�5 !§'¢'¡)¤)Ñ,Ô,Ñ-Ô-ÐSÐSÐSr   r$   r   r/   r,   c                 ó6   — g | ]}d „ |dd…         D ¦   «         ‘ŒS )c                 ó2   — g | ]}t          |¦  «        d z
  ‘ŒS r  ©r  ©rÂ   r]   s     r   rÅ   z<TestVoronoi._compare_qvoronoi.<locals>.<listcomp>.<listcomp>u  s"   € Ð,Ð,Ð, •C˜‘F”F˜1‘HÐ,Ð,Ð,r   r$   Nrg   r‹  s     r   rÅ   z1TestVoronoi._compare_qvoronoi.<locals>.<listcomp>u  sD   € ð Að Að AØð -Ð, a¨¨¨¤eÐ,Ñ,Ô,ð Að Að Ar   c                 ó6   — g | ]}d „ |dd…         D ¦   «         ‘ŒS )c                 ó,   — g | ]}t          |¦  «        ‘ŒS rg   r¥  r¦  s     r   rÅ   z<TestVoronoi._compare_qvoronoi.<locals>.<listcomp>.<listcomp>w  s   € Ð0Ð0Ð0 A�˜Q™œÐ0Ð0Ð0r   r$   r/   rg   r‹  s     r   rÅ   z1TestVoronoi._compare_qvoronoi.<locals>.<listcomp>w  s>   € ð =ð =ð =Øð 1Ð0¨¨1¨Q¨3¬Ð0Ñ0Ô0ð =ð =ð =r   Nc                 ó6   — g | ]}d „ |dd…         D ¦   «         ‘ŒS )c                 ó2   — g | ]}t          |¦  «        d z
  ‘ŒS r  r¥  r¦  s     r   rÅ   z<TestVoronoi._compare_qvoronoi.<locals>.<listcomp>.<listcomp>y  s"   € Ð3Ð3Ð3¨�3˜q™6œ6 !™8Ð3Ð3Ð3r   r/   Nrg   r‹  s     r   rÅ   z1TestVoronoi._compare_qvoronoi.<locals>.<listcomp>y  s>   € ð ?ð ?ð ?Øð 4Ð3¨Q¨q¨r¨r¬UÐ3Ñ3Ô3ð ?ð ?ð ?r   c                 ó:   — t          t          | ¦  «        ¦  «        S r   r   r   s    r   Ú	sorttuplez0TestVoronoi._compare_qvoronoi.<locals>.sorttuple  s   € Ý� ™œÑ#Ô#Ð#r   )ÚstripÚ
splitlinesr  r   r   r   rR   r
   r   rÕ   r   r   r�  ÚzipÚridge_pointsr   Úridge_verticesr   )r[   rB   rž  ÚkwÚnvertexrÕ   Únregionr�  r°  r±  r•  r¬  Úp1Úp2s                 r   rœ  zTestVoronoi._compare_qvoronoim  sa  € ð TÐS°v·|²|±~´~×7PÒ7PÑ7RÔ7RÐSÑSÔSˆÝ�f˜Q”i ”lÑ#Ô#ˆÝ��E 6¨!¨A¨g©I¨+Ô#6Ñ7Ô7Ñ8Ô8ˆÝ�f˜Q”i ”lÑ#Ô#ˆðAð AØ" 1 W¡9¨Q¨w©Y°wÑ->Ð#>Ô?ðAñ Aô Aˆð=ð =Ø!'¨¨'©	°'Ñ(9Ð(:Ð(:Ô!;ð=ñ =ô =ˆð?ð ?Ø#)¨!¨G©)°GÑ*;Ð*<Ð*<Ô#=ð?ñ ?ô ?ˆõ Œm˜FÐ)Ð) bÐ)Ð)ˆð	$ð 	$ð 	$õ 	˜œ hÑ/Ô/Ð/Ý•S��U C¤KÑ0Ô0Ñ1Ô1Ý��U GÑ,Ô,Ñ-Ô-ñ	/ô 	/ð 	/õ •#•d�3˜y¨,Ñ7Ô7Ñ8Ô8Ý�3˜y¨.Ñ9Ô9Ñ:Ô:ñ<ô <ñ =ô =ˆå•#•d�3˜y¨#Ô*:×*AÒ*AÑ*CÔ*CÑDÔDÑEÔEÝ�3˜y¨#Ô*<Ñ=Ô=Ñ>Ô>ñ@ô @ñ Aô Aˆà
�Š‰	Œ	ˆ	Ø
�Š‰	Œ	ˆ	å�R˜ÑÔÐÐÐr   r@   c                 ó0  — t           |         }t          |¦  «        }t          j        |¦  «        }|j                             ¦   «         D ]Ë\  }}t          j        t          j        |¦  «        dk    ¦  «        sŒ0|j	        |          
                    d¬¦  «        }d||d                  |z
  z  }|                     ||z   d¬¦  «        \  }	}
t          |
|d         ¦  «         |                     ||z
  d¬¦  «        \  }	}
t          |
|d         ¦  «         ŒÌd S )Nr   r´   g�íµ ÷Æ°>r$   )rÃ   )r:   ÚKDTreerR   r
   Ú
ridge_dictÚitemsr   rÍ   ÚasarrayrÕ   rc  Úqueryr   )r[   r@   rB   Útreer•  r{   r‰   Úridge_midpointrŽ   rˆ   rÃ   s              r   Útest_ridgeszTestVoronoi.test_ridges�  s  € õ ˜$”ˆå�f‰~Œ~ˆÝŒm˜FÑ#Ô#ˆà”N×(Ò(Ñ*Ô*ð 	"ð 	"‰DˆAˆqå”6�"œ* Q™-œ-¨1Ò,Ñ-Ô-ð Øà œ\¨!œ_×1Ò1°qÐ1Ñ9Ô9ˆNØ˜˜q œtœ ~Ñ5Ñ6ˆAà—j’j °!Ñ!3°q�jÑ9Ô9‰GˆD�!Ý˜˜A˜aœDÑ!Ô!Ð!à—j’j °!Ñ!3°q�jÑ9Ô9‰GˆD�!Ý˜˜A˜aœDÑ!Ô!Ð!Ð!ð	"ð 	"r   c                 óB   — g d¢}d}|                       ||d¬¦  «         d S )Nr<  a'  
        2
        3 5 1
        -10.101 -10.101
        0.6000000000000001    0.5
           0.5 0.6000000000000001
        3 0 2 1
        2 0 1
        2 0 2
        0
        3 0 2 1
        5
        4 0 2 0 2
        4 0 4 1 2
        4 0 1 0 1
        4 1 4 0 1
        4 2 4 0 2
        Tr>  r›  r�  s      r   r@  zTestVoronoi.test_furthest_site¨  s7   € ØAÐAÐAˆðˆð$ 	×Ò˜v v¸TÐÑBÔBÐBÐBÐBr   c                 ó¢   — g d¢}t          |¦  «        }t          |j        d¦  «         t          |d¬¦  «        }t          |j        d¦  «         d S )Nr<  FTr>  )r
   r   r?  )r[   rB   r•  s      r   Útest_furthest_site_flagz#TestVoronoi.test_furthest_site_flagÀ  sV   € ØAÐAÐAˆå�f‰oŒoˆÝ�SÔ& uÑ-Ô-Ð-Ý�f¨4Ð0Ñ0Ô0ˆÝ�SÔ& tÑ,Ô,Ð,Ð,Ð,r   r+   c                 ó‚  ‡‡‡— t           |         d         d         j        d         dk    rd S t           |         \  }}t          j        |d¬¦  «        }t	          j        |d         d|¬¦  «        }|dd …         D ]}|                     |¦  «         Œt	          j        |¦  «        }t	          j        |d         d|¬¦  «        }t          |¦  «        dk    r3|                     t          j        |dd …         d¬¦  «        d¬¦  «         t          t          |j	        ¦  «        t          |j	        ¦  «        ¦  «         t          t          |j	        ¦  «        t          |j	        ¦  «        ¦  «         ||fD ]ÈŠddiŠt          ‰j        ¦  «        D ]9\  }	}
t          |j        ¦  «        D ]\  }}t          j        |
|¦  «        r|‰|	<   Œ Œ:ˆˆˆfd	„Šd
„ }t           | ‰‰j        ¦  «        ¦  «         ||j        ¦  «        ¦  «         t           | ‰‰j        ¦  «        ¦  «         ||j        ¦  «        ¦  «         ŒÉd S )Nr   r$   r/   r´   TrB  r¨   r*   c                 óÐ   •— t          | d¦  «        rt          ˆfd„| D ¦   «         ¦  «        S 	 ‰|          S # t          $ r%}d‰j        |          ›�}t	          |¦  «        |‚d }~ww xY w)NÚ__len__c                 ó&   •— h | ]} ‰|¦  «        ’ŒS rg   rg   )rÂ   r]   Úremaps     €r   ú	<setcomp>z>TestVoronoi.test_incremental.<locals>.remap.<locals>.<setcomp>ð  s!   ø€ Ð!6Ð!6Ð!6¨q % %¨¡(¤(Ð!6Ð!6Ð!6r   z*incremental result has spurious vertex at )Úhasattrr   ÚKeyErrorrÕ   rO  )r   ÚeÚmessageÚobjxrÇ  Ú
vertex_maps      €€€r   rÇ  z+TestVoronoi.test_incremental.<locals>.remapî  s‘   ø€ Ý˜1˜iÑ(Ô(ð 8Ý Ð!6Ð!6Ð!6Ð!6°AÐ!6Ñ!6Ô!6Ñ7Ô7Ð7ð9Ø% aœ=Ð(øÝð 9ð 9ð 9ð :Ø%)¤]°1Ô%5ð :ð  :�Gå(¨Ñ1Ô1°qÐ8øøøøð9øøøs   ®6 ¶
A%Á  A Á A%c                 ó¼   — t          t          t          | ¦  «        ¦  «        }d|v r|                     d¦  «         d„ |D ¦   «         }|                     ¦   «          |S )Nrg   c                 ó8   — g | ]}t          |¦  «        d k    ¯|‘ŒS r  rŠ  r‹  s     r   rÅ   zDTestVoronoi.test_incremental.<locals>.simplified.<locals>.<listcomp>ü  s#   € Ð8Ð8Ð8˜q­S°©V¬V°aªZ¨Z˜¨Z¨Z¨Zr   )r   r   r   Úremover   )r   rº  s     r   Ú
simplifiedz0TestVoronoi.test_incremental.<locals>.simplifiedø  sY   € Ý�C¥¨aÑ0Ô0Ñ1Ô1�Ø˜�;�;Ø—L’L Ñ$Ô$Ð$Ø8Ð8 EÐ8Ñ8Ô8�Ø—
’
‘”�Ø�r   )r?   r;   r   rD  rR   r
   r¬   r=   r   r�  r�   rÕ   rN  r�  r±  )r[   r@   rF   rD   rB   rF  rG  rH  rI  r|   r‰   rG   Úv2rÒ  rÍ  rÇ  rÎ  s                 @@@r   rJ  zTestVoronoi.test_incrementalÈ  s—  øøø€ õ
   Ô% aÔ(¨Ô+Ô1°!Ô4°qÒ8Ð8àˆFå+¨DÔ1‰ˆ�Ý” ¨QÐ/Ñ/Ô/ˆåŒm˜F 1œI°4Ø+/ð1ñ 1ô 1ˆà˜A˜B˜B”Zð 	"ð 	"ˆEØ�NŠN˜5Ñ!Ô!Ð!Ð!åŒ}˜VÑ$Ô$ˆåŒ}˜V AœY°DØ+/ð1ñ 1ô 1ˆåˆv‰;Œ;˜Š?ˆ?Ø�OŠO�BœN¨6°!°"°"¬:¸AÐ>Ñ>Ô>Ø$(ð ñ *ô *ð *õ 	•S˜Ô)Ñ*Ô*­C°Ô0AÑ,BÔ,BÑCÔCÐCÝ•S˜Ô)Ñ*Ô*­C°Ô0AÑ,BÔ,BÑCÔCÐCð ˜�Ið  	ð  	ˆDØ˜b˜ˆJÝ! $¤-Ñ0Ô0ð *ð *‘��1Ý& t¤}Ñ5Ô5ð *ð *‘E�A�rÝ”{ 1 bÑ)Ô)ð *Ø()˜
 1™øð*ð9ð 9ð 9ð 9ð 9ð 9ð 9ðð ð õ Ø�
˜5˜5 ¤Ñ.Ô.Ñ/Ô/Ø�
˜4œ<Ñ(Ô(ñô ð õ Ø�
˜5˜5 Ô!4Ñ5Ô5Ñ6Ô6Ø�
˜4Ô.Ñ/Ô/ñô ð ð ð; 	ð  	r   N)rd   re   rf   rø   rù   rK  r˜  r  rŸ  rœ  r   r:   r¿  r@  rÂ  rú   r?   rJ  rg   r   r   r„  r„    ss  € € € € € à„[×ÒÐ4ð 	Øð	7ñ ô ð „[×Ò˜W r¨3 iÑ0Ô0Ø„[×Ò˜V a¨ VÑ,Ô,ð5ð 5ñ -Ô,ñ 1Ô0ñô ð5ð4?ð ?ð ?ð'/ð '/ð '/ðR ð  ð  ðD „[×Ò˜V V V¨HÑ%5Ô%5Ñ6Ô6ð"ð "ñ 7Ô6ð"ð0Cð Cð Cð0-ð -ð -ð „[×Ò˜2ÑÔØ„[×Ò˜V V VÐ,@Ñ%AÔ%AÑBÔBð=ð =ñ CÔBñ Ôð=ð =ð =r   r„  c            
       óŒ  — e Zd Zdd„Zej                             dej        e	g¦  «        d„ ¦   «         Z
d„ Zd„ Zd„ Zd„ Zej                             d	 ed
d¦  «        ¦  «        d„ ¦   «         Zej                             d ej        g d¢¦  «         ej        g d¢g d¢g d¢g¦  «        g¦  «        d„ ¦   «         Zd„ Zd„ Zd„ ZdS )ÚTest_HalfspaceIntersectionr¢   c                 ó˜  — t          |j        |j        ¦  «         t          j        |j        d         ft          ¬¦  «        }|D ]d}t          j        t          ||z
  ¦  «        |k                          d¬¦  «        ¦  «        d         }t          |j        d¦  «         d||d         <   Œet          |                     ¦   «         ¦  «         dS )z2Check that every line in arr1 is only once in arr2r   rl   r$   r´   r  TN)	r   r;   r   r#  ro  rÏ   rÎ   rÍ   r   )r[   Úarr1Úarr2r˜   ÚtruthsÚl1Úindexess          r   Úassert_unordered_allclosez4Test_HalfspaceIntersection.assert_unordered_allclose  sµ   € å�T”Z ¤Ñ,Ô,Ð,å”˜4œ: aœ=Ð*µ$Ð7Ñ7Ô7ˆØð 	&ð 	&ˆBÝ”j¥# d¨R¡i¡.¤.°4Ò"7×!<Ò!<À!Ð!<Ñ!DÔ!DÑEÔEÀaÔHˆGÝ˜œ¨Ñ-Ô-Ð-Ø!%ˆF�7˜1”:ÑÐÝ�—
’
‘”ÑÔÐÐÐr   Údtc                 ó  — t          j        g d¢g d¢g d¢g d¢g|¬¦  «        }t          j        ddg|¬¦  «        }t          j        ddgddgddgddgg¦  «        }t          j        ||¦  «        }t	          |j        |¦  «         d S )	N)r*   r   r   )r   r*   r   )r$   r   éþÿÿÿ)r   r$   rß  rl   r$   r)   rP   )r   rT   rR   ÚHalfspaceIntersectionr   Úintersections)r[   rÝ  Ú
halfspacesÚfeasible_pointrB   rŸ   s         r   Ú test_cube_halfspace_intersectionz;Test_HalfspaceIntersection.test_cube_halfspace_intersection  sª   € å”X˜z˜z˜zØ)˜z˜zØ)˜z˜zØ)˜z˜zð+ð 35ð6ñ 6ô 6ˆ
õ œ 1 a &°Ð3Ñ3Ô3ˆå”˜C ˜:¨¨S z°C¸°:ÀÀS¸zÐJÑKÔKˆåÔ*¨:°~ÑFÔFˆå˜Ô*¨FÑ3Ô3Ð3Ð3Ð3r   c                 óÐ  — t           j                             t           j                             t          ¦  «        dd¦  «        }t          j        |¦  «        }t          j        |d d …dd …f         |d d …d d…f         f¦  «         }t          j        g d¢¦  «        }t          j
        ||¦  «        }t          |j        j        d¦  «         t          |j        d¦  «         t          t!          |j        ¦  «        d¦  «         |j        D ]}t          t!          |¦  «        d¦  «         Œ |d d …d	f         |d d …d d	…f                              |¦  «        z   }|                      |d d …d d	…f         j        |z  j        |j        ¦  «         t-          j        g d
¢¦  «        }|D ]A}	t          t          j        |j        |	k                         d¬¦  «        ¦  «        d¦  «         ŒBd S )NrÝ   zselfdual-4d-polytope.txtr$   )r)   r)   r)   r)   )é   r0   g      @@ræ  r2   r*   )r)   r)   r(   ç      à¿r´   )rà   rá   râ   rã   rä   r   Ú
genfromtxtÚhstackrT   rR   rà  r   rá  r;   r   Údual_volumer=   Údual_facetsr„   rÜ  rï   Údual_pointsÚ	itertoolsÚpermutationsrÆ   rÍ   )
r[   ÚfnameÚineqsrâ  Ú
feas_pointÚhsÚfacetÚdistsrB   Úpoints
             r   Ú$test_self_dual_polytope_intersectionz?Test_HalfspaceIntersection.test_self_dual_polytope_intersection&  sÚ  € Ý”—’�RœWŸ_š_­XÑ6Ô6¸Ø7ñ9ô 9ˆå”˜eÑ$Ô$ˆÝ”i  q q q¨!¨"¨" u¤¨u°Q°Q°Q¸¸¸°U¬|Ð <Ñ=Ô=Ð=ˆ
å”XÐ.Ð.Ð.Ñ/Ô/ˆ
ÝÔ(¨°ZÑ@Ô@ˆå�RÔ%Ô+¨WÑ5Ô5Ð5å˜BœN¨DÑ1Ô1Ð1Ý•S˜œÑ(Ô(¨"Ñ-Ô-Ð-Ø”^ð 	(ð 	(ˆEÝ�˜U™œ QÑ'Ô'Ð'Ð'à˜1˜1˜1˜b˜5Ô! J¨q¨q¨q°#°2°#¨vÔ$6×$:Ò$:¸:Ñ$FÔ$FÑFˆØ×&Ò&¨
°1°1°1°c°r°c°6Ô(:Ô(<¸UÑ(BÔ'EÀrÄ~ÑVÔVÐVåÔ'Ð(;Ð(;Ð(;Ñ<Ô<ˆØð 	Mð 	MˆEÝ�œ Ô!1°UÒ!:× ?Ò ?ÀQÐ ?Ñ GÔ GÑHÔHÈ!ÑLÔLÐLÐLð	Mð 	Mr   c                 ó  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        g d¢¦  «        }t          t          t          j        ||¦  «         t          j        dgdgg¦  «        }t          t          t          j        ||¦  «         t          j        ddgg¦  «        }t          t          t          j        ||¦  «         t          j        ddg¦  «        }t          t          j        t          j        ||¦  «         d S )N)ç      ð¿r)   r)   )r)   rø  r)   ©rO   r)   rø  ©r)   rO   rø  ©r(   r(   r(   r(   rç  )r   rT   rY   r  rR   rà  Ú
QhullError)r[   râ  rã  s      r   Útest_wrong_feasible_pointz4Test_HalfspaceIntersection.test_wrong_feasible_point=  s%  € Ý”XÐ/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/Ø/Ð/Ð/ð1ñ 2ô 2ˆ
õ œ / / /Ñ2Ô2ˆå•jÝÔ1°:¸~ñ	Oô 	Oð 	Oåœ C 5¨3¨% .Ñ1Ô1ˆå•jÝÔ1°:¸~ñ	Oô 	Oð 	Oåœ C¨ : ,Ñ/Ô/ˆå•jÝÔ1°:¸~ñ	Oô 	Oð 	Oõ œ 4¨ ,Ñ/Ô/ˆå•eÔ&ÝÔ1°:¸~ñ	Oô 	Oð 	Oð 	Oð 	Or   c           	      óð  — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          j        g d¢g d¢g d	¢g d
¢g¦  «        }t          j        dggdz  ¦  «        }t          j        t          j        || f¦  «        |f¦  «        }t          j        g d¢¦  «        }t	          j        ||d¬¦  «        }t	          j        ||d¬¦  «        }t          |¦  «        D �]\  }}	|                     |	t           j        d d …f         ¦  «         |                     |	t           j        d d …f         d¬¦  «         t          j        ||d |dz   …d d …f         f¦  «        }
t	          j        |
|¦  «        }t          |j
        |j
        ¦  «         t          |j
        |j
        ¦  «         t          |j        |j        ¦  «         |                      |j        |j        ¦  «         �Œ|                     ¦   «          d S )N)r)   r)   rø  rç  )r)   rø  r)   rç  )rø  r)   r)   rç  )rO   r)   r)   rç  )r)   rO   r)   rç  )r)   r)   rO   rç  )rO   rO   rO   )rO   rO   rø  )rO   rø  rO   )r$   rø  rø  rø  r4   r€  Tr¦   r¨   r$   )r   rT   ré  ÚvstackrR   rà  r�   Úadd_halfspacesÚnewaxisr   râ  rá  rÜ  rX   )r[   râ  Úextra_normalsÚoffsetsÚextra_halfspacesrñ  Úinc_hsÚ
inc_res_hsr|   ÚehsÚtotalrò  s               r   rJ  z+Test_HalfspaceIntersection.test_incrementalT  s/  € å”XÐ2Ð2Ð2Ø2Ð2Ð2Ø2Ð2Ð2Ø1Ð1Ð1Ø1Ð1Ð1Ø1Ð1Ð1ð3ñ 4ô 4ˆ
õ œ , , ,Ø"/ - -Ø"/ - -Ø"/ - -ð"1ñ 2ô 2ˆõ ”(˜S˜E˜7 1™9Ñ%Ô%ˆÝœ9¥b¤i°ÀÀÐ0OÑ&PÔ&PØ&-ð&/ñ 0ô 0Ðõ ”X˜l˜l˜lÑ+Ô+ˆ
åÔ,¨Z¸ÐQUÐVÑVÔVˆåÔ0°¸ZØ=AðCñ Cô Cˆ
õ  Ð 0Ñ1Ô1ð 	Sñ 	S‰FˆAˆsØ×!Ò! #¥b¤j°!°!°! mÔ"4Ñ5Ô5Ð5à×%Ò% c­"¬*°a°a°a¨-Ô&8À$Ð%ÑGÔGÐGå”I˜zÐ+;¸D¸Q¸q¹S¸DÀ!À!À!¸GÔ+DÐEÑFÔFˆEåÔ,¨U°JÑ?Ô?ˆBå˜FÔ-¨zÔ/DÑEÔEÐEÝ˜FÔ-¨r¬}Ñ=Ô=Ð=õ ˜BÔ,¨jÔ.FÑGÔGÐGà×*Ò*¨6Ô+?ÀÔAQÑRÔRÐRÑRà�Š‰Œˆˆˆr   c           	      ó  — t          j        g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }t          j        g d¢¦  «        }t          j        ||¦  «        }t          j        g d¢g d	¢g d
¢g d¢g d¢g d¢g¦  «        }g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t	          |¦  «        t	          |j        ¦  «        k    sJ ‚t          ||j        ¦  «        D ]'\  }}t          |¦  «        t          |¦  «        k    sJ ‚Œ(t          |j	        |¦  «         d S )N)rø  r)   r)   r)   )rO   r)   r)   rø  )r)   rø  r)   r)   )r)   rO   r)   rø  )r)   r)   rø  r)   )r)   r)   rO   rø  rû  )rß  r   r   )r,   r   r   )r   rß  r   )r   r,   r   )r   r   rß  )r   r   r,   )r,   r0   r   )r0   r,   r$   )r1   r,   r   )r,   r1   r$   )r/   r0   r$   )r0   r/   r   )r1   r/   r$   )r/   r1   r   )
r   rT   rR   rà  r=   rë  r¯  r   r   rì  )r[   râ  rõ  rò  Úqhalf_pointsÚqhalf_facetsr   r   s           r   Ú	test_cubez$Test_HalfspaceIntersection.test_cube  st  € å”XÐ0Ð0Ð0Ø0Ð0Ð0Ø0Ð0Ð0Ø0Ð0Ð0Ø0Ð0Ð0Ø0Ð0Ð0ð2ñ 3ô 3ˆ
õ ”˜˜˜Ñ)Ô)ˆåÔ(¨°UÑ;Ô;ˆõ ”xØˆJˆJØˆIˆIØˆJˆJØˆIˆIØˆJˆJØˆIˆIð!ñ ô ˆð ˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIØˆIˆIðˆõ �<Ñ Ô ¥C¨¬Ñ$7Ô$7Ò7Ð7Ð7Ð7Ý˜ b¤nÑ5Ô5ð 	$ð 	$‰DˆAˆqÝ�q‘6”6�S ™VœVÒ#Ð#Ð#Ð#Ð#å˜œ¨Ñ5Ô5Ð5Ð5Ð5r   rÃ   r$   r0   c                 ó¶  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        |t          j        d	d
g¦  «        d¬¦  «        }|                     |d|…d d …f         ¦  «         |                     ||d…d d …f         ¦  «         |                     ¦   «          t          j        ddgddgddgddgg¦  «        }|j        }t          j        |d d …df         |d d …df         f¦  «        }t          j        |d d …df         |d d …df         f¦  «        }t          ||         ||         ¦  «         d S )N)rO   r)   ç       À)rø  r)   r  )r)   rO   r  )r)   rø  r  rù  )rø  r)   rø  rú  )r)   rø  rø  gCëâ6Ô?gaÃÓ+eÑ?Tr¦   r   r0   rO   rø  r$   )	r   rT   rR   rà  r   rX   rá  Úlexsortr   )	r[   rÃ   Ú
big_squareÚsmall_squarerò  Úexpected_intersectionsÚactual_intersectionsÚind1Úind2s	            r   Útest_halfspace_batchz/Test_HalfspaceIntersection.test_halfspace_batch£  s¹  € õ ”X˜˜˜Ø.˜˜Ø.˜˜Ø.˜˜ð0ñ 1ô 1ˆ
õ
 ”x   Ø!0  Ø!0  Ø!0  ð!2ñ 3ô 3ˆõ
 Ô(¨Ý)+¬°6¸6Ð2BÑ)CÔ)CØ59ð;ñ ;ô ;ˆð 	×Ò˜, q¨ s¨1¨1¨1 uÔ-Ñ.Ô.Ð.Ø
×Ò˜, q¨ s¨1¨1¨1 uÔ-Ñ.Ô.Ð.Ø
�Š‰
Œ
ˆ
õ "$¤¨B°¨8Ø,.°¨9Ø,/°¨9Ø,/°¨:ð+7ñ "8ô "8Ðð  "Ô/Ðõ ŒzÐ/°°°°1°Ô5Ð7KÈAÈAÈAÈqÈDÔ7QÐRÑSÔSˆÝŒzÐ1°!°!°!°Q°$Ô7Ð9OÐPQÐPQÐPQÐSTÐPTÔ9UÐVÑWÔWˆÝÐ,¨TÔ2Ð4JÈ4Ô4PÑQÔQÐQÐQÐQr   râ  )gÃÀJp°˜æ¿g¦zøS_-Ý¿g-|†d¥?)gÑ#Â–‰¨æ?gó–'çöÝ¿g1&Ü¯kÝ¿)r)   gŒ:çe|è?g¹Ä‘"ËÖ¿c                 ó4  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        |t          j        d¦  «        d¬¦  «        }t          j        t          j        d¬	¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
N©r$   r   r*   ©r   r$   r*   ©r*   r   r*   ©r   r*   r*   r,   Tr¦   zfeasible.*-0.706.*©Úmatch©	r   rT   rR   rà  r#  rø   r   rü  r   )r[   râ  Úinitial_squareÚincremental_intersectors       r   Útest_gh_19865z(Test_HalfspaceIntersection.test_gh_19865Æ  sñ   € õ œ(Ø�Z�Z   ¨[¨[¨[¸+¸+¸+ÐFñô ˆõ #(Ô"=¸nÝ>@¼hÀq¹k¼kØJNð#Pñ #Pô #PÐõ Œ]�5Ô+Ð3GÐHÑHÔHð 	?ð 	?Ø#×2Ò2°:Ñ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?s   Á*BÂBÂBc           	      óz  — t          j        g d¢g d¢g d¢g¦  «        }t          j        g d¢g d¢g d¢g d¢g d¢g d	¢g¦  «        }t          j        |t          j        d
¦  «        d¬¦  «        }t          j        t          j        d¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   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*   )r   r*   r   r*   )r   r   r$   r*   )r   r   r*   r*   r/   Tr¦   zfeasible.*[1 0 0 0]r  r  )r[   râ  Úinitial_cuber   s       r   Útest_gh_19865_3dz+Test_HalfspaceIntersection.test_gh_19865_3dÛ  s1  € õ ”X˜}˜}˜}Ø/Ð/Ð/Ø+˜|˜|ð-ñ .ô .ˆ
õ ”x   Ø!/  Ø!.  Ø!/  Ø!.  Ø!/  ð!1ñ 2ô 2ˆõ #(Ô"=¸lÝ>@¼hÀq¹k¼kØJNð#Pñ #Pô #PÐõ Œ]�5Ô+Ð3HÐIÑIÔIð 	?ð 	?Ø#×2Ò2°:Ñ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?s   ÂB0Â0B4Â7B4c                 óN  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        |t          j        d¦  «        d¬¦  «        }t          j        t          d¬	¦  «        5  |                     t          j	        d
¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr  r  r  r  r,   Tr¦   z2D arrayr  )r0   r0   r0   )
r   rT   rR   rà  r#  rø   r   r  r   Úones©r[   r  r   s      r   Útest_2d_add_halfspace_inputz6Test_HalfspaceIntersection.test_2d_add_halfspace_inputî  s  € õ œ(Ø�Z�Z   ¨[¨[¨[¸+¸+¸+ÐFñô ˆõ #(Ô"=¸nÝ>@¼hÀq¹k¼kØJNð#Pñ #Pô #PÐõ Œ]�:¨ZÐ8Ñ8Ô8ð 	Gð 	GØ#×2Ò2µ2´7¸9Ñ3EÔ3EÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gs   Á%(BÂBÂ!Bc                 ó†  — t          j        g d¢g d¢g d¢g d¢g¦  «        }t          j        |t          j        d¦  «        d¬¦  «        }t          |j        t          j        d¦  «        ¦  «         |                     t          j        g d	¢¦  «        ¦  «         t          |j        t          j        d
¦  «        ¦  «         d S )Nr  r  r  r  r,   Tr¦   r0   )r,   r,   r*   r1   )	r   rT   rR   rà  r#  r   Údual_verticesr$  r   r'  s      r   Útest_1d_add_halfspace_inputz6Test_HalfspaceIntersection.test_1d_add_halfspace_inputú  s¾   € åœ(Ø�Z�Z   ¨[¨[¨[¸+¸+¸+ÐFñô ˆõ #(Ô"=¸nÝ>@¼hÀq¹k¼kØJNð#Pñ #Pô #PÐõ 	Ð/Ô=½r¼yÈ¹|¼|ÑLÔLÐLØ×.Ò.­r¬x¸
¸
¸
Ñ/CÔ/CÑDÔDÐDÝÐ/Ô=½r¼yÈ¹|¼|ÑLÔLÐLÐLÐLr   N)r¢   )rd   re   rf   rÜ  rø   rù   rK  r   ru   r  rä  rö  rý  rJ  r  r<   r  rT   r!  r$  r(  r+  rg   r   r   rÕ  rÕ    s�  € € € € € ð	ð 	ð 	ð 	ð „[×Ò˜T B¤J°Ð#4Ñ5Ô5ð4ð 4ñ 6Ô5ð4ðMð Mð Mð.Oð Oð Oð.)ð )ð )ðV"6ð "6ð "6ðH „[×Ò˜S % %¨¨!¡*¤*Ñ-Ô-ðRð Rñ .Ô-ðRðD „[×Ò˜\Ø€R„XÐ4Ð4Ð4Ñ5Ô5Ø€R„XÐ6Ð6Ð6Ø5Ð5Ð5Ø-Ð-Ð-ð/ñ 0ô 0ð,ñ ô ð?ð ?ñô ð?ð?ð ?ð ?ð&
Gð 
Gð 
Gð
Mð 
Mð 
Mð 
Mð 
Mr   rÕ  Údiagram_typec                 óì   — t           j                             d¦  «        }|                     d¦  «        }t          j        t
          d¬¦  «        5   | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né{   )r0   r+   r/   Ú
dimensionsr  )r   r«   rŒ  rø   r   r  )r,  r”  Úinvalid_datas      r   Útest_gh_20623r1    s±   € å
Œ)×
Ò
 Ñ
$Ô
$€CØ—:’:˜jÑ)Ô)€LÝ	Œ•z¨Ð	6Ñ	6Ô	6ð #ð #Øˆ�\Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   ÁA)Á)A-Á0A-c                  óˆ  — t          j        ddgddgddgddgg¦  «        } t          j        | ¦  «        }t	          j        t          ¦  «        5  |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r=  r$   )r   rT   rR   rv   rø   r   Ú
IndexErrorrx   ©Ú
generatorsrz   s     r   Útest_gh_21286r6    s<  € Ý”˜A˜q˜6 A s 8¨a°¨V°a¸°VÐ<Ñ=Ô=€JÝ
Œ.˜Ñ
$Ô
$€Cå	Œ•zÑ	"Ô	"ð ð Ø×Ò˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•zÑ	"Ô	"ð ð ð 	×Ò˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   ÁA0Á0A4Á7A4ÂB7Â7B;Â>B;c                  ó   — t          j        ddgddgddgddgg¦  «        } t          j        | ¦  «        }t	          j        t          ¦  «        5  |                     g d¢¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r=  r$   )r,   r,   r,   )r   rT   rR   rv   rø   r   r  rx   r4  s     r   Útest_find_simplex_ndim_errr8    sÅ   € Ý”˜A˜q˜6 A s 8¨a°¨V°a¸°VÐ<Ñ=Ô=€JÝ
Œ.˜Ñ
$Ô
$€CÝ	Œ•zÑ	"Ô	"ð $ð $Ø×Ò˜˜˜Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s   ÁA3Á3A7Á:A7)9rà   rU   Únumpyr   Únumpy.testingr   r   r   r   r   rø   r   rY   Úscipy.spatial._qhullÚspatialÚ_qhullrR   Úscipy.spatialr	   r¸  r
   rí  r   r   r    r«   rð   rB   rT   Úpathological_data_1rÇ   ru   rÉ   Úpathological_data_2rñ   Úbug_2850_chunksÚbug_2850_chunks_2r»  r:   r?   rI   r@   rA   rL   ri   rý   r  rX  rZ  r„  rÕ  rù   rK  rv   r1  r6  r8  rg   r   r   ú<module>rC     su	  ðØ 	€	€	€	Ø €€€à Ð Ð Ð ðIð Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ià €€€Ø *Ð *Ð *Ð *Ð *Ð *à $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø +Ð +Ð +Ð +Ð +Ð +Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð ðð ð ð 16ð 	ð 	ð 	ð 	ð „	‡‚ˆtÑ Ô Ð à	=Ð	=Ð	=€à�b”hð  Ø
ˆ5€Mð Ø˜%�=ð Ø#(¨ -ð Ø27¸°ð à
ˆ3€Kð à˜�ð à % d˜|ð à.3°D¨\ð ð ˆ4€Lð ð ˜�-ð ð #(¨ ð ð 27°u°ð ð ˆ5€Mð	 ð ˜#�;ð	 ð "' t ð	 ð 05°T¨lð	 ð
 ˆ4€Lð ð
 ˜�,ð ð
 "' u ð ð
 16°d¨|ð ð ˆ5€Mð ð ˜#�;ð ð "' t ð ð 05°U¨mð ð ˆ5€Mð ð ˜$�<ð ð #(¨ ð ð 16°e¨}ð ð ˆ4€Lð ð ˜�-ð ð #(¨ ð ð 27°u°ð ð ˆ3€Kð ð ˜�ð ð !& d˜|ð ð /4°D¨\ð ð 	ˆ€Kð ð �e�ð ð  # 5˜kð ð -0°¨;ð ð :=¸S¸	ð ð 	ˆ€Jð ð �T�
ð ð ! ˜Jð ð *-¨T¨
ð ð 6:¸%°Lð ð 
ˆ%€Lð ð ˜�,ð ð "& c 
ð ð .2°$¨Kð ð 
ˆ$€Kð ð �t�ð ð  $ E˜lð ð .2°$¨Kð ð 
ˆ%€Lð ð ˜�,ð ð "& d ð ð /3°4¨[ð ð 
ˆ%€Lð ð ˜�*ð ð  $ D˜kð ð -1°¨<ð ð  
ˆ$€Kð! ð  �u�ð! ð  !% U˜|ð! ð  /3°5¨\ð! ð" 
ˆ%€Lð# ð" ˜�*ð# ð"  $ D˜kð# ð" -1°¨;ð# ð$ 
ˆ$€Kð% ð$ �t�ð% ð$  $ E˜lð% ð$ .2°%¨Lð% ð& 
ˆ%€Lð' ð& ˜�,ð' ð& "& c 
ð' ð& .2°$¨Kð' ð( 
ˆ$€Kð) ð( �t�ð) ð(  $ D˜kð) ñ ô Ð ð. �b”hØˆ€Hˆr�1ˆg˜˜A�wØˆ€Gˆa�ˆV�a˜�VØˆˆXˆRŒX�b”jÑ!Ô!Ô%Ñ%Ð&¨¨A¨°°A°ð ñ ô Ð ð ”9—>’> " aÑ(Ô(Ø�2”8˜a ˜U Q q E¨A¨a¨5°1°Q°%Ð8Ñ9Ô9ð€ð
 %Ø”i—n’n R¨Ñ+Ô+Ø˜X˜RœX¨¨! u¨q°¨e°a¸°U¸Q¸q¸EÐ&BÑCÔCÑCðEñEÐ ð
 �2”:˜fÑ%Ô%Ø”—’  AÑ&Ô&Ø”—’  AÑ&Ô&Ø”—’  AÑ&Ô&Ø”—’  AÑ&Ô&Ø”—’  AÑ&Ô&Ø”—’  AÑ&Ô&Ø”—’  AÑ&Ô&Ø)Ø)ðð €ð ! $Ð'Ø$ dÐ+ðð Ð ð4ð 4ð 4ð4 ð 'ð '€DØð 'ð 'ˆ	Øˆ�d˜IÑ&Ô&Ð&Ð&ð'ð+ð +ð +ð +ð +ñ +ô +ð +ð\XDð XDð XDð XDð XDñ XDô XDð XDðvð ð ð ð ñ ô ð ðB@<ð @<ð @<ð @<ð @<ñ @<ô @<ð @<ðF4%ð 4%ð 4%ðnz*ð z*ð z*ð z*ð z*ñ z*ô z*ð z*ðxkð kð kð kð kñ kô kð kð`xMð xMð xMð xMð xMñ xMô xMð xMðv „×Ò˜¨'°5´>Ð)BÑCÔCð#ð #ñ DÔCð#ð	ð 	ð 	ð$ð $ð $ð $ð $r   