
    _Mh"                        d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dl
Z
d dl
mZ d dlmc mZ d dlmZ d dlmZ d dlZd ZefdZej                            d           g d	Z ej        g d
d
gd
dgd
dgd
dgd
dgd
dgd
dgd
dgd
dgdd
gddgddgddgddgddgddgddgddgddgddgddgddgddgdd
gddgddgddgddgddgdd
gddgddgddgddgddgddgdd
gddgddgddgddgddgddgddgddgdd
gddgddgddgddgddgddgddgddgdd
gddgddgddgddgddgddgddgddgdd
gddgddgddgddgddgddgddgddgdd
gddgddgddgddgddgddgddgddg          Z ej        ddgdd gddgd dgd d gd dgdd ej        ej                  j         z
  gdd gddgg	          Z!ej        "                    dd           ej        d d gd dgdd gddgg          gZ#e#ej        "                    dd          d ej        d d gd dgdd gddgg          z   gz   Z$ ej%        e          ej        "                    dd          ej        "                    dd          ej        "                    dd          ej        "                    dd          ej        "                    dd          ej        "                    dd          ej        "                    dd          ee!d
Z&e#dfe$dfd Z'd! Z(e&D ]Z)d"D ]Z* e(e)e*            G d# d$          Z+ G d% d&          Z, G d' d(          Z- G d) d*          Z.d+ Z/ G d, d-          Z0 G d. d/          Z1 G d0 d1          Z2e
j3        4                    d2eej5        g          d3             Z6d4 Z7d5 Z8dS )6    N)assert_equalassert_almost_equalassert_assert_allcloseassert_array_equal)raises)cKDTree)Voronoic                 :    t          t          |                     S Ntuplesortedxs    ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_qhull.pysorted_tupler      s        c                    t          | t          j                  r|                                 } t          |t          j                  r|                                }t	          t          ||                     } |                                  t	          t          ||                    }|                                 t          | |           d S r   )
isinstancenpndarraytolistlistmapsortr   )abtpls      r   !assert_unordered_tuple_list_equalr       s    !RZ   HHJJ!RZ   HHJJSa[[AFFHHHSa[[AFFHHHA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                 >   t           |          }|j        d         }d}|dz   }| dk    rd}n| dk    rd}|d|         g}t          |t          |          |          D ]"}|                    ||||z                       #d| |fz  }|t
          vsJ ||ft
          |<   dS )	z<
    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}	!	!	!UdUm_F4Vi00 - -fQq{]+,,,,i00H/////&,d^"""r   )r$   r0      c                       e Zd Zd Zd ZdS )
Test_Qhullc                     t          j        dt          j        ddgddgddgddgddgg          d          }t	          j        |                                          }t          j        dt          j        ddgddgddgddgg          d          }t	          j        |                                          }t	          j        |                                          }|                                 t	          j        |                                          }|                                 t          t          |j                   t          t          |j                   t          |d         |d                    t          |d         |d         t                     t          |d	         |d	         t                     t          |d
         |d
         t                     t          |d         |d                    t          |d         |d                    t          |d         |d         t                     t          |d	         |d	         t                     t          |d
         |d
         t                     t          |d         |d                    |                                 t          t          |j                   |                                 t          t          |j                   d S )N   vr   r$         ?r(   s   Qz       @r   r,   r/   r0   )qhull_Qhullr   arraycopydeepcopyget_voronoi_diagramcloseassert_raisesRuntimeErrorr   r    r   r   )selfr   xdyydxd2yd2s          r   test_swappingzTest_Qhull.test_swapping}   s    LAa5!A!uaVSI"FGG    ]1002233LAa5!A!uaV"<==    ]1002233mA113344				mA113344				lA$9:::lA$9:::1s1v&&&)"Q%Q\JJJJ)"Q%Q\JJJJ)"Q%Q\JJJJ2a5#a&)))1s1v&&&)"Q%Q\JJJJ)"Q%Q\JJJJ)"Q%Q\JJJJ2a5#a&)))				lA$9:::				lA$9:::::r   c                     t          j        ddgddgddgddgddgddgddgddgddgg	          }t          |           d S )Nr   r$   r,   )r   rT   r
   )r[   rB   s     r   test_issue_8051zTest_Qhull.test_issue_8051   s_    VaVaVaVaVaVQFQFQPQFS
 
 	r   N)__name__
__module____qualname__ra   rc    r   r   rL   rL   |   s3        $; $; $;L    r   rL   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z		 	 	 ddZ
ej                            d          d             Zej        j        ej                            d          d                         ZdS )TestUtilitiesz-
    Check that utility functions work.

    c                 x   t          j        g dt           j                  }t          j        |          }t          |j        g dg dg           dD ]e}|                    |d d                   }t          ||d         |           t          j        ||d d                   }t          ||           fd S )Nr"   r#   r&   r%   dtyper$   r/   r,   r/   r$   r   ))r-   r-   r$   )      ?rp   r   )333333?皙?r$   r,   err_msg)	r   rT   float64rR   Delaunayr   	simplicesfind_simplextsearch)r[   rB   tripirG   s         r   test_find_simplexzTestUtilities.test_find_simplex   s    666bjIIInV$$ 	S]YYY			$:;;;! 	 	A   2A2''AAaDQ(3333c1RaR5))AA	 	r   c                    t          j        g dt           j                  }t          j        ddgt           j                  }t          j        |          }|                    |          }|                    |          }|                    |          }t          |j                  D ]\  }}||d                  }	||d                  }
||d                  }t          j	        |	|z
  |
|z
            }|t          j
        t          j        ||                    z  }|t          j        |d                    z  }t          j        |||z
            }t          ||         |           d S )N)r"   r&   r%   )g]2ʐ?g>mj?)g~T!?g^Rz?rl   gB?g?r   r$   r,   )r   rT   ru   rR   rv   lift_pointsplane_distance	enumeraterw   crosssqrtdotsignr   )r[   r   r{   rz   zpzdistrG   vx1x2x3nds                 r   test_plane_distancez!TestUtilities.test_plane_distance   sY    H 0 0 079zC C CHj*-RZ@@@nQOOA__Q!!!$$cm,, 	, 	,DAq1Q4B1Q4B1Q4Bb"r'**A1&&&A"'!A$--Aq"r'""AQ++++	, 	,r   c                     t          j        g dt           j                  }t          j        |          }t          |j        ddgddgddgddgg           d S )Nrk   rl   r/   r,   r$   r   )r   rT   ru   rR   rv   r   convex_hullr[   rB   rz   s      r   test_convex_hullzTestUtilities.test_convex_hull   sa    666bjIIInV$$ 	S_1v1v1v1v&FGGGGGr   c                     t          j        g d          }t          j        |          }t	          |j        ddd           t	          |j        ddd           d S )N)r   r   r   )r   r$   r   )r$   r   r   )r$   r$   r   )r   r   r$   )r   r$   r$   )r$   r   r$   )r$   r$   r$   rO   +=zVolume of cube is incorrectrtolrt         @zArea of cube is incorrectr   rT   rR   
