
    Riej                        d dl mZmZmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" d d	l#m$Z$m%Z%m&Z& d d
l'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- d Z.e%d             Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d  ZAd! ZBd" ZCd# ZDd$ ZEd% ZFd&S )'    )FloatRationaloopi)S)Symbolsymbols)Abs)sqrt)acoscossin)tan)CircleEllipseGeometryErrorPointPoint2DPolygonRayRegularPolygonSegmentTriangleare_similarconvex_hullintersectionLineRay2D)raisesslowwarns)verify_numerically)raddeg)	integratec                 H    t          d          }| | |z
  cxk     o|k     nc S )z.Test if two floating point values are 'equal'.z1.0E-10)r   )abt_floats      Alib/python3.11/site-packages/sympy/geometry/tests/test_polygon.pyfeqr+      s7    IG8a!e%%%%g%%%%%    c                  
@  &' t          dd          &t          dd          't          dd          } t          dd          }t          dd          }t          dd          }t          d	d          }t          j        }t          d
d
          t          dd
          t          dd          }}}t	          |||          }	t          t          d
d
                    t          d
d
          k    sJ t          |t          dd
          ||          |	k    sJ t          t          dd
          |||          |	k    sJ t          |||t          dd
                    |	k    sJ t          |t          dd
          ||          |	k    sJ t          ||t          dd          ||          |	k    sJ t          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd                    t          t          dd          t          dd          t          dd          t          dd                    k    sJ t          t          d
d
          t          dd          t          dd
          t          dd          t          dd          t          d
d                    }
t          t          dd
          t          dd          t          d
d
          t          d
d          t          dd          t          dd                    }t          t          d
d
          t          dd
          t          dd          t          dd                    }t          t          d
d
          t          dd          t          dd          t          dd
                    }t          t          d
d
          t          dd          t          d
d                    }t          t          dd          t          dd          t          dd          t          dd                    }t          t          &'          t          | |          t          ||                    }t          t          &'          t          ||          t          | |                    }t          t          d
d
          t          dd          t          dd
          t          dd                    }t          t          d
d          t          dd          t          d
d
          t          dd
                    }t          t          d
d
          dd          }t          t          d
d
          dd
d          }t          t          dd          t          dd                    }|
|k    sJ t          |
j                  dk    sJ t          |
j	                  dk    sJ |
j
        ddt          d          z  z   t          d           z   t          d!          z   k    sJ |
j        d"k    sJ |
                                rJ t          d#d$d%d&d'                                          d(u sJ |                                sJ |                                sJ |j        }|t          d
d
                   t          dz  k    sJ |t          d
d                   t          dz  k    sJ |                    t          &'                    J |                    t          dd                    sJ |                    t          d
d
                    d(u sJ |                    t          dd
                    d(u sJ |
                    t%          t          d)d)          d                    d(u sJ |
                    t'          t          d)d          dd                    d(u sJ |                    d          &d
dgk    sJ |                    t          t          dd          t          d*d*          t          dd*                              dt          d          z  k    sJ |                    t          t          dd!          t          dd!          t          d!d+          t          dd+                              dk    sJ t-          t.          d,-          5  t          t          d
d
          t          dd
          t          dd                                        t          t          d
d
          t          d
d          t          dd                               d d d            n# 1 swxY w Y   t1          |          t1          t          t          d
d
          t          dd          t          d
d                              k    sJ t1          |
          t1          |          k    sJ t1          |          t1          |          k    sJ t1          |          t1          |          k    sJ |t          t          dd          t          d
d          t          d
d
                    k    sJ t          t          dd          t          d
d          t          d
d
                    |v sJ |t          d
d          k    sJ t          d
d          |v sJ |                    d.                              t          d.d          d
          t          d
d
          k    sJ t7          t8          &'fd/           |                    |          t          dt=          d0d1                    t          dt=          d2d                    gk    sJ |j        d
k    sJ |t?          t          d
d
          ddd
          k    sJ ||k    sJ |j         d
         t          dd
          k    sJ |j        d
         t          d
d
          k    sJ |!                    t          dz             |j         d
         t          d
d          k    sJ t?          t          d
d
          dd          }
t?          t          d
d
          dd          }t7          tD          d3            t7          tD          d4            t7          t8          d5            |
|k    sJ |
j#        t          t=          dd          z  k    sJ |
j$        t          t=          dd          z  k    sJ |j%        dtM          t          dz            z  k    sJ |j'        |
j'        cxk    rt          d
d
          k    sn J |
j(        |
j)        cxk    rdk    sn J |j*        t%          t          d
d
          d          k    sJ |j+        t%          t          d
d
          |j%                  k    sJ |j,        |j%        cxk    rddt          d          z   z  dz  k    sn J |!                    t          dz             |j        }|t          d
d                   dt          z  dz  k    sJ |
                                sJ |
j-        d
k    sJ |
                    t          d
d
                    sJ |
                    t          d6d
                    d(u sJ |                    t          d
d7                    sJ |
!                    t          dz             |
j-        t          dz  k    sJ |
j         d
         t          ddt          d          z            k    sJ |
j        D ]?}t]          |t                    r|t          d
d
          k    sJ .|ddt          dz  fv sJ @|
t          d
d
          k    sJ |
|k    sJ |
}|
/                    t          dz            t?          t          d
d
          ddt          t=          dd          z            k    sJ |
