+
    0i                     2   ^ RI t ^ RIt^ RIt^ RIHtHtHtHtH	t	 ^ RI
t
^ RI
Ht ^ RIHu Ht ^ RIHt ^ RIHt ^ RItR t]3R lt]P2                  P5                  R4       . R/Ot]P8                  ! . R0R0.NR0R1.NR0R2.NR0R3.NR0R.NR0R.NR0R.NR0R
.NR0R	.NR1R0.NR1R1.NR1R2.NR1R3.NR1R.NR1R.NR1R.NR1R
.NR1R	.NR2R3.NR2R.NR2R2.NR2R.NR2R.NR2R0.NR2R1.NR2R
.NR2R	.NR3R2.NR3R.NR3R0.NR3R1.NR3R3.NR3R.NR3R.NR3R
.NR3R	.NRR0.NRR1.NRR2.NRR3.NRR.NRR.NRR.NRR
.NRR	.NRR0.NRR1.NRR3.NRR.NRR.NRR
.NRR	.NRR2.NRR.NRR0.NRR1.NRR
.NRR	.NRR2.NRR.NRR.NRR3.NRR.NR
R0.NR
R1.NR
R2.NR
R3.NR
R.NR
R.NR
R.NR
R
.NR
R	.NR	R0.NR	R1.NR	R2.NR	R3.NR	R.NR	R.NR	R.NR	R
.NR	R	.N4      t]P8                  ! R4R4.R4^ .R4^.^ R4.^ ^ .^ ^.^R4]P<                  ! ]P>                  4      P@                  ,
          .^^ .^^..	4      t!]P2                  PE                  ^
^4      ]P8                  ! ^ ^ .^ ^.^^ .^^..4      .t#]#]P2                  PE                  ^
^4      R]P8                  ! ^ ^ .^ ^.^^ .^^..4      ,           .,           t$R]PJ                  ! ]4      R]P2                  PE                  ^^4      R]P2                  PE                  ^^4      R]P2                  PE                  ^^4      R]P2                  PE                  ^^4      R]P2                  PE                  ^
^4      R]P2                  PE                  ^
^4      R]P2                  PE                  ^
^4      R]R]!/
t&R]#R3R]$R3/t'R t(]& F  t)R5 F  t*](! ])]*4       K  	  K  	   ! R R4      t+ ! R R4      t, ! R  R!4      t- ! R" R#4      t.R$ t/ ! R% R&4      t0 ! R' R(4      t1 ! R) R*4      t2]
Pf                  Pi                  R+]]Pj                  .4      R, 4       t6R- t7R. t8R# )6    N)assert_equalassert_almost_equalassert_assert_allcloseassert_array_equal)raises)cKDTree)Voronoic                 *    \        \        V 4      4      # Ntuplesortedxs   &\/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/spatial/tests/test_qhull.pysorted_tupler      s        c                 l   \        V \        P                  4      '       d   V P                  4       p \        V\        P                  4      '       d   VP                  4       p\	        \        W 4      4      p V P                  4        \	        \        W!4      4      pVP                  4        \        W4       R # r   )
isinstancenpndarraytolistlistmapsortr   )abtpls   &&&r   !assert_unordered_tuple_list_equalr       sp    !RZZ  HHJ!RZZ  HHJS[AFFHS[AFFHr     gQ	@gzG@gQ?gHzG?              ?some-pointsz	random-2dz	random-3dz	random-4dz	random-5dz	random-6dz	random-7dz	random-8dpathological-1pathological-2zbug-2850z
bug-2850-2c                6   \         V ,          pVP                  ^,          pRpV^,           pV R8X  d   RpM	V R8X  d   ^pVRV .p\        V\        V4      V4       F  pVP	                  W'Wq,            4       K  	  V  RV 2pV\
        9  g   Q hWd3\
        V&   R# )z4
Generate incremental datasets from basic data sets
Nr$   zQJ Ppr%   z-chunk-)DATASETSshaperangelenappendINCREMENTAL_DATASETS)	name	chunksizepointsndimoptsnminchunksjnew_names	   &&       r   _add_inc_datar7   ]   s     d^F<<?DD!8D}	!	!Udm_F4Vi0fq{+, 1 wyk*H////&,^"r   c                   ,   a  ] tR t^|t o R tR tRtV tR# )
Test_Qhullc                   \         P                  ! R \        P                  ! ^ ^ .^ ^.^^ .^R.RR..4      R4      p\        P
                  ! VP                  4       4      p\         P                  ! R \        P                  ! ^ ^ .^ ^.^^ .^R..4      R4      p\        P
                  ! VP                  4       4      p\        P
                  ! VP                  4       4      pVP                  4        \        P
                  ! VP                  4       4      pVP                  4        \        \        VP                  4       \        \        VP                  4       \        V^ ,          V^ ,          4       \        V^,          V^,          \        R7       \        V^,          V^,          \        R7       \        V^,          V^,          \        R7       \        V^,          V^,          4       \        V^ ,          V^ ,          4       \        V^,          V^,          \        R7       \        V^,          V^,          \        R7       \        V^,          V^,          \        R7       \        V^,          V^,          4       VP                  4        \        \        VP                  4       VP                  4        \        \        VP                  4       R# )   v      ?      ?s   Qz       @r   N)qhull_Qhullr   arraycopydeepcopyget_voronoi_diagramcloseassert_raisesRuntimeErrorr   r    r   r   )selfr   xdyydxd2yd2s   &      r   test_swappingTest_Qhull.test_swapping}   s    LLAa5!A!uaVSI"FG  ]]10023LLAa5!A!uaV"<=  ]]10023mmA1134		mmA1134		lA$9$9:lA$9$9:1s1v&)"Q%Q\J)"Q%Q\J)"Q%Q\J2a5#a&)1s1v&)"Q%Q\J)"Q%Q\J)"Q%Q\J2a5#a&)		lA$9$9:		lA$9$9:r   c                ~    \         P                  ! ^ ^ .^ ^.^ ^.^^ .^^.^^.^^ .^^.^^..	4      p\        V4       R# )r   N)r   rB   r
   )rI   r0   s   & r   test_issue_8051Test_Qhull.test_issue_8051   sT    VaVaVaVaVaVQFQFQPQFS
 	r    N)__name__
__module____qualname____firstlineno__rO   rR   __static_attributes____classdictcell____classdict__s   @r   r9   r9   |   s     $;L r   r9   c                     a  ] tR t^t o RtR tR tR tR tR t	R t
RR lt]P                  P                  ^
4      R	 4       t]P                  P                   ]P                  P                  ^4      R
 4       4       tRtV tR# )TestUtilitiesz%
Check that utility functions work.

