
    (ph"                        S SK r S SKrS SKrS SKJrJrJrJrJ	r	  S SK
r
S SK
Jr  S SKJs  Jr  S SKJr  S SKJr  S SKrS r\4S jr\R2                  R5                  S5        / S	Qr\R8                  " / S
S
/PS
S/PS
S/PS
S/PS
S/PS
S/PS
S/PS
S/PS
S/PSS
/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS
/PSS/PSS/PSS/PSS/PSS/PSS
/PSS/PSS/PSS/PSS/PSS/PSS/PSS
/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS
/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS
/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS
/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS
/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/P5      r\R8                  " SS/SS /SS/S S/S S /S S/SS\R<                  " \R>                  5      R@                  -
  /SS /SS//	5      r!\R2                  RE                  SS5      \R8                  " S S /S S/SS /SS//5      /r#\#\R2                  RE                  SS5      S\R8                  " S S /S S/SS /SS//5      -   /-   r$\RJ                  " \5      \R2                  RE                  SS5      \R2                  RE                  SS5      \R2                  RE                  SS5      \R2                  RE                  SS5      \R2                  RE                  SS5      \R2                  RE                  SS5      \R2                  RE                  SS5      \\!S.
r&\#S4\$S4S .r'S! r(\& H  r)S" H  r*\(" \)\*5        M     M      " S# S$5      r+ " S% S&5      r, " S' S(5      r- " S) S*5      r.S+ r/ " S, S-5      r0 " S. S/5      r1 " S0 S15      r2\
Rf                  Ri                  S2\\Rj                  /5      S3 5       r6S4 r7S5 r8g)6    N)assert_equalassert_almost_equalassert_assert_allcloseassert_array_equal)raises)cKDTree)Voronoic                 *    [        [        U 5      5      $ Ntuplesortedxs    Q/var/www/html/venv/lib/python3.13/site-packages/scipy/spatial/tests/test_qhull.pysorted_tupler      s        c                 f   [        U [        R                  5      (       a  U R                  5       n [        U[        R                  5      (       a  UR                  5       n[	        [        X 5      5      n U R                  5         [	        [        X!5      5      nUR                  5         [        X5        g 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     )r   r   r      r$   r   r$   r$         ?r(   )r(   g      ?gQ	gzGgQgHzG        gHzG?gQ?gz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                    [         U    nUR                  S   nSnUS-   nU S:X  a  SnOU S:X  a  SnUSU /n[        U[        U5      U5       H  nUR	                  X'Xq-    5        M     SX4-  nU[
        ;  d   eXd4[
        U'   g)	z4
Generate incremental datasets from basic data sets
r$   Nr,   r5   zQJ Ppr6      z%s-chunk-%d)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!8D}	!	!Udm_F4Vi0fq{+, 1 00H////&,^"r   )r$   r0      c                        \ rS rSrS rS rSrg)
Test_Qhull|   c                    [         R                  " S[        R                  " SS/SS/SS/SS/SS//5      S5      n[        R
                  " UR                  5       5      n[         R                  " S[        R                  " SS/SS/SS/SS//5      S5      n[        R
                  " UR                  5       5      n[        R
                  " UR                  5       5      nUR                  5         [        R
                  " UR                  5       5      nUR                  5         [        [        UR                  5        [        [        UR                  5        [        US   US   5        [        US   US   [        S9  [        US	   US	   [        S9  [        US
   US
   [        S9  [        US   US   5        [        US   US   5        [        US   US   [        S9  [        US	   US	   [        S9  [        US
   US
   [        S9  [        US   US   5        UR                  5         [        [        UR                  5        UR                  5         [        [        UR                  5        g )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_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                 |    [         R                  " SS/SS/SS/SS/SS/SS/SS/SS/SS//	5      n[        U5        g )Nr   r$   r,   )r   rU   r
   )r\   rB   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__rb   re   __static_attributes__rg   r   r   rL   rL   |   s    $;Lr   rL   c                      \ rS rSrSrS rS rS rS rS r	S r
   SS	 jr\R                  R                  S
5      S 5       r\R                  R                   \R                  R                  S5      S 5       5       rSrg)TestUtilities   z%
Check that utility functions work.

c                 R   [         R                  " / SQ[         R                  S9n[        R                  " U5      n[        UR                  / SQ/ SQ/5        S HJ  nUR                  US S 5      n[        XCS   U< S9  [        R                  " X#S S 5      n[        XE5        ML     g )Nr"   r#   r&   r%   dtyper$   r/   r,   r/   r$   r   ))r-   r-   r$   )      ?rv   r   )333333?皙?r$   r,   err_msg)	r   rU   float64rS   Delaunayr   	simplicesfind_simplextsearch)r\   rB   tripirG   s         r   test_find_simplexTestUtilities.test_find_simplex   s    6bjjInnV$ 	S]]Y	$:;!A   2A'AaDQE3cRa5)A!r   c                    [         R                  " / SQ[         R                  S9n[         R                  " SS/[         R                  S9n[        R                  " U5      nUR                  U5      nUR                  U5      nUR                  U5      n[        UR                  5       H  u  pxXHS      n	XHS      n
XHS      n[         R                  " X-
  X-
  5      nU[         R                  " [         R                  " X5      5      -  nU[         R                  " US   5      * -  n[         R                  " XU-
  5      n[        Xg   U5        M     g )N)r"   r&   r%   )g]2ʐ?g>mj?)g~T!?g^Rz?rr   gB?g?r   r$   r,   )r   rU   r{   rS   r|   lift_pointsplane_distance	enumerater}   crosssqrtdotsignr   )r\   r   r   r   zpzdistrG   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                     [         R                  " / SQ[         R                  S9n[        R                  " U5      n[        UR                  SS/SS/SS/SS//5        g )Nrq   rr   r/   r,   r$   r   )r   rU   r{   rS   r|   r   convex_hullr\   rB   r   s      r   test_convex_hullTestUtilities.test_convex_hull   sN    6bjjInnV$ 	S__1v1v1v1v&FGr   c                     [         R                  " / SQ5      n[        R                  " U5      n[	        UR
                  SSSS9  [	        UR                  SSSS9  g )N)r   r   r   )r   r$   r   )r$   r   r   )r$   r$   r   )r   r   r$   )r   r$   r$   )r$   r   r$   )r$   r$   r$   rP   +=zVolume of cube is incorrectrtolrz         @zArea of cube is incorrectr   rU   rS   
ConvexHullr   volumearear\   rB   hulls      r   test_volume_areaTestUtilities.test_volume_area   sQ     G H'Re =	?		2E ;	=r   c                     [         R                  " / SQ5      n[        R                  " U5      n[	        UR
                  SSSS9  [	        UR                  SSSS9  g )N)
)gQ4?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?gY/?Hz>z(Volume of random polyhedron is incorrectr   g\4?z&Area of random polyhedron is incorrectr   r   s      r   test_random_volume_area%TestUtilities.test_random_volume_area   sW      	M 	N 'Ze J	L		95 H	Jr   c                    SnSn[         R                  R                  X45      n[        R                  " USUS-   2SS24   SS9n[        R                  " USUS-   2SS24   SS9n[	        US-   U5       H  n[        R                  " USUS-   2SS24   5      nUR                  X6US-   2SS24   5        UR                  X6US-   2SS24   SS9  [        UR                  UR                  SS	9  [        UR                  UR                  SS	9  [        UR                  UR                  SS	9  [        UR                  UR                  SS	9  M     g)
zoTest that incremental mode gives the same volume/area as
non-incremental mode and incremental mode with restart   r/   Nr$   Tincrementalrestartr   r   )	r   randomrS   r   r<   
add_pointsr   r   r   )r\   	nr_pointsdimrB   inc_hullinc_restart_hullr   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                    UR                   UR                     nSUR                  S-   -  nUR                  SS9U-  nS n[        R
                  " [        5      R                  n	U" UR                  U5      n
[        R                  " SS9   [        R                  " U
5      R                  SS9[        X-
  5      U-  S:  R                  SS9-  nSSS5        [        WR                  5       U S	[        R                  " U) 5       35        USS2SS
2SS24   USS2S
SSS24   -
  n[        R                  " [!        UR"                  5       Vs/ s H+  n[        R$                  R'                  XSS2SS24   5      PM-     sn5      n[        R(                  " UR                  SS2SS4   5      U[        R*                  " U	5      :  -  n[        UR                  5       U S	[        R                  " U) 5       35        UR-                  U5      nUS
:g  [        R                  " UR                  SS2SS4   5      -  n[        UR                  5       U S	[        R                  " U) 5       35        U(       af  Xt:*  R/                  SS9nUUSU-
  :  R/                  SS9-  nUS
:g  U-  n[        UR                  5       U S	[        R                  " U) 5       35        gg! , (       d  f       GN= fs  snf )z@Check that a triangulation has reasonable barycentric transformsr$   rP   axisc                 j    U S S 2SS S 24   nU S S 2S S2S S 24   n[         R                  " SX1U-
  5      $ )Nr*   z
ijk,ik->ij)r   einsum)trr   rTinvs       r   barycentric_transformJTestUtilities._check_barycentric_transforms.<locals>.barycentric_transform(  s9    1R6
AaAg;D99\4Q77r   ignore)invalidg?N r*   r   )rB   r}   rC   sumr   finfofloateps	transformerrstateisnanallabsr   nonzerorU   r<   nsimplexlinalgdetisfiniter   r~   any)r\   r   rz   	unit_cubeunit_cube_tolverticessc	centroidsr   r   cokqkr   rG   at_boundarys                    r   _check_barycentric_transforms+TestUtilities._check_barycentric_transforms  s}    ::cmm,3LLaL(2-	
	8
 hhuo!!!#--;[[*!a(CKNS,@+E+E1+E+MMB + 	WIQrzz2#&789 Qss1W2d1 55$)#,,$79$7q 99==Qq52$79 :[[q1u-.&2773<2GHWIQrzz2#&789 Y'2g#--!A"677WIQrzz2#&789$5:::BKI])::??Q?GGKr'[(BBFFH	2::rc?*;<= % +*9s   AK 2K2 
K/r+   c                    [         R                  " [        R                  R	                  [        R                  R                  [        5      SS5      5      nUS   nUR                  5         [        R                  " U5      n[         R                  " UR                  S S 2SS4   5      R                  5       n[        US:  U5        U R                  U5        g )Ndatazdegenerate_pointset.npzr   r      )r   loadospathjoindirname__file__rY   rS   r|   r   r   r   r   r   )r\   r   rB   r   	bad_counts        r   &test_degenerate_barycentric_transforms4TestUtilities.test_degenerate_barycentric_transformsJ  s     wwrww||BGGOOH$=v$=? @c

nnV$ HHS]]1Qq512668		B	* 	**3/r   r   c                    [         R                  " [        5      R                  nSSSSS.n[	        SS5       GH  n[         R
                  " SS	X#   5      n[         R                  [        [        [         R                  [         R                  " [         R                  " U/U-  6 6 5      5         R                  nS
U-  n[        R                  " U5      nU R                  XvSS9  [         R                   R#                  S5        [         R                   R%                  UR&                  S   5      S:  nXXS S 24==   SU-  [         R                   R$                  " XXS S 24   R&                  6 S-
  -  -  ss'   [        R                  " U5      nU R                  XvSSU-  S9  [        R                  " [         R(                  XU4   5      nU R                  XvSSU-  S9  GM     g )NF      r1   r/   )r,   r/   r0   r1   r,   r2   r   r$   zndim=%dT)rz   r   r!   rx   r(   )rz   r   r   )r   r   r   r   r<   linspacec_r   r   ravelbroadcast_arraysix_TrS   r|   r   r   seedrandr;   r_)	r\   r   npointsrC   r   gridrz   r   ms	            r    test_more_barycentric_transforms.TestUtilities.test_more_barycentric_transforms\  s    hhuo!!RA!,!QKDAq'-0A55S2#6#6!T8K#LMNa   $&G ..&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   rg   N) Fr   )rh   ri   rj   rk   __doc__r   r   r   r   r   r   r   pytestmark	fail_slowr   slowr  rl   rg   r   r   rn   rn      s    
*,6H	=J(I" :<0545+>Z [[20 0" [[[[2#D  #Dr   rn   c                   ,    \ rS rSrS rS rS rS rSrg)TestVertexNeighborVerticesi  c                    [        UR                  R                  S   5       Vs/ s H  n[        5       PM     nnUR                   H/  nU H&  nU H  nXV:w  d  M
  X5   R                  U5        M     M(     M1     UR                  u  px[        UR                  R                  S   5       Vs/ s H&  n[        [        [        XU   XrS-       5      5      PM(     n	n[        XU	< SU< 3S9  g s  snf s  snf )Nr   r$   z != ry   )
r<   rB   r;   setr}   addvertex_neighbor_verticesr   intr   )
r\   r   rG   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   C-,-C2c                     [         R                  " / SQ[         R                  S9n[        R                  " U5      nU R                  U5        g )N)r"   r#   r%   rr   r   rU   r{   rS   r|   r  r   s      r   test_triangle(TestVertexNeighborVertices.test_triangle  s1    /rzzBnnV$Cr   c                     [         R                  " / SQ[         R                  S9n[        R                  " U5      nU R                  U5        g )Nrq   rr   r  r   s      r   test_rectangle)TestVertexNeighborVertices.test_rectangle  s1    6bjjInnV$Cr   c                     [         R                  " / SQ[         R                  S9n[        R                  " U5      nU R                  U5        g )N)r"   r#   r&   r%   r'   )g?r(   rr   r  r   s      r   test_complicated+TestVertexNeighborVertices.test_complicated  s7     3:<**FnnV$Cr   rg   N)	rh   ri   rj   rk   r  r  r  r  rl   rg   r   r   r
  r
    s    H

r   r
  c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS r\R                  R!                  S\" \5      5      S 5       rSrg)TestDelaunayi  z"
Check that triangulation works.

c                     [         R                  R                  S5      n[        [        [
        R                  U5        g Nr$   )r   ma
masked_allrZ   
ValueErrorrS   r|   r\   masked_arrays     r   test_masked_array_fails$TestDelaunay.test_masked_array_fails  s&    uu''*j%..,?r   c                     [         R                  " SSSS[         R                  4/[         R                  S9n[	        [
        [        R                  U5        g )Nr"   r#   r&   r$   rr   )r   rU   nanr{   rZ   r'  rS   r|   r\   points_with_nans     r   test_array_with_nans_fails'TestDelaunay.test_array_with_nans_fails  s7    ((E5%!BFF#DBJJWj%../Br   c           
         [        SS5       H  n[        R                  " US-   U45      n[        U5       H	  nSX#U4'   M     SUSS S 24'   [        R                  " U5      nUR
                  R                  5         [        UR
                  [        R                  " US-   [        S9S S S 24   5        [        UR                  S[        R                  " US-   [        S9S S S 24   -   5        M     g )Nr,   r4   r$   rP   r*   rr   )r<   r   zerosrS   r|   r}   r   r   aranger  	neighbors)r\   ndrB   rG   r   s        r   test_nd_simplexTestDelaunay.test_nd_simplex  s    1+BXXr!tRj)F2Y!s F2a4L..(CMM 		"Q$c(B47(KLRXXr!tC-Ha-P(PQ r   c                     [         R                  " / SQ[         R                  S9n[        R                  " U5      n[        UR                  / SQ/ SQ/5        [        UR                  / SQ/ SQ/5        g )Nrq   rr   rt   ru   )r*   r*   r$   )r*   r*   r   )r   rU   r{   rS   r|   r   r}   r5  r   s      r   test_2d_squareTestDelaunay.test_2d_square  sK    6bjjInnV$S]]Y	$:;S]][+$>?r   c                    [         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[         R                  X4   n[         R                  X"4   n[        R
                  " [         R                  X4   5        [        R
                  " [         R                  X44   5        g )N)r   r$   r   r$   rr   )r   r   r$   r$   )r   rU   r{   r   rS   r|   r   )r\   r   r^   xpyps        r   test_duplicate_points"TestDelaunay.test_duplicate_points  sv    HH\4HH\4UU14[UU14[ 	ruuQT{#ruuRV}%r   c                 x   [         S   n[        R                  " U5      n[        UR                  UR
                     R                  5       UR                  5       5        [        UR                  UR
                     R                  5       UR                  5       5        [         S   n[        R                  " U5      n[        UR                  UR
                     R                  5       UR                  5       5        [        UR                  UR
                     R                  5       UR                  5       5        g )Nr6   r7   )r:   rS   r|   r   rB   r}   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                 @   [         R                  R                  SS5      n[         R                  X4   n[        R
                  " USS9n[        [         R                  " UR                  R                  5       5      [         R                  " [        U5      5      5        g )Nr+   r,   z	QJ Qbb Ppqhull_options)r   r   r   r   rS   r|   r   uniquer}   r   r4  r=   r   s      r   test_joggleTestDelaunay.test_joggle  sh     A&v~&nnV;?299S]]%8%8%:;99S[1	3r   c           	      x   [         R                  R                  SS5      n[         R                  X4   n[        R
                  " U5      n[        [        [         R                  " UR                  R                  5       5      5      [        U5      S-  :H  5        [        [        UR                  5      [        U5      S-  :H  5        [        [        [         R                  " UR                  S S 2S4   5      5      [        U5      S-  :H  5        [        [         R                  " UR                  S:  5      5        g )Nr+   r,   r   )r   r   r   r   rS   r|   r   r=   rI  r}   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BIIcll1Q3/01S[!^CDs,,123r   c                     / SQn[         R                  " USS9n[        R                  " SS/5      n[	        UR
                  U5        g )Nr"   r#   r%   r'   )皙?rS  Tfurthest_site)r$   r0   r   )r0   r,   r   )rS   r|   r   rU   r   r}   )r\   rB   r   r  s       r   test_furthest_siteTestDelaunay.test_furthest_site  s8    AnnV4888Y	233==(3r   r@   c                    [         U   u  p#[        R                  " USS9n[        R                  " US   SUS9nUSS   H  nUR                  U5        M     [        R                  " U5      n[        R                  " US   SUS9n[        U5      S:  a&  UR                  [        R                  " USS  SS9SS9  UR                  S5      (       a  [        [        R                  " UR                  R                  5       5      [        R                  " UR                  S   5      5        [        [        R                  " UR                  R                  5       5      [        R                  " UR                  S   5      5        O#[        UR                  UR                  [        S9  [        UR                  UR                  [        S9  g )	Nr   r   Tr   rH  r$   r   pathologicalrR   )r?   r   concatenaterS   r|   r   r=   
startswithr   rI  r}   r   r4  r;   r    r   )	r\   r@   rF   rD   rB   objchunkobj2obj3s	            r   test_incrementalTestDelaunay.test_incremental  s^    ,D1Q/nnVAYD+/1ABZENN5!   ~~f%~~fQiT,02v;?OOBNN6!":A>$(  * ??>** ryy)<)<)>?!yya9;ryy)=)=)?@!yya9; .cmmT^^2>@ 	*$..$...:	<r   rg   N)rh   ri   rj   rk   r  r*  r0  r7  r:  r?  rD  rJ  rO  rV  r  r  parametrizer   r?   ra  rl   rg   r   r   r"  r"    se    @CR@	&
D	344 [[VV,@%AB!< C!<r   r"  c                    [        [        [        U5      5      n[        [        [        U5      5      nX:w  Ga  U R                  S   S:X  Ga  S[        R
                  " [        5      R                  -  nU GH  u  pEU GHm  u  pgX   X   -
  nU[        R                  R                  U5      -  n[        R                  " US   * US   /5      n	[        R                  " XU   X   -
  5      n
[        R                  " XU   X   -
  5      n[        R                  " [        R                  " X5      S5      (       d  M  [        R                  " [        R                  " X5      S5      (       d  M  [        R                  " XU   X   -
  5      n
[        R                  " XU   X   -
  5      n[        R                  " XU   X   -
  5      nX* :  d  XU-   :  a  GM[  X* :  d  XU-   :  a  GMl    GMx     [        S5      e   g [        X5        g )Nr$   r,   i  r   zcomparison fails)r  r   r   r;   r   r   r   r   r   normrU   r   allcloseAssertionErrorr   )rB   facets_1facets_2r   r   r   apbptr   c1c2c3s                r   assert_hulls_equalrp  &  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                      \ rS rSrS rS r\R                  R                  S\	" \
5      5      S 5       r\R                  R                  S\	" \5      5      S 5       rS rS r\R                  R                  S	S
S/5      S 5       r\R                  R                  SSS/5      \R                  R                  S\R$                  " SS//5      \R$                  " / SQ\S94\R$                  " SS//5      \R$                  " / SQ\S94\R$                  " SS//5      \R$                  " / SQ\S94\R$                  " SS/SS//5      \R$                  " / SQ\S94\R$                  " SS//5      \R$                  " / SQ\S94/5      S 5       5       r\R                  R                  S	S
S/5      S 5       r\R                  R                  S	S
S/5      S 5       r\R                  R                  S	S
S/5      S  5       rS!rg")#TestConvexHulli]  c                     [         R                  R                  S5      n[        [        [
        R                  U5        g r$  )r   r%  r&  rZ   r'  rS   r   r(  s     r   r*  &TestConvexHull.test_masked_array_fails^  s(    uu''*j%"2"2LAr   c                     [         R                  " SSS[         R                  4/[         R                  S9n[	        [
        [        R                  U5        g )Nr"   r&   r,   rr   )r   rU   r-  r{   rZ   r'  rS   r   r.  s     r   r0  )TestConvexHull.test_array_with_nans_failsb  s7    ((E51RVV*#=RZZPj%"2"2ODr   r@   c                    [         U   n[        R                  " U5      n[        R                  " U5      n[	        X#R
                  UR                  5        UR                  S   S:X  aI  [        [        R                  " UR                  5      [        R                  " UR                  5      5        g [        [        R                  " UR                  5      UR                  5        g )Nr$   r,   )r:   rS   r|   r   rp  r   r}   r;   r   r   rI  r   r   )r\   r@   rB   r   r   s        r   test_hull_consistency_tri(TestConvexHull.test_hull_consistency_trif  s     $nnV$'6??DNNC <<?a4>>2BGGDMM4JK4>>2DMMBr   c                    [         U   u  p#[        R                  " USS9n[        R                  " US   SS9nUSS   H  nUR                  U5        M     [        R                  " U5      n[        R                  " US   SS9n[        U5      S:  a&  UR                  [        R                  " USS  SS9SS9  [        XER                  UR                  5        [        XER                  UR                  5        g )Nr   r   Tr   r$   r   )	r?   r   r[  rS   r   r   r=   rp  r}   )	r\   r@   rF   _rB   r]  r^  r_  r`  s	            r   ra  TestConvexHull.test_incrementalw  s     ).	Q/vayd;ABZENN5!   'q	t<v;?OOBNN6!":A>$(  * 	6==$..A6==$..Ar   c           	         [         R                  R                  S5        [         R                  R                  SS5      n[        R
                  " U5      n[        [         R                  " UR                  5      [         R                  " UR                  5      5        UR                  UR                     R                  u  p4[         R                  " XDR                  5       -
  X3R                  5       -
  5      n[        [         R                   " [         R"                  " [         R$                  " U5      5      S:  5      5        g )Nr!   r.   r,   r   )r   r   r   r   rS   r   r   rI  r}   r   r   rB   r   arctan2meanr   r   diffunwrap)r\   rB   r   r   r^   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                     [         R                  " / SQ5      n[        R                  " U5      n[	        UR
                  SSS9  [	        UR                  SSS9  g )Nr   rP   r   r   r   r   r   s      r   r   TestConvexHull.test_volume_area  sG     G Hv&

BU3"51r   r   FTc                     [         R                  " SS/SS/SS/SS/SS//5      n[        R                  " UUSS9n[         R                  " / SQ[        S9nUR
                  n[        XT5        g )	Nrx   皙?rw   333333?QG4rB   r   rH  )FTFFrr   r   rU   rS   r   boolgoodr   r\   r   rB   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, expectedrw   gffffff?)FFFFFrr   gffffff)FTFFFg=
ףp=?)FFFTTr(   r  )FFTFFg433333?c                    [         R                  " SS/SS/SS/SS/SS//5      n[        R                  " USUS9nUR	                  U5        UR
                  nSU;   a  [         R                  " U5      n[        Xb5        g )Nrx   r  rw   r  Tr  -)r   rU   rS   r   r   r  invertr   )r\   new_genr  r  rB   r   r  s          r   test_good2d_incremental_changes.TestConvexHull.test_good2d_incremental_changes  s    N C:::::	' (
 v,0.8: 	 *yy*HV&r   c                    [         R                  " SS/SS/SS/SS/SS//5      n[        R                  " UUS9nUR                  nUb   eU(       a7  UR                  [         R                  " S5      5        UR                  nUb   eg g )Nrx   r  rw   r  )rB   r   r$   r,   )r   rU   rS   r   r  r   r3  )r\   r   rB   r   r  s        r   test_good2d_no_option$TestConvexHull.test_good2d_no_option  s     C:::::	' (
 v,79~~OOBHHV,-YYF>!> r   c                     [         R                  " SS/SS/SS/SS/SS//5      n[        R                  " UUSS9n[         R                  " / SQ[        S9nUR
                  n[        XT5        g )Nrx   r  rw   r  r  )FFFFrr   r  r  s         r   test_good2d_inside!TestConvexHull.test_good2d_inside  sw    
 C:::::	' (
 v,7.35 888EV&r   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " UUSS9n[         R                  " / SQ[        S	9n[        UR                  U5        g )
Nr)   r)   r)   )gN7?g+xٿgg>@?)gFE%'?gWۧ=g/J?)g6r?gtĭ4gŷ)gw6y?gQgb?QG0r  )TFFFrr   )r   rU   rS   r   r  r   r  )r\   r   rB   r   r  s        r   test_good3dTestConvexHull.test_good3d
  sb     ?@@A@	B C
 v,7.35 887tDTYY)r   rg   N)rh   ri   rj   rk   r*  r0  r  r  rc  r   r:   rx  r?   ra  r  r   r  r   rU   r  r  r  r  r  rl   rg   r   r   rr  rr  ]  s>   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   rr  c                      \ rS rSr\R
                  R                  SSS/5      \R
                  R                  SSS/5      \R
                  R                  SS	S
/5      S 5       5       5       rS rS r	S r
\R
                  R                  S\" \5      5      S 5       rS rS r\R
                  R!                  S5      \R
                  R                  S\" \5      5      S 5       5       rSrg)TestVoronoii  zqhull_opts, extra_pts)z	Qbb Qc Qzr$   )zQbb Qcr   n_pts2   d   rC   r,   r/   c                 P   [         R                  R                  S5      nUR                  X$45      n[        XaS9nUR                  nUR                  5       US-
  U-   :X  d   eUR                  [        UR                  5      U-
  :X  d   e[        UR                  5      X#-   :X  d   eUR                  R                  S   U:X  d   eU(       aT  UR                   V	s/ s H  n	[        U	5      PM     n
n	U
R                  S5      S:X  d   eU
R                  S5      U;  d   eg g s  sn	f )Nin  rG  r$   r   )r   r   default_rngr
   point_regionrB  sizer=   regionsrB   r;   countindex)r\   
qhull_optsr  	extra_ptsrC   rngrB   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   D#c                     [         R                  R                  S5      n[        [        [
        R                  U5        g r$  )r   r%  r&  rZ   r'  rS   r
   r(  s     r   r*  #TestVoronoi.test_masked_array_fails=  s&    uu''*j%-->r   c                 2    / SQnSnU R                  X5        g )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_simpleTestVoronoi.test_simpleA  s!    *
@ 	v.r   c                 L   UR                  5       R                  5        Vs/ s H*  n[        [        [        UR                  5       5      5      PM,     nn[        US   S   5      n[        [        [        USSU-    5      5      n[        US   S   5      nUSU-   SU-   U-     VVs/ s H%  nUSS  Vs/ s H  n[        U5      S-
  PM     snPM'     n	nnUSU-   U-   S  VVs/ s H"  nUSS  Vs/ s H  n[        U5      PM     snPM$     n
nnUSU-   U-   S  VVs/ s H%  nUSS  Vs/ s H  n[        U5      S-
  PM     snPM'     nnn[        R                  " U40 UD6nS n[        UR                  U5        [        [        [        [        UR                  5      5      [        [        [        U	5      5      5        [        [        [        [        X5      5      [        [        X5      5      5      5      n[        [        [        [        XR                   R#                  5       5      5      [        [        XR$                  5      5      5      5      nUR'                  5         UR'                  5         [        X5        gs  snf s  snf s  snnf s  snf s  snnf s  snf s  snnf )z:Compare to output from 'qvoronoi o Fv < data' to Voronoi()r$   r   r/   r,   Nc                 *    [        [        U 5      5      $ r   r   r   s    r   	sorttuple0TestVoronoi._compare_qvoronoi.<locals>.sorttuple|  s    ##r   )strip
splitlinesr   r   r   splitr  r   rS   r
   r   r   r   r  r  zipridge_pointsr   ridge_verticesr   )r\   rB   r  kwr   nvertexr   nregionr^   r  r  r  r  r  p1p2s                   r   r  TestVoronoi._compare_qvoronoij  se    8>||~7P7P7RS7R!$s5!''),-7RSfQil#E6!AgI#678fQil#"1W9QwYw->?A?q '(e,eCF1He,? 	 A "('	'(9(:!;=!;A *+1Q0AQ0!; 	 = $*!G)G*;*<#=?#=a ./qrU3U3q6!8U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   1J &J
3JJ
#J0JJJ *JJ J
JJ r@   c                    [         U   n[        U5      n[        R                  " U5      nUR                  R                  5        H  u  pV[        R                  " [        R                  " U5      S:  5      (       d  M9  UR                  U   R                  SS9nSX%S      U-
  -  nUR                  Xx-   SS9u  p[        XS   5        UR                  Xx-
  SS9u  p[        XS   5        M     g )Nr   r   gư>r$   )r   )r:   KDTreerS   r
   
ridge_dictitemsr   r   asarrayr   r  queryr   )r\   r@   rB   treer  r   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                 0    / SQnSnU R                  XSS9  g )NrR  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
        TrT  r  r  s      r   rV  TestVoronoi.test_furthest_site  s#    A$ 	vTBr   c                     / SQn[        U5      n[        UR                  S5        [        USS9n[        UR                  S5        g )NrR  FTrT  )r
   r   rU  )r\   rB   r  s      r   test_furthest_site_flag#TestVoronoi.test_furthest_site_flag  s<    AfoS&&u-f40S&&t,r   r+   c                 >  ^^^ [         U   S   S   R                  S   S:  a  g [         U   u  p#[        R                  " USS9n[        R
                  " US   SUS9nUSS   H  nUR                  U5        M     [        R
                  " U5      n[        R
                  " US   SUS9n[        U5      S:  a&  UR                  [        R                  " USS  SS9SS9  [        [        UR                  5      [        UR                  5      5        [        [        UR                  5      [        UR                  5      5        XX4 H  mSS0m[        TR                  5       HE  u  p[        UR                  5       H'  u  p[        R                  " X5      (       d  M"  UTU	'   M)     MG     UUU4S	 jmS
 n[        U" T" TR                  5      5      U" UR                  5      5        [        U" T" TR                  5      5      U" UR                  5      5        M     g )Nr   r$   r/   r   TrY  r   r*   c                    > [        U S5      (       a"  [        U  Vs1 s H  nT" U5      iM     sn5      $  TU    $ s  snf ! [         a$  nSTR                  U    < 3n[	        U5      UeS nAff = f)N__len__z*incremental result has spurious vertex at )hasattrr   KeyErrorr   rg  )r   r^   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   
A.
A))A.c                     [        [        [        U 5      5      nSU;   a  UR                  S5        U V s/ s H  n [	        U 5      S:  d  M  U PM     nn UR                  5         U$ s  sn f )Nrg   r$   )r  r   r   remover=   r   )r   r  s     r   
simplified0TestVoronoi.test_incremental.<locals>.simplified  sW    Ca01;LL$$)8EqSVaZE8

 9s   A&A&)r?   r;   r   r[  rS   r
   r   r=   r   r  r   r   rf  r  r  )r\   r@   rF   rD   rB   r]  r^  r_  r`  r   r   rG   v2r  r  r  r  s                 @@@r   ra  TestVoronoi.test_incremental  s   
  %a(+11!4q8+D1Q/mmF1I4+/1ABZE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   rg   N)rh   ri   rj   rk   r  r  rc  r  r*  r  r  r   r:   r  rV  r  r  r?   ra  rl   rg   r   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            
          \ rS rSrSS jr\R                  R                  S\R                  \
/5      S 5       rS rS rS rS r\R                  R                  S	\" S
S5      5      S 5       r\R                  R                  S\R$                  " / SQ5      \R$                  " / SQ/ SQ/ SQ/5      /5      S 5       rS rS rS rSrg)Test_HalfspaceIntersectioni	  c                 x   [        UR                  UR                  5        [        R                  " UR                  S   4[        S9nU HT  n[        R
                  " [        X%-
  5      U:  R                  SS95      S   n[        UR                  S5        SXFS   '   MV     [        UR                  5       5        g)z2Check that every line in arr1 is only once in arr2r   rr   r$   r   )r$   TN)	r   r;   r   r3  r  r   r   r   r   )r\   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                    [         R                  " / SQ/ SQ/ SQ/ SQ/US9n[         R                  " SS/US9n[         R                  " SS/SS/SS/SS//5      n[        R                  " X#5      n[	        UR
                  U5        g )	N)r*   r   r   )r   r*   r   )r$   r   )r   r$   r  rr   r$   r)   rQ   )r   rU   rS   HalfspaceIntersectionr   intersections)r\   r  
halfspacesfeasible_pointrB   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           	         [         R                  R                  [         R                  R                  [        5      SS5      n[
        R                  " U5      n[
        R                  " US S 2SS 24   US S 2S S24   45      * n[
        R                  " / SQ5      n[        R                  " X45      n[        UR                  R                  S5        [        UR                  S5        [        [!        UR"                  5      S5        UR"                   H  n[        [!        U5      S5        M     US S 2S	4   US S 2S S	24   R%                  U5      -   nU R'                  US S 2S S	24   R(                  U-  R(                  UR*                  5        [,        R.                  " / S
Q5      nU H=  n	[        [
        R0                  " UR                  U	:H  R3                  SS95      S5        M?     g )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hstackrU   rS   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_intersection?Test_HalfspaceIntersection.test_self_dual_polytope_intersection#  sz   RWW__X679e$iiq!"uuQU| <==
XX./
((@R%%++W5BNND1S("-^^EUQ' $ 1b5!Jq#2#v$6$:$::$FF&&
1crc6(:(<(<U(B'E'Er~~V''(;<E!1!1U!: ? ?Q ? GH!L r   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ5      n[        [        [        R
                  X5        [         R                  " S/S//5      n[        [        [        R
                  X5        [         R                  " SS//5      n[        [        [        R
                  X5        [         R                  " SS/5      n[        [        R                  [        R
                  X5        g )N)      r)   r)   )r)   r  r)   rP   r)   r  r)   rP   r  r(   r(   r(   r(   r  )r   rU   rZ   r'  rS   r   
QhullError)r\   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           	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ S	Q/ S
Q/5      n[         R                  " S//S-  5      n[         R                  " [         R                  " X"* 45      U45      n[         R                  " / SQ5      n[        R
                  " XSS9n[        R
                  " XSS9n[        U5       GH  u  pUR                  U	[         R                  S S 24   5        UR                  U	[         R                  S S 24   SS9  [         R                  " XS US-   2S S 24   45      n
[        R
                  " X5      n[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        U R                  UR                  UR                  5        GM     UR                  5         g )N)r)   r)   r  r  )r)   r  r)   r  )r  r)   r)   r  )rP   r)   r)   r  )r)   rP   r)   r  )r)   r)   rP   r  )rP   rP   rP   )rP   rP   r  )rP   r  rP   )r$   r  r  r  r4   r  Tr   r   r$   )r   rU   r
  vstackrS   r   r   add_halfspacesnewaxisr   r  r  r  rY   )r\   r  extra_normalsoffsetsextra_halfspacesr  inc_hs
inc_res_hsr   ehstotalr  s               r   ra  +Test_HalfspaceIntersection.test_incrementalQ  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           	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ5      n[        R                  " X5      n[         R                  " / SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/5      n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[	        U5      [	        UR
                  5      :X  d   e[        XSR
                  5       H  u  pg[        U5      [        U5      :X  a  M   e   [        UR                  U5        g )N)r  r)   r)   r)   )rP   r)   r)   r  )r)   r  r)   r)   )r)   rP   r)   r  )r)   r)   r  r)   )r)   r)   rP   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   rU   rS   r   r=   r  r  r  r   r  )r\   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   r$   r0   c                 ~   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " U[         R                  " S	S
/5      SS9nUR	                  USU2S S 24   5        UR	                  X1S2S S 24   5        UR                  5         [         R                  " SS/SS/SS/SS//5      nUR                  n[         R                  " US S 2S4   US S 2S4   45      n[         R                  " US S 2S4   US S 2S4   45      n[        Xg   XX   5        g )N)rP   r)          )r  r)   r3  )r)   rP   r3  )r)   r  r3  r  )r  r)   r  r  )r)   r  r  gC6?ga+e?Tr   r   r0   rP   r  r$   )	r   rU   rS   r   r#  rY   r  lexsortr   )	r\   r   
big_squaresmall_squarer  expected_intersectionsactual_intersectionsind1ind2s	            r   test_halfspace_batch/Test_HalfspaceIntersection.test_halfspace_batch  sM    XX...0 1

 xx!0!0!0!2 3
 (()+662B)C59; 	,qs1u-.
,s1u-.

 "$B8,.9,/9,/:+7 "8  "// zz/157KAqD7QRSzz1!Q$79OPQSTPT9UVW,24J4PQr   r  )gJpgzS_-ݿg-|d?)g#?g'ݿg1&ܯkݿ)r)   g:e|?gđ"ֿc                 8   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " U[         R                  " S5      SS9n[
        R                  " [        R                  SS	9   UR                  U5        S S S 5        g ! , (       d  f       g = f)
Nr$   r   r*   r   r$   r*   r*   r   r*   r   r*   r*   r,   Tr   zfeasible.*-0.706.*match	r   rU   rS   r   r3  r  r   r  r#  )r\   r  initial_squareincremental_intersectors       r   test_gh_19865(Test_HalfspaceIntersection.test_gh_19865  st     (([+F #("="=n>@hhqkJN#P ]]5++3GH#22:> IHHs   0B
Bc           	         [         R                  " / SQ/ SQ/ SQ/5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/5      n[        R                  " U[         R                  " S
5      SS9n[
        R                  " [        R                  SS9   UR                  U5        S S S 5        g ! , (       d  f       g = f)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]rB  rD  )r\   r  initial_cuberF  s       r   test_gh_19865_3d+Test_HalfspaceIntersection.test_gh_19865_3d  s     XX}/+- .
 xx!/!.!/!.!/!1 2 #("="=l>@hhqkJN#P ]]5++3HI#22:> JIIs   B00
B>c                 L   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " U[         R                  " S5      SS9n[
        R                  " [        SS	9   UR                  [         R                  " S
5      5        S S S 5        g ! , (       d  f       g = f)Nr>  r?  r@  rA  r,   Tr   z2D arrayrB  )r0   r0   r0   )
r   rU   rS   r   r3  r  r   r'  r#  onesr\   rE  rF  s      r   test_2d_add_halfspace_input6Test_HalfspaceIntersection.test_2d_add_halfspace_input  su     (([+F #("="=n>@hhqkJN#P ]]:Z8#2227793EF 988s   &&B
B#c                    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        R                  " U[         R                  " S5      SS9n[        UR                  [         R                  " S5      5        UR                  [         R                  " / S	Q5      5        [        UR                  [         R                  " S
5      5        g )Nr>  r?  r@  rA  r,   Tr   r0   )r,   r,   r*   r1   )	r   rU   rS   r   r3  r   dual_verticesr4  r#  rO  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   rg   N)r   )rh   ri   rj   rk   r  r  r  rc  r   r{   r  r  r  r  ra  r0  r<   r;  rU   rG  rK  rP  rT  rl   rg   r   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r   r  diagram_typec                     [         R                  R                  S5      nUR                  S5      n[        R                  " [
        SS9   U " U5        S S S 5        g ! , (       d  f       g = f)N{   )r0   r+   r/   
dimensionsrB  )r   r   r  r  r   r'  )rV  r  invalid_datas      r   test_gh_20623r[    sF    
))


$C::j)L	z	6\" 
7	6	6s   
	A
A*c                     [         R                  " SS/SS/SS/SS//5      n [        R                  " U 5      n[        R
                  " [        5         UR                  S5        S S S 5        [        R
                  " [        5         UR                  U5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr   rS  r$   )r   rU   rS   r|   r  r   
IndexErrorr~   
generatorsr   s     r   test_gh_21286r`    s    Aq6As8aVaV<=J
..
$C	z	" 
#	z	" 	 
#	" 
#	"	"	"s   B"B3"
B03
Cc                     [         R                  " SS/SS/SS/SS//5      n [        R                  " U 5      n[        R
                  " [        5         UR                  / SQ5        S S S 5        g ! , (       d  f       g = f)Nr   rS  r$   )r,   r,   r,   )r   rU   rS   r|   r  r   r'  r~   r^  s     r   test_find_simplex_ndim_errrb    s]    Aq6As8aVaV<=J
..
$C	z	"# 
#	"	"s   A00
A>)9r   rV   numpyr   numpy.testingr   r   r   r   r   r  r   rZ   scipy.spatial._qhullspatial_qhullrS   scipy.spatialr	   r  r
   r  r   r   r    r   r   rB   rU   pathological_data_1r   r{   r   pathological_data_2r   bug_2850_chunksbug_2850_chunks_2r  r:   r?   rI   r@   rA   rL   rn   r
  r"  rp  rr  r  r  r  rc  r|   r[  r`  rb  rg   r   r   <module>rm     s1   	  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 
 ::f%A&A&A&A&A&A&A&)) !$'$d+ 44 D	dI&  
+ +\XD XDv B}< }<@4%nz* z*xk k`xM xMv '5>>)BC# D#	$r   