|k    sJ |
j        d8t          d          z  d9z   dta          t          dz            z  z  k    sJ |
j1        d:t          t          d           d!z  t=          dd!          z             z  k    sJ |
2                    dd          t?          |
j3        |
j)        dz  |
j4        |
j-                  k    sJ t?          d;dd          2                    dd          t          t          dd
          t          d
d          t          dd
          t          d
d                    k    sJ tk          |
          tm          |
          k    sJ |j        }to          |t          d
d
                   8                                ts          d<                    sJ to          |t          dd                   8                                ts          d=                    sJ to          |t          dd                   8                                ts          d>                    sJ to          |t          dd
                   8                                ts          d?                    sJ |j        }to          |t          d
d
                   8                                ts          d<                    sJ to          |t          dd                   8                                ts          d=                    sJ to          |t          dd                   8                                ts          d>                    sJ to          |t          dd
                   8                                ts          d?                    sJ t          d
d
          }
t          dd
          }t          d
d          }t	          |
||          }t	          |
|t          t=          dd          t          t=          d@d                                        }t	          |
t          |d
          t          d
|                    }|j	        }t	          |
||
          t          |
||
          cxk    rtu          |
|          k    sn J t7          tD          dA            t	          |
|
|
          |
k    sJ t	          ||dz  |dz            tu          ||dz            k    sJ |j        t=          dBd          k    sJ |;                                sJ |;                                d(u sJ |;                                sJ |
|v sJ |j	        d
         |v sJ tu          d;dC          |v sJ t          dd          |vsJ |                                sJ to          |j        |
         8                                t          j8                    dz            sJ |<                                d(u sJ |<                                sJ |<                                d(u sJ t{          ||          d(u sJ t{          ||          sJ t{          ||          d(u sJ |>                    t          d
d
                    d(u sJ |>                    |          d(u sJ |?                                } | |
         tu          |
t          t=          dd          t=          dd                              k    sJ |?                                |         tu          t          dd
          t          t=          dd          dt          d          z  dz                      k    sJ t          d
|          }|?                                |         tu          |t          |t          d          dz
  z  d
                    k    sJ dDdEt          d          z  z
  dFz  }!|j@        t          |!|!          k    sJ |j,        |j+        j)        cxk    rddt          d          z  dz  z
  k    sn J |j,        |j+        j)        cxk    rdt          d          z  dz  k    sn J |j,        |j+        j)        cxk    r,|dz  dt          d          z   t          |          z  z  k    sn J |jB        |j	        d                  dt          d          z  dz  k    sJ |jC        |j	        d                  t          dBt          d          z  dGt          d          z  dz            k    sJ |j*        j3        t          d)d)          k    sJ |jE        }"|jF        t          t=          dd          t=          dd                    k    sJ |"|
         tu          |
t          t=          dd          t=          dd                              k    sJ |jE        |
         tu          |
t          |dz  |dz                      k    sJ t;          |"|
         |"|         |"|                   |jF        gk    sJ |jG        t	          t          d)d
          t          d
d)          t          d)d)                    k    sJ |jH        t%          t          d)d
          t          d
d)          t          d)d)                    k    sJ |jH        t%          t          d
d
          t          d
d)          t          d)d)                    k    sJ |jI        }#|#|
         tu          |
t          t=          dd          t=          dd                              k    sJ |#|         J                    |d
                   sJ |#|         |d         k    sJ |jK        |
k    sJ t          dH          }	|	jK        t          dI          k    sJ t          t;          | L                                           dk    sJ t          t;          |#L                                           dk    sJ t          t;          |"L                                           dk    sJ t          t          d
d
          t          dd
          t          dd          t          d
d                    }
t          t          d
t=          d          dz            t          dt=          d          dz            t          dt=          dJ          dz            t          d
t=          dJ          dz                      }t          t          dd          t          dd          t          dd                    }t          t          dd          t          t=          d          dz  d          t          dt=          d          dz                      }t          ||          }$t          dd          }%	 |
                    |$          |k    sJ |
                    |%          d
k    sJ |                    |$          t=          d          dz  k    sJ |                    |%          t          d          dz  k    sJ 	 t-          t.          d,-          5  |
                    |          |dz  k    sJ 	 d d d            n# 1 swxY w Y   |
                    |          t          d          dz  k    sJ t-          t.          d,-          5  |                    |          t          d          dz  t          t=          d          dBz            dz  z
  k    sJ 	 d d d            d S # 1 swxY w Y   d S )KNxTrealyquvwx1r               igffffff@gffffff!g    
            )ng      @         )r:   r9   )r7   r:   r7   r9   r:   r:   r8   r   F      @      1Polygons may intersect producing erroneous output)matchtc                      t          t           d          t          d          t                                                   d          S )Nr   r.   )r   r   arbitrary_point)r.   r1   s   r*   <lambda>ztest_polygon.<locals>.<lambda>~   s@    waU1a[[%1++ /  //>s/C/C r,   i   !   c                  x    t          t          dd          t          dd          t          dd                    S Nr   r9   r   r    r,   r*   rU   ztest_polygon.<locals>.<lambda>   s6    .q!eA? ?Q{{# # r,   c                  @    t          t          dd          dd          S Nr   r9   r7   rZ   r[   r,   r*   rU   ztest_polygon.<locals>.<lambda>   s    .q!a"C"C r,   c                  @    t          t          dd          dd          S )Nr   r9   rM   rZ   r[   r,   r*   rU   ztest_polygon.<locals>.<lambda>   s    ~eAqkk1cBB r,      g@ii     r   r   z0.7853981633974483z1.2490457723982544z1.8925468811915388z2.3561944901923449K   c                  <    t          t          dd                    S )Nr   )r   r   r[   r,   r*   rU   ztest_polygon.<locals>.<lambda>   s    (5A;;"7"7 r,      r9   r      }   2   zTriangle(
    Point(100080156402737/5000000000000, 79782624633431/500000000000),
    Point(39223884078253/2000000000000, 156345163124289/1000000000000),
    Point(31241359188437/1250000000000, 338338270939941/1000000000000000))zPoint(-78066086905059984021699779471538701955848721853/80368430960602242240789074233100000000000000,20151573611150265741278060334545897615974257/160736861921204484481578148466200000000000)	   )Mr   r   Halfr   r   r   r   lenargssides	perimeterr   area	is_convexanglesr   encloses_pointenclosesr   r   plot_intervaldistancer!   UserWarninghashrT   subsr   