c                x   \         P                  ! . RO\         P                  R7      p\        P                  ! V4      p\        VP                  . RO. RO.4       R FY  pVP                  VR,          4      p\        WC^,          V: R7       \        P                  ! W#R,          4      p\        WE4       K[  	  R# )	r   dtype:N   Nerr_msgNr   r   r      rh   rh   rh   r   rh      rb   rl   rh   r   ))r#   r#   rh   )      ?rn   r   )333333?皙?rh   )	r   rB   float64r@   Delaunayr   	simplicesfind_simplextsearch)rI   r0   tripir5   s   &     r   test_find_simplexTestUtilities.test_find_simplex   s    6bjjInnV$ 	S]]Y	$:;!A   2'AaDQE3cR5)A!r   c                   \         P                  ! . RO\         P                  R7      p\         P                  ! RR.\         P                  R7      p\        P                  ! V4      pVP                  V4      pVP                  V4      pVP                  V4      p\        VP                  4       F  w  rxWH^ ,          ,          p	WH^,          ,          p
WH^,          ,          p\         P                  ! W,
          W,
          4      pV\         P                  ! \         P                  ! W4      4      ,          pV\         P                  ! V^,          4      ) ,          p\         P                  ! WV,
          4      p\        Wg,          V4       K  	  R# )r   r`   gB?g?N)rf   ri   rj   )g]2ʐ?g>mj?)g~T!?g^Rz?)r   rB   rq   r@   rr   lift_pointsplane_distance	enumeraters   crosssqrtdotsignr   )rI   r   rw   rv   zpzdistr5   vx1x2x3nds   &             r   test_plane_distance!TestUtilities.test_plane_distance   s    HH 079zzCHHj*-RZZ@nnQOOA__Q!!!$cmm,DAQ4BQ4BQ4B"'*A&&A"''!A$-Aqr'"A+ -r   c                    \         P                  ! . RO\         P                  R7      p\        P                  ! V4      p\        VP                  ^^.^^.^^ .^^ ..4       R# r   r`   Nre   )r   rB   rq   r@   rr   r   convex_hullrI   r0   rv   s   &  r   test_convex_hullTestUtilities.test_convex_hull   sN    6bjjInnV$ 	S__1v1v1v1v&FGr   c                    \         P                  ! . RO4      p\        P                  ! V4      p\	        VP
                  RRRR7       \	        VP                  RRRR7       R# )	r   r<   +=zVolume of cube is incorrectrtolrd         @zArea of cube is incorrectN)r   r   r   )r   rh   r   )rh   r   r   )rh   rh   r   )r   r   rh   )r   rh   rh   )rh   r   rh   )rh   rh   rh   r   rB   r@   
ConvexHullr   volumearearI   r0   hulls   &  r   test_volume_areaTestUtilities.test_volume_area   sQ     G H'Re =	?		2E ;	=r   c                    \         P                  ! . RO4      p\        P                  ! V4      p\	        VP
                  RRRR7       \	        VP                  RRRR7       R# )	翄Q4?gY/?Hz>z(Volume of random polyhedron is incorrectr   g\4?z&Area of random polyhedron is incorrectN)
)r   gΜR@?gX&lL5?)gfNz?gjM?g{D흚j?)ga?8\?g?gw5K?)g,lnq?g6=?gU?)gw컝?g`?ga?)g+q?g\hϱ?gLg?)gGe?gE9;?gd:L?)gȊKB?gBYM?g?)g~EHy?gUdk?gmVq"?)gqp?ge?g\*L?r   r   s   &  r   test_random_volume_area%TestUtilities.test_random_volume_area   sW      	M 	N 'Ze J	L		95 H	Jr   c                   ^p^p\         P                  P                  W34      p\        P                  ! VRV^,           1R3,          RR7      p\        P                  ! VRV^,           1R3,          RR7      p\	        V^,           V4       F  p\        P                  ! VRV^,           1R3,          4      pVP                  W6V^,           1R3,          4       VP                  W6V^,           1R3,          RR7       \        VP                  VP                  RR7       \        VP                  VP                  RR7       \        VP                  VP                  RR7       \        VP                  VP                  RR7       K  	  R# )zoTest that incremental mode gives the same volume/area as
non-incremental mode and incremental mode with restartNNNNTincrementalrestartr   r   )	r   randomr@   r   r*   
add_pointsr   r   r   )rI   	nr_pointsdimr0   inc_hullinc_restart_hullrx   r   s   &       r   )test_incremental_volume_area_random_input7TestUtilities.test_incremental_volume_area_random_input  s6    	!!9"23##F6CE619$54H ++F6CE619,=4Ps1ui(A##F4AaC47O4D1uax 01''1uax(8$'GDKKtDDKK)9)@)@tLDIIx}}4@DII'7'<'<4H )r   c                   VP                   VP                  ,          p^VP                  R,           ,          pVP                  ^R7      V,          pR p\        P
                  ! \        4      P                  p	V! VP                  V4      p
\        P                  ! RR7      ;_uu_ 4        \        P                  ! V
4      P                  ^R7      \        W,
          4      V,          R8  P                  ^R7      ,          pRRR4       \        XP                  4       V R\        P                  ! V( 4       24       VR	RR
1R	3,          VR,          ,
          p\        P                  ! \!        VP"                  4       Uu. uF+  p\        P$                  P'                  WR	R	3,          4      NK-  	  up4      p\        P(                  ! VP                  R,          4      V\        P*                  ! V	4      8  ,          p\        VP                  4       V R\        P                  ! V( 4       24       VP-                  V4      pVR
8g  \        P                  ! VP                  R,          4      ,          p\        VP                  4       V R\        P                  ! V( 4       24       V'       dz   Wt8*  P/                  ^R7      pVV^V,
          8  P/                  ^R7      ,          pVR
8g  V,          p\        VP                  4       V R\        P                  ! V( 4       24       R# R#   + '       g   i     EL2; iu upi )z@Check that a triangulation has reasonable barycentric transformsr<   axisc                 l    V R,          pV R RR1R 3,          p\         P                  ! RW1V,
          4      # )r   Nz
ijk,ik->ij)r   r   r   )r   einsum)trr   rTinvs   &&  r   barycentric_transformJTestUtilities._check_barycentric_transforms.<locals>.barycentric_transform(  s3    6
AaAg;D99\4Q77r   ignore)invalidg?N r   r   )r   r   Nr   r   r   r   )r0   rs   r1   sumr   finfofloateps	transformerrstateisnanallabsr   nonzerorB   r*   nsimplexlinalgdetisfiniter   rt   any)rI   rv   rd   	unit_cubeunit_cube_tolverticessc	centroidsr   r   cokqkr   r5   at_boundarys   &&&&&            r   _check_barycentric_transforms+TestUtilities._check_barycentric_transforms  so    ::cmm,3LLaL(2-	
	8
 hhuo!!!#--;[[**!a(CKNS,@+E+E1+E+MMB + 	WIQrzz2#&789 Qss1W 55$)#,,$79$7q 99==Qq52$79 :[[u-.&2773<2GHWIQrzz2#&789 Y'2g#--"677WIQrzz2#&789$5:::BKI])::??Q?GGKr'[(BBFFH	2::rc?*;<= % +**9s   *AL* 1L>*L;	c                   \         P                  ! \        P                  P	                  \        P                  P                  \        4      R R4      4      pVR,          pVP                  4        \        P                  ! V4      p\         P                  ! VP                  R,          4      P                  4       p\        V^8  V4       V P                  V4       R# )datazdegenerate_pointset.npzr   Nr   )r   loadospathjoindirname__file__rF   r@   rr   r   r   r   r   r   )rI   r   r0   rv   	bad_counts   &    r   &test_degenerate_barycentric_transforms4TestUtilities.test_degenerate_barycentric_transformsJ  s     wwrww||BGGOOH$=v$=? @c

nnV$ HHS]]512668		B	* 	**3/r   c                F   \         P                  ! \        4      P                  p^^F^^^^^^/p\	        ^^4       EF  p\         P
                  ! ^ ^W#,          4      p\         P                  \        \        \         P                  \         P                  ! \         P                  ! V.V,          !  !  4      4      ,          P                  pRV 2p\        P                  ! V4      pV P                  WvRR7       \         P                   P#                  R4       \         P                   P%                  VP&                  ^ ,          4      R8  pWXR3;;,          ^V,          \         P                   P$                  ! WXR3,          P&                  !  R,
          ,          ,          uu&   \        P                  ! V4      pV P                  WvR^V,          R7       \        P                  ! \         P(                  WU3,          4      pV P                  WvR^V,          R7       EK  	  R	# )
rb   zndim=T)rd   r   r!   rp   r   r=   )rd   r   r   N)r   r   r   r   r*   linspacec_r   r   ravelbroadcast_arraysix_Tr@   rr   r   r   seedrandr)   r_)	rI   r   npointsr1   r   gridrd   rv   ms	   &        r    test_more_barycentric_transforms.TestUtilities.test_more_barycentric_transforms\  s    hhuo!!b!RAq!,!QKDAq'-0A55S2#6#6!T8K#LMNa  dVnG ..&C..s9= / ? IINN4 

1.4A1I3		qS	 @3 FGGI..&C..s9==>sU / D
 ..tz!23C..s9==>sU / D5  r   rT   N) Fr   )rU   rV   rW   rX   __doc__ry   r   r   r   r   r   r   pytestmark	fail_slowr   slowr   rY   rZ   r[   s   @r   r^   r^      s     
*,6H	=J(I"+>Z [[20 0" [[[[2#D  #Dr   r^   c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )TestVertexNeighborVerticesi  c                $   \        VP                  P                  ^ ,          4       Uu. uF  p\        4       NK  	  ppVP                   F4  pV F+  pV F"  pWV8w  g   K  W5,          P                  V4       K$  	  K-  	  K6  	  VP                  w  rx\        VP                  P                  ^ ,          4       Uu. uF2  p\        \        \        WV,          Wr^,           ,           4      4      NK4  	  p	p\        WV	: RV: 2R7       R# u upi u upi )r   z != rc   N)
r*   r0   r)   setrs   addvertex_neighbor_verticesr   intr   )
rI   rv   r5   expectedsr   r   indptrindicesgots
   &&        r   _check!TestVertexNeighborVertices._check  s    #()9)9!)<#=>#=aCE#=>AAv *    66 cjj..q12421 3sG1IfqSk:;<2 	 4 	SsgT(,FG ?4s   D88Dc                    \         P                  ! . RO\         P                  R7      p\        P                  ! V4      pV P                  V4       R# )r   r`   N)rf   rg   rj   r   rB   rq   r@   rr   r  r   s   &  r   test_triangle(TestVertexNeighborVertices.test_triangle  s1    /rzzBnnV$Cr   c                    \         P                  ! . RO\         P                  R7      p\        P                  ! V4      pV P                  V4       R# r   r  r   s   &  r   test_rectangle)TestVertexNeighborVertices.test_rectangle  s1    6bjjInnV$Cr   c                    \         P                  ! . RO\         P                  R7      p\        P                  ! V4      pV P                  V4       R# )r   r`   N)rf   rg   ri   rj   r=   r=   )g?r=   r  r   s   &  r   test_complicated+TestVertexNeighborVertices.test_complicated  s7     3:<**FnnV$Cr   rT   N)
rU   rV   rW   rX   r  r  r  r  rY   rZ   r[   s   @r   r  r    s     H

 r   r  c                      a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR t]P                  P!                  R]! ]4      4      R 4       tRtV tR# )TestDelaunayi  z"
