
    gg                        d dl mZ d dlmZmZmZ d dl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 d d	l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" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d dlm*Z* d Z+d Z,e%d             Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5e%d             Z6d Z7d Z8d Z9d Z:d  Z;d! Z<d" Z=d# Z>d$S )%    )expand)Rationaloopi)Eq)S)Symbolsymbols)Abs)sqrt)sec)	Segment2D)Point2D)CircleEllipseGeometryErrorLinePointPolygonRayRegularPolygonSegmentTriangleintersection)raisesslow)	integrate)
elliptic_e)Maxc                     ddl m} m} t          t	          dd          dd          }t          |                    d                    t          |  |z   dz   dz  dz  | |z   dz
  dz  dz  z   dz
            k    sJ t          t	          dd          d	d          }t          |                    d                    t          |  |z   dz  dz  | |z   dz  d
z  z   dz
            k    sJ t          t	          dd          dd          }t          |                    d                    t          d| z  |z   dz
  dz  dz  | d|z  z   dz
  dz  dz  z   dz
            k    sJ d S )Nr   xy         )_slope                            )	sympy.abcr"   r#   r   r   strequation)r"   r#   e1e2e3s        ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/geometry/tests/test_ellipse.py!test_ellipse_equation_using_sloper9      s   	q!a	#	#Br{{!{$$%%qb1fqj1_Q->!a%!)aPRAR-RUV-V)W)WWWWW	q!a	#	#Br{{!{$$%%qb1fq[]a!eaZ]-JQ-N)O)OOOOO	q!a	#	#Br{{!{$$%%bdQhlQ->r-AQ1Wr\TUDUVYDY-Y\]-])^)^^^^^^^    c            
         ddl mmmmm} m}m} t          dz  dz  z   dz  z   dz  z   dz
            t          t          t          d          dz  d          t          d	          dz            k    sJ t          dz  dz  z   d
z  z   dz  z   dz             t          t          dd          d          k    sJ t          dz  dz  z   d
z  z   dz  z   dz   dd          t          t          dd          d          k    sJ t          dz  dz  z   dz
            t          t          dd          d          k    sJ t          dz  dz  z             t          t          dd          d          k    sJ t          dz  dz  z   dd          t          t          dd          d          k    sJ t          dz  dz  z   d
z  z   dz             t          t          dd          d          k    sJ t          dz  dz  z   d
z  z   dz             t          t          dd          d          k    sJ t          dz
  dz  dz  z   dz
            t          t          dd          d          k    sJ t          d
dz  z  d
dz  z  z   d
z  z   dz  z   dz
            t          t          t          dd          t          dd                    dt          d          z  d
z            k    sJ t          t          dz  dz  z   d          d          t          t          dd          d          k    sJ t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t           fd           t#          dd          \  dz  z  dz  z  z   | z  z   |z  z   |z   }t%          t          |                                          z            |k    sJ d S )Nr   )r"   r#   abcder&   r%   r*   r(   r.   9   r-      r<   r=   r!   r,   r$   	      c                  R    t           dz  dz  z   d z  z   dz  z   dz             S )Nr&   r%   r*      r   r!   s   r8   <lambda>z+test_object_from_equation.<locals>.<lambda>.   s2    &A1qs):QqS)@2)E"F"F r:   c                  :    t           dz  dz  z   dz             S )Nr&   rC   rJ   r!   s   r8   rK   z+test_object_from_equation.<locals>.<lambda>/   s     &A1r)9":": r:   c                  @    t           dz  dz  z   dz   dd          S )Nr&   rC   r<   r=   r!   rJ   r<   r=   s   r8   rK   z+test_object_from_equation.<locals>.<lambda>0   s'    &A1r)9SC"H"H"H r:   c                  :    t           dz  dz  z   dz             S )Nr&   r-   r(   rJ   r!   s   r8   rK   z+test_object_from_equation.<locals>.<lambda>1   s    &A!a"8"8 r:   c                  ^    t          d dz  z  ddz  z  z   d z  z   dz  z   dz             S )Nr-   r&   r*   r(   rC   rJ   r!   s   r8   rK   z+test_object_from_equation.<locals>.<lambda>2   s;    &AFaAh)>1)Dqs)JR)O"P"P r:   c                  R    t           dz  dz  z   d z  z   dz  z   dz
            S )Nr&   r%   r*   r(   rJ   rN   s   r8   rK   z+test_object_from_equation.<locals>.<lambda>3   s2    vadQTkAaC&7!A#&=&ABB r:   zx yTreal)r2   r"   r#   r<   r=   r>   r?   r@   r   r   r   r   r   r   r   r   
ValueErrorr
   r   r4   )r>   r?   r@   eqr<   r=   r"   r#   s       @@@@r8   test_object_from_equationrV   !   s   ------------------!Q$A+!#ac)A-..&2B9O9OQUVXQYQY\]Q]2^2^^^^^!Q$A+!#ac)B.//6'"b//13M3MMMMM!Q$A+!#ac)B.#===PRTVYZA[A[[[[[!Q$A+"##vgammQ'?'?????!Q$A+&A":":::::!Q$A+,,,wq!}}a0H0HHHHH!Q$A+!#a'((F72q>>1,E,EEEEE!Q$A+!#a'((F71b>>1,E,EEEEE1q51*q!t#a'((F71a==!,D,DDDDD!QT(Q1X%!+ac1B6776'(SUWX//[cdfhi[j[jBkBkmnostuovovmvwxmx;y;yyyyy"QTAqD["%%222fWQ]]A6N6NNNNN