ConvexHullr   volumearear[   rB   hulls      r   test_volume_areazTestUtilities.test_volume_area   s     G G G H H''Re =	? 	? 	? 	?	2E ;	= 	= 	= 	= 	= 	=r   c                     t          j        g d          }t          j        |          }t	          |j        ddd           t	          |j        ddd           d S )N)
)gQ4?gΜR@?gX&lL5?)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_areaz%TestUtilities.test_random_volume_area   s      	M 	M 	M 	N 	N ''Ze J	L 	L 	L 	L	95 H	J 	J 	J 	J 	J 	Jr   c                    d}d}t           j                            ||f          }t          j        |d|dz   ddf         d          }t          j        |d|dz   ddf         d          }t	          |dz   |          D ]}t          j        |d|dz   ddf                   }|                    |||dz   ddf                    |                    |||dz   ddf         d           t          |j        |j        d	           t          |j        |j        d	           t          |j        |j        d	           t          |j        |j        d	           dS )
zwTest that incremental mode gives the same volume/area as
        non-incremental mode and incremental mode with restart   r/   Nr$   Tincrementalrestartr   r   )	r   randomrR   r   r<   
add_pointsr   r   r   )r[   	nr_pointsdimrB   inc_hullinc_restart_hullr|   r   s           r   )test_incremental_volume_area_random_inputz7TestUtilities.test_incremental_volume_area_random_input  s    	!!9c"233#F6CE61119$54HHH +F6CE61119,=4PPPs1ui(( 	I 	IA#F4AaC47O44Dq1uaaax 0111''q1uaaax(8$'GGGDKtDDDDDK)9)@tLLLLDIx}4@@@@DI'7'<4HHHHH	I 	Ir    Fr   c                    |j         |j                 }d|j        dz   z  }|                    d          |z  }d }t	          j        t                    j        }	 ||j        |          }
t	          j	        d          5  t	          j
        |
                              d          t          |
|z
            |z  dk                         d          z  }ddd           n# 1 swxY w Y   t          |                                | d	t	          j        |                       |dddd
ddf         |ddd
dddf         z
  t	          j        fdt!          |j                  D                       }t	          j        |j        ddddf                   |t	          j        |	          k     z  }t          |                                | d	t	          j        |                       |                    |          }|d
k    t	          j
        |j        ddddf                   z  }t          |                                | d	t	          j        |                       |r||k                        d          }||d|z
  k                        d          z  }|d
k    |z  }t          |                                | d	t	          j        |                       dS dS )z@Check that a triangulation has reasonable barycentric transformsr$   rO   axisc                 t    | d d dd d f         }| d d d dd d f         }t          j        d|||z
            S )Nr*   z
ijk,ik->ij)r   einsum)trr   rTinvs       r   barycentric_transformzJTestUtilities._check_barycentric_transforms.<locals>.barycentric_transform(  sL    111R6
AaaaAAAg;D9\4Q777r   ignore)invalidg?N r*   c           	      h    g | ].}t           j                            |d d d d f                   /S r   )r   linalgdet).0kqs     r   
<listcomp>z?TestUtilities._check_barycentric_transforms.<locals>.<listcomp>7  sI     9 9 9  9==1QQQqqq522 9 9 9r   r   )rB   rw   rC   sumr   finfofloateps	transformerrstateisnanallabsr   nonzerorT   r<   nsimplexisfiniter   rx   any)r[   rz   rt   	unit_cubeunit_cube_tolverticessc	centroidsr   r   cokr   rG   at_boundaryr   s                  @r   _check_barycentric_transformsz+TestUtilities._check_barycentric_transforms  s>    :cm,3LLaL((2-	
	8 	8 	8
 huoo!!!#-;;[*** 	N 	N!a((CBKKNS,@+E+E1+E+M+MMB	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	W88rz2#88999 QQQss111W2d111 55 9 9 9 9$)#,$7$79 9 9 : :[qqq1u-..&273<<2GHW88rz2#88999 Y''2g#-!A"6777W88rz2#88999 	>$5:::BBKI])::??Q?GGGKr'[(BBFFHH<<2:rc??<<=====	> 	>s   AC$$C(+C(r+   c                    t          j        t          j                            t          j                            t                    dd                    }|d         }|                                 t          j	        |          }t          j
        |j        d d ddf                                                   }t          |dk     |           |                     |           d S )Ndatazdegenerate_pointset.npzr   r      )r   loadospathjoindirname__file__rX   rR   rv   r   r   r   r   r   )r[   r   rB   rz   	bad_counts        r   &test_degenerate_barycentric_transformsz4TestUtilities.test_degenerate_barycentric_transformsJ  s     wrw||BGOOH$=$=v$=? ? @ @c

nV$$ HS]111Qq51226688		B	*** 	**3/////r   r   c                    t          j        t                    j        }ddddd}t	          dd          D ]}t          j        dd	||                   }t           j        t          t          t           j	        t          j
        t          j        |g|z                                 j        }d