Check that triangulation works.

c                    \         P                  P                  ^4      p\        \        \
        P                  V4       R# rh   N)r   ma
masked_allrG   
ValueErrorr@   rr   rI   masked_arrays   & r   test_masked_array_fails$TestDelaunay.test_masked_array_fails  s&    uu''*j%..,?r   c                    \         P                  ! RRR^\         P                  3.\         P                  R7      p\	        \
        \        P                  V4       R# )r   r`   Nrf   rg   ri   )r   rB   nanrq   rG   r  r@   rr   rI   points_with_nans   & r   test_array_with_nans_fails'TestDelaunay.test_array_with_nans_fails  s7    ((E5%!BFF#DBJJWj%../Br   c           
     
   \        ^^4       F  p\        P                  ! V^,           V34      p\        V4       F	  pRW#V3&   K  	  RVR&   \        P                  ! V4      pVP
                  P                  4        \        VP
                  \        P                  ! V^,           \        R7      R,          4       \        VP                  R\        P                  ! V^,           \        R7      R,          ,           4       K  	  R# )rb   r<   r`   Nr   )r   r   )Nr   )r*   r   zerosr@   rr   rs   r   r   aranger  	neighbors)rI   ndr0   r5   rv   s   &    r   test_nd_simplexTestDelaunay.test_nd_simplex  s    1+BXXr!tRj)F2Y!s F4L..(CMM 		"Q$c(B7(KLRXXr!tC-H-P(PQ r   c                    \         P                  ! . RO\         P                  R7      p\        P                  ! V4      p\        VP                  . RO. RO.4       \        VP                  . RO. RO.4       R# )r   r`   Nre   rk   rm   )r   r   rh   )r   r   r   )r   rB   rq   r@   rr   r   rs   r-  r   s   &  r   test_2d_squareTestDelaunay.test_2d_square  sK    6bjjInnV$S]]Y	$:;S]][+$>?r   c                   \         P                  ! . RO\         P                  R7      p\         P                  ! . RO\         P                  R7      p\         P                  W3,          p\         P                  W"3,          p\        P
                  ! \         P                  W3,          4       \        P
                  ! \         P                  W43,          4       R# )r   r`   N)r   rh   r   rh   )r   r   rh   rh   )r   rB   rq   r   r@   rr   r   )rI   r   rK   xpyps   &    r   test_duplicate_points"TestDelaunay.test_duplicate_points  sv    HH\4HH\4UU14[UU14[ 	ruuQT{#ruuRV}%r   c                   \         R ,          p\        P                  ! V4      p\        VP                  VP
                  ,          P                  4       VP                  4       4       \        VP                  VP
                  ,          P                  4       VP                  4       4       \         R,          p\        P                  ! V4      p\        VP                  VP
                  ,          P                  4       VP                  4       4       \        VP                  VP
                  ,          P                  4       VP                  4       4       R# )r%   r&   N)r(   r@   rr   r   r0   rs   maxminr   s   &  r   test_pathologicalTestDelaunay.test_pathological  s    *+nnV$SZZ.224fjjlCSZZ.224fjjlC*+nnV$SZZ.224fjjlCSZZ.224fjjlCr   c                P   \         P                  P                  ^