=FFFFFGGG
=:::::;;;
=HHHHHIII
=88888999
=PPPPPQQQ
:BBBBBCCC5t$$$DAq	
1a4!AqD&1Q3	1	$q	(B&**%%'')**b000000r:   c                  J  *+,-. t          dd          -t          dd          .t          dd          } t          dd          }t          j        }t          dd          }t          dd          }t          dd          }t	          |dd          }t	          ||d          +t	          |||          }t          |d          }t          |d          }	t          t          t          d	          t          d	                    d          }
t          ||          }t          d
|z  d	          d|z  }}t          t          dd          t          d
d          t          dd                    t          ||          k    sJ t          t          dd          t          dd          t          d	d	                    t          t          dd          t          d	d	                    k    sJ t          t          d            t          t          d            t          t          d            t          t          d            t	          d dd          j        t          dd          k    sJ ||k    sJ |+k    sJ ||k    sJ ||v sJ ||v sJ ++v sJ d+vsJ |+vsJ |j        t          k    sJ +j        t          d	z  k    sJ |j        t          |z  t!          |          z  k    sJ |j        |j        k    sJ |j        |j        k    sJ |j        d	t          z  |z  k    sJ |                                +                                cxk    r| t           t          gk    sn J |                    -          +                    -          cxk    r-t           t          gk    sn J |j        dk    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ t	          ddd          t          dd          k    sJ t	          ddd          t/          t          dd          t          d	d                    k    sJ t	          ddd          t/          t          dd          t          dd	                    k    sJ t1          |          t1          t          t          dd          t          dd          t          dd                              k    sJ ||v sJ t          ||          |v du sJ |                    |          dk    sJ |                    t          dd                    dk    sJ |                    t/          t          dd          t          dd                              du sJ |                    t          ||                    du sJ |                    t7          ||                    du sJ |                    |          du sJ |                    t9          t          dd          t          dd          t          dd                              du sJ |                    t;          |dd
                    du sJ |                    t;          |dd
                    du sJ |                    t;          |dd
                    du sJ +                                +v sJ t          t          -.fd           t          t          d          d          t          t          d           d          }}t	          t          dd          dd	          }|j        ||f||ffv sJ t          d	          d	z  }t          ||          }|t          |d          z   }|t          dd          z   }|                     |          |                     |          k    sJ +                     |          t          t          tC          d
d	          d          t          tC          d
d	          t          j                            gk    sJ +                     |          t          t          dd	          t          tC          dd          d	                    gk    sJ |                     |          t          |t          dt          d	                              gk    sJ |                     |          g k    sJ +"                    t          ||t          |d          z                       sJ +"                    t          ||t          |d          z                       sJ |"                    t          |t          dt          d	                                        sJ |"                    t          t          dd          t          dd                              du sJ |"                    |          du sJ |"                    t	          t          d	d          dd                    du sJ |"                    t9          t          dd          t          dd          t          d	d                              du sJ |"                    t9          t          dd          t          dd          t          d	d                              du sJ t          t          dd          d
          "                    t          t          dd          d                    du sJ t	          t          dd          d	d                               t          dd                    t          t          dd          t          tC          dd          tC          dd                              t          t          dd          t          tC          dd          tC          dd                              gk    sJ t	          t          dd          d	d                               t          d
d                    t          t          d
d          t          dd                    t          t          d
d          t          d
d                    gk    sJ t          t          dd          d	                               t          d
d
                    t          t          d
d
          t          dd
                    t          t          d
d
          t          d
d                    gk    sJ t          t          dd          d	                               t          dd	t          d	          z  z
  d                    t          t          dd	t          d	          z  z
  d          t          dt          d	          z
  dt          d	          z
                      t          t          dd	t          d	          z  z
  d          t          dt          d	          z
  dt          d	          z                       gk    sJ t          t          dd          d                               t          dd                    t          t          dd          t          tC          dd          tC          dd                              t          t          dd          t          dd                    gk    sJ t          t          dd          d                               t          dd                    t          t          dd          t          dd                     t          t          dd          t          tC          dd          tC          d!d                              gk    sJ d" ,,fd#}t	          t          dd          d	d          **#                    t          dd                    t          t          dd          t          dd                    t          t          dd          t          dd                    gk    sJ *#                    t          dd                    t          t          dd          t          dd                    gk    sJ *#                    d$          t          t          dd          t          dd                    gk    sJ  |*#                    t          dd          d	          t          t          tC          d%d&          tC          dd                    t          tC          d'd&          tC          d(d)                              t          t          tC          d*d+          tC          d,d-                    t          tC          d.d+          tC          d/d	                              gd	          sJ t          t          d
          t          j                  }|*v sJ  |*#                    |d	          t          t          tC          d0d1          tC          dd                    t          tC          d2d1          tC          dd3                              t          t          tC          d&d4          tC          dd	                    t          tC          d5d4          tC          d6d&                              gd	          sJ t	          d7d	d	t          d
          z  d