|z  }t          j        |          }|                     ||d           t           j                            d           t           j                            |j        d                   dk     }||d d fxx         d|z  t          j        j        ||d d f         j         dz
  z  z  cc<   t          j        |          }|                     ||dd|z             t          j        t           j        ||f                   }|                     ||dd|z             d S )NF      r1   r/   )r,   r/   r0   r1   r,   r2   r   r$   zndim=%dT)rt   r   r!   rr   r(   )rt   r   r   )r   r   r   r   r<   linspacec_r   r   ravelbroadcast_arraysix_TrR   rv   r   r   seedrandr;   r_)	r[   r   npointsrC   r   gridrt   rz   ms	            r    test_more_barycentric_transformsz.TestUtilities.test_more_barycentric_transforms\  s    huoo!RA!,,!QKK 	D 	DDAq'$-00A5S2#6!T8K#LMMNN   $&G .&&C..sG9= / ? ? ? INN4   
1..4A111III3	QqqqS	 @3 FGGIII.&&C..sG9==>sU / D D D
 .tTz!233C..sG9==>sU / D D D D5	D 	Dr   N)r   Fr   )rd   re   rf   __doc__r}   r   r   r   r   r   r   pytestmark	fail_slowr   slowr   rg   r   r   ri   ri      s        
  *, , ,6H H H	= 	= 	=J J J(I I I" :<0545+> +> +> +>Z [20 0 0" [[2#D #D  #D #D #Dr   ri   c                   &    e Zd Zd Zd Zd Zd ZdS )TestVertexNeighborVerticesc                 `   d t          |j        j        d                   D             }|j        D ]-}|D ](}|D ]#}||k    r||                             |           $).|j        \  fdt          |j        j        d                   D             }t          |||d|           d S )Nc                 *    g | ]}t                      S rg   )set)r   rG   s     r   r   z5TestVertexNeighborVertices._check.<locals>.<listcomp>  s    >>>aCEE>>>r   r   c                     g | ];}t          t          t          |         |d z                                         <S r$   )r   r   int)r   rG   indicesindptrs     r   r   z5TestVertexNeighborVertices._check.<locals>.<listcomp>  sQ     4 4 4 3sGF1IfQqSk$9:;;<< 4 4 4r   z != rs   )r<   rB   r;   rw   addvertex_neighbor_verticesr   )	r[   rz   expectedsr   r   gotr  r  s	          @@r   _checkz!TestVertexNeighborVertices._check  s    >>5)9!)<#=#=>>> 	+ 	+A + + + +AAvv ***++
 64 4 4 4 4cj.q1224 4 4 	S(s,F,F(,F,FGGGGGGr   c                     t          j        g dt           j                  }t          j        |          }|                     |           d S )N)r"   r#   r%   rl   r   rT   ru   rR   rv   r  r   s      r   test_trianglez(TestVertexNeighborVertices.test_triangle  sF    ///rzBBBnV$$Cr   c                     t          j        g dt           j                  }t          j        |          }|                     |           d S )Nrk   rl   r  r   s      r   test_rectanglez)TestVertexNeighborVertices.test_rectangle  sF    666bjIIInV$$Cr   c                     t          j        g dt           j                  }t          j        |          }|                     |           d S )N)r"   r#   r&   r%   r'   )g?r(   rl   r  r   s      r   test_complicatedz+TestVertexNeighborVertices.test_complicated  sV     3 3 3:<*F F FnV$$Cr   N)rd   re   rf   r  r  r  r  rg   r   r   r   r     sS        H H H  
  
    r   r   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zej                            d ee                    d             ZdS )TestDelaunayz*
    Check that triangulation works.

    c                     t           j                            d          }t          t          t
          j        |           d S Nr$   )r   ma
masked_allrY   
ValueErrorrR   rv   r[   masked_arrays     r   test_masked_array_failsz$TestDelaunay.test_masked_array_fails  s1    u''**j%.,?????r   c                     t          j        ddddt           j        fgt           j                  }t	          t
          t          j        |           d S )Nr"   r#   r&   r$   rl   )r   rT   nanru   rY   r  rR   rv   r[   points_with_nans     r   test_array_with_nans_failsz'TestDelaunay.test_array_with_nans_fails  sA    (E5%!BF#DBJWWWj%./BBBBBr   c           	         t          dd          D ]}t          j        |dz   |f          }t          |          D ]	}d|||f<   
d|dd d f<   t          j        |          }|j                                         t          |j        t          j        |dz   t                    d d d f                    t          |j
        dt          j        |dz   t                    d d d f         z              d S )Nr,   r4   r$   rO   r*   rl   )r<   r   zerosrR   rv   rw   r   r   aranger  	neighbors)r[   ndrB   rG   rz   s        r   test_nd_simplexzTestDelaunay.test_nd_simplex  s   1++ 	R 	RBXr!tRj))F2YY " "!qsF2aaa4L.((CM   	"Q$c(B(B(B47(KLLLRXr!tC-H-H-Haaa-P(PQQQQ	R 	Rr   c                     t          j        g dt           j                  }t          j        |          }t          |j        g dg dg           t          |j        g dg dg           d S )Nrk   rl   rn   ro   )r*   r*   r$   )r*   r*   r   )r   rT   ru   rR   rv   r   rw   r%  r   s      r   test_2d_squarezTestDelaunay.test_2d_square  sr    666bjIIInV$$S]YYY			$:;;;S][[[+++$>?????r   c                 v   t          j        g dt           j                  }t          j        g dt           j                  }t           j        ||f         }t           j        ||f         }t	          j        t           j        ||f                    t	          j        t           j        ||f                    d S )N)r   r$   r   r$   rl   )r   r   r$   r$   )r   rT   ru   r   rR   rv   r   )r[   r   r]   xpyps        r   test_duplicate_pointsz"TestDelaunay.test_duplicate_points  s    H\\\444H\\\444U1a4[U1a4[ 	ruQT{###ruRV}%%%%%r   c                    t           d         }t          j        |          }t          |j        |j                                                 |                                           t          |j        |j                                                 |                                           t           d         }t          j        |          }t          |j        |j                                                 |                                           t          |j        |j                                                 |                                           d S )Nr6   r7   )r:   rR   rv   r   rB   rw   maxminr   s      r   test_pathologicalzTestDelaunay.test_pathological  s    *+nV$$SZ.2244fjjllCCCSZ.2244fjjllCCC*+nV$$SZ.2244fjjllCCCSZ.2244fjjllCCCCCr   c                 J   t           j                            dd          }t           j        ||f         }t	          j        |d          }t          t          j        |j        	                                          t          j
        t          |                               d S )Nr+   r,   z	QJ Qbb Ppqhull_options)r   r   r   r   rR   rv   r   uniquerw   r   r$  r=   r   s      r   test_jogglezTestDelaunay.test_joggle  s     A&&vv~&nV;???29S]%8%8%:%:;;9S[[11	3 	3 	3 	3 	3r   c           	         t           j                            dd          }t           j        ||f         }t	          j        |          }t          t          t          j        |j	        
                                                    t          |          dz  k               t          t          |j                  t          |          dz  k               t          t          t          j        |j        d d df                             t          |          dz  k               t          t          j        |j        dk                         d S )Nr+   r,   r   )r   r   r   r   rR   rv   r   r=   r5  rw   r   coplanarr   vertex_to_simplexr   s      r   test_coplanarzTestDelaunay.test_coplanar  s    A&&vv~&nV$$BIcm11334455VaGHHHCL!!S[[!^3444BIcl111Q3/0011S[[!^CDDDs,12233333r   c                     g d}t          j        |d          }t          j        ddg          }t	          |j        |           d S )Nr"   r#   r%   r'   )皙?r=  Tfurthest_site)r$   r0   r   )r0   r,   r   )rR   rv   r   rT   r   rw   )r[   rB   rz   r  s       r   test_furthest_sitezTestDelaunay.test_furthest_site  sM    AAAnV48888Y	2333=(33333r   r@   c                    t           |         \  }}t          j        |d          }t          j        |d         d|          }|dd          D ]}|                    |           t          j        |          }t          j        |d         d|          }t          |          dk    r3|                    t          j        |dd          d          d           |                    d          rt          t          j	        |j
                                                  t          j        |j        d                              t          t          j	        |j
                                                  t          j        |j        d                              n!t          |j
        |j
        t                     t          |j
        |j
        t                     d S )	Nr   r   Tr   r4  r$   r   pathologicalrQ   )r?   r   concatenaterR   rv   r   r=   