^4      p\         P                  W3,          p\        P
                  ! VRR7      p\        \         P                  ! VP                  P                  4       4      \         P                  ! \        V4      4      4       R# )
   z	QJ Qbb Ppqhull_optionsN)r   r   r   r   r@   rr   r   uniquers   r   r,  r+   r   s   &  r   test_joggleTestDelaunay.test_joggle  sh     A&v~&nnV;?299S]]%8%8%:;99S[1	3r   c                   \         P                  P                  ^
^4      p\         P                  W3,          p\        P
                  ! V4      p\        \        \         P                  ! VP                  P                  4       4      4      \        V4      ^,          8H  4       \        \        VP                  4      \        V4      ^,          8H  4       \        \        \         P                  ! VP                  R,          4      4      \        V4      ^,          8H  4       \        \         P                  ! VP                  ^ 8  4      4       R# )r?  N)r   rb   )r   r   r   r   r@   rr   r   r+   rB  rs   r   coplanarr   vertex_to_simplexr   s   &  r   test_coplanarTestDelaunay.test_coplanar  s    A&v~&nnV$BIIcmm11345VaGHCLL!S[!^34BIIcll3/01S[!^CDs,,123r   c                    . ROp\         P                  ! VRR7      p\        P                  ! RR.4      p\	        VP
                  V4       R# )r   Tfurthest_siteNrf   rg   rj   r  )皙?rN  )rh      r   )rO  rb   r   )r@   rr   r   rB   r   rs   )rI   r0   rv   r  s   &   r   test_furthest_siteTestDelaunay.test_furthest_site  s8    AnnV4888Y	233==(3r   r.   c                   \         V,          w  r#\        P                  ! V^ R7      p\        P                  ! V^ ,          RVR7      pVR,           F  pVP                  V4       K  	  \        P                  ! V4      p\        P                  ! V^ ,          RVR7      p\        V4      ^8  d1   VP                  \        P                  ! VR,          ^ R7      RR7       VP                  R4      '       d   \        \        P                  ! VP                  P                  4       4      \        P                  ! VP                  ^ ,          4      4       \        \        P                  ! VP                  P                  4       4      \        P                  ! VP                  ^ ,          4      4       M&\        VP                  VP                  \        R7       \        VP                  VP                  \        R7       R# )	r   r   Tr   rA  rh   NNr   pathologicalr?   N)r-   r   concatenater@   rr   r   r+   
startswithr   rB  rs   r   r,  r)   r    r   )	rI   r.   r4   r2   r0   objchunkobj2obj3s	   &&       r   test_incrementalTestDelaunay.test_incremental  s\    ,D1Q/nnVAYD+/1BZZENN5!   ~~f%~~fQiT,02v;?OOBNN6":A>$(  * ??>** ryy)<)<)>?!yya9;ryy)=)=)?@!yya9; .cmmT^^2>@ 	*$..$...:	<r   rT   N)rU   rV   rW   rX   r   r"  r(  r/  r2  r7  r<  rC  rH  rP  r   r   parametrizer   r-   r\  rY   rZ   r[   s   @r   r  r    sh     @CR@	&
D	344 [[VV,@%AB!< C!<r   r  c                    \        \        \        V4      4      p\        \        \        V4      4      pW8w  Ed3   V P                  ^,          ^8X  Ed   R\        P
                  ! \        4      P                  ,          pV EF  w  rEV EF  w  rgW,          W,          ,
          pV\        P                  P                  V4      ,          p\        P                  ! V^,          ) V^ ,          .4      p	\        P                  ! WV,          W,          ,
          4      p
\        P                  ! WV,          W,          ,
          4      p\        P                  ! \        P                  ! W4      ^ 4      '       g   K  \        P                  ! \        P                  ! W4      ^ 4      '       g   EK#  \        P                  ! WV,          W,          ,
          4      p
\        P                  ! WV,          W,          ,
          4      p\        P                  ! WV,          W,          ,
          4      pW) 8  g   WV,           8  d   EK  W) 8  g   WV,           8  d   EK   EK  	  \        R4      h	  R# \        W4       R# )rh   i  zcomparison failsN)r  r   r   r)   r   r   r   r   r   normrB   r   allcloseAssertionErrorr   )r0   facets_1facets_2r   r   r   apbptr   c1c2c3s   &&&          r   assert_hulls_equalrk  )  s    3|X./H3|X./HQ1 4 RXXe_(((DA"J+RYY^^A&&HHqteQqT]+ VVAay6:56VVAay6:56{{266"=!44{{266"=!44 VVAay6:56VVAay6:56VVAbzFJ679#X9#X 1 #4 %%7887 < 	$r   c                   (  a  ] tR tRt o R tR t]P                  P                  R]	! ]
4      4      R 4       t]P                  P                  R]	! ]4      4      R 4       tR tR t]P                  P                  R	R
R.4      R 4       t]P                  P                  RRR.4      ]P                  P                  R]P$                  ! RR..4      ]P$                  ! . RO]R7      3]P$                  ! RR..4      ]P$                  ! . RO]R7      3]P$                  ! RR..4      ]P$                  ! . R O]R7      3]P$                  ! RR.RR..4      ]P$                  ! . R!O]R7      3]P$                  ! RR"..4      ]P$                  ! . RO]R7      3.4      R 4       4       t]P                  P                  R	R
R.4      R 4       t]P                  P                  R	R
R.4      R 4       t]P                  P                  R	R
R.4      R 4       tRtV tR# )#TestConvexHulli`  c                    \         P                  P                  ^4      p\        \        \
        P                  V4       R# r  )r   r  r  rG   r  r@   r   r   s   & r   r"  &TestConvexHull.test_masked_array_failsa  s(    uu''*j%"2"2LAr   c                    \         P                  ! RR^\         P                  3.\         P                  R7      p\	        \
        \        P                  V4       R# )r   r`   Nrf   ri   )r   rB   r%  rq   rG   r  r@   r   r&  s   & r   r(  )TestConvexHull.test_array_with_nans_failse  s7    ((E51RVV*#=RZZPj%"2"2ODr   r.   c                   \         V,          p\        P                  ! V4      p\        P                  ! V4      p\	        W#P
                  VP                  4       VP                  ^,          ^8X  dK   \        \        P                  ! VP                  4      \        P                  ! VP                  4      4       R# \        \        P                  ! VP                  4      VP                  4       R# r  )r(   r@   rr   r   rk  r   rs   r)   r   r   rB  r   r   )rI   r.   r0   rv   r   s   &&   r   test_hull_consistency_tri(TestConvexHull.test_hull_consistency_trii  s     $nnV$'6??DNNC <<?a4>>2BGGDMM4JK4>>2DMMBr   c                >   \         V,          w  r#\        P                  ! V^ R7      p\        P                  ! V^ ,          RR7      pVR,           F  pVP                  V4       K  	  \        P                  ! V4      p\        P                  ! V^ ,          RR7      p\        V4      ^8  d1   VP                  \        P                  ! VR,          ^ R7      RR7       \        WEP                  VP                  4       \        WEP                  VP                  4       R# )r   r   Tr   rT  r   N)	r-   r   rV  r@   r   r   r+   rk  rs   )	rI   r.   r4   _r0   rX  rY  rZ  r[  s	   &&       r   r\  TestConvexHull.test_incrementalz  s     ).	Q/vayd;BZZENN5!   'q	t<v;?OOBNN6":A>$(  * 	6==$..A6==$..Ar   c           	        \         P                  P                  R 4       \         P                  P                  ^^4      p\        P
                  ! V4      p\        \         P                  ! VP                  4      \         P                  ! VP                  4      4       VP                  VP                  ,          P                  w  r4\         P                  ! WDP                  4       ,
          W3P                  4       ,
          4      p\        \         P                   ! \         P"                  ! \         P$                  ! V4      4      ^ 8  4      4       R# )r!   N)r   r   r   r   r@   r   r   rB  rs   r   r   r0   r   arctan2meanr   r   diffunwrap)rI   r0   r   r   rK   angles   &     r   test_vertices_2dTestConvexHull.test_vertices_2d  s    
		tA&'RYYt~~.0FG {{4==)++