ValueErrorr   r   r   verticesspinr   interior_angleexterior_angleapothemr   circumcentercircumradiusradiuscircumcircleincircleinradiusrotation
isinstancerotater   lengthscalecenter_nreprstrr+   evalfr   r   is_rightis_equilateralr   
is_similar	bisectorsincenterr
   exradii	excentersr   medianscentroidmedialnine_point_circle	altitudesequalsorthocentervalues)(r2   r3   r4   r5   r6   halfr'   r(   crR   p1p2p3p4p5p6p7p8p9p10p11p12rdict5dict1varp1_oldrr   t1t2t3s1r   icmr   pt1pt2r.   r1   s(                                         @@r*   test_polygonr      s   sAsAsAsAsAsA	4	 	 	 B6DAqkk5A;;a!qAAqA5A;;5A;;....1eAqkk1a((A----5A;;1a((A----1aE!QKK((A----1eAqkk1a((A----1aq"q!,,11115R==%R..%R..c4%V,,eCooeS5S>>5C==%C..b"uR}}eBmm5 5 	c3r3r2c2OO	P P P P 
aU1b\\aU1a[[aU1a[[
" 
"B 
aU1b\\aU1a[[aU1a[[
" 
"B 
aU1a[[aU1a[[
" 
"B 
aU1a[[aU1a[[
" 
"B 
aU1a[[a
 
B 
c1uR~~b"uT4((
* 
*B 
aU1a[[a
 
B 
aU1a[[a
 
B 
aU1a[[aU1a[[
" 
"B aU1a[[aU1a[[" "C %1++qA
&
&
&C
%1++q!q
)
)
)CE"cNNE"cNN++A 8888rw<<1rx==A<1qbz>DHH4tAww>>>>>7b====||~~7GVXv 
 

)++    <<>><<>>IEq!a''''q!a''''U1a[[))111U1a[[)))))U1a[[))U2222U1a[[))U2222;;veCooq1122e;;;;;;wuS!}}a3344====C  Q1I----;;b"uR}}eBmm<<> >ABT!WWM M M M;;aU1a[[%2,,aEEG GJKL L L L	{H
J 
J 
J @ @aU1a[[%1++66??aU1a[[%1++>>	@ 	@ 	@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 88tGE!QKKq!eAqkkJJKKKKKK88tBxx88tBxx88tBxxq!eAqkk5A;;??????5A;;aU1a[[99R????q!A;;"c""''s(>(>(>BBa   
: D D D D D E E E??1%HS",=,=">">b(SUWX//@Z@Z![[[[[8q====.q!aA666666#::::<?eAqkk))))8A;%1++%%%%HHRTNNN<?eAqkk)))) 
aR	+	+B	aQ	*	*B
=     
=CCDDD
:BBCCC88888Aq>> 111118Aq>> 11111:3r!t99$$$$?bo<<<<q!<<<<<<?bi----2------?fU1a[[!444444;&q!bj999999;"*????a$q''k):Q)>??????GGBGIEq!R!++++<<>>;!U1a[[)))))U2q\\**e3333U1c]]+++++GGBqDMMM;"Q$;q>U1aQi000000w * *c5!! 	*%1++%%%%%1b"q&/)))))q!8888 F99RT??nU1a[["aHQPQNNARSSSSSS<<<<7tDGG|d*Qs2a4yy[9999994a
Xa^^ ;<<<<<<<88Aq>>ry")A+rubkBBC C C C&!Q''--a33aU1a[[%A,,aEEF F F F 88s2ww
 YFveAqkk"((**E2F,G,GHHHHHveAqkk"((**E2F,G,GHHHHHveAqkk"((**E2F,G,GHHHHHveAqkk"((**E2F,G,GHHHHHYFveAqkk"((**E2F,G,GHHHHHveAqkk"((**E2F,G,GHHHHHveAqkk"((**E2F,G,GHHHHHveAqkk"((**E2F,G,GHHHHH
 
q!B	q!B	q!B	"b"		B	"b%AXb!__0E0EFF	G	GB	"eBllE!RLL	1	1B	BBB72r2#6#6IIII'"b//IIIIII
=77888 BB2%%%%B1bd##wr2a4'8'888887hr1oo%%%%;;==;;==E!!!!;;==88888A;"66""b((((A;;b    <<>>ry}""$$bhjjl33333%''''%''''r2%''''r2r2%''''==q!%%....==%%%% IR=G
E(1a..(1a..113 3 3 3 3 3<<>>"aU8Aq>>1T!WW9Q;77"9 "9 9 9 9 9	q"B<<>>"U2tAww{3CQ-G-G!H!HHHHH
DGG
R	B;%B--'''' ;"+,????Ad1ggIaK??????;"+,;;;;$q''	!;;;;;;;"+,MMMMADGGSWW7L0MMMMMMM :bhqk"aQik1111 <$477
BtAwwJqL(I(IIIII ?!U3__4444 	
A;%AA??????R5GBhq!nnhq!nn E EFFFFFF:b>WRr!tRT):):;;;;;;"quae,,====9sAauS#OOOOOO 6%Q--*/3--sC$J $J J J J J6%1++*/3--sC$J $J J J J J IR=GBhq!nnhq!nn(M(MNNNNNNR=1&&&&&R=BqE!!!!>R	 N 	O 	OA =A              |Y--//011Q6666|Y--//011Q6666|QXXZZ())Q.... 
aU1a[[aU1a[[
" 
"B 
a!Qq(1++a-!8!8a!Qq(1++a-!8!8
: 
:B 
aU1a[[a
 
B 
aU8A;;q=!,,a!Q
! 
!B d

C
1++C;;st####;;sq    ;;sx{{1},,,,;;stAwwqy((((	{H
J 
J 
J ) ){{2$q&((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ;;r??d1ggai'''' 
{H
J 
J 
J G G{{247719tHQKKN/C/CA/E#EFFFFFG G G G G G G G G G G G G G G G G GsD   7Bhhh|#A}}A}}A}~AA88A<?A<c                  @   t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          d	d          t          d
d          g} t          | d         | d         | d         | d         | d
         | d                   }|                     | d                    t          dd          t          dd          t          dd          t          dd          g}t          |d         |d                   }t	          | |k    sJ t	          |  |k    sJ t	          | d                   | d         k    sJ t	          | d         | d                   t          | d         | d                   k    sJ t	          | d         gdz   | d         k    sJ t	          t          dd          t          t          dd          t          dd                    t          t          dd          dd	          g t          t          dd          t          dd          t          d	d          t          dd                    k    sJ d S )Nri   r:   r>   r9   r@   r   r7   r8   rC   rB   rj   rA   iiU      i)r   r   appendr   r   r   )pch	another_pch2s       r*   test_convex_hullr   O  sS   	r2b!eBmmU2r]]	q!eAqkk5A;;aeAqkk	q"uQ{{	$A 
1qtQqT1R5!A$!	5	5BHHQqTNNN sC%R..%R..sC"I
)A,	!
-
-C	"c))))?b    qt!$$$$qtQqT""gadAaD&9&99999 2	"ae++++ q!aU1a[[99&uQ{{Aq99; < 	aU1b\\5A;;aDDE E E E E Er,   c            
      6   t          t          dd          t          dd          t          dd          t          dd          t          t          j        t          j                            } |                     t          dt          j                            du sJ |                     t          t          j        t          j                            du sJ |                     t          t          dd          t          j                            du sJ d S )Nr   r9   Fr8   rC   T)r   r   r   rk   rt   r   )ss    r*   test_enclosesr   k  s    aU1a[[%1++uQ{{afaf	 	A ::eAqv&&''50000::eAFAF++,,5555::eHQNNAF3344<<<<<<r,   c                     t          d          t          t          dd          t          dd          t          dd                    k    sJ t          d          t          t          dd          t          dd          t          d	t          d          dz                      k    sJ t          d
          t          t          dd          t          dd          t          t          d          dz  t          d          dz                      k    sJ t          d          J t          t	          d                    dk    sJ d S )N)r8   rC   rD   )sssr   r8   rC   )   r7   r   )asar7   r9   )r9   -   r7   )sas)r9   r7   rD      )r   r   r   r$   r#   r[   r,   r*   test_triangle_kwargsr   u  sA   	"""q!eAqkk5A;;778 8 8 8$$$q!eAqkk5DGGAI+>+>??@ @ @ @
###q!eAqkk5aDGGAI+F+FGGH H H H	"""***s3xx==Cr,   c            
         t          dd          t          t          j        t          dd                    t          dd          g} t          dd          t          dt          dd                    t          dd	          g}t	          |                      d
dd          t	          | k    sJ t          ddd                              d
dd          t          t          dd          t          dd	          t          dd          t          dd                    k    sJ t          ddd                              d
d
          t          t          dd          d
dd          k    sJ d S )Nr   r9   rC   r;   ir@   ir>   r7   r8   )rC   rD   ra   i)	r   r   rk   r   r   r   r   r   r   )ptspts_outs     r*   test_transformr     sP   A;;afhq!nn55uQ{{
CCR~~uR#q)9)9::E"bMMJGS>1f--71CCCCC&!Q''--aF;;b#b"uR~~uR~~NNO O O O &!Q''--a33wq!}}aA../ / / / / /r,   c            	      &   t          dd          } t          dd          }t          d          }t          d          }t          d|f|          }t          | |          }|                    |          }|                    |          j        }|                    |          j        }t          ||          sJ t          d	d
d                              t          dt                              t          t          dd          t          dd          t          dd                    k    sJ t          d	d
d                              t          dt                              t          t          dd          t          dd          t          dd                    k    sJ t          d	d
d                              t          dd                    t          t          dd          t          dd          t          dd                    k    sJ t          d	d
d                              t          dd                    t          t          dd          t          dd          t          dd                    k    sJ d S )Nr.   Tr/   r1   r(   r   r   slopere   )r7   r   )r7   r7   rL   rD   rC   r7   )r   r8   r:   r>   r9   rB   )
r   r   r   reflectperpendicular_segmentr   r"   r   r   r   )	r.   r1   r(   r   lr   r   dpdrs	            r*   test_reflectr     sN   sAsAsAsAaV1AaA			!A	
	 	 	#	#	*B	
	 	 	#	#	*Bb"%%%%%666**224b3I3I3IJJE!QKKq!eAqkk::; ; ; ;666**224b3I3I3IJJE"aLL%A,,b!==> > > >666**224a3H3H3HIIE!QKKq!eAqkk::; ; ; ;666**224a3H3H3HIIE!QKKq!eArll;;< < < < < <r,   c                     t          dd          t          dd          t          dd          }}} t          t          dd          t          dd          t          dd          t          dd                    }t          t          dd          t          dd          t          dd          t          dd                    }t          t          dd          t          dd          t          dd	          t          dd          t          d
d                    }t          | ||          }|                                |         t	          t          dd          t          dt          d          dz
                      k    sJ |                                t          dd                   t          t          dd          t          t          t          dt          d          z  dz            dz            dt          t          dt          d          z  dz            dz            z
                      k    sJ |                                t          dd                   t          t          dd          t          dt          d          dt          t          dt          d          z  dz            dz            z  dt          t          dt          d          z  dz            dz            z  z   z  dz  z   t          d          dt          t          dt          d          z  dz            dz            z  dt          t          dt          d          z  dz            dz            z  z   z  dz  dz                       k    sJ |                                t          dd                   t          t          dd          t          dt          t          t          d          dz            dz  t          dz  z             z   dt          t          t          d          dz             dz  t          dz  z             z
                      k    sJ d S )Nr   r9   r7   r8   r:   rD   rC   rH   r?      irG   rj      ri   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r2   polyrR   s          r*   test_bisectorsr     s   q!eAqkk5A;;BBaU1a[[%1++uQ{{CCAaU1a[[%1++uR||DDA5A;;aU1a[[%A,,bRUWWDRA;;==aU1d1ggk5J5J K KKKKK;;==A'5AD4771%%a'((!c$qay{2C2CA2E.F.F*FGG,I ,I I I I I;;==Q(gb!nngb488Qs4$s))C;P;PQR;R7S7S5S	#d1T#YY;s?##A%
&
&&6' ,((*,+ '+,0HHbT!DII+c/=R=RST=T9U9U6U	#d1T#YY;s?##A%
&
&&7' -((*-+-.-/0 0 	1 	11 1 1 1 >>GBNN+uWR^^Sd2hhrk**1,r!t3444a#tDHHRK?P?P>PQR>RUWXYUY>Y:Z:Z6Z[[0] 0] ] ] ] ] ] ]r,   c                      t          t          dd          t          dd          t          dd                    j        t          dt          d          dz  z
  dt          d          dz  z
            k    sJ d S r]   )r   r   r   r   r[   r,   r*   test_incenterr     ss    E!QKKq!eAqkk::CT!WWQYDGGAI../ / / / / /r,   c                      t          t          dd          t          dd          t          dd                    j        dk    sJ d S )Nr   rC   r8   r9   )r   r   r   r[   r,   r*   test_inradiusr     s@    E!QKKq!eAqkk::CqHHHHHHr,   c            
      *   t          t          dd          t          dd          t          dd                    j        t          t          dt	          d          z
  dt	          d          z
            dt	          d          z
            k    sJ d S )Nr   r7   )r   r   r   r   r   r[   r,   r*   test_incircler     s    E!QKKq!eAqkk::C%DGGQa[111tAww;??@ @ @ @ @ @r,   c                      t          t          dd          t          dd          t          dd                    } | j        | j        d                  dt	          d          z   k    sJ d S )Nr   rB   r7   r>   rA   )r   r   r   rn   r   rR   s    r*   test_exradiir     sY    q!eAqkk5A;;77A9QWQZ R$r((]333333r,   c                  :   t          t          dd          t          dd          t          dd                    } | j        t          dd                   t          t          dd          t          t          j        t          j                            k    sJ d S rY   )r   r   r   r   r   rk   r   s    r*   test_mediansr     sq    q!eAqkk5A;;77A9U1a[[!WU1a[[%:O:O%P%PPPPPPPr,   c            	      T   t          t          dd          t          dd          t          dd                    j        t          t          t          j        d          t          t          j        t          j                  t          dt          j                            k    sJ d S rY   )r   r   r   r   rk   r[   r,   r*   test_medialr     s    E!QKKq!eAqkk::AE!&!$$eAFAF&;&;U1af=M=MNNO O O O O Or,   c            
      "   t          t          dd          t          dd          t          dd                    j        t          t	          t          dd          t          dd                    t          d          dz            k    sJ d S )Nr   r9   rC   r7   )r   r   r   r   r   r   r   r[   r,   r*   test_nine_point_circler     s    E!QKKq!eAqkk::L'(1a..(1a..9947719EEF F F F F Fr,   c                  0   t          t          dd          t          dd          t          dd                    j        t          t	          dd          t	          t
          j        t
          j                            k    sJ t          t          dd          t          dd          t          ddt          d          z                      j        t	          ddt          d          z  dz            k    sJ t          t          dd          t          dd          t          d	d                    j        t          t	          t          d
d          d          t	          t          dd          t          dd                              k    sJ d S )Nr   r9   rA   rD   r8   rC   r   r:   r@   @   r?   irN   r   r7   )	r   r   	eulerliner   r   r   rk   r   r   r[   r,   r*   test_eulerliner     sS   E!QKKq!eAqkk::D1wqvqv66778 8 8 8E!QKKr1uQ$q''	/B/BCCM1aQik""# # # #E!RLL%2,,b!==GQ++WXc25F5FQSUV-X-XYYZ Z Z Z Z Zr,   c                     t          t          dd          t          dd          t          dd                    } t          t          dd          t          dd          t          dd          t          dt          dd                    t          t          j        d          t          dd          t          dd                    }|                     |          t          t          dd          d          t          t          dt          dd                    t          dd                    t          t          dd          t          dd                    gk    sJ |                    |           t          t          dd          d          t          t          dd          t          dt          dd                              t          t          dd          t          dd                    gk    sJ |                     t          dd                    t          dd          gk    sJ |                     t          dd	                    g k    sJ |                    t          d
d                    t          dd          t          dd          t          t          dd          d          t          dd          gk    sJ |                    t          dd                    g k    sJ |                    t          dd                    t          t          dd          t          dd                    gk    sJ |                    t          dd                    t          dd          t          dd          gk    sJ |                     |           t          t          dd          t          dd                    t          t          dd          t          dd                    t          t          dd          t          dd                    gk    sJ |                    |          t          t          dd          t          dd                    t          t          dd          t          dt          dd                              t          t          dt          dd                    t          t          j        t          dd                              t          t          dd          t          dd                    t          t          t          j        t          dd                    t          dd                    t          t          dd          t          dd                    gk    sJ |                    t          t          dd          t          dd          t          dd                              t          t          dd          t          dd                    t          t          dd          t          dd                    gk    sJ |                     t          ddd                    g k    sJ d S )Nr   r9   ri   r;   rD   gr8   i)r   r   rO   r   )r   rO   )rO   rO   )r@   rC   re   )r   r:   r>   r:   rA   r?   rB   )r   r=   )r   r   r   r   r   rk   r   r   r   r   r   r   r   )poly1poly2s     r*   test_intersectionr     sm   U1a[[%1++uQ{{;;EE!QKKr1!RLL%8Aq>>":":!&$''q!eAqkkC CE e$$!Q)C)Ca!Q((%1++66aU1a[[)))+ + + + + e$$x1~~q)A)AaU1hq!nn5566aU1a[[)))+ + + + + eAqkk**uQ{{m;;;;eC#..//25555d8W55665Q<<aU8Aq>>1--uQ{{;< < < < <d9h7788B>>>>c'62233aa9 9 8    fWa0011eArlla6    e$$q!eAqkk)J)JaU1a[[))75A;;a+L+L)N N N N Ne$$r1uQ||)L)LaeAx1~~6677a!Q((%R8H8H*I*IJJaU2q\\**afhr2..//q!==aU1a[[)))+ + + + + huQ{{E!QKKr1NNOO(2q//8Aq>>22GGAqMM5QRTU;;4W4WXY Y Y YnZA>>??2EEEEEEr,   c                     t          d          t          dddd                              d          t          dd          ik    sJ t          dd	d
d          } |                     d          ddt	          d          z  z   ik    sJ t          t          fd           t          t          fd           d S )NrR   ra   )r   r9   )r9   r9   re   )g      ?r9   r8   rH   rJ   )r7   rC   rC   r   r   rD   c                  0                          d          S )N)rD   rB   )parameter_valuesqrR   s   r*   rU   z&test_parameter_value.<locals>.<lambda>  s    r11&!<< r,   c                  h                          t          t          dd          d                    S rY   )r   r   r   r   s   r*   rU   z&test_parameter_value.<locals>.<lambda>  s)    r11&q!a2H2H!LL r,   )r   r   r   r   r   r   rz   )r2   r  rR   s    @@r*   test_parameter_valuer    s    sA		0	0Bh**q(1a...AAAAA//AVQ''ArAd1ggI~+>>>>>
:<<<<<===
:LLLLLMMMMMr,   c                     t          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd                    } t          d          |                               d| j        z  fdt          t          dz                      D             t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          gk    sJ d S )Nr   rA   rD   rR   c                 B    g | ]}                     |z            S r[   )ry   ).0iDELTAptrR   s     r*   
<listcomp>z$test_issue_12966.<locals>.<listcomp>  s+    ===ABGGAuQw===r,   r9   )r   r   r   rT   ro   rangeint)r   r  r	  rR   s    @@@r*   test_issue_12966r     s    5A;;aeArllE!QKKb!eBll$ $DsA			a	 	 BdnE======s1U7||)<)<===aU1a[[%2,,aaU2q\\5Q<<q!B> > > > > > >r,   c            	      @   t          d          \  } }g d\  }}}d}d| dz  z
  dz  }t          | dz  t          d|d|f          z  | ddf          }t          dt          |dz  |d|f          z  | ddf          }t          | t          ||d|f          z  | ddf          }	t          |||          }