startswithr   r5  rw   r   r$  r;   r    r   )	r[   r@   rF   rD   rB   objchunkobj2obj3s	            r   test_incrementalzTestDelaunay.test_incremental  s    ,D1Q///nVAYD+/1 1 1ABBZ 	" 	"ENN5!!!!~f%%~fQiT,02 2 2v;;??OOBN6!"":A>>>$(  * * * ??>** 
	@ ry)<)<)>)>??!ya99; ; ;ry)=)=)?)?@@!ya99; ; ; ; .cmT^2>@ @ @ @ 	*$.$..:	< 	< 	< 	< 	< 	<r   N)rd   re   rf   r   r  r!  r'  r)  r-  r1  r6  r:  r@  r   r   parametrizer   r?   rJ  rg   r   r   r  r    s         @ @ @C C CR R R@ @ @	& 	& 	&
D 
D 
D	3 	3 	34 4 44 4 4 [VVV,@%A%ABB!< !< CB!< !< !<r   r  c                 l   t          t          t          |                    }t          t          t          |                    }||k    r| j        d         dk    rdt	          j        t                    j        z  }|D ]\  }}|D ]\  }}| |         | |         z
  }|t          j        	                    |          z  }t	          j
        |d          |d         g          }	t	          j        |	| |         | |         z
            }
t	          j        |	| |         | |         z
            }t	          j        t	          j        |
|	          d          st	          j        t	          j        ||	          d          st	          j        || |         | |         z
            }
t	          j        || |         | |         z
            }t	          j        || |         | |         z
            }|
| k     s	|
||z   k    rt|| k     s	|||z   k    r nt          d          d S t          ||           d S )Nr$   r,   i  r   zcomparison fails)r   r   r   r;   r   r   r   r   r   normrT   r   allcloseAssertionErrorr   )rB   facets_1facets_2r   r   r   apbptr   c1c2c3s                r   assert_hulls_equalrX  &  s    3|X..//H3|X..//H8Q1 4 4 RXe__(( 	9 	9DAq" 9 9B2J+RY^^A&&&HqteQqT]++ VAvay6":566VAvay6":566{26"a==!44 {26"a==!44  VAvay6":566VAvay6":566VAvbzF2J67799R#X99R#X $%7888 
 	8$$$$$r   c                      e Zd Zd Zd Zej                            d ee	                    d             Z
ej                            d ee                    d             Zd Zd Zej                            dd	d
g          d             Zej                            dddg          ej                            d ej        ddgg           ej        g de          f ej        ddgg           ej        g de          f ej        ddgg           ej        g de          f ej        ddgddgg           ej        g de          f ej        ddgg           ej        g de          fg          d                         Zej                            dd	d
g          d             Zej                            dd	d
g          d             Zej                            dd	d
g          d             Zd S )!TestConvexHullc                     t           j                            d          }t          t          t
          j        |           d S r  )r   r  r  rY   r  rR   r   r  s     r   r  z&TestConvexHull.test_masked_array_fails^  s2    u''**j%"2LAAAAAr   c                     t          j        dddt           j        fgt           j                  }t	          t
          t          j        |           d S )Nr"   r&   r,   rl   )r   rT   r  ru   rY   r  rR   r   r  s     r   r!  z)TestConvexHull.test_array_with_nans_failsb  s@    (E51RV*#=RZPPPj%"2ODDDDDr   r@   c                    t           |         }t          j        |          }t          j        |          }t	          ||j        |j                   |j        d         dk    r@t          t          j
        |j                  t          j        |j                             d S t          t          j
        |j                  |j                   d S )Nr$   r,   )r:   rR   rv   r   rX  r   rw   r;   r   r   r5  r   r   )r[   r@   rB   rz   r   s        r   test_hull_consistency_triz(TestConvexHull.test_hull_consistency_trif  s     $nV$$''63?DNCCC <?a4>22BGDM4J4JKKKKK4>22DMBBBBBr   c                 &   t           |         \  }}t          j        |d          }t          j        |d         d          }|dd          D ]}|                    |           t          j        |          }t          j        |d         d          }t          |          dk    r3|                    t          j        |dd          d          d           t          ||j        |j                   t          ||j        |j                   d S )Nr   r   Tr   r$   r   )	r?   r   rD  rR   r   r   r=   rX  rw   )	r[   r@   rF   _rB   rF  rG  rH  rI  s	            r   rJ  zTestConvexHull.test_incrementalw  s    ).	Q///vayd;;;ABBZ 	" 	"ENN5!!!!''q	t<<<v;;??OOBN6!"":A>>>$(  * * * 	63=$.AAA63=$.AAAAAr   c           	      l   t           j                            d           t           j                            dd          }t	          j        |          }t          t          j        |j                  t          j	        |j
                             |j        |j
                 j        \  }}t          j        ||                                z
  ||                                z
            }t          t          j        t          j        t          j        |                    dk                         d S )Nr!   r.   r,   r   )r   r   r   r   rR   r   r   r5  rw   r   r   rB   r   arctan2meanr   r   diffunwrap)r[   rB   r   r   r]   angles         r   test_vertices_2dzTestConvexHull.test_vertices_2d  s    
	tA&&''RYt~..0F0FGGG {4=)+1
1qvvxx<QVVXX66rwry//00145566666r   c                     t          j        g d          }t          j        |          }t	          |j        dd           t	          |j        dd           d S )Nr   rO   r   r   r   r   r   s      r   r   zTestConvexHull.test_volume_area  sk     G G G H Hv&&
BU3333"5111111r   r   FTc                     t          j        ddgddgddgddgddgg          }t          j        ||d          }t          j        g dt                    }|j        }t          ||           d S )	Nrr   皙?rq   333333?QG4rB   r   r4  )FTFFrl   r   rT   rR   r   boolgoodr   r[   r   rB   r   r  actuals         r   test_good2dzTestConvexHull.test_good2d  s     C:::::	' ( (
 v,7.35 5 5 8777tDDDVX&&&&&r   