1vvx<VVX6rwwryy/01456r   c                    \         P                  ! . RO4      p\        P                  ! V4      p\	        VP
                  RRR7       \	        VP                  RRR7       R# )r   r<   r   r   r   Nr   r   r   s   &  r   r   TestConvexHull.test_volume_area  sG     G Hv&

BU3"51r   r   FTc                    \         P                  ! R R .R R.RR.RR .RR..4      p\        P                  ! VVRR7      p\         P                  ! . RO\        R7      pVP
                  p\        WT4       R# )	rp   皙?ro   333333?QG4r0   r   rA  r`   N)FTFFr   rB   r@   r   boolgoodr   rI   r   r0   r   r  actuals   &&    r   test_good2dTestConvexHull.test_good2d  sw     C:::::	' (
 v,7.35 887tDV&r   
visibilityr  zQG-4znew_gen, expectedro   gffffff?r`   g=
ףp=?r=   r  c                   \         P                  ! R R .R R.RR.RR .RR..4      p\        P                  ! VRVR7      pVP	                  V4       VP
                  pRV9   d   \         P                  ! V4      p\        Wb4       R# )rp   r  ro   r  Tr  -N)r   rB   r@   r   r   r  invertr   )rI   new_genr  r  r0   r   r  s   &&&&   r   test_good2d_incremental_changes.TestConvexHull.test_good2d_incremental_changes  s    N C:::::	' (
 v,0.8: 	 *yy*HV&r   c                &   \         P                  ! R R .R R.RR.RR .RR..4      p\        P                  ! VVR7      pVP                  pVe   Q hV'       d:   VP                  \         P                  ! R4      4       VP                  pVe   Q hR# R# )rp   r  ro   r  )r0   r   Nrh   rb   )r   rB   r@   r   r  r   r+  )rI   r   r0   r   r  s   &&   r   test_good2d_no_option$TestConvexHull.test_good2d_no_option  s     C:::::	' (
 v,79~~OOBHHV,-YYF>!> r   c                    \         P                  ! R R .R R.RR.RR .RR..4      p\        P                  ! VVRR7      p\         P                  ! . RO\        R7      pVP
                  p\        WT4       R# )rp   r  ro   r  r  r`   N)FFFFr  r  s   &&    r   test_good2d_inside!TestConvexHull.test_good2d_inside  sw    
 C:::::	' (
 v,7.35 888EV&r   c                    \         P                  ! . RO. RO. RO. RO. R	O.4      p\        P                  ! VVRR7      p\         P                  ! . R
O\        R7      p\        VP                  V4       R# )r"   QG0r  r`   Nr"   r"   r"   )gN7?g+xٿgg>@?)gFE%'?gWۧ=g/J?)g6r?gtĭ4gŷ)gw6y?gQgb?)TFFF)r   rB   r@   r   r  r   r  )rI   r   r0   r   r  s   &&   r   test_good3dTestConvexHull.test_good3d  sb     ?@@A@	B C
 v,7.35 887tDTYY)r   rT   N)FFFFFgffffff)FTFFF)FFFTT)FFTFFg433333?)rU   rV   rW   rX   r"  r(  r   r   r^  r   r(   rs  r-   r\  r~  r   r  r   rB   r  r  r  r  r  rY   rZ   r[   s   @r   rm  rm  `  sA    BE [[VVH%56C 7C  [[VV,@%ABB CB(72 [[]UDM:' ;' [[\#$,  ! [[0 
C:,		5T	B	D
 
C;-	 	4D	A	C
 
C;-	 	34	@	B 
C:Sz*	+	4D	A	C 
C%&	'	5T	B	D93
 >'?	!F'$ [[]UDM:" ;"$ [[]UDM:' ;'  [[]UDM:* ;*r   rm  c                     a  ] tR tRt o ]P
                  P                  RRR.4      ]P
                  P                  R^2^d.4      ]P
                  P                  R^^.4      R 4       4       4       tR tR t	R t
]P
                  P                  R	]! ]4      4      R
 4       tR tR t]P
                  P!                  ^
4      ]P
                  P                  R	]! ]4      4      R 4       4       tRtV tR# )TestVoronoii  zqhull_opts, extra_ptsn_ptsr1   c                   \         P                  P                  R 4      pVP                  W$34      p\        WaR7      pVP                  pVP                  4       V^,
          V,           8X  g   Q hVP                  \        VP                  4      V,
          8X  g   Q h\        VP                  4      W#,           8X  g   Q hVP                  P                  ^ ,          V8X  g   Q hV'       dW   VP                   U	u. uF  p	\        V	4      NK  	  p
p	V
P                  ^ 4      ^8X  g   Q hV
P                  ^ 4      V9  g   Q hR# R# u up	i )in  r@  N)r   r   default_rngr
   point_regionr:  sizer+   regionsr0   r)   countindex)rI   
qhull_optsr  	extra_ptsr1   rngr0   vor	pt_regionr   sublenss   &&&&&      r   test_point_region_structure'TestVoronoi.test_point_region_structure  s
    ii##D)UM*f7$$	}}%!)i"7777~~S[[!1I!====3;;5#4444zz"e+++ '*{{3{!s1v{G3 ==#q(((==#9444 3s   8Ec                    \         P                  P                  ^4      p\        \        \
        P                  V4       R# r  )r   r  r  rG   r  r@   r
   r   s   & r   r"  #TestVoronoi.test_masked_array_fails@  s&    uu''*j%-->r   c                4    . ROpRpV P                  W4       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
        N)	rf   rg   )r   rb   rj   ri   r  )rb   r   )rb   rh   )rb   rb   _compare_qvoronoirI   r0   outputs   &  r   test_simpleTestVoronoi.test_simpleD  s!    *