z            * |*#                    dd	          t          t          tC          d8d          tC          d9d:                    t          tC          d;d          tC          d	d                              t          t          dd          t          d	d<                    gd	          sJ t	          d7-d          **#                    -dz   df          t          t          dd          t          dd                    gk    sJ t          tH          *-fd=           d
}d}t	          |||          }|j%        t          |d	z  |d	z  z
            k    sJ |j%        |z  }|j&        |k    sJ |j'        |d|z
  z  k    sJ |j(        |d|z   z  k    sJ |j)        |d|d	z  z
  z  k    sJ t	          |||          }|j%        t          |d	z  |d	z  z
            k    sJ |j%        |z  }|j&        |k    sJ |j'        |d|z
  z  k    sJ |j(        |d|z   z  k    sJ t          t          dd>          t          dd                    }t          t          d>d          t          dd                    }t          t          dd          t          dd                    }t          t          d?d          t          dd@                    }t          t          d	          d	z  t          d	          d	z            t          t          d	           d	z  t          d	           d	z            g}tU          +|          g k    sJ tU          |t          dd                    t          dd          gk    sJ tU          ||          t          dd          gk    sJ tU          ||          t          dd          gk    sJ tU          ||          ||d         |d         gfv sJ tU          ||	          t          dd          t          dd          gk    sJ tU          ||
          t          t          d	          d	z  t          d	          d	z            gk    sJ |*                    |          t          dd          gk    sJ +*                    |          g k    sJ |*                    t          t          dd	          d                    t          dd          gk    sJ |*                    t          t          dd          d                    g k    sJ |*                    t	          t          d	d          dd                    t          dd          gk    sJ |*                    t	          t          dd          dd                    g k    sJ |*                    t          d	d                    g k    sJ |*                    |          |k    sJ tU          t	          t          dd          d	d          t	          t          d
d          dd	                    t          d	d          gk    sJ tU          t          t          dd          d	          t          t          d
d          d                    t          d	d          gk    sJ tU          t          t          dd          d	          t          t          d d          d                    g k    sJ tU          t	          t          dd          dd(          t	          t          dd          ddA                    t          dBddC          gk    sJ tU          t	          t          dd          dd(          t	          t          dd          dDdA                    g k    sJ t          d7t          j                  *                    tW          dEdFd$                    t          tC          dd	          d          t          t          j        d          gk    sJ t          tX          +fdG           t          tX          +fdH           t          tX          +fdI           t          |d
          }t          |d          } t          t          dd          d          }!|*                    |           g k    sJ |*                    |!          g k    sJ |*                    |          |k    sJ t          d	          }tW          t          d|          t          d|           t          |d                    }"tU          |"|          }#t[          |#          dk    sJ t          dd          |#v sJ t          dd          |#v sJ t          |d	z  |d	z            |#v sJ t          |d	z  | d	z            |#v sJ t          t          dd          d          }$t	          t          dd          ddJ          }%tU          |$|%          t          dd          t          d>d          gt          d>d          t          dd          gfv sJ |%                     t          dd                    g k    sJ t	          t          dd          d
d	          }%|%                     t          d
d                    t          t          d
d          t          d
dK                    gk    sJ t	          t          dd          dd@          }t	          t          d	d          dd-          +tC          dLd(          }&d	t          dM          z  d(z  }'t          |&|'d-z  z
  |&d	z  |'z             t          |&|'d-z  z   |&d	z  |'z
            g}(|*                    +          |(k    sJ t	          t          -.          dd-          +t          dM          }'t          |' dNz  |&z   |'tC          d	d(          z  |&d	z  z             t          |'dNz  |&z   |'tC          dOd(          z  |&d	z  z             g}(-.fdP|*                    +          D             |(k    sJ |"                    |                     |t          |d          z             d                   sJ t	          dQd
d	          **                     t          d@d                    t          t          d@d          t          dd                    t          t          d@d          t          tC          dRd          tC          dSd                              gk    sJ t	          d7dd	          **.                    *j                  sJ *.                    *j        t          d*j        tC          dd@          z
            z             sJ *.                    *j        t          *j        tC          dd@          z
  d          z             sJ *.                    *j        t          *j        d          z             du sJ *.                    *j        t          *j        tC          dd@          z   d          z             du sJ t	          d7d	d          **.                    *j                  sJ *.                    *j        t          d*j        tC          dd@          z
            z             sJ *.                    *j        t          *j        tC          dd@          z
  d          z             sJ *.                    *j        t          *j        d          z             du sJ *.                    *j        t          *j        tC          dd@          z   d          z             du sJ |.                    t          dd                    du sJ |.                    t          dTdU                    du sJ */                    d	d
          t	          d7dd
          k    sJ */                    d
d          t	          d7dd          k    sJ *0                    t                    *k    sJ *0                    t          dQ          t	          t          d	d          d	d          k    sJ t          tH          *fdV           t          t          dd          d          })|)0                    t          d	z            t          t          dd          d          k    sJ |)0                    t          d
z            t          t          t          j        t          d
          d	z            d          k    sJ |)0                    t          d