visibilityrl  zQG-4znew_gen, expectedrq   gffffff?)FFFFFrl   gffffff)FTFFFg=
ףp=?)FFFTTr(   rk  )FFTFFg433333?c                    t          j        ddgddgddgddgddgg          }t          j        |d|          }|                    |           |j        }d|v rt          j        |          }t          ||           d S )Nrr   rj  rq   rk  Trm  -)r   rT   rR   r   r   rp  invertr   )r[   new_genr  rt  rB   r   rr  s          r   test_good2d_incremental_changesz.TestConvexHull.test_good2d_incremental_changes  s    N C:::::	' ( (
 v,0.8: : : 	   *y**HVX&&&&&r   c                     t          j        ddgddgddgddgddgg          }t          j        ||          }|j        }|J |r2|                    t          j        d                     |j        }|J d S d S )Nrr   rj  rq   rk  )rB   r   r$   r,   )r   rT   rR   r   rp  r   r#  )r[   r   rB   r   rr  s        r   test_good2d_no_optionz$TestConvexHull.test_good2d_no_option  s     C:::::	' ( (
 v,79 9 9~~~ 	"OOBHV,,---YF>>>	" 	" ">r   c                     t          j        ddgddgddgddgddgg          }t          j        ||d          }t          j        g dt                    }|j        }t          ||           d S )Nrr   rj  rq   rl  rm  )FFFFrl   rn  rq  s         r   test_good2d_insidez!TestConvexHull.test_good2d_inside  s    
 C:::::	' ( (
 v,7.35 5 5 8888EEEVX&&&&&r   c                     t          j        g dg dg dg dg dg          }t          j        ||d          }t          j        g dt          	          }t          |j        |           d S )
Nr)   r)   r)   )gN7?g+xٿgg>@?)gFE%'?gWۧ=g/J?)g6r?gtĭ4gŷ)gw6y?gQgb?QG0rm  )TFFFrl   )r   rT   rR   r   ro  r   rp  )r[   r   rB   r   r  s        r   test_good3dzTestConvexHull.test_good3d
  s     ???@@@@@@AAA@@@	B C C
 v,7.35 5 5 8777tDDDTY)))))r   N)rd   re   rf   r  r!  r   r   rK  r   r:   r^  r?   rJ  rg  r   rs  r   rT   ro  ry  r|  r~  r  rg   r   r   rZ  rZ  ]  s       B B BE E E [VVVH%5%566C C 76C  [VVV,@%A%ABBB B CBB(7 7 72 2 2 []UDM::' ' ;:' [\#$,  ! ! [0 
C:,			555T	B	B	B	D
 
C;-	 	 	444D	A	A	A	C
 
C;-	 	 	3334	@	@	@	B 
C:Sz*	+	+	444D	A	A	A	C 
C%&	'	'	555T	B	B	B	D93
  >' '? 	! !F'$ []UDM::" " ;:"$ []UDM::' ' ;:'  []UDM::* * ;:* * *r   rZ  c                      e Zd Zej                            dddg          ej                            dddg          ej                            ddd	g          d
                                     Zd Zd Zd Z	ej                            d e
e                    d             Zd Zd Zej                            d          ej                            d e
e                    d                         ZdS )TestVoronoizqhull_opts, extra_pts)z	Qbb Qc Qzr$   )zQbb Qcr   n_pts2   d   rC   r,   r/   c                 "   t           j                            d          }|                    ||f          }t          ||          }|j        }|                                |dz
  |z   k    sJ |j        t          |j                  |z
  k    sJ t          |j                  ||z   k    sJ |j	        j
        d         |k    sJ |rEd |j        D             }	|	                    d          dk    sJ |	                    d          |vsJ d S d S )Nin  r3  r$   r   c                 ,    g | ]}t          |          S rg   r=   r   r   s     r   r   z;TestVoronoi.test_point_region_structure.<locals>.<listcomp>7  s    333!s1vv333r   )r   r   default_rngr
   point_regionr/  sizer=   regionsrB   r;   countindex)
r[   
qhull_optsr  	extra_ptsrC   rngrB   vor	pt_regionsublenss
             r   test_point_region_structurez'TestVoronoi.test_point_region_structure  s4    i##D))UDM**fJ777$	}}%!)i"77777~S[!1!1I!=====3;59#44444z"e++++  	533s{333G ==##q((((==##94444	5 	5
 54r   c                     t           j                            d          }t          t          t
          j        |           d S r  )r   r  r  rY   r  rR   r
   r  s     r   r  z#TestVoronoi.test_masked_array_fails=  s1    u''**j%->>>>>r   c                 >    g d}d}|                      ||           d S )N)	r"   r#   )r   r,   r%   r&   r{  )r,   r   )r,   r$   )r,   r,   a	  
        2
        5 10 1
        -10.101 -10.101
           0.5    0.5
           0.5    1.5
           1.5    0.5
           1.5    1.5
        2 0 1
        3 2 0 1
        2 0 2
        3 3 0 1
        4 1 2 4 3
        3 4 0 2
        2 0 3
        3 4 0 3
        2 0 4
        0
        12
        4 0 3 0 1
        4 0 1 0 1
        4 1 4 1 2
        4 1 2 0 2
        4 2 5 0 2
        4 3 4 1 3
        4 3 6 0 3
        4 4 5 2 4
        4 4 7 3 4
        4 5 8 0 4
        4 6 7 0 3
        4 7 8 0 4
        _compare_qvoronoir[   rB   outputs      r   test_simplezTestVoronoi.test_simpleA  s9    * * *
@ 	vv.....r   c                    d |                                                                 D             }t          |d         d                   }t          t	          t
          |dd|z                                }t          |d         d                   }d |d|z   d|z   |z            D             }d |d|z   |z   d         D             }d	 |d|z   |z   d         D             }	t          j        |fi |}
d
 }t          |
j	        |           t          t          t	          t
          |
j                            t          t	          t
          |                               t          t          t          t	          ||                    t          t	          ||	                                        }t          t          t          t	          ||