||
                    |          d         z
  dk    sJ ||
                    |          d         z
  dk    sJ |	|
                    |          d         z
  dk    sJ g d\  }}}}t          | dz  t          d|ddf          z  | ddf          }t          dt          |dz  |ddf          z  | ddf          }t          | t          ||ddf          z  | ddf          }	t          ||||          }||                    |          d         z
  dk    sJ ||                    |          d         z
  dk    sJ |	|                    |          d         z
  dk    sJ t	          t          dd          d	d
          }|                                dt          d
          z  t          d          z  dt          d
          z  t          d          z  dfk    sJ d S )Nx, y)ra   r   r   r7   ra   r9   rC   r7   r   )ra   r   rC   r7   r  rD   r8   iS      )r	   r%   r   second_moment_of_arear   r   r   r   )r.   r1   r   r   r   r   eq_yI_yyI_xxI_xytriangler   	rectangler   s                 r*   test_second_moment_of_arear    s   6??DAq)))JBBAacE19DadyQ4L99:Q1IFFDQ)AqD1a,7781a)DDDQ)A1d|4451ayAADr2r""H811!44Q77A====811!44Q77A====811!44Q77A==== 433NBBadiAq!95551ayAADQ1a4!Q333aAY??DQ1q!Qi0001a)<<DBB''I922155a88Q>>>>922155a88Q>>>>922155a88Q>>>> 	uQ{{Aq))A""$$d1ggaee);T$q''\!B%%=OQR(SSSSSSSr,   c                  0   t          dd          \  } }t          d| df| |fd|f          }|                                | |dz  z  dz  | dz  |z  dz  fk    sJ |                    | dz  |d	z  f          d