z  t          dd                    t          t          dd          d          k    sJ |)0                    t          d
z  t          dd                    t          t          t          j        t          d
          d	z  z   t          j        t          d
          d	z  z             d          k    sJ d S )WNr"   TrR   r#   ty1r   r$   r&   r%   r,   r*   c                  &    t          d d d d          S Nr$   r    r:   r8   rK   z#test_ellipse_geom.<locals>.<lambda>R   s    wtT4;; r:   c                      t                      S Nr\   r]   r:   r8   rK   z#test_ellipse_geom.<locals>.<lambda>S   s
    wyy r:   c                  <    t          t          dd                    S Nr   r   r   r]   r:   r8   rK   z#test_ellipse_geom.<locals>.<lambda>T   s    &q!"5"5 r:   c                  Z    t          t          d          t          d          z            S )Nr"   r#   )r   r	   r]   r:   r8   rK   z#test_ellipse_geom.<locals>.<lambda>U   s    &VC[[)@"A"A r:   r$   r$   rF   F      g      ?c                  j    t          t                     dd                              d          S )Nr$   r"   )	parameter)r   r   arbitrary_pointr!   s   r8   rK   z#test_ellipse_geom.<locals>.<lambda>   s-    wuQ{{Aq99IITWIXX r:      M   rC      !      (      r-   rG   Z   c                     t          | j        |j        z
            d| z  k     o#t          | j        |j        z
            d| z  k     S )zF tests whether l1 and 12 are within 10**(-prec)
        of each other 
   )absp1p2)l1l2precs      r8   lines_closez&test_ellipse_geom.<locals>.lines_close   sE     2525=!!B$K/TC4F4Fte4TTr:   c                 Z    t          fdt          | |          D                       S )Nc              3   8   K   | ]\  }} ||          V  d S r_   r]   ).0rv   rw   ry   rx   s      r8   	<genexpr>z=test_ellipse_geom.<locals>.line_list_close.<locals>.<genexpr>   s5      IIR;;r2t,,IIIIIIr:   )allzip)ll1ll2rx   ry   s     `r8   line_list_closez*test_ellipse_geom.<locals>.line_list_close   s2    IIIII3sC==IIIIIIr:   r   r$   irI   i   S         r(   rB   i   iV@      )   ir   r   iG   irD   c                  8                          dz   df          S r[   )normal_lines)r@   r"   s   r8   rK   z#test_ellipse_geom.<locals>.<lambda>   s    Aqz(B(B r:   rr   g?g      @evaluateg+?)rF   r   r$   r   c                  @    t           t          dd                    S )N)r   r   r   )r   r   r$   )r   r   r6   s   r8   rK   z#test_ellipse_geom.<locals>.<lambda>  s    l2tIy/I/IJJ r:   c                  >    t           t          d                    S )Nri   )r   r   r   s   r8   rK   z#test_ellipse_geom.<locals>.<lambda>  s    l2x||<< r:   c                  .    t          j         d          S r[   )r   r   r   s   r8   rK   z#test_ellipse_geom.<locals>.<lambda>	  s    g22q99 r:   r/   5   i  D   r.   c                 B    g | ]}|                     d di          S r&   r$   )subs)r|   pr"   r#   s     r8   
<listcomp>z%test_ellipse_geom.<locals>.<listcomp>0  s-    ===AAFFAq!A;===r:   r$   r&      r)   g333333?g?c                  >                          t          dz            S )Nr%   )rotater   )r@   s   r8   rK   z#test_ellipse_geom.<locals>.<lambda>P  s    A r:   )1r	   r   Halfr   r   r   r   r   r   r   r   rT   r   centerarear   rs   circumferenceplot_intervalminormajorhradiusvradiusr   hash__cmp__enclosesr   r   r   rh   focitangent_linesr   
is_tangentr   NotImplementedErrorfocus_distanceeccentricity	periapsisapoapsissemilatus_rectumr   r   	TypeErrorlenencloses_pointscaler   )/rX   rY   halfrt   ru   p4r5   r7   c1c2c3rv   cenradf1f2efvp1_1p1_2p1_3r   r   r   r   e4eccrw   l3l4	pts_c1_l3csmallcbigcoutt1pointscircelipr<   r>   anscirr@   r6   ry   r"   r#   s/                                             @@@@@r8   test_ellipse_geomr   :   s"   sAsAsA	4	 	 	 B6D	q!B	q!B	q!B	Q		B	T1		B	R		B	AB	AB	d1ggtAww''	+	+B	b"B QtVQ4C%1++uQ{{E!QKK88F3<L<LLLLL%1++uQ{{E!QKK88IgaQRmmU\]^`aUbUb<c<ccccc
:;;<<<
:(()))
=55666
=AABBB 4A%q!4444888888888888888888888888B;;;;R<<<<7b====7bd????7beCGGm####7bgr/////qtBw&&&&!1!1!3!3CCCCB3|CCCCCCA""2"21"5"5EEEE!bS"EEEEEE8q====8q====:????:????61a  E!QKK////61a  GE!QKKq!$E$EEEEE61a  GE!QKKq!$E$EEEEE 88tF5A;;aU1b\\JJKKKKKK8888RLLB5((((::b>>Q::eAqkk""Q&&&& ;;wuT400%S//BBCCtKKKK;;tB||$$----;;s2r{{##u,,,,;;r??e####;;dD!!5s#3#3U3__EEG GJNO O O O;;~b#q1122d::::;;~b!Q//00E9999;;~b!Q//00E99992%%%%
:XXXXXYYY 488QRy!!4!4B	q!a	#	#B7Bx"b***** 	Q!AA;;DdADaDB2#3#3B#7#77777D!!d5!Q+C+CU8TUWX>>[\[aEbEb&c&c%dddddD!!d5A;;hq!nna8P8P&Q&Q%RRRRRD!!d4q$q''1B1B&C&C%DDDDDB2%%%%==dBtQ$78899999==dBtQ$78899999==dE!T!WW$5$56677777==eAqkk5A;;7788EAAAA==$$$$==q!a3344<<<<==aU1b\\5A;;779 9<AB B B B==aU1a[[%1++668 8;@A A A A%1++q!!,,VE!QKK-C-CDDMMMM5A;;1%%33E!QKK@@	eAqkk5"b!1!18C3D3DEE	F	F	%1++uXb!__hr1oo>>??	AA A A A 5A;;1%%33E!QKK@@	eAqkk5A;;	'	'eAqkk5A;;)G)GHI I I I%1++q!!//a<<	eAqkk5A;;	'	'eAqkk5A;;)G)GHI I I I%1++q!!//a!DGG)mQ0G0GHH	eA$q''	M1%%uQa[!d1gg+'F'F	G	G	%Ad1ggIq
!
!5T!WWa$q''k#B#BCC	GG G G G %1++q!!//a<<	eAqkk5"b!1!18Ar??CC	D	D	%1++uQ{{##	%% % % % %1++q!!//a<<	eAqkk5A;;	'	'U1a[[%B"b1A1ABBCC	EE E E EU U UJ J J J J 	aQ""A>>%1++&&	eAqkk5A;;	'	'eAqkk5A;;)G)GHI I I I>>%1++&&	eAqkk5A;;	'	'() ) ) )>>&!!	eAqkk5A;;	'	'() ) ) )?1>>%1++q99U8C$$hr1oo66hsB>O>OQYZ\^`QaQa8b8bccU8B##Xb!__55uXb"=M=MxXZ\]7_7_``<bcdf f f f f 	d1ggqvA6666?1>>!Q//U8D#&&R(8(8995$PSATATV^_`bdVeVe;f;fggU8B##Xb!__55uXb"=M=MxX[]_O`O`7a7abb2defh h h h h 	1T!WW9Q;''A?1>>&!44U8C$$hsB&7&788%b@Q@QS[\]_aSbSb:c:cddU1b\\5B<<((7*+,. . . . . 	1A>>1q5!*%%$uQ{{E!QKK*H*H)IIIII
 B B B B BCCCEE	UE	"	"BUAXq%8 9 99999

