
    \hg                     |   S SK Jr  S SKJrJrJr  S SKJr  S SKJ	r	  S SK
JrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJrJrJrJrJrJrJrJrJ r J!r!J"r"  S SK#J$r$J%r%  S SK&J'r'  S SK(J)r)  S SKJ*r*  S r+S r,\%S 5       r-S r.S r/S r0S r1S r2S r3S r4S r5\%S 5       r6S r7S r8S r9S r:S  r;S! r<S" r=S# r>g$)%    )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                  <   SSK Jn Jn  [        [	        SS5      SS5      n[        UR                  SS95      [        U * U-   S-   S-  S-  X-   S-
  S-  S-  -   S-
  5      :X  d   e[        [	        SS5      S	S5      n[        UR                  SS95      [        U * U-   S-  S-  X-   S-  S
-  -   S-
  5      :X  d   e[        [	        SS5      SS5      n[        UR                  SS95      [        SU -  U-   S-
  S-  S-  U SU-  -   S-
  S-  S-  -   S-
  5      :X  d   eg )Nr   xy         )_slope                            )	sympy.abcr"   r#   r   r   strequation)r"   r#   e1e2e3s        Y/var/www/auris/envauris/lib/python3.13/site-packages/sympy/geometry/tests/test_ellipse.py!test_ellipse_equation_using_sloper9      s3   	q!a	#Br{{!{$%qb1fqj1_Q->!%!)aPRAR-RUV-V)WWWW	q!a	#Br{{!{$%qb1fq[]aeaZ]-JQ-N)OOOO	q!a	#Br{{!{$%bdQhlQ->r-AQ1Wr\TUDUVYDY-Y\]-])^^^^    c            
        ^^^^ SSK JmJmJmJmJn JnJn  [        TS-  TS-  -   ST-  -   ST-  -   S-
  5      [        [        [        S5      S-  S5      [        S	5      S-  5      :X  d   e[        TS-  TS-  -   S
T-  -   ST-  -   S-   5      [        [        SS5      S5      :X  d   e[        TS-  TS-  -   S
T-  -   ST-  -   S-   SSS9[        [        SS5      S5      :X  d   e[        TS-  TS-  -   S-
  5      [        [        SS5      S5      :X  d   e[        TS-  TS-  -   5      [        [        SS5      S5      :X  d   e[        TS-  TS-  -   SSS9[        [        SS5      S5      :X  d   e[        TS-  TS-  -   S
T-  -   S-   5      [        [        SS5      S5      :X  d   e[        TS-  TS-  -   S
T-  -   S-   5      [        [        SS5      S5      :X  d   e[        TS-
  S-  TS-  -   S-
  5      [        [        SS5      S5      :X  d   e[        S
TS-  -  S
TS-  -  -   S
T-  -   ST-  -   S-
  5      [        [        [        SS5      [        SS5      5      S[        S5      -  S
-  5      :X  d   e[        [        TS-  TS-  -   S5      STS9[        [        SS5      S5      :X  d   e[        [        UU4S j5        [        [        UU4S j5        [        [        UU4S j5        [        [        UU4S j5        [        [        UU4S j5        [        [         UU4S j5        [#        SSS9u  mmTTS-  -  TTS-  -  -   U T-  -   UT-  -   U-   n[%        [        U5      R'                  5       T-  5      U:X  d   eg )Nr   )r"   r#   abcder&   r%   r*   r(   r.   9   r-      r<   r=   r!   r,   r$   	      c                  J   > [        T S-  TS-  -   ST -  -   ST-  -   S-   5      $ )Nr&   r%   r*      r   r!   s   r8   <lambda>+test_object_from_equation.<locals>.<lambda>.   s-    &A1qs):QqS)@2)E"Fr:   c                  2   > [        T S-  TS-  -   S-   5      $ )Nr&   rC   rJ   r!   s   r8   rK   rL   /   s    &A1r)9":r:   c                  2   > [        T S-  TS-  -   S-   SSS9$ )Nr&   rC   r<   r=   r!   rJ   r<   r=   s   r8   rK   rL   0   s    &A1r)9SC"Hr:   c                  2   > [        T S-  ST-  -   S-   5      $ )Nr&   r-   r(   rJ   r!   s   r8   rK   rL   1   s    &A!a"8r:   c                  V   > [        ST S-  -  STS-  -  -   ST -  -   ST-  -   S-   5      $ )Nr-   r&   r*   r(   rC   rJ   r!   s   r8   rK   rL   2   s6    &AFaAh)>1)Dqs)JR)O"Pr:   c                  J   > [        T S-  TS-  -   ST -  -   ST-  -   S-
  5      $ )Nr&   r%   r*   r(   rJ   rO   s   r8   rK   rL   3   s-    vadQTkAaC&7!A#&=&ABr:   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_equationrW   !   sy   ---!Q$A+!#ac)A-.&2B9OQUVXQY\]Q]2^^^^!Q$A+!#ac)B./6'"b/13MMMM!Q$A+!#ac)B.#=PRTVYZA[[[[!Q$A+"#vgamQ'????!Q$A+&A"::::!Q$A+,wq!}a0HHHH!Q$A+!#a'(F72q>1,EEEE!Q$A+!#a'(F71b>1,EEEE1q51*q!t#a'(F71a=!,DDDD!QT(Q1X%!+ac1B676'(SUWX/[cdfhi[jBkmnostuovmvwxmx;yyyy"QTAqD["%2fWQ]A6NNNN
=FG
=:;
=HI
=89
=PQ
:BC5t$DAq	
1a4!AqD&1Q3	1	$q	(B&*%%')*b000r:   c                  f=  ^*^+^,^-^. [        SSS9m-[        SSS9m.[        SSS9n [        SSS9n[        R                  n[        SS5      n[        SS5      n[        SS5      n[	        USS5      n[	        XBS5      m+[	        X1U5      n[        US5      n[        US5      n	[        [        [        S	5      [        S	5      5      S5      n
[        X45      n[        S
U-  S	5      SU-  p[        [        SS5      [        S
S5      [        SS5      5      [        X5      :X  d   e[        [        SS5      [        SS5      [        S	S	5      5      [        [        SS5      [        S	S	5      5      :X  d   e[        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [	        S SS5      R                  [        SS5      :X  d   eXh:X  d   eUT+:w  d   eXk:w  d   eXV;   d   eXf;   d   eT+T+;   d   eST+;  d   eUT+;  d   eUR                  [        :X  d   eT+R                  [        S	-  :X  d   eUR                  [        U-  [!        U5      -  :X  d   eUR                  UR                  :X  d   eUR"                  UR"                  :X  d   eUR"                  S	[        -  U-  :X  d   eUR%                  5       T+R%                  5       s=:X  a  U [        * [        /:X  d   e   eUR%                  T-5      T+R%                  T-5      s=:X  a  T-[        * [        /:X  d   e   eUR&                  S:X  d   eUR(                  S:X  d   eUR*                  S:X  d   eUR,                  S:X  d   e[	        SSS5      [        SS5      :X  d   e[	        SSS5      [/        [        SS5      [        S	S5      5      :X  d   e[	        SSS5      [/        [        SS5      [        SS	5      5      :X  d   e[1        U5      [1        [        [        SS5      [        SS5      [        SS5      5      5      :X  d   eX;   d   e[        X45      U;   SL d   eUR3                  U5      S:X  d   eUR3                  [        SS5      5      S:  d   eUR5                  [/        [        SS5      [        SS5      5      5      SL d   eUR5                  [        X45      5      SL d   eUR5                  [7        X45      5      SL d   eUR5                  U5      SL d   eUR5                  [9        [        SS5      [        SS5      [        SS5      5      5      SL d   eUR5                  [;        USS
5      5      SL d   eUR5                  [;        USS
5      5      SL d   eUR5                  [;        USS
5      5      SL d   eT+R=                  5       T+;   d   e[        [        U-U.4S j5        [        [        S5      S5      [        [        S5      * S5      p[	        [        SS5      SS	5      nUR>                  X4X44;   d   e[        S	5      S	-  n[        UU5      nU[        US5      -   nU[        SS5      -   nURA                  U5      URA                  U5      :X  d   eT+RA                  U5      [        [        [C        S
S	5      S5      [        [C        S
S	5      [        R                  5      5      /:X  d   eT+RA                  U5      [        [        SS	5      [        [C        SS5      S	5      5      /:X  d   eURA                  U5      [        U[        S[        S	5      5      5      /:w  d   eURA                  U5      / :X  d   eT+RE                  [        UU[        US5      -   5      5      (       d   eT+RE                  [        UU[        US5      -   5      5      (       d   eURE                  [        U[        S[        S	5      5      5      5      (       d   eURE                  [        [        SS5      [        SS5      5      5      SL d   eURE                  U5      SL d   eURE                  [	        [        S	S5      SS5      5      SL d   eURE                  [9        [        SS5      [        SS5      [        S	S5      5      5      SL d   eURE                  [9        [        SS5      [        SS5      [        S	S5      5      5      SL d   e[        [        SS5      S
5      RE                  [        [        SS5      S5      5      SL d   e[	        [        SS5      S	S5      RA                  [        SS5      5      [        [        SS5      [        [C        SS5      [C        SS5      5      5      [        [        SS5      [        [C        SS5      [C        SS5      5      5      /:X  d   e[	        [        SS5      S	S5      RA                  [        S
S5      5      [        [        S
S5      [        SS5      5      [        [        S
S5      [        S
S5      5      /:X  d   e[        [        SS5      S	5      RA                  [        S
S
5      5      [        [        S
S
5      [        SS
5      5      [        [        S
S
5      [        S
S5      5      /:X  d   e[        [        SS5      S	5      RA                  [        SS	[        S	5      -  -
  S5      5      [        [        SS	[        S	5      -  -
  S5      [        S[        S	5      -
  S[        S	5      -
  5      5      [        [        SS	[        S	5      -  -
  S5      [        S[        S	5      -
  S[        S	5      -   5      5      /:X  d   e[        [        SS5      S5      RA                  [        SS5      5      [        [        SS5      [        [C        SS5      [C        SS5      5      5      [        [        SS5      [        SS5      5      /:X  d   e[        [        SS5      S5      RA                  [        SS5      5      [        [        SS5      [        SS 5      5      [        [        SS5      [        [C        SS5      [C        S!S5      5      5      /:X  d   eS" m,U,4S# jn[	        [        SS5      S	S5      m*T*RG                  [        SS5      5      [        [        SS5      [        SS5      5      [        [        SS5      [        SS5      5      /:X  d   eT*RG                  [        SS5      5      [        [        SS5      [        SS5      5      /:X  d   eT*RG                  S$5      [        [        SS5      [        SS5      5      /:X  d   eU" T*RG                  [        SS5      S	5      [        [        [C        S%S&5      [C        SS5      5      [        [C        S'S&5      [C        S(S)5      5      5      [        [        [C        S*S+5      [C        S,S-5      5      [        [C        S.S+5      [C        S/S	5      5      5      /S	5      (       d   e[        [        S
5      [        R                  5      nUT*;   d   eU" T*RG                  US	5      [        [        [C        S0S15      [C        SS5      5      [        [C        S2S15      [C        SS35      5      5      [        [        [C        S&S45      [C        SS	5      5      [        [C        S5S45      [C        S6S&5      5      5      /S	5      (       d   e[	        S7S	S	[        S
5      -  S
-  5      m*U" T*RG                  SS	5      [        [        [C        S8S5      [C        S9S:5      5      [        [C        S;S5      [C        S	S5      5      5      [        [        SS5      [        S	S<5      5      /S	5      (       d   e[	        S7T-S5      m*T*RG                  T-S-   S45      [        [        SS5      [        SS5      5      /:X  d   e[        [H        U*U-4S= j5        S
nSn[	        UUU5      nURJ                  [        US	-  US	-  -
  5      :X  d   eURJ                  U-  nURL                  U:X  d   eURN                  USU-
  -  :X  d   eURP                  USU-   -  :X  d   eURR                  USUS	-  -
  -  :X  d   e[	        UUU5      nURJ                  [        US	-  US	-  -
  5      :X  d   eURJ                  U-  nURL                  U:X  d   eURN                  USU-
  -  :X  d   eURP                  USU-   -  :X  d   e[        [        SS>5      [        SS5      5      n[        [        S>S5      [        SS5      5      n[        [        SS5      [        SS5      5      n[        [        S?S5      [        SS@5      5      n[        [        S	5      S	-  [        S	5      S	-  5      [        [        S	5      * S	-  [        S	5      * S	-  5      /n[U        T+U5      / :X  d   e[U        U[        SS5      5      [        SS5      /:X  d   e[U        X5      [        SS5      /:X  d   e[U        UU5      [        SS5      /:X  d   e[U        UU5      UUS   US   /4;   d   e[U        X5      [        SS5      [        SS5      /:X  d   e[U        X5      [        [        S	5      S	-  [        S	5      S	-  5      /:X  d   eURU                  U5      [        SS5      /:X  d   eT+RU                  U5      / :X  d   eURU                  [        [        SS	5      S5      5      [        SS5      /:X  d   eURU                  [        [        SS5      S5      5      / :X  d   eURU                  [	        [        S	S5      SS5      5      [        SS5      /:X  d   eURU                  [	        [        SS5      SS5      5      / :X  d   eURU                  [        S	S5      5      / :X  d   eURU                  U5      U:X  d   e[U        [	        [        SS5      S	S5      [	        [        S
S5      SS	5      5      [        S	S5      /:X  d   e[U        [        [        SS5      S	5      [        [        S
S5      S5      5      [        S	S5      /:X  d   e[U        [        [        SS5      S	5      [        [        S S5      S5      5      / :X  d   e[U        [	        [        SS5      SS(5      [	        [        SS5      SSA5      5      [        SBSSSC9/:X  d   e[U        [	        [        SS5      SS(5      [	        [        SS5      SDSA5      5      / :X  d   e[        S7[        R                  5      RU                  [W        SESFS$5      5      [        [C        SS	5      S5      [        [        R                  S5      /:X  d   e[        [X        U+4SG j5        [        [X        U+4SH j5        [        [X        U+4SI j5        [        US
5      n[        US5      n [        [        SS5      S5      n!URU                  U 5      / :X  d   eURU                  U!5      / :X  d   eURU                  U5      U:X  d   e[        S	5      n[W        [        SU5      [        SU* 5      [        US5      5      n"[U        U"U5      n#[[        U#5      S:X  d   e[        SS5      U#;   d   e[        SS5      U#;   d   e[        US	-  US	-  5      U#;   d   e[        US	-  U* S	-  5      U#;   d   e[        [        SS5      S5      n$[	        [        SS5      SSJ5      n%[U        U$U%5      [        SS5      [        S>S5      /[        S>S5      [        SS5      /4;   d   eU%RA                  [        SS5      5      / :X  d   e[	        [        SS5      S
S	5      n%U%RA                  [        S
S5      5      [        [        S
S5      [        S
SK5      5      /:X  d   e[	        [        SS5      SS@5      n[	        [        S	S5      SS-5      m+[C        SLS(5      n&S	[        SM5      -  S(-  n'[        U&U'S--  -
  U&S	-  U'-   5      [        U&U'S--  -   U&S	-  U'-
  5      /n(URU                  T+5      U(:X  d   e[	        [        T-T.5      SS-5      m+[        SM5      n'[        U'* SN-  U&-   U'[C        S	S(5      -  U&S	-  -   5      [        U'SN-  U&-   U'[C        SOS(5      -  U&S	-  -   5      /n(URU                  T+5       Vs/ s H  nUR]                  T-S	T.S05      PM     snU(:X  d   eURE                  URA                  U[        US5      -   5      S   5      (       d   e[	        SPS
S	5      m*T*RA                  [        S@S5      5      [        [        S@S5      [        SS5      5      [        [        S@S5      [        [C        SQS5      [C        SRS5      5      5      /:X  d   e[	        S7SS	5      m*T*R_                  T*R                  5      (       d   eT*R_                  T*R                  [        ST*R,                  [C        SS@5      -
  5      -   5      (       d   eT*R_                  T*R                  [        T*R*                  [C        SS@5      -
  S5      -   5      (       d   eT*R_                  T*R                  [        T*R*                  S5      -   5      SL d   eT*R_                  T*R                  [        T*R*                  [C        SS@5      -   S5      -   5      SL d   e[	        S7S	S5      m*T*R_                  T*R                  5      (       d   eT*R_                  T*R                  [        ST*R,                  [C        SS@5      -
  5      -   5      (       d   eT*R_                  T*R                  [        T*R*                  [C        SS@5      -
  S5      -   5      (       d   eT*R_                  T*R                  [        T*R*                  S5      -   5      SL d   eT*R_                  T*R                  [        T*R*                  [C        SS@5      -   S5      -   5      SL d   eUR_                  [        SS5      5      SL d   eUR_                  [        SSST5      5      SL d   eT*Ra                  S	S
5      [	        S7SS
5      :X  d   eT*Ra                  S
S5      [	        S7SS5      :X  d   eT*Rc                  [        5      T*:X  d   eT*Rc                  [        SP5      [	        [        S	S5      S	S5      :X  d   e[        [H        U*4SU j5        [        [        SS5      S5      n)U)Rc                  [        S	-  5      [        [        SS5      S5      :X  d   eU)Rc                  [        S
-  5      [        [        [        R                  [        S
5      S	-  5      S5      :X  d   eU)Rc                  [        S
-  [        SS5      5      [        [        SS5      S5      :X  d   eU)Rc                  [        S
-  [        SS5      5      [        [        [        R                  [        S
5      S	-  -   [        R                  [        S
5      S	-  -   5      S5      :X  d   eg s  snf )VNr"   TrS   r#   ty1r   r$   r&   r%   r,   r*   c                      [        S S S S5      $ Nr$   r    r:   r8   rK   #test_ellipse_geom.<locals>.<lambda>R   s    wtT4;r:   c                      [        5       $ Nr]   r^   r:   r8   rK   r_   S   s    wyr:   c                  ,    [        [        SS5      5      $ Nr   r   r   r^   r:   r8   rK   r_   T   s    &q!"5r:   c                  B    [        [        S5      [        S5      -  5      $ )Nr"   r#   )r   r	   r^   r:   r8   rK   r_   U   s    &VC[)@"Ar:   r$   r$   rF   F      g      ?c                  L   > [        [        T T5      SS5      R                  SS9$ )Nr$   r"   )	parameter)r   r   arbitrary_pointr!   s   r8   rK   r_      s#    wuQ{Aq9IITWIXr:      M   rC      !      (      r-   rG   Z   c                     [        U R                  UR                  -
  5      SU* -  :  =(       a)    [        U R                  UR                  -
  5      SU* -  :  $ )z=tests whether l1 and 12 are within 10**(-prec)
of each other 
   )absp1p2)l1l2precs      r8   lines_close&test_ellipse_geom.<locals>.lines_close   sG     255255=!B$K/TC4Fte4TTr:   c                 D   >^ [        UU4S j[        X5       5       5      $ )Nc              3   :   >#    U  H  u  pT" XT5      v   M     g 7fra   r^   ).0rx   ry   r{   rz   s      r8   	<genexpr>=test_ellipse_geom.<locals>.line_list_close.<locals>.<genexpr>   s     I=;rt,,=s   )allzip)ll1ll2rz   r{   s     `r8   line_list_close*test_ellipse_geom.<locals>.line_list_close   s    I3s=IIIr:   r   r$   irI   i   S         r(   rB   i   iV@      )   ir   r   iG   irD   c                  0   > T R                  TS-   S45      $ r\   )normal_lines)r@   r"   s   r8   rK   r_      s    Aqz(Br:   rt   g?g      @evaluateg+?)rF   r   r$   r   c                  0   > [        T [        SS5      5      $ )N)r   r   r   )r   r   r$   )r   r   r6   s   r8   rK   r_     s    l2tIy/IJr:   c                  .   > [        T [        S5      5      $ )Nrk   )r   r   r   s   r8   rK   r_     s    l2x|<r:   c                  2   > [         R                  " T S5      $ r\   )r   r   r   s   r8   rK   r_   	  s    g222q9r:   r/   5   i  D   r.   r$   r&      r)   g333333?g?c                  4   > T R                  [        S-  5      $ )Nr%   )rotater   )r@   s   r8   rK   r_   P  s    Ar:   )2r	   r   Halfr   r   r   r   r   r   r   r   rU   r   centerarear   ru   circumferenceplot_intervalminormajorhradiusvradiusr   hash__cmp__enclosesr   r   r   rj   focitangent_linesr   
is_tangentr   NotImplementedErrorfocus_distanceeccentricity	periapsisapoapsissemilatus_rectumr   r   	TypeErrorlensubsencloses_pointscaler   )/rY   rZ   halfrv   rw   p4r5   r7   c1c2c3rx   cenradf1f2efvp1_1p1_2p1_3r   pr   r   e4eccry   l3l4	pts_c1_l3csmallcbigcoutt1pointscircelipr<   r>   anscirr@   r6   r{   r"   r#   s/                                             @@@@@r8   test_ellipse_geomr   :   s   sAsAsA	4	 B66D	q!B	q!B	q!B	Q	B	1	B		B	AB	AB	d1gtAw'	+B	bB QtVQ4%1+uQ{E!QK8F3<LLLL%1+uQ{E!QK8IgaQRmU\]^`aUb<cccc
:;<
:()
=56
=AB 4A%%q!4448O88O88O88O88O88O8B;;R<<77b==77bd??77beCGm###77bggr/////qtBw&&&!1!1!3CB3|CCCCCA""2"21"5E!bS"EEEEE88q==88q==::??::??61a E!QK///61a GE!QKq!$EEEE61a GE!QKq!$EEEE 8tF5A;aU1b\JKKKK8O8LB5(((::b>Q::eAqk"Q&&& ;;wuT40%S/BCtKKK;;tB|$---;;s2{#u,,,;;r?e###;;dD!5s#3U3_EGJNO O O;;~b#q12d:::;;~b!Q/0E999;;~b!Q/0E9992%%%
:XY 48QRy!!4	q!a	#B77x"**** 	Q!AA;DdADaDB2#3#3B#7777D!d5!Q+CU8TUWX>[\[a[aEb&c%ddddD!d5A;hq!na8P&Q%RRRRD!d4q$q'1B&C%DDDDB2%%%==dBtQ$789999==dBtQ$789999==dE!T!W$567777==eAqk5A;78EAAA==$$$==q!a34<<<==aU1b\5A;79<AB B B==aU1a[%1+68;@A A A%1+q!,,VE!QK-CDMMM5A;1%33E!QK@	eAqk5"b!18C3DE	F	%1+uXb!_hr1o>?	AA A A 5A;1%33E!QK@	eAqk5A;	'eAqk5A;)GHI I I%1+q!//a<	eAqk5A;	'eAqk5A;)GHI I I%1+q!//a!DG)mQ0GH	eA$q'	M1%uQa[!d1g+'F	G	%Ad1gIq
!5T!Wa$q'k#BC	GG G G %1+q!//a<	eAqk5"b!18Ar?C	D	%1+uQ{#	%% % % %1+q!//a<	eAqk5A;	'U1a[%B"b1ABC	EE E EUJ 	aQ"A>>%1+&	eAqk5A;	'eAqk5A;)GHI I I>>%1+&	eAqk5A;	'() ) )>>&!	eAqk5A;	'() ) )1>>%1+q9U8C$hr1o6hsB>OQYZ\^`Qa8bcU8B#Xb!_5uXb"=MxXZ\]7_`<bcdf f f f 	d1gqvvA6M61>>!Q/U8D#&R(895$PSATV^_`bdVe;fgU8B#Xb!_5uXb"=MxX[]_O`7ab2defh h h h 	1T!W9Q;'A1>>&!4U8C$hsB&78%b@QS[\]_aSb:cdU1b\5B<(7*+,. . . . 	1A>>1q5!*%$uQ{E!QK*H)IIII
 BCEE	UE	"BUAXq%8 9999


e
#C??c!!!<<5!c'?***;;%S/)))%SAX"6666	UE	"BUAXq%8 9999


e
#C??c!!!<<5!c'?***;;%S/))) 
eArlE!QK	(B	eBmU1b\	*B	eBmU1a[	)B	eCmU1b\	*BtAwqy$q'!),eT!WHQJa
.KLIB2%%%E!QK(U1a[M999E!QK=000BE!RL>111BI	!il/K#LLLLE!QKq!#====E$q'!)T!WQY$?#@@@@??25A;-///??2"$$$??6%1+q12uQ{mCCC??6%1+q12b888??75A;1565A;-GGG??75A;156"<<<??5A;'2---??2"$$$aQ2GE!QKA4NOTYZ[]^T_S````uQ{A.uQ{A0FGERSUVK=XXXuQ{A.uQ{A0FG2MMMaQ3WU1a[!S5Q 
CU+,- - -aQ3WU1a[%QT5UVZ\\\\&!&&!..&&)+hr1oq!5#3/55 5 5 9JK
9<=
99:B]F"a=D%1+q!Dt$***t$***v&&000QA	%1+uQ|U1a[	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eAqk*b0005A;1%DeAqk*	eAqk5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"o-!34eAbD1HaQSUWHXFX[\]^[^F^6_
`C)+)<=)<AAFFAq!A;)<=DDD ==))"uR|*;<Q?@@@@1A??5Q<(	eBlE!QK	(U2q\5"a(2q/BC	EE E E
 	1AAHH%%%%AHHuQ		HQO0K'LLMMMMAHHuQYY!R-H!'LLMMMMAHHuQYY'::;uDDD	5Xa_4a88:=BC C C1AAHH%%%%AHHuQ		HQO0K'LLMMMMAHHuQYY!R-H!'LLMMMMAHHuQYY'::;uDDD	5Xa_4a88:=BC C CU1a[)U222U3_-555771a=GFAq1111771a=GFAq111188B<188B75A;1#====
 67 q!a
 C::bdveAqk15555::bdveAFFDGAI&>BBBB::bdE!QK(F5A;,BBBB::bdE!QK(F5$q'!)9KQVVVZ[\V]^_V_M_3`bc,ddddQ >s   d4Az.c                  P   [        SSS S9n U R                  [        S5      S-  :X  d   e[        SS [        S5      S-  S9nUR                  S:X  d   e[        S S[        S5      S-  S9nUR                  S:X  d   e[        [        SS5      SSS9nUR                  S:X  d   e[        [        S 5        [        [        S 5        [        [        S	 5        [        S SS S5      R                  S:X  d   e[        [        S
 5        [        [        S 5        [        [        S 5        g )Nr&   r$   )r   r   r   r%   r   r   r   c                  D    [        [        SS5      S[        S5      S-  S9$ Nr%   r$   r&   r   )r   r   r   r^   r:   r8   rK   #test_construction.<locals>.<lambda>k  s     '%1+qQRSTQUVWQW"Xr:   c                  >    [        [        SS5      S[        S5      S9$ )Nr%   r$   r,   r   )r   r   r   r^   r:   r8   rK   r   l  s    '%1+qsSTv"Vr:   c                  `    [        [        SS5      S[        R                  [        S5      -
  S9$ r   )r   r   r   Pir^   r:   r8   rK   r   m  s"    '%1+qqttTUVWTXy"Yr:   c                      [        S S SSS9$ )Nr$   )r   r]   r^   r:   r8   rK   r   s  s    '$a"Jr:   c                  ,    [        [        SS5      SSS9$ )Nr%   r$   rA   r   r   r   r^   r:   r8   rK   r   v  s    '%1+qQS"Tr:   c                  ,    [        [        SS5      SSS9$ )Nr%   r$   rg   r   r   r^   r:   r8   rK   r   w  s    '%1+qQU"Vr:   )	r   r   r   r   r   r   r   r   length)r5   r6   r7   r   s       r8   test_constructionr   [  s   	AD	9B??d1gai'''	DtAwqy	AB::??	qtAwqy	AB::?? 
q!aa	8B::?? =XY
=VW
=YZ 4D!$++q000
=JK =TU
=VWr:   c                     [        SSS9n [        [        SS5      X 5      n[        S5      [        S5      p2[        SS5       H^  nUR	                  5       nUR                  X#5      R                  [        X#4UR                  5      5      R                  S5      (       a  M^   e   UR	                  SS	9nUR                  X#5      R                  [        X#4UR                  5      5      R                  S5      (       d   eg )
NrZ   TrS   r   rxryr,   r$   )seed)
r	   r   r   rangerandom_pointr4   r   r   argsequals)rZ   r7   r   r   indrs         r8   test_ellipse_random_pointr   y  s    	4	 B	q!b	%BD\6$<Q{OO{{2"''RHaff(=>EEaHHHH 
 	QA;;r##C!&&$9:AA!DDDDr:   c                  :    [        [        SS5      5      S:X  d   eg )Nr   r&   zCircle(Point2D(0, 1), 2))reprr   r^   r:   r8   	test_reprr     s    vq!"&@@@@r:   c                     [        SS5      n U R                  S5      [        SS5      :X  d   eU R                  SS9[        SS5      :X  d   eU R                  S5      [        SSS5      :X  d   e[        S	SS
5      R                  SS
S5      [        [        SS5      SS5      :X  d   e[        S	S5      R                  SS
S5      [        [        SS5      SS5      :X  d   e[        S	SS
5      R                  S
S
S5      [        [        SS5      SS5      :X  d   e[        S	S5      R                  S
S
S5      [        [        SS5      S5      :X  d   e[        [        SS5      S5      R                  [	        SS
5      [	        SS
5      S5      [        S	S5      :X  d   e[        S	S5      R                  SS5      [        SS5      :X  d   e[        S	S5      R                  S
S
5      [        S	S5      :X  d   eg )Nrf   r&   rF   )rF   r$   )r#   )r$   rF   )r&   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b#1%& & &&!""1a0b#1%& & &61a &&q!V4b#1%& & &&!""1a0uR~q!" " "%C.!$**8Aq>8Aq>6Rvq  &!&&q!,vq  &!""1a(vq  r:   c                  r   [        [        SS5      SS5      n [        [        SS5      SS5      n[        [        SS5      S5      n[        [        SS5      [        SS5      [        SS5      5      nU R                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S	:X  d   eg )
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!eAqk5A;	7B99&&&99&&&99&&&99&&&r:   c                  X  ^^ [        S5      n [        S5      m[        SU 4TS9n[        SSS5      nUR                  UR	                  U5      R                  * :X  d   e[        SSS	5      mTR                  TR	                  [        SSS95      R                  * :X  d   eTR                  TR	                  [        S[        S95      R                  * :X  d   e[        [        UU4S
 j5        [        SS5      R	                  [        SS5      5      [        [        SS5      S5      :X  d   eg )Nr=   mr   sloper   r   )r&   r%   r$   r&   c                  6   > T R                  [        STS95      $ )Nr   r  )reflectr   )r@   r  s   r8   rK   test_reflect.<locals>.<lambda>  s    		$vQ2G(Hr:   r   rf   rF   )r	   r   r   r   r  r   r   r   r   r   r   )r=   lr   r@   r  s      @@r8   test_reflectr
    s    sAsAaV1A	&&&	)B77rzz!}))))))1A66aiiV1 56;;;;;;66aiiV2 67<<<<<<
 HI&!$$T&&%9:fWQPQ]TV>WWWWr:   c                    ^ [        [        SS5      SS5      m[        [        SS5      S5      n TR                  [        SS5      5      SL d   eTR                  [        SS5      5      SL d   eTR                  T5      SL d   eTR                  [        S	S
S5      5      SL d   eTR                  [        S	SS5      5      SL d   eU R                  [        SSS
5      5      SL d   eU R                  [        SS5      5      SL d   eU R                  [        SS5      5      SL d   eU R                  [	        SS5      5      SL d   eU R                  [	        SS5      5      SL d   eU R                  [	        SS5      5      SL d   eU R                  [	        SS5      5      SL d   eU R                  [	        SS5      5      SL d   eU R                  [        SS5      5      SL d   eTR                  [        SS5      5      SL d   eTR                  [        S	S5      5      SL d   eU R                  [        S	S5      5      SL d   eTR                  [        SS5      5      SL d   eTR                  [        SS5      5      SL d   eTR                  [        SS5      5      SL d   eTR                  [        SS5      5      SL d   eTR                  [        SS 5      5      SL d   eTR                  [        S	S!5      5      SL d   eTR                  [        SS"5      5      SL d   eTR                  [        SS#5      5      SL d   eTR                  [        S	S$S%5      5      SL d   eTR                  [        S&S'S(5      5      SL d   eTR                  [        SSS)5      5      SL d   eTR                  [        SSS*5      5      SL d   eTR                  [        SS+SS*5      5      SL d   eTR                  [        S,SSS-5      5      SL d   eU R                  [        S,SSS-5      5      SL d   eTR                  [        S	SS.S*5      5      SL d   eTR                  [        S/S0S15      5      SL d   eTR                  [        S/S0S+S*5      5      SL d   eTR                  [        SS2S35      5      SL d   eU R                  [        S	S5      5      SL d   eTR                  [        SS5      5      SL d   eTR                  [        SS5      5      SL d   eTR                  [        S	S$S%5      5      SL d   eTR                  [        S&S'S(5      5      SL d   eTR                  [        S,SSS-5      5      SL d   eU R                  [        S,SSS-5      5      SL d   eTR                  [        S/S0S+S*5      5      SL d   eTR                  [        SS2S35      5      SL d   e[        [        U4S4 j5        [        [        U4S5 j5        g )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   )rk   rk   )rA   r   )rA   r,   )r%   r,   )rt   r   )rt   rt   rf   )gQgMbP)rA   r$   )r,   r,   )r,   r   )ii)ii)iir   )r   r,   )r   r   )rA   r   )r%   r   )rG   rG   )r%   rk   )r%   r   )r-   r,   )r,   rG   )r-   r   c                  <   > T R                  [        SSS5      5      $ rc   )r   r   r5   s   r8   rK   !test_is_tangent.<locals>.<lambda>  s    bmmE!QN;r:   c                  8   > T R                  [        S5      5      $ )Nr,   )r   r   r  s   r8   rK   r    s    bmmHQK8r:   )
r   r   r   r   r   r   r   r   r   r   )r   r5   s    @r8   test_is_tangentr    s   	q!a	#B	aa	 B==q!%...==q!%...==$$$==A./5888==A./4777==!Q/0D888==!,-555==+,444==Xz23u<<<==Xz23u<<<==Y12e;;;==Wh/0D888==VV,-555==01T999==12e;;;==01U:::==23u<<<==23u<<<==623u<<<==&12e;;;==&12d:::==gx01U:::==ff-.%777==g78EAAA==gw/0D888==9:eCCC==k:FG5PPP==&&9:eCCC==&&9:eCCC=='66BCuLLL==7FGDEMMM==7FGDENNN==@AUJJJ==(F;<EEE==(GVDENNN==9:eCCC==23u<<<==&12e;;;==&12d:::==9:eCCC==k:FG5PPP==7FGDEMMM==7FGDENNN==(GVDENNN==9:eCCC
9;<
989r:   c                     ^ ^ [        S5      m[        [        SS5      SS5      m T R                  ST5      TS0:X  d   e[	        [
        U U4S j5        g )NrY   r   r%   r,   r  c                  (   > T R                  ST5      $ )N)r*   r   )parameter_valuer@   rY   s   r8   rK   &test_parameter_value.<locals>.<lambda>  s    q00;r:   )r	   r   r   r  r   rU   r  s   @@r8   test_parameter_valuer    sJ    sAaQ"AVQ'Aq6111
:;<r:   c                  h   [        S5      u  p[        [        SS5      SS5      nS[        [	        SU S-  -
  5      U S-  -  U SS45      -  S-  nS	[        [	        S
US-  -
  5      US-  -  USS45      -  S-  nS[	        SU S-  S-  -
  5      -  n[        [        XU* U45      U -  U SS45      nX2R                  5       S   :X  d   eXBR                  5       S   :X  d   eXbR                  5       S   :X  d   eUR                  [        SS5      5      nS[        -  S[        -  S[        -  4nXx:X  d   eg )Nzx, yr   r,   r*   r(   rC   r&   r   rt      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!    sG   6?DAaQ"Ayb1a4iA-2qz::1<Dyb1a4iA-2qz::1<D	$q1a49}
AYqqb!*-a/!R<D**,Q////**,Q////**,Q////	
	 	 q	,B
b&#b&#b&	!B6M6r:   c                  r   [        SSS9n [        SS5      nUR                  5       S[        -  :X  d   eUR	                  5       S[        -  S[        -  4:X  d   e[        SU S	-  5      nUR                  5       [        U S
-  -  [        U 5      -  S-  [        U -  [        U 5      S
-  -  S-  -   :X  d   eUR	                  5       [        U S
-  -  [        S5      -  [        U S
-  -  [        S5      -  4:X  d   e[        SSS9u  p#[        SX#5      nUR	                  5       [        U-  US	-  -  [        S5      -  [        US	-  -  U-  [        S5      -  4:X  d   eUR                  5       [        US
-  -  U-  [        S5      -  [        U-  US
-  -  [        S5      -  -   :X  d   eUR                  [        S	-  5      nUR	                  5       [        US	-  -  U-  [        S5      -  [        U-  US	-  -  [        S5      -  4:X  d   eUR                  5       [        US
-  -  U-  [        S5      -  [        U-  US
-  -  [        S5      -  -   :X  d   e[        X#4S	S5      nUR	                  5       S[        -  S[        -  4:X  d   eUR                  5       S[        -  :X  d   e[        [        SS5      S	S	5      nUR	                  5       S	[        -  S	[        -  4:X  d   eUR	                  [        S	S	5      5      S	[        -  S	[        -  4:X  d   eUR	                  S5      S	[        -  S	[        -  4:X  d   eg )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3r63r6"2222vqsA((*bAgc!fnR.?"Q$s1vqy.QSBS.SSSS2ad71R5="QT'!B%-"@@@@6D)DAA2a419QqT>2ad719QqT>"BBBB((*bAgai!nr!tAqDy1~.MMMM	AA2ad719QqT>2a419QqT>"BBBB((*bAgai!nr!tAqDy1~.MMMM1A2b5!B$-///((*c"f444aQ"A1R42,...U1a[)adAbD\999V$2qt444r:   c                     [        S5      n [        S5      n[        [        SS5      X5      R                  SU -  [	        U S-  US-  -
  U S-  -  5      -  :X  d   e[        [        SS5      SS5      R                  S[	        [        S5      S	-  5      -  :X  d   e[        S S
S S5      R                  S[        -  :X  d   e[        [        S SSS9R                  R                  S5      S-
  5      S:  d   eg )NMr  r   r*   r&   r,   r/   rE   rC   r$   r%   )r   r   r  gRe9@g|=)	r	   r   r   r   r   r   r   ru   evalf)r*  r  s     r8   test_circumferencer,    s    sAsA5A;%33q1uz1PQ6TUYZTZ?^_ab^bJb?c7cccc5A;1%33rJqtby<Q7QQQQ 4D!$22ad::: wtQ2@@FFrJM^^_bggggr:   c                  <    [        SS5      [        SS5      :X  d   eg )Nr   r   r$   r&   rd   r^   r:   r8   test_issue_15259r.  -  s    &!a+++r:   c                  L   Sn Sn[        SS5      n[        X5      nUR                  UR                  U5      S   5      S:X  d   eUR                  R
                  R                  (       d   eUR                  R                  R                  (       d   eUR                  R                  (       d   e[        XSS9nUR                  R
                  R                  (       d   eUR                  R                  R                  (       d   eUR                  R                  (       d   eg )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_equalsr7  1  s    	B	1Ba#$ArA<<*1-.$66688::!!!!88::!!!!88r&A88::88::88r:   c                      [        S5      u  pp#[        X4X#5      nUR                  5       [        X4[	        X#5      5      :X  d   e[        SS5      R                  5       [        SS5      :X  d   eg )Nx y a br%   r*   r(   )r
   r   auxiliary_circler   r   r"   r#   r<   r=   r@   s        r8   test_auxiliary_circler=  @  sg    #JA!A61&#a)#<<<<&!--/6&!3DDDDr:   c            	         [        S5      u  pp#[        X4X#5      nUR                  5       [        X4[	        US-  US-  -   5      5      :X  d   e[        SS5      R                  5       [        SS[	        S5      -  5      :X  d   eg )Nr9  r&   r:  r(   )r
   r   director_circler   r   r<  s        r8   test_director_circler@  I  s|    #JA!A&!adQTk1B"CCCC&!,,.&472KKKKr:   c                     [        SSS9u  pp#[        S5      u  pE[        [        X#5      XE5      nUR                  XR                  R
                  -
  -  [        SS5      -  nUR                  XR                  R                  -
  -  [        SS5      -  nXx-   UR                  S-  UR                  S-  -
  [        SS5      -  -
  n	UR                  5       U	:X  d   e[        [        SS5      SS5      nSU S-
  -  [        SS5      -  nSUS-
  -  [        SS5      -  nXx-   S	[        SS5      -  -
  n	UR                  5       U	:X  d   eg )
Nzx y h kTrS   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_evoluterG  R  s"   $/JA!5>DAaQ"A
))Q^
$x1~	5B
))Q^
$x1~	5B
199a<!))Q,.!Q??A99;!aQ"A
QU)hq!n	$B
QU)hq!n	$B
2A&&A99;!r:   c                  b    [        [        SS5      SS5      n U R                  SS5      S:X  d   eg )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_svgrJ  c  s<    	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   rW   r   r   r   r   r   r  r
  r  r  r!  r(  r,  r.  r7  r=  r@  rG  rJ  r^   r:   r8   <module>rY     s     1 1 $ " / 4 9 8 ) (4 4 4 4 . / A 8
_12 ]e ]e@	X<
EA,'
X1:h=   56h,EL"{r:   