| z  |dz  z  dz  | dz   |z  dz  fk    sJ t          dddd          }|                                dk    sJ t          d| df| dz  |f          }|                                d	| z  |dz  z  dz  | dz  |z  dz  fk    sJ |                    | dz  |dz  f          d| z  |dz  z  dz  d| dz  z  |z  dz  fk    sJ t          ddd          }|                                t          d          dz  t          d           dz  fk    sJ d S )Na, bTpositivera   r   r7   rH   r8   rC   r@   r  rj   )(   r   )r  r   )r   r   )i  ip  Q      rB   ii  ri   i   r   )rO   r   i@  i  )r	   r   first_moment_of_arear   )r'   r(   r   r   s       r*   test_first_momentr#  -  s   FT***DAq	!Q!Q!Q	0	0B""$$1a41a46!8(<<<<<""AaC1:..2a419R<!Q$q2KKKKK	(G	4	4B""$$4444 
!Q!A#q	*	*B""$$1QT"ad1fRi(@@@@@""AaC1:..3q5A:c>2ad719S=2QQQQQ	(	+	+B""$$4QsVVGAI(>>>>>>>r,   c                     t          dd          \  } }t          d          \  }}t          d|fd| df| |f          }|                    t          ||                    | |dz  z  dz  | d	z  |z   z  | dz  |z  dz  |  d	z  |z   z  fk    sJ |                                | dz  |z  dz  | |dz  z  dz  z   k    sJ t          dd
d          }|                                t          dd          t          d          t          dd          z  fk    sJ |                                dt          d          z  t          d          z  k    sJ t          ddddd          }|                                t          dd          t          dd          fk    sJ |                                t          dd          k    sJ d S )Nr  Tr  r  r   ra   r8   rO   r7   r9   rB   rD   rH      )r9   rH   )r8   rC   )rC   rB   )r?   r9   ii  ii  ih   )	r	   r   section_modulusr   polar_second_moment_of_arear   r   r   r   )r'   r(   r.   r1   r  convexconcaves          r*   4test_section_modulus_and_polar_second_moment_of_arear+  @  s   6D)))DAq6??DAqAAA77I$$U1a[[11a1fRi!A6JAqDQRFSUIXYWYZ[W[^_W_L`5aaaaa0022ad1fRi!AqD&)6KKKKKFAq))F!!##AQB8O'PPPPP--//1T!WW9QqTT>AAAAfffff==G""$$%)=)=xs?S?S(TTTTT..00HVS4I4IIIIIIIr,   c                  ^   t          ddt          dd          fddt          dd          fddd	          t          d
t          dd          df          }                     |           d         }                    |           d         }|t          t	          t          dd          t          dd                    t	          dt          dd                    t	          t          dd          t          dd                    t	          t          dd          t          dd                    t	          dt          dd                    t	          t          dd          t          dd                    t	          t          dd          d          t	          dd          t	          dt          dd                    	  	        k    sJ |t          t	          dd          t	          t          dd          t          dd                    t	          t          dd          t          dd                    t	          dd          t	          t          dd          t          dd                    t	          t          dd          t          dd                    t	          dd          t	          dd          t	          t          dd          d          t	          dt          dd                    
  
        k    sJ t          t	          dd          dd                              t          d