@ 	v.r   c                   VP                  4       P                  4        Uu. uF*  p\        \        \        VP                  4       4      4      NK,  	  pp\        V^,          ^ ,          4      p\        \        \        V^^V,            4      4      p\        V^,          ^,          4      pV^V,           ^V,           V,             UUu. uF,  pVR,           Uu. uF  p\        V4      ^,
          NK  	  upNK.  	  p	ppV^V,           V,           R  UUu. uF%  pVR,           Uu. uF  p\        V4      NK  	  upNK'  	  p
ppV^V,           V,           R  UUu. uF,  pVR,           Uu. uF  p\        V4      ^,
          NK  	  upNK.  	  ppp\        P                  ! V3/ VB pR p\        VP                  V4       \        \        \        \        VP                  4      4      \        \        \        V	4      4      4       \        \        \        \        W4      4      \        \        W4      4      4      4      p\        \        \        \        WP                   P#                  4       4      4      \        \        WP$                  4      4      4      4      pVP'                  4        VP'                  4        \        W4       R# u upi u upi u uppi u upi u uppi u upi u uppi )z:Compare to output from 'qvoronoi o Fv < data' to Voronoi()rT  N:rh   rl   N:rl   NNc                 *    \        \        V 4      4      # r   r   r   s   &r   	sorttuple0TestVoronoi._compare_qvoronoi.<locals>.sorttuple  s    ##r   )strip
splitlinesr   r   r   splitr  r   r@   r
   r   r   r   r  r  zipridge_pointsr   ridge_verticesr   )rI   r0   r  kwr   nvertexr   nregionrK   r  r  r  r  r  p1p2s   &&&,            r   r  TestVoronoi._compare_qvoronoim  sc    8>||~7P7P7RS7R!$s5!''),-7RSfQil#E6!AgI#678fQil#"1W9QwYw->?A?q '(e,eCF1HHe,? 	 A "('	'(9(:!;=!;A *+30AQ0!; 	 = $*!G)G*;*<#=?#=a ./rU3U3q6!88U3#= 	 ? mmF)b)	$ 	h/SUCKK01UG,-	/ #d3y783y9:< =#d3y*:*:*A*A*CDE3y*<*<=>@ A
	
	R9 T - A0 =3 ?sM   0J>KK0KK K4KK$K?KKKKr.   c                F   \         V,          p\        V4      p\        P                  ! V4      pVP                  P                  4        F  w  rV\        P                  ! \        P                  ! V4      ^ 8  4      '       g   K:  VP                  V,          P                  ^ R7      pRW%^ ,          ,          V,
          ,          pVP                  Wx,           ^R7      w  r\        W^ ,          4       VP                  Wx,
          ^R7      w  r\        W^,          4       K  	  R# )r   r   gư>)r   N)r(   KDTreer@   r
   
ridge_dictitemsr   r   asarrayr   rz  queryr   )rI   r.   r0   treer  rw   r   ridge_midpointr   r   r   s   &&         r   test_ridgesTestVoronoi.test_ridges  s     $f~mmF#NN((*DA66"**Q-1,-- \\!_11q19Nt~56Ajj!3qj9GDaD!jj!3qj9GDaD! +r   c                8    . ROpRpV P                  WRR7       R# )r   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
        TrK  NrM  r  r  s   &  r   rP  TestVoronoi.test_furthest_site  s#    A$ 	vTBr   c                    . ROp\        V4      p\        VP                  R4       \        VRR7      p\        VP                  R4       R# )r   FTrK  NrM  )r
   r   rL  )rI   r0   r  s   &  r   test_furthest_site_flag#TestVoronoi.test_furthest_site_flag  s<    AfoS&&u-f40S&&t,r   c                  aaa \         V,          ^ ,          ^ ,          P                  ^,          ^8  d   R# \         V,          w  r#\        P                  ! V^ R7      p\        P
                  ! V^ ,          RVR7      pVR,           F  pVP                  V4       K  	  \        P
                  ! V4      p\        P
                  ! V^ ,          RVR7      p\        V4      ^8  d1   VP                  \        P                  ! VR,          ^ R7      RR7       \        \        VP                  4      \        VP                  4      4       \        \        VP                  4      \        VP                  4      4       WX3 F  oR	R	/o\        SP                  4       FF  w  r\        VP                  4       F(  w  r\        P                  ! W4      '       g   K#  VSV	&   K*  	  KH  	  VVV3R loR p\        V! S! SP                  4      4      V! VP                  4      4       \        V! S! SP                  4      4      V! VP                  4      4       K  	  R# )
r   Nr   TrS  rT  r   c                    < \        V R 4      '       d"   \        V  Uu0 uF  pS! V4      kK  	  up4      #  SV ,          # u upi   \         d)   pRSP                  T ,          : 2p\	        T4      ThRp?ii ; i)__len__z*incremental result has spurious vertex at N)hasattrr   KeyErrorr   rb  )r   rK   emessageobjxremap
vertex_maps   &   r   r  +TestVoronoi.test_incremental.<locals>.remap  s|    1i(( A!6Aq%(A!6779%a=( "7   9"%%)]]1%5$8 :G(1q89s   ?A A7#A22A7c                     \        \        \        V 4      4      pRV9   d   VP                  R4       V U u. uF  p \	        V 4      ^8  g   K  V NK  	  pp VP                  4        V# u up i )rh   rT   )r  r   r   remover+   r   )r   r  s   & r   
simplified0TestVoronoi.test_incremental.<locals>.simplified  sY    Ca01;LL$$)8EqSVaZE8

 9s   A'A'r   )r-   r)   r   rV  r@   r
   r   r+   r   r  r~   r   ra  r  r  )rI   r.   r4   r2   r0   rX  rY  rZ  r[  rx   r   r5   v2r  r  r  r  s   &&            @@@r   r\  TestVoronoi.test_incremental  s   
  %a(+11!4q8+D1Q/mmF1I4+/1BZZENN5!   }}V$}}VAYD+/1v;?OOBNN6":A>$(  * 	S))*C0A0A,BCS))*C0A0A,BC IDbJ!$--0&t}}5EA{{1))()
1 6 1
9 5./4<<( 5!4!4564../; r   rT   N)z	Qbb Qc Qzrh   )zQbb Qcr   )rU   rV   rW   rX   r   r   r^  r  r"  r  r  r   r(   r  rP  r  r   r-   r\  rY   rZ   r[   s   @r   r  r    s     [[4 		7  [[Wr3i0[[VaV,5 - 154?'/R D [[VVH%56" 7"0C0- [[2[[VV,@%AB= C =r   r  c            
         a  ] tR tRt o RR lt]P                  P                  R]P                  ]
.4      R 4       tR tR tR tR t]P                  P                  R	]! ^^4      4      R
 4       t]P                  P                  R]P$                  ! . RO4      ]P$                  ! . RO. RO. RO.4      .4      R 4       tR tR tR tRtV tR# )Test_HalfspaceIntersectioni  c                   \        VP                  VP                  4       \        P                  ! VP                  ^ ,          3\        R7      pV Fc  p\        P
                  ! \        W%,
          4      V8  P                  ^R7      4      ^ ,          p\        VP                  R4       RWF^ ,          &   Ke  	  \        VP                  4       4       R# )z2Check that every line in arr1 is only once in arr2r`   r   TN)rh   )	r   r)   r   r+  r  r   r   r   r   )rI   arr1arr2r   truthsl1indexess   &&&&   r   assert_unordered_allclose4Test_HalfspaceIntersection.assert_unordered_allclose  s    TZZ,4::a=*$7Bjj#di.4"7!<!<!!<!DEaHG-!%F1:  	

