
    \hk                        S SK JrJrJrJr  S SKJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJrJrJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"  S S	K#J$r$J%r%J&r&  S S
K'J(r(  S SK)J*r*J+r+  S SK,J-r-  S SK.J/r/  S r0\%S 5       r1S r2S r3S r4S r5S r6S r7S r8S r9S r:S r;S r<S r=S r>S r?S r@S rAS  rBS! rCS" rDS# rES$ rFS% rGS& rHg')(    )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)	integrate)rotate_leftc                 H    [        S5      nU* X-
  s=:  =(       a    U:  $ s  $ )z.Test if two floating point values are 'equal'.z1.0E-10)r   )abt_floats      Y/var/www/auris/envauris/lib/python3.13/site-packages/sympy/geometry/tests/test_polygon.pyfeqr,      s)    IG8ae%%g%%%%    c                  r7  ^)^* [        SSS9m)[        SSS9m*[        SSS9n [        SSS9n[        SSS9n[        SSS9n[        S	SS9n[        R                  n[        S
S
5      [        SS
5      [        SS5      pn[	        XgU5      n	[        [        S
S
5      5      [        S
S
5      :X  d   e[        U[        SS
5      Xx5      U	:X  d   e[        [        SS
5      XxU5      U	:X  d   e[        XxU[        SS
5      5      U	:X  d   e[        U[        SS
5      Xx5      U	:X  d   e[        Xg[        SS5      Xx5      U	:X  d   e[        [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      5      [        [        SS5      [        SS5      [        SS5      [        SS5      5      :X  d   e[        [        S
S
5      [        SS5      [        SS
5      [        SS5      [        SS5      [        S
S5      5      n
[        [        SS
5      [        SS5      [        S
S
5      [        S
S5      [        SS5      [        SS5      5      n[        [        S
S
5      [        SS
5      [        SS5      [        SS5      5      n[        [        S
S
5      [        SS5      [        SS5      [        SS
5      5      n[        [        S
S
5      [        SS5      [        S
S5      5      n[        [        SS5      [        SS5      [        SS5      [        SS5      5      n[        [        T)T*5      [        X5      [        X#5      5      n[        [        T)T*5      [        X#5      [        X5      5      n[        [        S
S
5      [        SS5      [        SS
5      [        SS5      5      n[        [        S
S5      [        SS5      [        S
S
5      [        SS
5      5      n[        [        S
S
5      SSS9n[        [        S
S
5      SS
SS9n[        [        S
S
5      [        SS5      [        S S!5      [        S
S!5      5      n[        [        UR                  S5      6 n[        [        SS5      [        SS"5      5      nX:X  d   e[        U
R                  5      S:X  d   e[        U
R                  5      S:X  d   eU
R                  SS[        S5      -  -   [        S#5      -   [        S5      -   :X  d   eU
R                  S$:X  d   eU
R                  5       (       a   e[        S%S&S'S(S)5      R                  5       S*L d   eUR                  5       (       d   eUR                  5       (       d   eUR                  nU[        S
S
5         [         S-  :X  d   eU[        S
S5         [         S-  :X  d   eUR#                  [        T)T*5      5      b   eUR#                  [        SS5      5      (       d   eUR#                  [        S
S
5      5      S*L d   eUR#                  [        SS
5      5      S*L d   eU
R%                  ['        [        S+S+5      S5      5      S*L d   eU
R%                  [)        [        S+S5      SS5      5      S*L d   eUR+                  S5      T)S
S/:X  d   eUR-                  [        [        SS5      [        S,S,5      [        SS,5      5      5      S[        S5      -  :X  d   eUR-                  [        [        SS5      [        SS5      [        SS-5      [        SS-5      5      5      S:X  d   e[/        [0        S.S/9   [        [        S
S
5      [        SS
5      [        SS5      5      R-                  [        [        S
S
5      [        S
S5      [        SS5      5      5        S S S 5        [3        U5      [3        [        [        S
S
5      [        SS5      [        S
S5      5      5      :X  d   e[3        U
5      [3        U5      :X  d   e[3        U5      [3        U5      :X  d   e[3        U5      [3        U5      :w  d   eU[        [        SS5      [        S
S5      [        S
S
5      5      :X  d   e[        [        SS5      [        S
S5      [        S
S
5      5      U;   d   eU[        S
S5      :w  d   e[        S
S5      U;   d   eUR5                  S05      R7                  [        S0SS9S
5      [        S
S
5      :X  d   e[9        [:        U)U*4S1 j5        UR=                  U5      [        S[?        S2S35      5      [        S[?        S4S5      5      /:X  d   eUR                  S
:X  d   eU[A        [        S
S
5      SSS
5      :X  d   eUU:X  d   eURB                  S
   [        SS
5      :X  d   eUR                  S
   [        S
S
5      :X  d   eURE                  [         S-  5        URB                  S
   [        S
S5      :X  d   e[A        [        S
S
5      SS5      n
[A        [        S
S
5      SS5      n[9        [F        S5 5        [9        [F        S6 5        [9        [:        S7 5        X:w  d   eU
RH                  [         [?        SS5      -  :X  d   eU
RJ                  [         [?        SS5      -  :X  d   eURL                  S[O        [         S-  5      -  :X  d   eURP                  U
RP                  s=:X  a  [        S
S
5      :X  d   e   eU
RR                  U
RT                  s=:X  a  S:X  d   e   eURV                  ['        [        S
S
5      S5      :X  d   eURX                  ['        [        S
S
5      URL                  5      :X  d   eURZ                  URL                  s=:X  a  SS[        S5      -   -  S-  :X  d   e   eURE                  [         S-  5        UR                  nU[        S
S5         S[         -  S-  :X  d   eU
R                  5       (       d   eU
R\                  S
:X  d   eU
R#                  [        S
S
5      5      (       d   eU
R#                  [        S8S
5      5      S*L d   eUR#                  [        S
S95      5      (       d   eU
RE                  [         S-  5        U
R\                  [         S-  :X  d   eU
RB                  S
   [        SS[        S5      -  5      :X  d   eU
R                   H>  n[_        U[        5      (       a  U[        S
S
5      :X  d   eM,  USS[         S-  4;   a  M>   e   U
[        S
S
5      :w  d   eX:w  d   eU
nU
Ra                  [         S-  5      [A        [        S
S
5      SS[         [?        SS5      -  5      :X  d   eU
U:X  d   eU
R                  S:[        S5      -  S;-   S[c        [         S-  5      -  -  :X  d   eU
Rd                  S![        [        S5      * S-  [?        SS5      -   5      -  :X  d   eU
Rg                  SS5      [A        U
Rh                  U
RT                  S-  U
Rj                  U
R\                  5      :X  d   e[A        S<SS5      Rg                  SS5      [        [        SS
5      [        S
S5      [        SS
5      [        S
S5      5      :X  d   e[m        U
5      [o        U
5      :X  d   eUR                  n[q        U[        S
S
5         Rs                  5       [u        S=5      5      (       d   e[q        U[        SS5         Rs                  5       [u        S>5      5      (       d   e[q        U[        SS5         Rs                  5       [u        S?5      5      (       d   e[q        U[        SS
5         Rs                  5       [u        S@5      5      (       d   eUR                  n[q        U[        S
S
5         Rs                  5       [u        S=5      5      (       d   e[q        U[        SS5         Rs                  5       [u        S>5      5      (       d   e[q        U[        SS5         Rs                  5       [u        S?5      5      (       d   e[q        U[        SS
5         Rs                  5       [u        S@5      5      (       d   e[w        UR                  Ry                  5       5      n[q        U[        UR                  5      S-
  [         -  5      (       d   e[w        UR                  Ry                  5       5      n[q        U[        UR                  5      S-
  [         -  5      (       d   e[        S
S
5      n
[        SS
5      n[        S
S5      n[	        XU5      n[	        X[        [?        SS5      [        [?        SAS5      5      5      5      n [	        U
[        US
5      [        S
U5      5      n!UR                  n"[	        XU
5      [        XU
5      s=:X  a  [{        X5      :X  d   e   e[9        [F        SB 5        [	        XU
5      U
:X  d   e[	        XS-  US-  5      [{        XS-  5      :X  d   eUR                  [?        SCS5      :X  d   eUR}                  5       (       d   eU R}                  5       S*L d   eU!R}                  5       (       d   eU
U;   d   eUR                  S
   U;   d   e[{        S<SD5      U;   d   e[        SS5      U ;  d   eUR                  5       (       d   e[q        UR                  U
   Rs                  5       [         Rr                  " 5       S-  5      (       d   eUR                  5       S*L d   eU R                  5       (       d   eU!R                  5       S*L d   e[        UU 5      S*L d   e[        UU!5      (       d   e[        U U!5      S*L d   eUR                  [        S
S
5      5      S*L d   eUR                  U 5      S*L d   eUR                  5       n#U#U
   [{        U
[        [?        SS5      [?        SS5      5      5      :X  d   eU R                  5       U   [{        [        SS
5      [        [?        SS5      S[        S5      -  S-  5      5      :X  d   e[        S
U5      nU!R                  5       U   [{        U[        U[        S5      S-
  -  S
5      5      :X  d   eSESF[        S5      -  -
  SG-  n$UR                  [        U$U$5      :X  d   eURZ                  URX                  RT                  s=:X  a  SS[        S5      -  S-  -
  :X  d   e   eU RZ                  U RX                  RT                  s=:X  a  S[        S5      -  S-  :X  d   e   eU!RZ                  U!RX                  RT                  s=:X  a%  US-  S[        S5      -   [        U5      -  -  :X  d   e   eUR                  UR                  S      S[        S5      -  S-  :X  d   eUR                  UR                  S      [        SC[        S5      -  SH[        S5      -  S-  5      :X  d   eURV                  Rh                  [        S+S+5      :X  d   eUR                  n%UR                  [        [?        SS5      [?        SS5      5      :X  d   eU%U
   [{        U
[        [?        SS5      [?        SS5      5      5      :X  d   eU!R                  U
   [{        U
[        US-  US-  5      5      :X  d   e[=        U%U
   U%U   U%U   5      UR                  /:X  d   eUR                  [	        [        S+S
5      [        S
S+5      [        S+S+5      5      :X  d   eUR                  ['        [        S+S
5      [        S
S+5      [        S+S+5      5      :X  d   eUR                  ['        [        S
S
5      [        S
S+5      [        S+S+5      5      :X  d   eUR                  n&U&U
   [{        U
[        [?        SS5      [?        SS5      5      5      :X  d   eU&U   R                  U"S
   5      (       d   eU&U   U"S   :X  d   eUR                  U
:X  d   e[        SI5      n	U	R                  [        SJ5      :X  d   e[        [=        U#Ry                  5       6 5      S:X  d   e[        [=        U&Ry                  5       6 5      S:X  d   e[        [=        U%Ry                  5       6 5      S:X  d   e[        [        S
S
5      [        SS
5      [        SS5      [        S
S5      5      n
[        [        S
[?        S5      S-  5      [        S[?        S5      S-  5      [        S[?        SK5      S-  5      [        S
[?        SK5      S-  5      5      n[        [        SS5      [        SS5      [        SS5      5      n[        [        SS5      [        [?        S5      S-  S5      [        S[?        S5      S-  5      5      n[        XU5      n'[        SS5      n( U
R-                  U'5      U:X  d   eU
R-                  U(5      S
:X  d   eUR-                  U'5      [?        S5      S-  :X  d   eUR-                  U(5      [        S5      S-  :X  d   e [/        [0        S.S/9   U
R-                  U5      US-  :X  d   e S S S 5        U
R-                  U5      [        S5      S-  :X  d   e[/        [0        S.S/9   UR-                  U5      [        S5      S-  [        [?        S5      SC-  5      S-  -
  :X  d   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)LNxTrealyquvwx1r               igffffff@gffffff!g    
            )n         g      @      )r;   r:   )r8   r;   r8   r:   r;   r;   r9   r   F      @      1Polygons may intersect producing erroneous output)matchtc                  x   > [        [        T S5      [        ST5      [        T T5      5      R                  S5      $ )Nr   r/   )r   r   arbitrary_point)r/   r2   s   r+   <lambda>test_polygon.<locals>.<lambda>   s3    waU1a[%1+ //>s/C Dr-   i   !   c                  X    [        [        SS5      [        SS5      [        SS5      5      $ Nr   r:   r   r    r-   r+   rX   rY      s&    .q!eA?Q{#r-   c                  0    [        [        SS5      SS5      $ Nr   r:   r8   r^   r_   r-   r+   rX   rY      s    .q!a"Cr-   c                  0    [        [        SS5      SS5      $ )Nr   r:   rP   r^   r_   r-   r+   rX   rY      s    ~eAqk1cBr-      g@ii  r   r   z0.7853981633974483z1.2490457723982544z1.8925468811915388z2.3561944901923449K   c                  ,    [        [        SS5      5      $ )Nr   )r   r   r_   r-   r+   rX   rY      s    (5A;"7r-      r:   r      }   2   zTriangle(
    Point(100080156402737/5000000000000, 79782624633431/500000000000),
    Point(39223884078253/2000000000000, 156345163124289/1000000000000),
    Point(31241359188437/1250000000000, 338338270939941/1000000000000000))zPoint(-78066086905059984021699779471538701955848721853/80368430960602242240789074233100000000000000,20151573611150265741278060334545897615974257/160736861921204484481578148466200000000000)	   )Or   r   Halfr   r   r   r&   argsr   lensides	perimeterr   area	is_convexanglesr   encloses_pointenclosesr   r   plot_intervaldistancer!   UserWarninghashrW   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   sumvaluesr   is_rightis_equilateralr   
is_similar	bisectorsincenterr
   exradii	excentersr   medianscentroidmedialnine_point_circle	altitudesequalsorthocenter)+r3   r4   r5   r6   r7   halfr(   r)   crU   p1p2p3p4p5p6p7p8p9p10p11p12p13p14rdict5dict1varp1_oldru   interior_angles_sumt1t2t3s1r   icmr   pt1pt2r/   r2   s+                                            @@r+   test_polygonr      s   sAsAsAsAsAsA	4	 B66DAqk5A;a!AqA5A;5A;...1eAqk1(A---5A;a(A---1E!QK(A---1eAqk1(A---1q"q,1115R=%R.%R.c4%V,eCoeS5S>5C=%C.b"uR}eBm5 	c3r3r2c2O	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U1[a
B 
aU1[a
B 
aU1a[aU1a[
"B aU1a[aU1a["C %1+qA
&C
%1+q!q
)C
aE!QKb"eArl$C ;sxx+
,C 	E"cNE"cN+A 8O8rww<1rxx=A<<1qbz>DH4tAw>>>>77b==||~~7GVXv 

)+   <<>>><<>>>IIEq!a'''q!a'''U1a[)111U1a[))))U1a[)U222U1a[)U222;;veCoq12e;;;;;wuS!}a34===C Q1I---;;b"uR}eBm<>ABT!WM M M;;aU1a[%2,aEGJKL L L	{H
JaU1a[%1+6??aU1a[%1+>	@
J 8tGE!QKq!eAqkJKKKK8tBx8tBx8tBxq!eAqk5A;????5A;aU1a[9R???q!A;"c"''s(>Ba  
: D E??1%HS",=">b(SUWX/@Z![[[[88q==.q!aA6666#::<<?eAqk)))88A;%1+%%%HHRTN<<?eAqk))) 
aR	+B	aQ	*B
=  
=CD
:BC8O88Aq> 11118Aq> 1111::3r!t9$$$??boo<q!<<<<<??bii-2-----??fU1a[!4444;;&q!bjj9999;;"**?a$q'k):Q)>?????GGBGIIEq!R!+++<<>>>;;!U1a[))))U2q\*e333U1c]++++GGBqDM;;"Q$;;q>U1aQi0000wwc5!!%1+%%%1b"q&/)))	 
 q!8O8 F99RT?nU1a["aHQPQNARSSSS<<77tDG|d*Qs2a4y[9999994a
Xa^ ;<<<<<88Aq>ryy"))A+ruubkkBC C C&!Q'--a3aU1a[%A,aEF F F 8s2w
 YYFveAqk"((*E2F,GHHHHveAqk"((*E2F,GHHHHveAqk"((*E2F,GHHHHveAqk"((*E2F,GHHHHYYFveAqk"((*E2F,GHHHHveAqk"((*E2F,GHHHHveAqk"((*E2F,GHHHHveAqk"((*E2F,GHHHH cjj//12"S_q%8"$<>>>>cjj//12"S_q%8"$<>>>>
 
q!B	q!B	q!B	""	B	"%AXb!_0EF	GB	"eBlE!RL	1B	BBB722#6I'"/IIIII
=78 BB2%%%B1bd#wra4'888877hr1o%%%;;===;;=E!!!;;===8O888A;"66"b(((A;b   <<>>>ryy}""$bhhjl3333%'''%'''r2%'''r2r2%'''==q!%...==%%% IR=G
E(1a.(1a.13 3 3 3<<>"aU8Aq>1T!W9Q;7"9 9 9 9	q"B<<>"U2tAw{3CQ-G!HHHH
DG
R	B;;%B-''' ;;"++,,?Ad1gIaK?????;;"++,,;$q'	!;;;;;;;"++,,MADGSW7L0MMMMMM ::bhhqk"aQik111 <<$47
BtAwJqL(IIII ??!!U3_444 	

A;;%AA????R5GBhq!nhq!n EFFFF::b>WRr!tRT):;;;;"quae,===99sAauS#OOOO 6%Q-*/3-sC$J J J J6%1+*/3-sC$J J J J IR=GBhq!nhq!n(MNNNNR=1&&&&R=BqE!!!>>R	 N 	OA ==A          |Y--/01Q666|Y--/01Q666|QXXZ()Q... 
aU1a[aU1a[
"B 
a!Qq(1+a-!8a!Qq(1+a-!8
:B 
aU1a[a
B 
aU8A;q=!,a!Q
!B 
C
1+C;;st###;;sq   ;;sx{1},,,;;stAwqy(((	{H
J{{2$q&(((
J ;;r?d1gai''' 
{H
J{{24719tHQKN/CA/E#EFFF
J 
JA
J 
Jr
J 
J
J 
Js0   A$Ank'Anl<?An(n
Ann
An%n(
An6c                     [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        S	S5      [        S
S5      /n [        U S   U S   U S   U S   U S
   U S   5      nU R                  U S   5        [        SS5      [        SS5      [        SS5      [        SS5      /n[        US   US   5      n[	        U6 U:X  d   e[	        U 6 U:X  d   e[	        U S   5      U S   :X  d   e[	        U S   U S   5      [        U S   U S   5      :X  d   e[	        U S   /S-  6 U S   :X  d   e[	        [        SS5      [        [        SS5      [        SS5      5      [        [        SS5      SS	5      /6 [        [        SS5      [        SS5      [        S	S5      [        SS5      5      :X  d   eg )Nrl   r;   r?   r:   rA   r   r8   r9   rD   rC   rm   rB   iiU      i)r   r   appendr   r   r   )pch	another_pch2s       r+   test_convex_hullr   [  s   	r2b!eBmU2r]	q!eAqk5A;aeAqk	q"uQ{	$A 
1qtQqT1R5!A$!	5BHHQqTN sC%R.%R.sC"I
)A,	!
-C	"c)))?b   qt!$$$qtQqT"gadAaD&9999 2	"ae+++ q!aU1a[9&uQ{Aq9; < 	aU1b\5A;aDE E Er-   c            
         [        [        SS5      [        SS5      [        SS5      [        SS5      [        [        R                  [        R                  5      5      n U R	                  [        S[        R                  5      5      SL d   eU R	                  [        [        R                  [        R                  5      5      SL d   eU R	                  [        [        SS5      [        R                  5      5      SL d   eg )Nr   r:   Fr9   rD   T)r   r   r   rn   rw   r   )ss    r+   test_enclosesr   w  s    aU1a[%1+uQ{affaff	A ::eAqvv&'5000::eAFFAFF+,555::eHQNAFF34<<<r-   c                     [        SS9[        [        SS5      [        SS5      [        SS5      5      :X  d   e[        SS9[        [        SS5      [        SS5      [        S	[        S5      S-  5      5      :X  d   e[        S
S9[        [        SS5      [        SS5      [        [        S5      S-  [        S5      S-  5      5      :X  d   e[        SS9b   e[        [	        S5      5      S:X  d   eg )N)r9   rD   rE   )sssr   r9   rD   )   r8   r   )asar8   r:   )r:   -   r8   )sas)r:   r8   rE      )r   r   r   r$   r#   r_   r-   r+   test_triangle_kwargsr     s    	"q!eAqk5A;78 8 8$q!eAqk5DGAI+>?@ @ @
#q!eAqk5aDGAI+FGH H H	"***s3x=Cr-   c            
      @   [        SS5      [        [        R                  [        SS5      5      [        SS5      /n [        SS5      [        S[        SS5      5      [        SS	5      /n[	        U 6 R                  S
SS5      [	        U6 :X  d   e[        SSS5      R                  S
SS5      [        [        SS5      [        SS	5      [        SS5      [        SS5      5      :X  d   e[        SSS5      R                  S
S
5      [        [        SS5      S
SS5      :X  d   eg )Nr   r:   rD   r<   irA   ir?   r8   r9   )rD   rE   rd   i)	r   r   rn   r   r   r   r   r   r   )ptspts_outs     r+   test_transformr     s   A;affhq!n5uQ{
CCR~uR#q)9:E"bMJGS>1f-71CCCC&!Q'--aF;b#b"uR~uR~NO O O &!Q'--a3wq!}aA./ / /r-   c            	         [        SSS9n [        SSS9n[        S5      n[        S5      n[        SU4US9n[        X5      nUR                  U5      nUR	                  U5      R
                  nUR	                  U5      R
                  n[        Xx5      (       d   e[        S	S
S5      R                  [        S[        S95      [        [        SS5      [        SS5      [        SS5      5      :X  d   e[        S	S
S5      R                  [        S[        S95      [        [        SS5      [        SS5      [        SS5      5      :X  d   e[        S	S
S5      R                  [        SSS95      [        [        SS5      [        SS5      [        SS5      5      :X  d   e[        S	S
S5      R                  [        SSS95      [        [        SS5      [        SS5      [        SS5      5      :X  d   eg )Nr/   Tr0   r2   r)   r   r   sloperh   )r8   r   )r8   r8   rO   rE   rD   r8   )r   r9   r;   r?   r:   rC   )
r   r   r   reflectperpendicular_segmentr   r"   r   r   r   )	r/   r2   r)   r   lr   r   dpdrs	            r+   test_reflectr     s   sAsAsAsAaV1AaA			!A	
	 	 	#	*	*B	
	 	 	#	*	*Bb%%%%666*224b3IJE!QKq!eAqk:; ; ;666*224b3IJE"aL%A,b!=> > >666*224a3HIE!QKq!eAqk:; ; ;666*224a3HIE!QKq!eArl;< < <r-   c                     [        SS5      [        SS5      [        SS5      p!n [        [        SS5      [        SS5      [        SS5      [        SS5      5      n[        [        SS5      [        SS5      [        SS5      [        SS5      5      n[        [        SS5      [        SS5      [        SS	5      [        SS5      [        S
S5      5      n[        XU5      nUR                  5       U   [	        [        SS5      [        S[        S5      S-
  5      5      :X  d   eUR                  5       [        SS5         [        [        SS5      [        [        [        S[        S5      -  S-  5      S-  5      S[        [        S[        S5      -  S-  5      S-  5      -
  5      5      :X  d   eUR                  5       [        SS5         [        [        SS5      [        S[        S5      S[        [        S[        S5      -  S-  5      S-  5      -  S[        [        S[        S5      -  S-  5      S-  5      -  -   -  S-  -   [        S5      S[        [        S[        S5      -  S-  5      S-  5      -  S[        [        S[        S5      -  S-  5      S-  5      -  -   -  S-  S-   5      5      :X  d   eUR                  5       [        SS5         [        [        SS5      [        S[        [        [        S5      S-  5      S-  [        S-  -   5      -   S[        [        [        S5      S-  5      * S-  [        S-  -   5      -
  5      5      :X  d   eg )Nr   r:   r8   r9   r;   rE   rD   rH   r@      irK   rm      rl   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r3   polyrU   s          r+   test_bisectorsr     s   q!eAqk5A;BBaU1a[%1+uQ{CAaU1a[%1+uR|DA5A;aU1a[%A,bRUWDA;;=aU1d1gk5J KKKK;;=A'5AD471%a'(!c$qay{2CA2E.F*FG,I I I I;;=Q(gb!ngb48Qs4$s)C;PQR;R7S5S	#d1T#Y;s?#A%
&&6' ,((*,+ '+,0HbT!DI+c/=RST=T9U6U	#d1T#Y;s?#A%
&&7' -((*-+-.-/0 	11 1 1 >>GBN+uWR^Sd2hrk*1,r!t344a#tDHRK?P>PQR>RUWXYUY>Y:Z6Z[0] ] ] ]r-   c                      [        [        SS5      [        SS5      [        SS5      5      R                  [        S[        S5      S-  -
  S[        S5      S-  -
  5      :X  d   eg ra   )r   r   r   r   r_   r-   r+   test_incenterr     sW    E!QKq!eAqk:CCT!WQYDGAI./ / /r-   c                  z    [        [        SS5      [        SS5      [        SS5      5      R                  S:X  d   eg )Nr   rD   r9   r:   )r   r   r   r_   r-   r+   test_inradiusr     s1    E!QKq!eAqk:CCqHHHr-   c            
          [        [        SS5      [        SS5      [        SS5      5      R                  [        [        S[	        S5      -
  S[	        S5      -
  5      S[	        S5      -
  5      :X  d   eg )Nr   r8   )r   r   r   r   r   r_   r-   r+   test_incircler     sa    E!QKq!eAqk:CC%DGQa[11tAw;?@ @ @r-   c                      [        [        SS5      [        SS5      [        SS5      5      n U R                  U R                  S      S[	        S5      -   :X  d   eg )Nr   rC   r8   r?   rB   )r   r   r   rq   r   rU   s    r+   test_exradiir     sI    q!eAqk5A;7A99QWWQZ R$r(]333r-   c                     [        [        SS5      [        SS5      [        SS5      5      n U R                  [        SS5         [        [        SS5      [        [        R
                  [        R
                  5      5      :X  d   eg r]   )r   r   r   r   r   rn   r   s    r+   test_mediansr     s[    q!eAqk5A;7A99U1a[!WU1a[%:O%PPPPr-   c            	      <   [        [        SS5      [        SS5      [        SS5      5      R                  [        [        [        R                  S5      [        [        R                  [        R                  5      [        S[        R                  5      5      :X  d   eg r]   )r   r   r   r   rn   r_   r-   r+   test_medialr     si    E!QKq!eAqk:AAE!&&!$eAFFAFF&;U1aff=MNO O Or-   c            
          [        [        SS5      [        SS5      [        SS5      5      R                  [        [	        [        SS5      [        SS5      5      [        S5      S-  5      :X  d   eg )Nr   r:   rD   r8   )r   r   r   r   r   r   r   r_   r-   r+   test_nine_point_circler     s]    E!QKq!eAqk:LL'(1a.(1a.94719EF F Fr-   c                     [        [        SS5      [        SS5      [        SS5      5      R                  [        [	        SS5      [	        [
        R                  [
        R                  5      5      :X  d   e[        [        SS5      [        SS5      [        SS[        S5      -  5      5      R                  [	        SS[        S5      -  S-  5      :X  d   e[        [        SS5      [        SS5      [        S	S5      5      R                  [        [	        [        S
S5      S5      [	        [        SS5      [        SS5      5      5      :X  d   eg )Nr   r:   rB   rE   r9   rD   r   r;   rA   @   r@   irQ   r   r8   )	r   r   	eulerliner   r   r   rn   r   r   r_   r-   r+   test_eulerliner     s	   E!QKq!eAqk:DD1wqvvqvv678 8 8E!QKr1uQ$q'	/BCMM1aQik"# # #E!RL%2,b!=GGQ+WXc25FQSUV-XYZ Z Zr-   c                  	   [        [        SS5      [        SS5      [        SS5      5      n [        [        SS5      [        SS5      [        SS5      [        S[        SS5      5      [        [        R
                  S5      [        SS5      [        SS5      5      nU R                  U5      [        [        SS5      S5      [        [        S[        SS5      5      [        SS5      5      [        [        SS5      [        SS5      5      /:X  d   eUR                  U 5      [        [        SS5      S5      [        [        SS5      [        S[        SS5      5      5      [        [        SS5      [        SS5      5      /:X  d   eU R                  [        SS5      5      [        SS5      /:X  d   eU R                  [        SS	5      5      / :X  d   eUR                  [        S
S5      5      [        SS5      [        SS5      [        [        SS5      S5      [        SS5      /:X  d   eUR                  [        SS5      5      / :X  d   eUR                  [        SS5      5      [        [        SS5      [        SS5      5      /:X  d   eUR                  [        SS5      5      [        SS5      [        SS5      /:X  d   eU R                  U 5      [        [        SS5      [        SS5      5      [        [        SS5      [        SS5      5      [        [        SS5      [        SS5      5      /:X  d   eUR                  U5      [        [        SS5      [        SS5      5      [        [        SS5      [        S[        SS5      5      5      [        [        S[        SS5      5      [        [        R
                  [        SS5      5      5      [        [        SS5      [        SS5      5      [        [        [        R
                  [        SS5      5      [        SS5      5      [        [        SS5      [        SS5      5      /:X  d   eUR                  [        [        SS5      [        SS5      [        SS5      5      5      [        [        SS5      [        SS5      5      [        [        SS5      [        SS5      5      /:X  d   eU R                  [        SSS5      5      / :X  d   eg )Nr   r:   rl   r<   rE   gr9   i)r   r   rR   r   )r   rR   )rR   rR   )rA   rD   rh   )r   r;   r?   r;   rB   r@   rC   )r   r>   )r   r   r   r   r   rn   r   r   r   r   r   r   r   )poly1poly2s     r+   test_intersectionr    s4   U1a[%1+uQ{;EE!QKr1!RL%8Aq>":!&&$'q!eAqkCE e$!Q)Ca!Q(%1+6aU1a[))+ + + + e$x1~q)AaU1hq!n56aU1a[))+ + + + eAqk*uQ{m;;;eC#./2555d8W565Q<aU8Aq>1-uQ{;< < < <d9h78B>>>c'623aa9 8   fWa01eArla6   e$q!eAqk)JaU1a[)75A;a+L)N N N Ne$r1uQ|)LaeAx1~67a!Q(%R8H*IJaU2q\*affhr2./q!=aU1a[))+ + + + huQ{E!QKr1NO(2q/8Aq>2GGAqM5QRTU;4WXY Y YnZA>?2EEEr-   c                  D  ^^ [        S5      m[        SSSS5      mTR                  ST5      T[        SS5      0:X  d   e[        SS	S
S5      n U R                  ST5      TSS[	        S5      -  -   0:X  d   e[        [        UU4S j5        [        [        UU4S j5        g )NrU   rd   )r   r:   )r:   r:   rh   )g      ?r:   r9   rH   rM   )r8   rD   rD   r   r   rE   c                  (   > T R                  ST5      $ )N)rE   rC   )parameter_valuesqrU   s   r+   rX   &test_parameter_value.<locals>.<lambda>  s    r11&!<r-   c                  P   > T R                  [        [        SS5      S5      T5      $ r]   )r  r   r   r  s   r+   rX   r	  	  s    r11&q!a2H!Lr-   )r   r   r  r   r   r   r}   )r3   r  rU   s    @@r+   test_parameter_valuer    s    sA		0Bh*q(1a..AAAA/AVQ'ArAd1gI~+>>>>
:<=
:LMr-   c                  *   [        [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      5      n [        S5      nU R                  U5      nSU R                  -  n[        [        SU-  5      5       Vs/ s H  oBR                  XU-  5      PM     sn[        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /:X  d   eg s  snf )Nr   rB   rE   rU   r:   )r   r   r   rW   rr   rangeintr|   )r   rU   ptDELTAis        r+   test_issue_12966r    s    5A;aeArlE!QKb!eBl$DsA			a	 BdnnE).s1U7|)<=)<AGGAQw)<=aU1a[%2,aaU2q\5Q<q!B> > > >=s   Dc            	         [        S5      u  p/ SQu  p#nSnSU S-  -
  S-  n[        U S-  [        SUSU45      -  U SS45      n[        S[        US-  USU45      -  U SS45      n[        U [        XSU45      -  U SS45      n	[        X#U5      n
XR                  U5      S   -
  S:X  d   eXzR                  U5      S   -
  S:X  d   eXR                  U5      S   -
  S:X  d   e/ SQu  p#pK[        U S-  [        SUSS45      -  U SS45      n[        S[        US-  USS45      -  U SS45      n[        U [        XSS45      -  U SS45      n	[        X#XK5      nXR                  U5      S   -
  S:X  d   eX|R                  U5      S   -
  S:X  d   eXR                  U5      S   -
  S:X  d   e[	        [        SS5      S	S
5      nUR                  5       S[        S
5      -  [        S5      -  S[        S
5      -  [        S5      -  S4:X  d   eg )Nx, y)rd   r  r   r8   rd   r:   rD   r8   r   )rd   r  rD   r8   r  rE   r9   iS      )r	   r%   r   second_moment_of_arear   r   r   r   )r/   r2   r   r   r   r   eq_yI_yyI_xxI_xytriangler   	rectangler   s                 r+   test_second_moment_of_arear    sP   6?DA)JBBAacE19DadyQ4L9:Q1IFDQ)AqD1a,781a)DDQ)A1d|451ayADrr"H11!4Q77A===11!4Q77A===11!4Q77A=== 4NBBadiAq!9551ayADQ1a4!Q33aAY?DQ1!Qi001a)<D'I2215a88Q>>>2215a88Q>>>2215a88Q>>> 	uQ{Aq)A""$d1gae);T$q'\!B%=OQR(SSSSr-   c                     [        SSS9u  p[        SU S4X4SU45      nUR                  5       XS-  -  S-  U S-  U-  S-  4:X  d   eUR                  U S-  US	-  45      S
U -  US-  -  S-  U S-  * U-  S-  4:X  d   e[        SSSS5      nUR                  5       S:X  d   e[        SU S4U S-  U45      nUR                  5       S	U -  US-  -  S-  U S-  U-  S-  4:X  d   eUR                  U S-  US-  45      SU -  US-  -  S-  SU S-  -  U-  S-  4:X  d   e[        SSS5      nUR                  5       [        S5      S-  [        S5      * S-  4:X  d   eg )Na, bTpositiverd   r   r8   rH   r9   rD   rA   r  rm   )(   r   )r$  r   )r   r   )i  ip  Q      rC   ii  rl   i   r   )rR   r   i@  i  )r	   r   first_moment_of_arear   )r(   r)   r   r   s       r+   test_first_momentr(  9  s   FT*DA	!Q!!Q	0B""$a41a46!8(<<<<""AaC1:.2a419R<!Q$q2KKKK	(G	4B""$444 
!Q!A#q	*B""$1QT"ad1fRi(@@@@""AaC1:.3q5A:c>2ad719S=2QQQQ	(	+B""$4QsVGAI(>>>>r-   c                     [        SSS9u  p[        S5      u  p#[        SU4SU S4X45      nUR                  [        X#5      5      XS-  -  S-  U* S	-  U-   -  U S-  U-  S-  U * S	-  U-   -  4:X  d   eUR	                  5       U S-  U-  S-  XS-  -  S-  -   :X  d   e[        SS
S5      nUR                  5       [        SS5      [        S5      [        SS5      -  4:X  d   eUR	                  5       S[        S5      -  [        S5      -  :X  d   e[        SSSSS5      nUR                  5       [        SS5      [        SS5      4:X  d   eUR	                  5       [        SS5      :X  d   eg )Nr!  Tr"  r  r   rd   r9   rR   r8   r:   rC   rE   rH      )r:   rH   )r9   rD   )rD   rC   )r@   r:   ii  ii  ih   )	r	   r   section_modulusr   polar_second_moment_of_arear   r   r   r   )r(   r)   r/   r2   r  convexconcaves          r+   4test_section_modulus_and_polar_second_moment_of_arear0  L  s   6D)DA6?DAAA7I$$U1[1a1fRi!A6JAqDQRFSUIXYWYZ[W[^_W_L`5aaaa002ad1fRi!qD&)6KKKKFAq)F!!#AQB8O'PPPP--/1T!W9QqT>AAAfffff=G""$%)=xs?S(TTTT..0HVS4IIIIr-   c                  6	  ^^ [        SS[        SS5      4SS[        SS5      4SSS	5      m[        S
[        SS5      S45      n TR                  U 5      S   nTR                  U 5      S   nU[        [	        [        SS5      [        SS5      5      [	        S[        SS5      5      [	        [        SS5      [        SS5      5      [	        [        SS5      [        SS5      5      [	        S[        SS5      5      [	        [        SS5      [        SS5      5      [	        [        SS5      S5      [	        SS5      [	        S[        SS5      5      5	      :X  d   eU[        [	        SS5      [	        [        SS5      [        SS5      5      [	        [        SS5      [        SS5      5      [	        SS5      [	        [        SS5      [        SS5      5      [	        [        SS5      [        SS5      5      [	        SS5      [	        SS5      [	        [        SS5      S5      [	        S[        SS5      5      5
      :X  d   e[        [	        SS5      SS5      mTR                  [        S
SS95      nUS   [        [	        S[        S5      -  S-   S[        S5      -  S-   5      [	        SS[        S5      -  5      [	        SS[        S5      -  5      [	        SS5      [	        SS[        S5      -  -   SS[        S5      -  -   5      5      :X  d   eUS   [        [	        SS5      [	        S[        S5      -  S-   S[        S5      -  S-   5      [	        SS[        S5      -  -   SS[        S5      -  -   5      [	        SS[        S5      -  5      [	        SS[        S5      -  5      5      :X  d   eSu  mnSU4S
TS4TU4/u  pVpx[        XVXx5      mTR                  [        SU4SS95      u  pUS :X  d   eU[        [	        SS5      [	        SS5      [	        SS5      [	        SS5      5      :X  d   eTR                  [        S
SS95      u  pU	[        [	        SS5      [	        SS5      [	        SS5      [	        SS5      5      :X  d   eU
S :X  d   e[        [        UU4S j5        g )NrN   r:   rE   r8   rM   r9   r  )rE   r9   )r;   r9   rd   rm   r   rF   rZ   r   r&  r*  rR   rH   r@   r;   r?   rD   rC   r   rA   )rJ   rB   rB   rJ   c                  :   > TR                  [        ST 4SS95      $ )Nr   r   )cut_sectionr   )r(   r   s   r+   rX   "test_cut_section.<locals>.<lambda>  s    q}}T1a&-BCr-   )	r   r   r   r3  r   r   r   r   r}   )r   r   r   r   r)   r   r   r   t4r   r   r(   r   s              @@r+   test_cut_sectionr6  \  se   1hq!n-v8Aq>7JFTZ\cdAVhq!na()A	
q	!	B	
q	!	BR (2r"23WQA5OQXYabdfhYikstvxzk{Q|Q!Q0'!Xa^2LgV^_acdVegoprtugvNwA"GBNGBQ4PR R R R R'(2r2BHRQSDT*UW^_ghjln_oqyz|  A  rB  XC1wxAA?RTVWZbceghZiAjlstuwxly  |C  DE  GH  |IA"GBQ$@B B B B
 	wq!}a+A	d6+,AQ4772d1g:>2d1g:>BGAqQUVWQXyDYAd1gIAQtAwYQtTUwY0WY Y Y YQ4771a='"T!W*q."T!W*q.*QQtAwYQtAwY/RQZ1H'RSUWX\]^X_U_J`b b b b DAq!ffq!fq!f5NBBA]]4Aa01FB::BAAPRTVXXXX]]4a01FBBAAPRTVXXXX:: :CDr-   c            
         [        [        SS5      [        SS5      [        SS5      5      n U R                  5       S:X  d   eU R                  5       S:X  d   eU R	                  5       S:X  d   e[        [        SS5      [        SS5      [        SS5      5      nUR                  5       S:X  d   eUR                  5       S:X  d   eUR	                  5       S:X  d   e[        [        SS5      [        SS5      [        S[        S	5      5      5      nUR                  5       S:X  d   eUR                  5       S:X  d   eUR	                  5       S:X  d   eg )
Nr   rE   r8   rD   TFrC   r9      )r   r   is_isosceles
is_scalener   r   )r   r   r   s      r+   test_type_of_triangler;    s+   	q!eAqk5A;	7B??$$$==?e###%''' 
%1+uQ{E!QK	8B??%%%==?d"""%''' 
q!eAqk5DH+=	>B??$$$==?e###$&&&r-   c            	      
   [        [        SS5      [        SS5      [        SS5      [        SS5      5      n [        [        SS5      [        SS5      [        SS5      5      nU R                  U5      [        S5      S-  :X  d   e[        [        SS5      [        SS5      [        SS5      [        SS5      5      n[	        [
        SSS9   U R                  U5      S:X  d   e S S S 5        [        [        SS5      [        SS5      [        [        R                  [        R                  5      5      n[	        [
        SSS9   UR                  U 5      S:X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r:   r8   rS   F)rT   test_stacklevelr;   )r   r   _do_poly_distancer   r!   rz   r   rn   )square1	triangle1square2	triangle2s       r+   test_do_poly_distancerC    s@   uQ{E!QKq!eAqkJGaU1a[%1+>I$$Y/4719<<< eAqk5A;aU1a[IG	{HZ_
a((1Q666
a
 aeArlE!&&!&&4IJI	{HZ_
a**73q888
a 
a
a 
a
a 
as   
E#E4#
E14
FN)I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%   sympy.utilities.iterablesr&   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r(  r0  r6  r;  rC  r_   r-   r+   <module>rP     s    8 8 " / 4 9 E E 8Q Q Q Q Q 5 4 0 + / 1&
 @G @GF
E8= /<,] /I@4QOFZFDN>TD?&J #EJ'&9r-   