d                    }|d         t          t	          dt          d          z  dz   dt          d          z  dz             t	          ddt          d          z            t	          ddt          d          z            t	          dd          t	          ddt          d          z  z   ddt          d          z  z                       k    sJ |d         t          t	          dd          t	          dt          d          z  dz   dt          d          z  dz             t	          ddt          d          z  z   ddt          d          z  z             t	          ddt          d          z            t	          ddt          d          z                      k    sJ d\  }d|fd
df|fg\  }}}}t          ||||                              t          d|fd                    \  }}|d k    sJ |t          t	          dd          t	          dd          t	          dd          t	          dd                    k    sJ                     t          d
d                    \  }	}
|	t          t	          dd          t	          dd          t	          dd          t	          dd                    k    sJ |
d k    sJ t          t          fd           d S )NrK   r9   rD   r7   rJ   r8   r  )rD   r8   )r:   r8   ra   rj   r   rE   rV   r   r!  r%  rO   rH   r?   r:   r>   rC   rB   r   r@   )r`   rA   rA   r`   c                  P                         t          d fd                    S )Nr   r   )cut_sectionr   )r'   r   s   r*   rU   z"test_cut_section.<locals>.<lambda>s  s$    q}}T1a&-B-B-BCC r,   )	r   r   r   r.  r   r   r   r   rz   )r   r   r   r   r(   r   r   r   t4r   r   r'   r   s              @@r*   test_cut_sectionr0  P  s   1hq!nn-v8Aq>>7JFTZ\cddAVhq!nna())A	
q		!	B	
q		!	BR  (2r"2"233WQA5O5OQXYabdfhYiYikstvxzk{k{Q|Q|Q!Q00'!Xa^^2L2LgV^_acdVeVegoprtugvgvNwNwA""GBNNGBQ4P4PR R R R R R R'(2r2B2BHRQSDTDT*U*UW^_ghjln_o_oqyz|  A  rB  rB  XC  XC1wxAA??RTVWZbceghZiZiAjAjlstuwxlyly  |C  DE  GH  |I  |IA""GBQ$@$@B B B B B B
 	wq!}}a++A	d6+++,,AQ4772d1gg:>2d1gg:>BBGAqQUVWQXQXyDYDYAd1ggIAQtAwwYQtTUwwY0W0WY Y Y Y Y YQ4771a=='"T!WW*q."T!WW*q.*Q*QQtAwwYQtAwwY//RQZ1H1H'RSUWX\]^X_X_U_J`J`b b b b b b DAq!ffq!fq!f5NBBBBA]]4Aa00011FB::::BAAPRTVXXXXXX]]4a00011FBBAAPRTVXXXXXX:::: :CCCCCDDDDDr,   c            
      V   t          t          dd          t          dd          t          dd                    } |                                 dk    sJ |                                 dk    sJ |                                 dk    sJ t          t          dd          t          dd          t          dd                    }|                                dk    sJ |                                dk    sJ |                                dk    sJ t          t          dd          t          dd          t          dt          d	                              }|                                dk    sJ |                                dk    sJ |                                dk    sJ d S )