r   dtc                   \         P                  ! . RO. RO. RO. RO.VR7      p\         P                  ! ^^.VR7      p\         P                  ! RR.RR.RR.RR..4      p\        P                  ! W#4      p\	        VP
                  V4       R# )	rh   r`   r"   r>   N)r   r   r   )r   r   r   )rh   r   )r   rh   r  )r   rB   r@   HalfspaceIntersectionr   intersections)rI   r  
halfspacesfeasible_pointr0   r   s   &&    r    test_cube_halfspace_intersection;Test_HalfspaceIntersection.test_cube_halfspace_intersection  s    XXz)))+ 356
 1a&3C:SzC:SzJK**:F**F3r   c           	        \         P                  P                  \         P                  P                  \        4      R R4      p\
        P                  ! V4      p\
        P                  ! VR,          VR,          34      ) p\
        P                  ! . RO4      p\        P                  ! W44      p\        VP                  P                  R	4       \        VP                  R4       \        \!        VP"                  4      ^4       VP"                   F  p\        \!        V4      ^4       K  	  VR,          VRRR
13,          P%                  V4      ,           pV P'                  VRRR
13,          P(                  V,          P(                  VP*                  4       \,        P.                  ! . RO4      pV F@  p	\        \
        P0                  ! VP                  V	8H  P3                  ^R7      4      ^4       KB  	  R# )r   zselfdual-4d-polytope.txtr   g      @@Nr   )r   rT  )r   :Nrh   N)r"   r"   r"   r"   )   rO  r   )r   r   )r"   r"   r=         )r   r   r   r   r   r   
genfromtxthstackrB   r@   r  r   r  r)   r   dual_volumer+   dual_facetsr   r  r   dual_points	itertoolspermutationsr   r   )
rI   fnameineqsr  
feas_pointhsfacetdistsr0   points
   &         r   $test_self_dual_polytope_intersection?Test_HalfspaceIntersection.test_self_dual_polytope_intersection&  sh   RWW__X679e$iiuuU| <==
