
    MZd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% ZFy&)'    )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                 @    t        d      }| | |z
  cxk  xr |k  S c S )z.Test if two floating point values are 'equal'.z1.0E-10)r   )abt_floats      C/usr/lib/python3/dist-packages/sympy/geometry/tests/test_polygon.pyfeqr+      s(    IG8a!e%g%%%%    c                  3  &' 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 |
j                         rJ t        d#d$d%d&d'      j                         d(u sJ |j                         sJ |j                         sJ |j                  }|t        d
d
         t        dz  k(  sJ |t        d
d         t        dz  k(  sJ |j!                  t        &'            J |j!                  t        dd            sJ |j!                  t        d
d
            d(u sJ |j!                  t        dd
            d(u sJ |
j#                  t%        t        d)d)      d            d(u sJ |
j#                  t'        t        d)d      dd            d(u sJ |j)                  d      &d
dgk(  sJ |j+                  t        t        dd      t        d*d*      t        dd*                  dt        d      z  k(  sJ |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            j+                  t        t        d
d
      t        d
d      t        dd                   d d d        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        |      k7  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      k7  sJ t        d
d      |v sJ |j3                  d.      j5                  t        d.d      d
      t        d
d
      k(  sJ t7        t8        &'fd/       |j;                  |      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 |jC                  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        |
|k7  sJ |
jF                  t        t=        dd      z  k(  sJ |
jH                  t        t=        dd      z  k(  sJ |jJ                  dtM        t        dz        z  k(  sJ |jN                  |
jN                  cxk(  rt        d
d
      k(  sJ  J |
jP                  |
jR                  cxk(  rdk(  sJ  J |jT                  t%        t        d
d
      d      k(  sJ |jV                  t%        t        d
d
      |jJ                        k(  sJ |jX                  |jJ                  cxk(  rddt        d      z   z  dz  k(  sJ  J |jC                  t        dz         |j                  }|t        d
d         dt        z  dz  k(  sJ |
j                         sJ |
jZ                  d
k(  sJ |
j!                  t        d
d
            sJ |
j!                  t        d6d
            d(u sJ |j!                  t        d
d7            sJ |
jC                  t        dz         |
jZ                  t        dz  k(  sJ |
j@                  d
   t        ddt        d      z        k(  sJ |
j                  D ]4  }t]        |t              r|t        d
d
      k(  r#J |ddt        dz  fv r4J  |
t        d
d
      k7  sJ |
|k7  sJ |
}|
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 |
jb                  d:t        t        d       d!z  t=        dd!      z         z  k(  sJ |
je                  dd      t?        |
jf                  |
jR                  dz  |
jh                  |
jZ                        k(  sJ t?        d;dd      je                  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
         jq                         ts        d<            sJ to        |t        dd         jq                         ts        d=            sJ to        |t        dd         jq                         ts        d>            sJ to        |t        dd
         jq                         ts        d?            sJ |j                  }to        |t        d
d
         jq                         ts        d<            sJ to        |t        dd         jq                         ts        d=            sJ to        |t        dd         jq                         ts        d>            sJ to        |t        dd
         jq                         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J  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 |jw                         sJ |jw                         d(u sJ |jw                         sJ |
|v sJ |j                  d
   |v sJ tu        d;dC      |v sJ t        dd      |vsJ |j                         sJ to        |j                  |
   jq                         t        jp                         dz        sJ |jy                         d(u sJ |jy                         sJ |jy                         d(u sJ t{        ||      d(u sJ t{        ||      sJ t{        ||      d(u sJ |j}                  t        d
d
            d(u sJ |j}                  |      d(u sJ |j                         } | |
   tu        |
t        t=        dd      t=        dd                  k(  sJ |j                         |   tu        t        dd
      t        t=        dd      dt        d      z  dz              k(  sJ t        d
|      }|j                         |   tu        |t        |t        d      dz
  z  d
            k(  sJ dDdEt        d      z  z
  dFz  }!|j                  t        |!|!      k(  sJ |jX                  |jV                  jR                  cxk(  rddt        d      z  dz  z
  k(  sJ  J |jX                  |jV                  jR                  cxk(  rdt        d      z  dz  k(  sJ  J |jX                  |jV                  jR                  cxk(  r$|dz  dt        d      z   t        |      z  z  k(  sJ  J |j                  |j                  d      dt        d      z  dz  k(  sJ |j                  |j                  d      t        dBt        d      z  dGt        d      z  dz        k(  sJ |jT                  jf                  t        d)d)      k(  sJ |j                  }"|j                  t        t=        dd      t=        dd            k(  sJ |"|
   tu        |
t        t=        dd      t=        dd                  k(  sJ |j                  |
   tu        |
t        |dz  |dz              k(  sJ t;        |"|
   |"|   |"|         |j                  gk(  sJ |j                  t	        t        d)d
      t        d
d)      t        d)d)            k(  sJ |j                  t%        t        d)d
      t        d
d)      t        d)d)            k(  sJ |j                  t%        t        d
d
      t        d
d)      t        d)d)            k(  sJ |j                  }#|#|
   tu        |
t        t=        dd      t=        dd                  k(  sJ |#|   j                  |d
         sJ |#|   |d   k(  sJ |j                  |
k(  sJ t        dH      }	|	j                  t        dI      k(  sJ t        t;        | j                                dk(  sJ t        t;        |#j                                dk(  sJ t        t;        |"j                                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      }%	 |
j+                  |$      |k(  sJ |
j+                  |%      d
k(  sJ |j+                  |$      t=        d      dz  k(  sJ |j+                  |%      t        d      dz  k(  sJ 	 t-        t.        d,-      5  |
j+                  |      |dz  k(  sJ 	 d d d        |
j+                  |      t        d      dz  k(  sJ t-        t.        d,-      5  |j+                  |      t        d      dz  t        t=        d      dBz        dz  z
  k(  sJ 	 d d d        y # 1 sw Y   0xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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                  x    t        t         d      t        d      t                     j                  d      S )Nr   r.   )r   r   arbitrary_point)r.   r1   s   r*   <lambda>ztest_polygon.<locals>.<lambda>~   s2    waU1a[%1+ //>s/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>   s(    .q!eA?Q{# r,   c                  0    t        t        dd      dd      S Nr   r9   r7   rZ   r[   r,   r*   rU   ztest_polygon.<locals>.<lambda>   s    .q!a"C r,   c                  0    t        t        dd      dd      S )Nr   r9   rM   rZ   r[   r,   r*   rU   ztest_polygon.<locals>.<lambda>   s    ~eAqk1c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 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66DAqk5A;a!qAAqA5A;5A;...1eAqk1a(A---5A;1a(A---1aE!QK(A---1eAqk1a(A---1a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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"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+>	@@ 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veAqk"((*E2F,GHHHveAqk"((*E2F,GHHHveAqk"((*E2F,GHHHYYFveAqk"((*E2F,GHHHveAqk"((*E2F,GHHHveAqk"((*E2F,GHHHveAqk"((*E2F,GHHH
 
q!B	q!B	q!B	"b"	B	"b%AXb!_0EF	GB	"eBlE!RL	1B	BBB72r2#6I'"b/IIIII
=78 BB2%%%B1bd#wr2a4'888877hr1o%%%;;==;;=E!!!;;==8O888A;"66"b(((A;b   <<>>ryy}""$bhhjl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 d
C
1+C;;st###;;sq   ;;sx{1},,,;;stAwqy(((	{H
J ){{2$q&((() ;;r?d1gai''' 
{H
J G{{24719tHQKN/CA/E#EFFFG Gu@ @f) )G Gs0   A$Agd:Ag%f>Ag1gAg"g%Ag.g1Ag: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         }| j                  | 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 y )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  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            
         t        t        dd      t        dd      t        dd      t        dd      t        t        j                  t        j                              } | j	                  t        dt        j                              du sJ | j	                  t        t        j                  t        j                              du sJ | j	                  t        t        dd      t        j                              du sJ y )Nr   r9   Fr8   rC   T)r   r   r   rk   rt   r   )ss    r*   test_enclosesr   k  s    aU1a[%1+uQ{affaff	A ::eAqvv&'5000::eAFFAFF+,555::eHQNAFF3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 y )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  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            
      :   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	        |  j                  d
dd      t	        | k(  sJ t        ddd      j                  d
dd      t        t        dd      t        dd	      t        dd      t        dd            k(  sJ t        ddd      j                  d
d
      t        t        dd      d
dd      k(  sJ y )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     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            	         t        dd      } t        dd      }t        d      }t        d      }t        d|f|      }t        | |      }|j                  |      }|j	                  |      j
                  }|j	                  |      j
                  }t        ||      sJ t        d	d
d      j                  t        dt                    t        t        dd      t        dd      t        dd            k(  sJ t        d	d
d      j                  t        dt                    t        t        dd      t        dd      t        dd            k(  sJ t        d	d
d      j                  t        dd            t        t        dd      t        dd      t        dd            k(  sJ t        d	d
d      j                  t        dd            t        t        dd      t        dd      t        dd            k(  sJ y )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     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                     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        | ||      }|j                         |   t	        t        dd      t        dt        d      dz
              k(  sJ |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 |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 |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 y )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!eAqk5A;BBaU1a[%1+uQ{CAaU1a[%1+uR|DA5A;aU1a[%A,bRUWDR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                      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 y r]   )r   r   r   r   r[   r,   r*   test_incenterr     sW    E!QKq!eAqk:CCT!WQYDGAI./ / /r,   c                  x    t        t        dd      t        dd      t        dd            j                  dk(  sJ y )Nr   rC   r8   r9   )r   r   r   r[   r,   r*   test_inradiusr     s1    E!QKq!eAqk:CCq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 y )Nr   r7   )r   r   r   r   r   r[   r,   r*   test_incircler     sa    E!QKq!eAqk:CC%DGQa[11tAw;?@ @ @r,   c                      t        t        dd      t        dd      t        dd            } | j                  | j                  d      dt	        d      z   k(  sJ y )Nr   rB   r7   r>   rA   )r   r   r   rn   r   rR   s    r*   test_exradiir     sI    q!eAqk5A;7A99QWWQZ R$r(]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 y rY   )r   r   r   r   r   rk   r   s    r*   test_mediansr     s[    q!eAqk5A;7A99U1a[!WU1a[%:O%PPPPr,   c            	      :   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 y rY   )r   r   r   r   rk   r[   r,   r*   test_medialr     si    E!QKq!eAqk:AAE!&&!$eAFFAFF&;U1aff=MN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 y )Nr   r9   rC   r7   )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                     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 y )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     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                  	   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            }| j                  |      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 |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 | j                  t        dd            t        dd      gk(  sJ | j                  t        dd	            g k(  sJ |j                  t        d
d            t        dd      t        dd      t        t        dd      d      t        dd      gk(  sJ |j                  t        dd            g k(  sJ |j                  t        dd            t        t        dd      t        dd            gk(  sJ |j                  t        dd            t        dd      t        dd      gk(  sJ | 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 |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 |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 | j                  t        ddd            g k(  sJ y )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     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                  <   t        d      t        dddd      j                  d      t        dd      ik(  sJ t        dd	d
d      } | j                  d      ddt	        d      z  z   ik(  sJ t        t        fd       t        t        fd       y )NrR   ra   )r   r9   )r9   r9   re   )g      ?r9   r8   rH   rJ   )r7   rC   rC   r   r   rD   c                  (     j                  d      S )N)rD   rB   )parameter_valuesqrR   s   r*   rU   z&test_parameter_value.<locals>.<lambda>  s    r11&!< r,   c                  P     j                  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!a2H!L r,   )r   r   r   r   r   r   rz   )r2   r  rR   s    @@r*   test_parameter_valuer    s    sA		0Bh*q(1a..AAAA/AVQ'ArAd1gI~+>>>>
:<=
:LMr,   c                  &   t        t        dd      t        dd      t        dd      t        dd      t        dd      t        dd            } t        d      }| j                  |      }d| j                  z  }t        t        d|z              D cg c]  }|j                  |||z         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      gk(  sJ y c c}w )Nr   rA   rD   rR   r9   )r   r   r   rT   ro   rangeintry   )r   rR   ptDELTAis        r*   test_issue_12966r
     s    5A;aeArlE!QKb!eBl$DsA			a	 BdnnE).s1U7|)<=ABGGAuQw=aU1a[%2,aaU2q\5Q<q!B> > > >=s   D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        |||      }
||
j                  |      d   z
  dk(  sJ ||
j                  |      d   z
  dk(  sJ |	|
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        ||||      }||j                  |      d   z
  dk(  sJ ||j                  |      d   z
  dk(  sJ |	|j                  |      d   z
  dk(  sJ t	        t        dd      d	d
      }|j                         dt        d
      z  t        d      z  dt        d
      z  t        d      z  dfk(  sJ y )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    sn   6?DAq)JBBAacE19DadyQ4L9:Q1IFDQ)AqD1a,781a)DDQ)A1d|451ayADr2r"H811!4Q77A===811!4Q77A===811!4Q77A=== 4NBBadiAq!9551ayADQ1a4!Q33aAY?DQ1q!Qi001a)<DBB'I92215a88Q>>>92215a88Q>>>92215a88Q>>> 	uQ{Aq)A""$d1gae);T$q'\!B%=OQR(SSSSr,   c                     t        dd      \  } }t        d| df| |fd|f      }|j                         | |dz  z  dz  | dz  |z  dz  fk(  sJ |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      }|j                         dk(  sJ t        d| df| dz  |f      }|j                         d	| z  |dz  z  dz  | dz  |z  dz  fk(  sJ |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      }|j                         t        d      dz  t        d       dz  fk(  sJ y )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	0B""$1a4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                     t        dd      \  } }t        d      \  }}t        d|fd| df| |f      }|j                  t        ||            | |dz  z  dz  | d	z  |z   z  | dz  |z  dz  |  d	z  |z   z  fk(  sJ |j	                         | dz  |z  dz  | |dz  z  dz  z   k(  sJ t        dd
d      }|j                         t        dd      t        d      t        dd      z  fk(  sJ |j	                         dt        d      z  t        d      z  k(  sJ t        ddddd      }|j                         t        dd      t        dd      fk(  sJ |j	                         t        dd      k(  sJ y )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7I$$U1a[1a1fRi!A6JAqDQRFSUIXYWYZ[W[^_W_L`5aaaa002ad1fRi!AqD&)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                  B	   t        ddt        dd      fddt        dd      fddd	      t        d
t        dd      df      } j                  |       d   }j                  |       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      j                  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        ||||      j                  t        d|fd            \  }}|d k(  sJ |t        t	        dd      t	        dd      t	        dd      t	        dd            k(  sJ 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       y )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                  @    j                  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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_sectionr-  P  sq   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5NBBBB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            
         t        t        dd      t        dd      t        dd            } | j                         dk(  sJ | j                         dk(  sJ | j	                         dk(  sJ t        t        dd      t        dd      t        dd            }|j                         dk(  sJ |j                         dk(  sJ |j	                         dk(  sJ t        t        dd      t        dd      t        dt        d	                  }|j                         dk(  sJ |j                         dk(  sJ |j	                         dk(  sJ y )
Nr   rD   r7   rC   TFrB   r8      )r   r   is_isosceles
is_scalener   r   )r   r   r   s      r*   test_type_of_triangler2  u  s+   	q!eAqk5A;	7B??$$$==?e###%''' 
%1+uQ{E!QK	8B??%%%==?d"""%''' 
q!eAqk5DH+=	>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            }| j                  |      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  | j                  |      dk(  sJ 	 d d d        t        t        dd      t        dd      t        t        j                  t        j                              }t	        t
        dd      5  |j                  |       dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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:    sC   uQ{E!QKq!eAqkJGaU1a[%1+>I$$Y/4719<<< eAqk5A;aU1a[IG	{HZ_
a 7((1Q6667
 aeArlE!&&!&&4IJI	{HZ_
a 9**73q8889 97 79 9s   E&E2&E/2E;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(  r-  r2  r:  r[   r,   r*   <module>rF     s    8 8 " / 4 9 E E 8Q Q Q Q Q 5 4 0 + /&
 uG uGp	E8= /<,] /I@4QOFZFDN>TD?&J #EJ'&9r,   