Nr   rD   r7   rC   TFrB   r8      )r   r   is_isosceles
is_scalener   r   )r   r   r   s      r*   test_type_of_triangler5  u  s   	q!eAqkk5A;;	7	7B??$$$$==??e####%'''' 
%1++uQ{{E!QKK	8	8B??%%%%==??d""""%'''' 
q!eAqkk5DHH+=+=	>	>B??$$$$==??e####$&&&&&&r,   c            	         t          t          dd          t          dd          t          dd          t          dd                    } t          t          dd          t          dd          t          dd                    }|                     |          t          d          dz  k    sJ t          t          dd          t          dd          t          dd          t          dd                    }t	          t
          dd          5  |                     |          dk    sJ 	 d d d            n# 1 swxY w Y   t          t          dd          t          dd          t          t          j        t          j                            }t	          t
          dd          5  |                    |           dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r9   r7   rP   F)rQ   test_stacklevelr:   )r   r   _do_poly_distancer   r!   rw   r   rk   )square1	triangle1square2	triangle2s       r*   test_do_poly_distancer=    s*   uQ{{E!QKKq!eAqkkJJGaU1a[[%1++>>I$$Y//47719<<<< eAqkk5A;;aU1a[[IIG	{HZ_
a 
a 
a 7 7((11Q666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 aeArllE!&!&4I4IJJI	{HZ_
a 
a 
a 9 9**733q888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s$   D;;D?D?,GGGN)Gsympy.core.numbersr   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r	   $sympy.functions.elementary.complexesr
   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   r   r   sympy.geometryr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r    r!   sympy.core.randomr"   sympy.geometry.polygonr#   r$   sympy.integrals.integralsr%   r+   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r#  r+  r0  r5  r=  r[   r,   r*   <module>rI     s   8 8 8 8 8 8 8 8 8 8 8 8 " " " " " " / / / / / / / / 4 4 4 4 4 4 9 9 9 9 9 9 E E E E E E E E E E 8 8 8 8 8 8Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q 5 4 4 4 4 4 4 4 4 4 0 0 0 0 0 0 + + + + + + + + / / / / / /& & &
 uG uG uGp	E E E8= = =     / / /< < <,] ] ] / / /I I I@ @ @4 4 4Q Q QO O OF F FZ Z ZF F FDN N N> > >T T TD? ? ?&J J J #E #E #EJ' ' '&9 9 9 9 9r,   