XX./
((@R%%++W5BNND1S("-^^EUQ' $ 5!Jq#2#v$6$:$::$FF&&
1crc6(:(<(<U(B'E'Er~~V''(;<E!1!1U!: ? ?Q ? GH!L r   c                   \         P                  ! . RO. RO. RO. RO.4      p\         P                  ! . RO4      p\        \        \        P
                  W4       \         P                  ! R.R..4      p\        \        \        P
                  W4       \         P                  ! RR..4      p\        \        \        P
                  W4       \         P                  ! RR.4      p\        \        P                  \        P
                  W4       R# )	r<   r=   N)      r"   r"   )r"   r  r"   r<   r"   r  r"   r<   r  r=   r=   r=   r  )r   rB   rG   r  r@   r  
QhullError)rI   r  r  s   &  r   test_wrong_feasible_point4Test_HalfspaceIntersection.test_wrong_feasible_point=  s    XX////1 2
 /2j11:	OC53%.1j11:	OC:,/j11:	O 4,/e&&11:	Or   c           	     >   \         P                  ! . RO. RO. R	O. R
O. RO. RO.4      p\         P                  ! . RO. RO. RO. RO.4      p\         P                  ! R..^,          4      p\         P                  ! \         P                  ! W") 34      V34      p\         P                  ! . RO4      p\        P
                  ! WRR7      p\        P
                  ! WRR7      p\        V4       EF  w  rVP                  V	\         P                  R3,          4       VP                  V	\         P                  R3,          RR7       \         P                  ! WRV^,           1R3,          34      p
\        P
                  ! W4      p\        VP                  VP                  4       \        VP                  VP                  4       \        VP                  VP                  4       V P                  VP                  VP                  4       EK   	  VP                  4        R# )r"   Tr   r   r   Nr  )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<   )rh   r  r  r  )r   rB   r  vstackr@   r  r~   add_halfspacesnewaxisr   r  r  r  rF   )rI   r  extra_normalsoffsetsextra_halfspacesr  inc_hs
inc_res_hsrx   ehstotalr  s   &           r   r\  +Test_HalfspaceIntersection.test_incrementalT  s   XX2221113 4
 ,"/"/"/"1 2 ((SE719%99bii0O&P&-&/ 0 XXl+
,,ZQUV00=AC
   01FA!!#bjj!m"45%%c"**a-&8$%GIIzDQqSD!G+DEFE,,U?BF--z/D/DEF--r}}= B,,j.F.FG**6+?+?AQAQR 2" 	r   c           	        \         P                  ! . RO. RO. RO. RO. RO. RO.4      p\         P                  ! . RO4      p\        P                  ! W4      p\         P                  ! . R	O. R
O. RO. RO. RO. RO.4      p. RO. RO. RO. RO. RO. RO. RO. RO.p\	        V4      \	        VP
                  4      8X  g   Q h\        WSP
                  4       F   w  rg\        V4      \        V4      8X  d   K   Q h	  \        VP                  V4       R# )r<   N)r  r"   r"   r"   )r<   r"   r"   r  )r"   r  r"   r"   )r"   r<   r"   r  )r"   r"   r  r"   )r"   r"   r<   r  r  )r  r   r   )rb   r   r   )r   r  r   )r   rb   r   )r   r   r  )r   r   rb   )rb   rO  r   )rO  rb   rh   )   rb   r   )rb   r'  rh   )rl   rO  rh   )rO  rl   r   )r'  rl   rh   )rl   r'  r   )
r   rB   r@   r  r+   r  r  r  r   r  )rI   r  r  r  qhalf_pointsqhalf_facetsr   r   s   &       r   	test_cube$Test_HalfspaceIntersection.test_cube  s    XX0000002 3
 )((; xx!   < C$7777nn5DAq6SV### 6 	5r   r   c                   \         P                  ! . RO. R	O. R
O. RO.4      p\         P                  ! . RO. RO. RO. RO.4      p\        P                  ! V\         P                  ! RR.4      RR7      pVP	                  V^ V1R3,          4       VP	                  W1^1R3,          4       VP                  4        \         P                  ! R R .R R.RR .RR..4      pVP                  p\         P                  ! VR,          VR,          34      p\         P                  ! VR,          VR,          34      p\        Wg,          WX,          4       R# )r<   gC6?ga+e?Tr   r   N)r<   r"          r  )r  r"   r-  )r"   r<   r-  )r"   r  r-  r  )r  r"   r  r  )r"   r  r  )r   rh   )r   r   )	r   rB   r@   r  r  rF   r  lexsortr   )	rI   r   
big_squaresmall_squarer  expected_intersectionsactual_intersectionsind1ind2s	   &&       r   test_halfspace_batch/Test_HalfspaceIntersection.test_halfspace_batch  s;    XX...0 1

 xx!0!0!0!2 3
 (()+662B)C59; 	,qs1u-.
,s1u-.

 "$B8,.9,/9,/:+7 "8  "// zz/57KD7QRSzz1$79OPT9UVW,24J4PQr   r  c                \   \         P                  ! . RO. RO. RO. R	O.4      p\        P                  ! V\         P                  ! ^4      RR7      p\
        P                  ! \        P                  RR7      ;_uu_ 4        VP                  V4       RRR4       R#   + '       g   i     R# ; i)
rh   Tr   zfeasible.*-0.706.*matchNrh   r   r   r   rh   r   r   r   r   r   r   r   	r   rB   r@   r  r+  r   r   r  r  )rI   r  initial_squareincremental_intersectors   &&  r   test_gh_19865(Test_HalfspaceIntersection.test_gh_19865  sz     (([+F #("="=n>@hhqkJN#P ]]5++3GHH#22:> IHHHs   >BB+	c           	        \         P                  ! . RO. RO. RO.4      p\         P                  ! . R	O. R
O. RO. RO. RO. RO.4      p\        P                  ! V\         P                  ! ^4      RR7      p\
        P                  ! \        P                  RR7      ;_uu_ 4        VP                  V4       RRR4       R#   + '       g   i     R# ; i)rh   Tr   zfeasible.*[1 0 0 0]r8  N)rh   rh   rh   r   )r   r   r   r   )rh   r   r   r   )rh   r   r   r   )r   r   r   r   )r   rh   r   r   )r   r   r   r   )r   r   rh   r   )r   r   r   r   r>  )rI   r  initial_cuber@  s   &   r   test_gh_19865_3d+Test_HalfspaceIntersection.test_gh_19865_3d  s     XX}/+- .
 xx!/!.!/!.!/!1 2 #("="=l>@hhqkJN#P ]]5++3HII#22:> JIIIs   #B??C	c                p   \         P                  ! . RO. RO. RO. R	O.4      p\        P                  ! V\         P                  ! ^4      RR7      p\
        P                  ! \        RR7      ;_uu_ 4        VP                  \         P                  ! R
4      4       RRR4       R#   + '       g   i     R# ; i)rh   Tr   z2D arrayr8  Nr:  r;  r<  r=  )rO  rO  rO  )
r   rB   r@   r  r+  r   r   r  r  onesrI   r?  r@  s   &  r   test_2d_add_halfspace_input6Test_HalfspaceIntersection.test_2d_add_halfspace_input  s{     (([+F #("="=n>@hhqkJN#P ]]:Z88#2227793EF 9888s   4&B$$B5	c                   \         P                  ! . RO. RO. RO. RO.4      p\        P                  ! V\         P                  ! ^4      RR7      p\        VP                  \         P                  ! ^4      4       VP                  \         P                  ! . RO4      4       \        VP                  \         P                  ! ^4      4       R# )	rh   Tr   Nr:  r;  r<  r=  )rb   rb   r   )	r   rB   r@   r  r+  r   dual_verticesr,  r  rI  s   &  r   test_1d_add_halfspace_input6Test_HalfspaceIntersection.test_1d_add_halfspace_input  s    (([+F #("="=n>@hhqkJN#P 	/==ryy|L..rxx
/CD/==ryy|Lr   rT   N)r   )gJpgzS_-ݿg-|d?)g#?g'ݿg1&ܯkݿ)r"   g:e|?gđ"ֿ)rU   rV   rW   rX   r  r   r   r^  r   rq   r  r  r  r  r\  r*  r*   r5  rB   rA  rE  rJ  rN  rY   rZ   r[   s   @r   r  r    s     	 [[TBJJ#454 64M.O.)V"6H [[S%!*-R .RD [[\XX45XX65-/ 0, ???&
G
M 
Mr   r  diagram_typec                     \         P                  P                  ^{4      pVP                  R4      p\        P                  ! \
        RR7      ;_uu_ 4        V ! V4       RRR4       R#   + '       g   i     R# ; i){   
dimensionsr8  N)rO  r?  rl   )r   r   r  r   r   r  )rP  r  invalid_datas   &  r   test_gh_20623rU    sL    
))


$C::j)L	z	6	6\" 
7	6	6	6s   	A((A9	c                     \         P                  ! ^ ^ .^ R.^^ .^^..4      p \        P                  ! V 4      p\        P
                  ! \        4      ;_uu_ 4        VP                  ^4       RRR4       \        P
                  ! \        4      ;_uu_ 4        VP                  V4       RRR4       R#   + '       g   i     LN; i  + '       g   i     R# ; i)r   rN  N)r   rB   r@   rr   r   r   
IndexErrorrt   
generatorsrv   s     r   test_gh_21286rZ    s    Aq6As8aVaV<=J
..
$C	z	"	" 
#	z	"	" 	 
#	" 
#	"	"	"	"s   B3C3C	C	c                     \         P                  ! ^ ^ .^ R.^^ .^^..4      p \        P                  ! V 4      p\        P
                  ! \        4      ;_uu_ 4        VP                  . RO4       RRR4       R#   + '       g   i     R# ; i)r   rN  N)rb   rb   rb   )r   rB   r@   rr   r   r   r  rt   rX  s     r   test_find_simplex_ndim_errr\    sc    Aq6As8aVaV<=J
..
$C	z	"	"# 
#	"	"	"s   A99B
	)rf   rg   rj   ri   r  )r=   g      ?gQ	gzGgQgHzGr   )rh   rO     )9r   rC   numpyr   numpy.testingr   r   r   r   r   r   r   rG   scipy.spatial._qhullspatial_qhullr@   scipy.spatialr	   r  r
   r  r   r   r    r   r   r0   rB   pathological_data_1r   rq   r   pathological_data_2r   bug_2850_chunksbug_2850_chunks_2r  r(   r-   r7   r.   r/   r9   r^   r  r  rk  rm  r  r  r   r^  rr   rU  rZ  r\  rT   r   r   <module>rh     sL   	  I I  * $ $ + !  16 	 		t 	=hh  
5M %= #(- 27 
3K   %d| .3D\  4L  -  #(  27u  5M	  #;	  "'t	  05Tl	 
 4L 
 , 
 "'u 
 16d|  5M  #;  "'t  05Um  5M  $<  #(  16e}  4L  -  #(  27u  3K    !&d|  /4D\  	K  e   #5k  -0;  :=S	  	J  T
  !J  *-T
  6:%L  
%L  ,  "&c
  .2$K  
$K  t   $El  .2$K  
%L  ,  "&d  /34[  
%L  *   $Dk  -1<   
$K!   u!   !%U|!   /35\! " 
%L# " *# "  $Dk# " -1;# $ 
$K% $ t% $  $El% $ .2%L% & 
%L' & ,' & "&c
' & .2$K' ( 
$K) ( t) (  $Dk)   . hhHr1gAwGaVaVRXXbjj!%%%&AA    99>>"a(88aUQqEAa51Q%89
 %iinnR+RXX!uqeaUQqE&BCCEE 
 2::f%A&A&A&A&A&A&A&)) $'$d+ 44 D	dI&  
+ +\XD XDv B@< @<F4%nz* z*xk k`xM xMv '5>>)BC# D#	$r   