j                                                            t          t	          ||
j                                                }|                                 |                                 t          ||           dS )z:Compare to output from 'qvoronoi o Fv < data' to Voronoi()c           	      v    g | ]6}t          t          t          |                                                    7S rg   )r   r   r   splitr  s     r   r   z1TestVoronoi._compare_qvoronoi.<locals>.<listcomp>n  s2    SSS!$s5!'')),,--SSSr   r$   r   r/   r,   c                 6    g | ]}d  |dd         D             S )c                 2    g | ]}t          |          d z
  S r  r  r   r]   s     r   r   z<TestVoronoi._compare_qvoronoi.<locals>.<listcomp>.<listcomp>r  s"    ,,,CFF1H,,,r   r$   Nrg   r  s     r   r   z1TestVoronoi._compare_qvoronoi.<locals>.<listcomp>r  sD     A A A -,ae,,, A A Ar   c                 6    g | ]}d  |dd         D             S )c                 ,    g | ]}t          |          S rg   r  r  s     r   r   z<TestVoronoi._compare_qvoronoi.<locals>.<listcomp>.<listcomp>t  s    000AQ000r   r$   r/   rg   r  s     r   r   z1TestVoronoi._compare_qvoronoi.<locals>.<listcomp>t  s>     = = = 101Q3000 = = =r   Nc                 6    g | ]}d  |dd         D             S )c                 2    g | ]}t          |          d z
  S r  r  r  s     r   r   z<TestVoronoi._compare_qvoronoi.<locals>.<listcomp>.<listcomp>v  s"    3333q66!8333r   r/   Nrg   r  s     r   r   z1TestVoronoi._compare_qvoronoi.<locals>.<listcomp>v  s>     ? ? ? 43QqrrU333 ? ? ?r   c                 :    t          t          |                     S r   r   r   s    r   	sorttuplez0TestVoronoi._compare_qvoronoi.<locals>.sorttuple|  s    ###r   )strip
splitlinesr  r   r   r   rR   r
   r   r   r   r   r  zipridge_pointsr   ridge_verticesr   )r[   rB   r  kwnvertexr   nregionr  r  r  r  r  p1p2s                 r   r  zTestVoronoi._compare_qvoronoij  sa    TSv||~~7P7P7R7RSSSfQil##E6!AgI+#67788fQil##A A"1W9QwYw->#>?A A A= =!''	'(9(:(:!;= = =? ?#)!G)G*;*<*<#=? ? ? mF))b))	$ 	$ 	$ 	h///SUCK0011UG,,--	/ 	/ 	/ #d3y,77883y.99::< < = =#d3y#*:*A*A*C*CDDEE3y#*<==>>@ @ A A
			
			Rr   r@   c                 0   t           |         }t          |          }t          j        |          }|j                                        D ]\  }}t          j        t          j        |          dk              s0|j	        |         
                    d          }d||d                  |z
  z  }|                    ||z   d          \  }	}
t          |
|d                    |                    ||z
  d          \  }	}
t          |
|d                    d S )Nr   r   gư>r$   )r   )r:   KDTreerR   r
   
ridge_dictitemsr   r   asarrayr   rc  queryr   )r[   r@   rB   treer  r{   r   ridge_midpointr   r   r   s              r   test_ridgeszTestVoronoi.test_ridges  s    $f~~mF##N((** 	" 	"DAq6"*Q--1,--  \!_11q199Nqt~56Ajj!!3qj99GD!AaD!!!jj!!3qj99GD!AaD!!!!	" 	"r   c                 B    g d}d}|                      ||d           d S )Nr<  a'  
        2
        3 5 1
        -10.101 -10.101
        0.6000000000000001    0.5
           0.5 0.6000000000000001
        3 0 2 1
        2 0 1
        2 0 2
        0
        3 0 2 1
        5
        4 0 2 0 2
        4 0 4 1 2
        4 0 1 0 1
        4 1 4 0 1
        4 2 4 0 2
        Tr>  r  r  s      r   r@  zTestVoronoi.test_furthest_site  s7    AAA$ 	vvTBBBBBr   c                     g d}t          |          }t          |j        d           t          |d          }t          |j        d           d S )Nr<  FTr>  )r
   r   r?  )r[   rB   r  s      r   test_furthest_site_flagz#TestVoronoi.test_furthest_site_flag  sV    AAAfooS&u---f4000S&t,,,,,r   r+   c                    t           |         d         d         j        d         dk    rd S t           |         \  }}t          j        |d          }t	          j        |d         d|          }|dd          D ]}|                    |           t	          j        |          }t	          j        |d         d|          }t          |          dk    r3|                    t          j        |dd          d          d           t          t          |j	                  t          |j	                             t          t          |j	                  t          |j	                             ||fD ]Ȋddit          j                  D ]9\  }	}
t          |j                  D ]\  }}t          j        |
|          r||	<    :fd	d
 }t           | j                             ||j                             t           | j                             ||j                             d S )Nr   r$   r/   r   TrB  r   r*   c                     t          | d          rt          fd| D                       S 	 |          S # t          $ r%}dj        |          }t	          |          |d }~ww xY w)N__len__c                 &    h | ]} |          S rg   rg   )r   r]   remaps     r   	<setcomp>z>TestVoronoi.test_incremental.<locals>.remap.<locals>.<setcomp>  s!    !6!6!6q%%((!6!6!6r   z*incremental result has spurious vertex at )hasattrr   KeyErrorr   rO  )r   emessageobjxr  
vertex_maps      r   r  z+TestVoronoi.test_incremental.<locals>.remap  s    1i(( 8 !6!6!6!6A!6!6!67779%a=( 9 9 9 :%)]1%5 :  :G(11q89s   6 
A%  A  A%c                     t          t          t          |                     }d|v r|                    d           d |D             }|                                 |S )Nrg   c                 8    g | ]}t          |          d k    |S r  r  r  s     r   r   zDTestVoronoi.test_incremental.<locals>.simplified.<locals>.<listcomp>  s#    888qSVVaZZZZZr   )r   r   r   remover   )r   r  s     r   
simplifiedz0TestVoronoi.test_incremental.<locals>.simplified  sY    Ca0011;;LL$$$88E888

r   )r?   r;   r   rD  rR   r
   r   r=   r   r  r   r   rN  r  r  )r[   r@   rF   rD   rB   rF  rG  rH  rI  r|   r   rG   v2r  r  r  r  s                 @@@r   rJ  zTestVoronoi.test_incremental  s   
  %a(+1!4q88F+D1Q///mF1I4+/1 1 1ABBZ 	" 	"ENN5!!!!}V$$}VAYD+/1 1 1v;;??OOBN6!"":A>>>$(  * * * 	S)**C0A,B,BCCCS)**C0A,B,BCCC I  	  	DbJ!$-00 * *1&t}55 * *EAr{1b)) *()
1*9 9 9 9 9 9 9   
55..//
4<((   
55!45566
4.//   ; 	  	r   N)rd   re   rf   r   r   rK  r  r  r  r  r   r:   r  r@  r  r   r?   rJ  rg   r   r   r  r    ss       [4 		7   [Wr3i00[VaV,,5 5 -, 10 54? ? ?'/ '/ '/R     D [VVVH%5%566" " 76"0C C C0- - - [2[VVV,@%A%ABB= = CB = = =r   r  c            
          e Zd ZddZej                            dej        e	g          d             Z
d Zd Zd Zd Zej                            d	 ed
d                    d             Zej                            d ej        g d           ej        g dg dg dg          g          d             Zd Zd Zd ZdS )Test_HalfspaceIntersectionr   c                    t          |j        |j                   t          j        |j        d         ft                    }|D ]d}t          j        t          ||z
            |k                         d                    d         }t          |j        d           d||d         <   et          |                                           dS )z2Check that every line in arr1 is only once in arr2r   rl   r$   r   r  TN)	r   r;   r   r#  ro  r   r   r   r   )r[   arr1arr2r   truthsl1indexess          r   assert_unordered_allclosez4Test_HalfspaceIntersection.assert_unordered_allclose
  s    TZ,,,4:a=*$777 	& 	&Bj#dRi..4"7!<!<!!<!D!DEEaHG---!%F71:

r   dtc                    t          j        g dg dg dg dg|          }t          j        ddg|          }t          j        ddgddgddgddgg          }t          j        ||          }t	          |j        |           d S )	N)r*   r   r   )r   r*   r   )r$   r   )r   r$   r  rl   r$   r)   rP   )r   rT   rR   HalfspaceIntersectionr   intersections)r[   r  
halfspacesfeasible_pointrB   r   s         r    test_cube_halfspace_intersectionz;Test_HalfspaceIntersection.test_cube_halfspace_intersection  s    Xzzz)zz)zz)zz+ 356 6 6
 1a&333C:SzC:SzJKK*:~FF*F33333r   c                    t           j                            t           j                            t                    dd          }t          j        |          }t          j        |d d dd f         |d d d df         f           }t          j        g d          }t          j
        ||          }t          |j        j        d           t          |j        d           t          t!          |j                  d           |j        D ]}t          t!          |          d            |d d d	f         |d d d d	f                             |          z   }|                     |d d d d	f         j        |z  j        |j                   t-          j        g d
          }|D ]A}	t          t          j        |j        |	k                        d                    d           Bd S )Nr   zselfdual-4d-polytope.txtr$   )r)   r)   r)   r)   )   r0   g      @@r  r2   r*   )r)   r)   r(         r   )r   r   r   r   r   r   
genfromtxthstackrT   rR   r  r   r  r;   r   dual_volumer=   dual_facetsr   r  r   dual_points	itertoolspermutationsr   r   )
r[   fnameineqsr  
feas_pointhsfacetdistsrB   points
             r   $test_self_dual_polytope_intersectionz?Test_HalfspaceIntersection.test_self_dual_polytope_intersection#  s   RW__X6679 9e$$iqqq!""uuQQQU| <===
X...//
(Z@@R%+W555BND111S(("---^ 	( 	(EUQ''''111b5!Jqqq#2#v$6$:$::$F$FF&&
111crc6(:(<U(B'Er~VVV'(;(;(;<< 	M 	ME!1U!: ? ?Q ? G GHH!LLLL	M 	Mr   c                    t          j        g dg dg dg dg          }t          j        g d          }t          t          t          j        ||           t          j        dgdgg          }t          t          t          j        ||           t          j        ddgg          }t          t          t          j        ||           t          j        ddg          }t          t          j        t          j        ||           d S )N)      r)   r)   )r)   r  r)   rO   r)   r  r)   rO   r  r(   r(   r(   r(   r  )r   rT   rY   r  rR   r  
QhullError)r[   r  r  s      r   test_wrong_feasible_pointz4Test_HalfspaceIntersection.test_wrong_feasible_point:  s%   X////////////1 2 2
 ///22j1:~	O 	O 	OC53%.11j1:~	O 	O 	OC:,//j1:~	O 	O 	O 4,//e&1:~	O 	O 	O 	O 	Or   c           	         t          j        g dg dg dg dg dg dg          }t          j        g dg dg d	g d
g          }t          j        dggdz            }t          j        t          j        || f          |f          }t          j        g d          }t	          j        ||d          }t	          j        ||d          }t          |          D ]\  }}	|                    |	t           j        d d f                    |                    |	t           j        d d f         d           t          j        ||d |dz   d d f         f          }
t	          j        |
|          }t          |j
        |j
                   t          |j
        |j
                   t          |j        |j                   |                     |j        |j                   |                                 d S )N)r)   r)   r  r  )r)   r  r)   r  )r  r)   r)   r  )rO   r)   r)   r  )r)   rO   r)   r  )r)   r)   rO   r  )rO   rO   rO   )rO   rO   r  )rO   r  rO   )r$   r  r  r  r4   r  Tr   r   r$   )r   rT   r  vstackrR   r  r   add_halfspacesnewaxisr   r  r  r  rX   )r[   r  extra_normalsoffsetsextra_halfspacesr  inc_hs
inc_res_hsr|   ehstotalr  s               r   rJ  z+Test_HalfspaceIntersection.test_incrementalQ  s/   X2222222221111111113 4 4
 ,,,"/--"/--"/--"1 2 2 (SE719%%9bi0O&P&P&-&/ 0 0 Xlll++
,ZQUVVV0Z=AC C C
   011 	S 	SFAs!!#bj!!!m"4555%%c"*aaa-&8$%GGGIz+;DQqSD!!!G+DEFFE,UJ??BF-z/DEEEF-r}=== B,j.FGGG**6+?AQRRRRr   c           	         t          j        g dg dg dg dg dg dg          }t          j        g d          }t          j        ||          }t          j        g dg d	g d
g dg dg dg          }g dg dg dg dg dg dg dg dg}t	          |          t	          |j                  k    sJ t          ||j                  D ]'\  }}t          |          t          |          k    sJ (t          |j	        |           d S )N)r  r)   r)   r)   )rO   r)   r)   r  )r)   r  r)   r)   )r)   rO   r)   r  )r)   r)   r  r)   )r)   r)   rO   r  r  )r  r   r   )r,   r   r   )r   r  r   )r   r,   r   )r   r   r  )r   r   r,   )r,   r0   r   )r0   r,   r$   )r1   r,   r   )r,   r1   r$   )r/   r0   r$   )r0   r/   r   )r1   r/   r$   )r/   r1   r   )
r   rT   rR   r  r=   r  r  r   r   r  )r[   r  r  r  qhalf_pointsqhalf_facetsr   r   s           r   	test_cubez$Test_HalfspaceIntersection.test_cube|  st   X0000000000000000002 3 3
 ))(U;; xJJIIJJIIJJII!   IIIIIIIIIIIIIIII <  C$7$77777bn55 	$ 	$DAqq66SVV#####55555r   r   r$   r0   c                    t          j        g dg dg dg dg          }t          j        g dg dg dg dg          }t          j        |t          j        d	d
g          d          }|                    |d|d d f                    |                    ||dd d f                    |                                 t          j        ddgddgddgddgg          }|j        }t          j        |d d df         |d d df         f          }t          j        |d d df         |d d df         f          }t          ||         ||                    d S )N)rO   r)          )r  r)   r  )r)   rO   r  )r)   r  r  r  )r  r)   r  r  )r)   r  r  gC6?ga+e?Tr   r   r0   rO   r  r$   )	r   rT   rR   r  r   rX   r  lexsortr   )	r[   r   
big_squaresmall_squarer  expected_intersectionsactual_intersectionsind1ind2s	            r   test_halfspace_batchz/Test_HalfspaceIntersection.test_halfspace_batch  s    X...0 1 1

 x!0!0!0!2 3 3
 ()+662B)C)C59; ; ; 	,qs111u-...