e
#C?c!!!!<5!c'?****;%S/))))%SAX"66666	UE	"	"BUAXq%8 9 99999

e
#C?c!!!!<5!c'?****;%S/)))) 
eArllE!QKK	(	(B	eBmmU1b\\	*	*B	eBmmU1a[[	)	)B	eCmmU1b\\	*	*BtAwwqy$q''!),,eT!WWHQJa
.K.KLIB2%%%%E!QKK((U1a[[M9999BE!QKK=0000BE!RLL>1111BI	!il/K#LLLLLBE!QKKq!#=====BE$q''!)T!WWQY$?$?#@@@@@??25A;;-////??2"$$$$??6%1++q1122uQ{{mCCCC??6%1++q1122b8888??75A;;155665A;;-GGGG??75A;;15566"<<<<??5A;;''2----??2"$$$$aQ22GE!QKKA4N4NOOTYZ[]^T_T_S`````uQ{{A..uQ{{A0F0FGGERSUVKK=XXXXuQ{{A..uQ{{A0F0FGG2MMMMaQ33WU1a[[!S5Q5Q 
 
CU+++,- - - -aQ33WU1a[[%QT5U5UVVZ\\\\\&!&!!..&&))+ +hr1ooq!!5#3#3/55 5 5 5 9JJJJKKK
9<<<<===
99999:::B]]F"a==D%1++q!!Dt$$****t$$****v&&&0000QA	%1++uQ||U1a[[	9	9B"b!!Fv;;!A;;&    B<<6!!!!1ac??f$$$$1qbdv%%%%%1++q!!D5A;;2&&Dd##
1++uR||	$uR||U1a[[&ABC C C CeAqkk**b00005A;;1%%DeAqkk**	eAqkk5C==	)	)*+ + + + 
q!a	$	$B	q!a	#	#BRA	$t**RAQqS!A#'""E!ac'1Q37$;$;
<C??2#%%%%	q!a	#	#BT

A!BAhq"oo-!344eAbD1HaQSUWHXHXFX[\]^[^F^6_6_
`C=====)<)<===DDDD ==))"uR||*;<<Q?@@@@@1A??5Q<<((	eBllE!QKK	(	(U2q\\5"a(2q//BBCC	EE E E E
 	1AAH%%%%%AHuQ	HQOO0K'L'LLMMMMMAHuQY!R-H!'L'LLMMMMMAHuQY':'::;;uDDDD	5Xa__4a888: :=BC C C C1AAH%%%%%AHuQ	HQOO0K'L'LLMMMMMAHuQY!R-H!'L'LLMMMMMAHuQY':'::;;uDDDD	5Xa__4a888: :=BC C C CU1a[[))U2222U3__--5555771a==GFAq111111771a==GFAq11111188B<<188B75A;;1#=#=====
 6 6 6 6777 q!a
 
 C::bdveAqkk1555555::bdveAFDGGAI&>&>BBBBBB::bdE!QKK((F5A;;,B,BBBBB::bdE!QKK((F5$q''!)9KQVVZ[\V]V]^_V_M_3`3`bc,d,dddddddr:   c                     t          ddd           } | j        t          d          dz  k    sJ t          dd t          d          dz            }|j        dk    sJ t          d dt          d          dz            }|j        dk    sJ t          t          dd          dd          }|j        dk    sJ t          t          d            t          t          d            t          t          d	            t          d dd d          j        dk    sJ t          t          d
            t          t          d            t          t          d            d S )Nr&   r$   )r   r   r   r%   r   r   r   c                  b    t          t          dd          dt          d          dz            S Nr%   r$   r&   r   )r   r   r   r]   r:   r8   rK   z#test_construction.<locals>.<lambda>k  s-    '%1++qQRSTQUQUVWQW"X"X"X r:   c                  \    t          t          dd          dt          d                    S )Nr%   r$   r,   r   )r   r   r   r]   r:   r8   rK   z#test_construction.<locals>.<lambda>l  s$    '%1++qsSTvv"V"V"V r:   c                  v    t          t          dd          dt          j        t          d          z
            S r   )r   r   r   Pir]   r:   r8   rK   z#test_construction.<locals>.<lambda>m  s-    '%1++qqtTUVWTXTXy"Y"Y"Y r:   c                  (    t          d d dd          S )Nr$   )r   r\   r]   r:   r8   rK   z#test_construction.<locals>.<lambda>s  s    '$a"J"J"J r:   c                  B    t          t          dd          dd          S )Nr%   r$   rA   r   r   r   r]   r:   r8   rK   z#test_construction.<locals>.<lambda>v  s    '%1++qQS"T"T"T r:   c                  B    t          t          dd          dd          S )Nr%   r$   re   r   r   r]   r:   r8   rK   z#test_construction.<locals>.<lambda>w  s    '%1++qQU"V"V"V r:   )	r   r   r   r   r   r   r   r   length)r5   r6   r7   r   s       r8   test_constructionr   [  s`   	AD	9	9	9B?d1ggai''''	DtAwwqy	A	A	AB:????	qtAwwqy	A	A	AB:???? 
q!aa	8	8	8B:???? =XXYYY
=VVWWW
=YYZZZ 4D!$$+q0000
=JJKKK =TTUUU
=VVWWWWWr:   c                  h   t          dd          } t          t          dd          | |           }t          d          t          d          }}t          dd          D ]i}|                                }|                    ||                              t          ||f|j                            	                    d          sJ j|                    d	          }|                    ||                              t          ||f|j                            	                    d          sJ d S )
NrY   TrR   r   rxryr,   r$   )seed)
r	   r   r   rangerandom_pointr4   r   r   argsequals)rY   r7   r   r   indrs         r8   test_ellipse_random_pointr   y  s   	4	 	 	 B	q!b"	%	%BD\\6$<<BQ{{ I IOO{{2r""''RHaf(=(=>>EEaHHHHHH
QA;;r2##CR!&$9$9::AA!DDDDDDDr:   c                  L    t          t          dd                    dk    sJ d S )Nr   r&   zCircle(Point2D(0, 1), 2))reprr   r]   r:   r8   	test_reprr     s,    vq!!""&@@@@@@@r:   c                     t          dd          } |                     d          t          dd          k    sJ |                     d          t          dd          k    sJ |                     d          t          ddd          k    sJ t          d	dd
                              dd
d          t          t          dd          dd          k    sJ t          d	d                              dd
d          t          t          dd          dd          k    sJ t          d	dd
                              d
d
d          t          t          dd          dd          k    sJ t          d	d                              d
d
d          t          t          dd          d          k    sJ t          t          dd          d                              t	          dd
          t	          dd
          d          t          d	d          k    sJ t          d	d                              dd          t          dd          k    sJ t          d	d                              d
d
          t          d	d          k    sJ d S )Nrd   r&   rF   )rF   r$   )r#   )r$   rF   r   r*   r   r%   )r*   r,   rD   r   rE   r-   ir$   r,   )r   r   r   r   r   	translate)r>   s    r8   test_transformr     s   vqA772;;&!,,,,,,77R7==F7A......771::A......61a  &&q!V44b#1%%& & & &&!""1a00b#1%%& & & &61a  &&q!V44b#1%%& & & &&!""1a00uR~~q!!" " " "%C..!$$**8Aq>>8Aq>>6RRvq   &!&&q!,,vq   &!""1a((vq     r:   c                     t          t          dd          dd          } t          t          dd          dd          }t          t          dd          d          }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 |j        d	k    sJ d S )
Nr   r%   r,   r&   r.   rG   )rA   r   r%   r,   )r   r   rE   r,   )r.   r.   r&   r&   )r   r   r   bounds)r5   r6   r   r   s       r8   test_boundsr     s    	q!a	#	#B	q"q!	$	$B	aa	 	 B	b!eAqkk5A;;	7	7B9&&&&9&&&&9&&&&9&&&&&&r:   c                     t          d          } t          d          t          d| f          }t          ddd          }|j        |                    |          j         k    sJ t          ddd	          j                            t          dd                    j         k    sJ j                            t          dt                              j         k    sJ t          t          fd
           t          dd                              t          dd                    t          t          dd          d          k    sJ d S )Nr=   mr   sloper   r   )r&   r%   r$   r&   c                  L                          t          d                    S )Nr   r  )reflectr   )r@   r   s   r8   rK   ztest_reflect.<locals>.<lambda>  s     		$vQ2G2G2G(H(H r:   r   rd   rF   )r	   r   r   r   r  r   r   r   r   r   r   )r=   lr   r@   r   s      @@r8   test_reflectr    sD   sAsAaV1A	&&&	)	)B7rzz!}}))))))1A6aiiV1 5 5 566;;;;;;6aiiV2 6 6 677<<<<<<
 H H H H HIII&!$$T&&%9%9::fWQPQ]]TV>W>WWWWWWWr:   c                     t          t          dd          dd          t          t          dd          d          }                     t          dd                    du sJ                     t          dd                    du sJ                               du sJ                     t          d	d
d                    du sJ                     t          d	dd                    du sJ |                     t          ddd
                    du sJ |                     t          dd                    du sJ |                     t          dd                    du sJ |                     t	          dd                    du sJ |                     t	          dd                    du sJ |                     t	          dd                    du sJ |                     t	          dd                    du sJ |                     t	          dd                    du sJ |                     t          dd                    du sJ                     t          dd                    du sJ                     t          d	d                    du sJ |                     t          d	d                    du sJ                     t          dd                    du sJ                     t          dd                    du sJ                     t          dd                    du sJ                     t          dd                    du sJ                     t          dd                     du sJ                     t          d	d!                    du sJ                     t          dd"                    du sJ                     t          dd#                    du sJ                     t          d	d$d%                    du sJ                     t          d&d'd(                    du sJ                     t          ddd)                    du sJ                     t          ddd*                    du sJ                     t          dd+dd*                    du sJ                     t          d,ddd-                    du sJ |                     t          d,ddd-                    du sJ                     t          d	dd.d*                    du sJ                     t          d/d0d1                    du sJ                     t          d/d0d+d*                    du sJ                     t          dd2d3                    du sJ |                     t          d	d                    du sJ                     t          dd                    du sJ                     t          dd                    du sJ                     t          d	d$d%                    du sJ                     t          d&d'd(                    du sJ                     t          d,ddd-                    du sJ |                     t          d,ddd-                    du sJ                     t          d/d0d+d*                    du sJ                     t          dd2d3                    du sJ t          t          fd4           t          t          fd5           d S )6Nr   r%   r,   r&   r.   rG   FTr   r$   )r&   r.   )r0   r.   )rG   r.   )r   r.   )ir   )rA   r.   )rA   i)r   r/   )rE   r/   )rE   r   )r&   r,   )rE   r,   r&   r&   )r   rG   r   r%   r   )ri   ri   )rA   r   )rA   r,   )r%   r,   )rr   r   )rr   rr   rd   )gQgMbP)rA   r$   )r,   r,   )r,   r   )ii)ii)iir   )r   r,   )r   r   )rA   r   )r%   r   )rG   rG   )r%   ri   )r%   r   )r-   r,   )r,   rG   )r-   r   c                  L                          t          ddd                    S ra   )r   r   r5   s   r8   rK   z!test_is_tangent.<locals>.<lambda>  s    bmmE!QNN;; r:   c                  H                          t          d                    S )Nr,   )r   r   r  s   r8   rK   z!test_is_tangent.<locals>.<lambda>  s    bmmHQKK88 r:   )
r   r   r   r   r   r   r   r   r   r   )r   r5   s    @r8   test_is_tangentr    sr   	q!a	#	#B	aa	 	 B==q!%%....==q!%%....==$$$$==A..//58888==A..//47777==!Q//00D8888==!,,--5555==++,,4444==Xz2233u<<<<==Xz2233u<<<<==Y1122e;;;;==Wh//00D8888==VV,,--5555==0011T9999==1122e;;;;==0011U::::==2233u<<<<==2233u<<<<==62233u<<<<==&1122e;;;;==&1122d::::==gx0011U::::==ff--..%7777==g7788EAAAA==gw//00D8888==99::eCCCC==k:FFGG5PPPP==&&99::eCCCC==&&99::eCCCC=='66BBCCuLLLL==7FGDDEEMMMM==7FGDDEENNNN==@@AAUJJJJ==(F;;<<EEEE==(GVDDEENNNN==99::eCCCC==2233u<<<<==&1122e;;;;==&1122d::::==99::eCCCC==k:FFGG5PPPP==7FGDDEEMMMM==7FGDDEENNNN==(GVDDEENNNN==99::eCCCC
9;;;;<<<
9888899999r:   c                       t          d          t          t          dd          dd                                d          dik    sJ t	          t
           fd           d S )NrX   r   r%   r,   r	  c                  0                          d          S )N)r*   r   )parameter_valuer@   rX   s   r8   rK   z&test_parameter_value.<locals>.<lambda>  s    q00;; r:   )r	   r   r   r  r   rT   r  s   @@r8   test_parameter_valuer    sp    sAaQ""AVQ''Aq61111
:;;;;;<<<<<r:   c                     t          d          \  } }t          t          dd          dd          }dt          t	          d| dz  z
            | dz  z  | ddf          z  dz  }d	t          t	          d
|dz  z
            |dz  z  |ddf          z  dz  }dt	          d| dz  dz  z
            z  }t          t          ||| |f          | z  | ddf          }||                                d         k    sJ ||                                d         k    sJ ||                                d         k    sJ |                    t          dd                    }dt          z  dt          z  dt          z  f}||k    sJ d S )Nzx, yr   r,   r*   r(   rC   r&   r   rr      rD   r%   r$   r-   iD  iM  iX  )r
   r   r   r   r   second_moment_of_arear   )	r"   r#   r@   I_yyI_xxYI_xyr   t2s	            r8   test_second_moment_of_arear    s   6??DAqaQ""Ayb1a4iA-2qz:::1<Dyb1a4iA-2qz:::1<D	$q1a49}

AYq1qb!*--a/!R<<D1**,,Q/////1**,,Q/////1**,,Q/////	
	 	 q	,	,B
b&#b&#b&	!Br666666r:   c                     t          dd          } t          dd          }|                                dt          z  k    sJ |                                dt          z  dt          z  fk    sJ t          d| d	z            }|                                t          | d
z  z  t          |           z  dz  t          | z  t          |           d
z  z  dz  z   k    sJ |                                t          | d
z  z  t          d          z  t          | d
z  z  t          d          z  fk    sJ t          dd          \  }}t          d||          }|                                t          |z  |d	z  z  t          d          z  t          |d	z  z  |z  t          d          z  fk    sJ |                                t          |d
z  z  |z  t          d          z  t          |z  |d
z  z  t          d          z  z   k    sJ |	                    t          d	z            }|                                t          |d	z  z  |z  t          d          z  t          |z  |d	z  z  t          d          z  fk    sJ |                                t          |d
z  z  |z  t          d          z  t          |z  |d
z  z  t          d          z  z   k    sJ t          ||fd	d          }|                                dt          z  dt          z  fk    sJ |                                dt          z  k    sJ t          t          dd          d	d	          }|                                d	t          z  d	t          z  fk    sJ |                    t          d	d	                    d	t          z  d	t          z  fk    sJ |                    d          d	t          z  d	t          z  fk    sJ d S )Nr?   T)positive)r%   rG   r(   i      )r&   rE   r&   r%   r   r+   za, b)r*   r-   r*   r-   r)   x   r   r  )r	   r   polar_second_moment_of_arear   section_modulusr   r   r
   r   r   r   )r?   r>   r<   r=   r@   s        r8   4test_section_modulus_and_polar_second_moment_of_arear"    s   sT"""AvqA((**d2g55553r63r6"22222vqsA((**bAgc!ffnR.?"Q$s1vvqy.QSBS.SSSSS2ad71R55="QT'!B%%-"@@@@@6D)))DAq1A2a419QqTT>2ad719QqTT>"BBBBB((**bAgai!nr!tAqDy1~.MMMMM	AA2ad719QqTT>2a419QqTT>"BBBBB((**bAgai!nr!tAqDy1~.MMMMMA1A2b5!B$-////((**c"f4444aQ""A1R42,....U1a[[))adAbD\9999V$$2qt444444r:   c                  8   t          d          } t          d          }t          t          dd          | |          j        d| z  t	          | dz  |dz  z
  | dz  z            z  k    sJ t          t          dd          dd          j        dt	          t          d          d	z            z  k    sJ t          d d
d d          j        dt          z  k    sJ t          t          d dd          j                            d          dz
            dk     sJ d S )NMr   r   r*   r&   r,   r/   rE   rC   r$   r%   )r   r   r  gRe9@g|=)	r	   r   r   r   r   r   r   rs   evalf)r$  r   s     r8   test_circumferencer&    s   sAsA5A;;1%%3q1uz1PQ6TUYZTZ?^_ab^bJb?c?c7ccccc5A;;1%%3rJqttby<Q<Q7QQQQQ 4D!$$2ad:::: wtQ222@FFrJJM^^__bgggggggr:   c                  N    t          dd          t          dd          k    sJ d S )Nr   r   r$   r&   rb   r]   r:   r8   test_issue_15259r(  -  s+    &!a++++++r:   c                     d} d}t          dd          }t          ||           }|                    |                    |          d                   dk    sJ |j        j        j        sJ |j        j        j        sJ |j        j        sJ t          || d          }|j        j        j	        sJ |j        j        j	        sJ |j        j	        sJ d S )Ng'F̴?)gmi$?gTF\?r   g?TFr   )
r   r   r   r   r   r"   is_Rationalr#   radiusis_Float)RiCiAr>   us        r8   test_issue_15797_equalsr1  1  s    	B	1Ba#$$Ar2A<<**1-..$66668:!!!!8:!!!!8r2&&&A8:8:8r:   c                  0   t          d          \  } }}}t          | |f||          }|                                t          | |ft	          ||                    k    sJ t          dd                                          t          dd          k    sJ d S )Nx y a br%   r*   r(   )r
   r   auxiliary_circler   r   r"   r#   r<   r=   r@   s        r8   test_auxiliary_circler7  @  s    ##JAq!QA1A61a&#a))#<#<<<<<&!--//6&!3D3DDDDDDDr:   c            	      `   t          d          \  } }}}t          | |f||          }|                                t          | |ft	          |dz  |dz  z                       k    sJ t          dd                                          t          ddt	          d          z            k    sJ d S )Nr3  r&   r4  r(   )r
   r   director_circler   r   r6  s        r8   test_director_circler:  I  s    ##JAq!QA1A&!QadQTk1B1B"C"CCCCC&!,,..&4772K2KKKKKKKr:   c                     t          dd          \  } }}}t          d          \  }}t          t          ||          ||          }|j        | |j        j        z
  z  t          dd          z  }|j        ||j        j        z
  z  t          dd          z  }||z   |j        dz  |j        dz  z
  t          dd          z  z
  }	|	                                |	k    sJ t          t          dd          dd          }d| dz
  z  t          dd          z  }d|dz
  z  t          dd          z  }||z   d	t          dd          z  z
  }	|	                                |	k    sJ d S )
Nzx y h kTrR   za br&   r%   r$   r-      )
r
   r   r   r   r   r"   r   r   r#   evolute)
r"   r#   hkr<   r=   r@   r   r  Es
             r8   test_evoluterA  R  sR   $///JAq!Q5>>DAqaQ""A
)Q^
$x1~~	5B
)Q^
$x1~~	5B
R19a<!)Q,.!Q??A99;;!aQ""A
QU)hq!nn	$B
QU)hq!nn	$B
R2A&&A99;;!r:   c                  |    t          t          dd          dd          } |                     dd          dk    sJ d S )Nr$   r   r%   r&   z#FFAAFFz<ellipse fill="#FFAAFF" stroke="#555555" stroke-width="4.0" opacity="0.6" cx="1.00000000000000" cy="0" rx="3.00000000000000" ry="2.00000000000000"/>)r   r   _svgr  s    r8   test_svgrD  c  sV    	q!a	#	#B771i    %{  {  {  {  {  {  {r:   N)?
sympy.corer   sympy.core.numbersr   r   r   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr	   r
   $sympy.functions.elementary.complexesr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   sympy.geometry.liner   sympy.geometry.pointr   sympy.geometryr   r   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r   sympy.integrals.integralsr   *sympy.functions.special.elliptic_integralsr   r   r9   rV   r   r   r   r   r   r   r  r  r  r  r"  r&  r(  r1  r7  r:  rA  rD  r]   r:   r8   <module>rS     s         1 1 1 1 1 1 1 1 1 1 $ $ $ $ $ $ " " " " " " / / / / / / / / 4 4 4 4 4 4 9 9 9 9 9 9 8 8 8 8 8 8 ) ) ) ) ) ) ( ( ( ( ( (4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 . - - - - - - - / / / / / / A A A A A A 8 8 8 8 8 8
_ 
_ 
_1 1 12 ]e ]e ]e@	X X X<
E 
E 
EA A A  ,' ' '
X 
X 
X1: 1: 1:h= = =    5 5 56h h h, , ,  E E EL L L  "{ { { { {r:   