,qs111u-...



 "$B8,.9,/9,/:+7 "8 "8  "/ z/157KAAAqD7QRSSz1!!!Q$79OPQPQPQSTPT9UVWW,T24J44PQQQQQr   r  )gJpgzS_-ݿg-|d?)g#?g'ݿg1&ܯkݿ)r)   g:e|?gđ"ֿc                 4   t          j        g dg dg dg dg          }t          j        |t          j        d          d          }t          j        t          j        d	          5  |                    |           d d d            d S # 1 swxY w Y   d S )
Nr$   r   r*   r   r$   r*   r*   r   r*   r   r*   r*   r,   Tr   zfeasible.*-0.706.*match	r   rT   rR   r  r#  r   r   r  r   )r[   r  initial_squareincremental_intersectors       r   test_gh_19865z(Test_HalfspaceIntersection.test_gh_19865  s     (ZZ[[[+++F  #("=n>@hqkkJN#P #P #P ]5+3GHHH 	? 	?#22:>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   *BBBc           	      z   t          j        g dg dg dg          }t          j        g dg dg dg dg dg d	g          }t          j        |t          j        d
          d          }t          j        t          j        d          5  |                    |           d d d            d S # 1 swxY w Y   d S )N)r$   r$   r$   r*   )r*   r*   r*   r*   )r$   r   r   r   )r$   r   r   r*   )r*   r   r   r*   )r   r$   r   r*   )r   r*   r   r*   )r   r   r$   r*   )r   r   r*   r*   r/   Tr   zfeasible.*[1 0 0 0]r  r  )r[   r  initial_cuber   s       r   test_gh_19865_3dz+Test_HalfspaceIntersection.test_gh_19865_3d  s1    X}}}///+||- . .
 x!/!.!/!.!/!1 2 2 #("=l>@hqkkJN#P #P #P ]5+3HIII 	? 	?#22:>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   B00B47B4c                 N   t          j        g dg dg dg dg          }t          j        |t          j        d          d          }t          j        t          d	          5  |                    t          j	        d
                     d d d            d S # 1 swxY w Y   d S )Nr  r  r  r  r,   Tr   z2D arrayr  )r0   r0   r0   )
r   rT   rR   r  r#  r   r   r  r   onesr[   r  r   s      r   test_2d_add_halfspace_inputz6Test_HalfspaceIntersection.test_2d_add_halfspace_input  s    (ZZ[[[+++F  #("=n>@hqkkJN#P #P #P ]:Z888 	G 	G#222793E3EFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   %(BB!Bc                    t          j        g dg dg dg dg          }t          j        |t          j        d          d          }t          |j        t          j        d                     |                    t          j        g d	                     t          |j        t          j        d
                     d S )Nr  r  r  r  r,   Tr   r0   )r,   r,   r*   r1   )	r   rT   rR   r  r#  r   dual_verticesr$  r   r'  s      r   test_1d_add_halfspace_inputz6Test_HalfspaceIntersection.test_1d_add_halfspace_input  s    (ZZ[[[+++F  #("=n>@hqkkJN#P #P #P 	/=ry||LLL..rx


/C/CDDD/=ry||LLLLLr   N)r   )rd   re   rf   r  r   r   rK  r   ru   r  r  r  r  rJ  r  r<   r  rT   r!  r$  r(  r+  rg   r   r   r  r  	  s       	 	 	 	 [TBJ#4554 4 654M M M.O O O.) ) )V"6 "6 "6H [S%%!**--R R .-RD [\RX44455RX666555---/ 0 0,  ? ? ?? ? ?&
G 
G 
G
M 
M 
M 
M 
Mr   r  diagram_typec                     t           j                            d          }|                    d          }t          j        t
          d          5   | |           d d d            d S # 1 swxY w Y   d S )N{   )r0   r+   r/   
dimensionsr  )r   r   r  r   r   r  )r,  r  invalid_datas      r   test_gh_20623r1    s    
)


$
$C::j))L	z	6	6	6 # #\"""# # # # # # # # # # # # # # # # # #s   A))A-0A-c                     t          j        ddgddgddgddgg          } t          j        |           }t	          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r=  r$   )r   rT   rR   rv   r   r   
IndexErrorrx   
generatorsrz   s     r   test_gh_21286r6    s<   Aq6As8aVaV<==J
.
$
$C	z	"	"                	z	"	"   	                 s$   A00A47A4B77B;>B;c                      t          j        ddgddgddgddgg          } t          j        |           }t	          j        t                    5  |                    g d           d d d            d S # 1 swxY w Y   d S )Nr   r=  r$   )r,   r,   r,   )r   rT   rR   rv   r   r   r  rx   r4  s     r   test_find_simplex_ndim_errr8    s    Aq6As8aVaV<==J
.
$
$C	z	"	" $ $###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   A33A7:A7)9r   rU   numpyr   numpy.testingr   r   r   r   r   r   r   rY   scipy.spatial._qhullspatial_qhullrR   scipy.spatialr	   r  r
   r  r   r   r    r   r   rB   rT   pathological_data_1r   ru   r   pathological_data_2r   bug_2850_chunksbug_2850_chunks_2r  r:   r?   rI   r@   rA   rL   ri   r   r  rX  rZ  r  r  r   rK  rv   r1  r6  r8  rg   r   r   <module>rC     su	   				     I I I I I I I I I I I I I I  * * * * * * $ $ $ $ $ $ $ $ $ + + + + + + ! ! ! ! ! !       16 	 	 	 	 	t   	=	=	=bh  
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)    . bhHr1gAwGaVaVXRXbj!!%%&AA     9>>"a((28aUQqEAa51Q%899
 %innR++XRX!uqeaUQqE&BCCCEE 
 2:f%%A&&A&&A&&A&&A&&A&&A&&))  !$'$d+  4 4 44  ' 'D ' '	dI&&&&'+ + + + + + + +\XD XD XD XD XD XD XD XDv       B}< }< }< }< }< }< }< }<@4% 4% 4%nz* z* z* z* z* z* z* z*xk k k k k k k k`xM xM xM xM xM xM xM xMv '5>)BCC# # DC#	 	 	$ $ $ $ $r   