
    \hE                        S SK Jr  S SKJr  S SKJrJr  S SKJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJrJr  S SKJrJrJr  S S	K J!r!  S
 r"S r#\!S 5       r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0g)    )Abs)sqrt)SRational)	decomposebest_origindistance_to_sidepolytope_integrate
point_sorthyperplane_parametersmain_integrate3dmain_integratepolygon_integratelineseg_integrateintegration_reductionintegration_reduction_dynamic	is_vertex)	Segment2D)Polygon)PointPoint2D)xyz)slowc                     [        [        5      S[        0:X  d   e[        [        S-  5      S[        S-  0:X  d   e[        [        [        -  5      S[        [        -  0:X  d   e[        [        [        -   5      S[        [        -   0:X  d   e[        [        S-  [        -   5      [        [        S-  S.:X  d   e[        S[        S-  -  S[        -  -   S-   5      SS[        -  S[        S-  -  S.:X  d   e[        [        S-  S[        -  [        -  -   5      S[        S-  S[        -  [        -  -   0:X  d   e[        S	[        S-  -  [        -   S[        -  -   [        S-  -   [        S-  [        -  -   S-   5      SS[        -  [        -   S	[        S-  -  [        S-  [        [        S-  -  -   S
.:X  d   e[        [        S5      [        1:X  d   e[        [        S-  S5      [        S-  1:X  d   e[        [        [        -  S5      [        [        -  1:X  d   e[        [        [        -   S5      [        [        1:X  d   e[        [        S-  [        -   S5      [        [        S-  1:X  d   e[        S[        S-  -  S[        -  -   S-   S5      SS[        -  S[        S-  -  1:X  d   e[        [        S-  S[        -  [        -  -   S5      [        S-  S[        -  [        -  1:X  d   e[        S	[        S-  -  [        -   S[        -  -   [        S-  -   [        S-  [        -  -   S-   S5      S[        S[        -  S	[        S-  -  [        [        S-  -  [        S-  1:X  d   eg )N      r   r            r   r   r      	   )r   r   r   r$   T)r   r   r        Z/var/www/auris/envauris/lib/python3.13/site-packages/sympy/integrals/tests/test_intpoly.pytest_decomposer)      s   Q<Aq6!!!QT?q!Q$i'''QqS>a1X%%%QU1q5z)))QTAXaAqD/111Qq!tVac\A%&aAaCAadF*CCCCQTAaCE\"q!Q$1Q,&7777Qq!tVaZ!A#%1,q!tAv59:!A#'a1fA!Q$78 8 8 Q!$$$Q!VT"q!tf,,,QUD!a!eW,,,QUD!aV+++Q!VaZ&1a1f+555QaZ!a%'!+T2q!A#qAv6FFFFQ!Va!eai'.161q5192EEEEQaZ!^a!e+a1f4qAvzAAEtLq!A#qAvqAvq!t,- - -r'   c            	      6   [         S-  [        S-  -  [         S-  [        S-  -  -   S[        -  -   [        S-  -   [         S-  [        -  -   n [        [        SS5      [        SS5      5      n[        [        [	        S5      S-  S5      [        [	        S5      S-  S5      5      n[        [        S[	        S5      S-  5      [        S[	        S5      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SX5      S	:X  d   e[        S
SU[        S-  5      S:X  d   e[        SSU[        S-  5      S:X  d   e[        SSU[        S-  [         S-  -  5      S:X  d   e[        SSU[        S-  [         S-  -  5      S
:X  d   e[        SSU[        S-  [         S-  -  5      S:X  d   e[        SSU[        S-  [         S-  -  5      S
:X  d   eg )Nr      r"      r   r$   r   )r   r   r   r$   )r   r   )      ?r   )r   r   )r   r.   r   r   r%   )r   r   r   r   r   r   )expr1l1l2l3l4l5l6s          r(   test_best_originr7   +   s   FQ!VOa1fqAvo-A5R?!q&1*LE	5A;a	,B	511%uQqTAXq'9	:B	5AaD1H%uQ!q'9	:B	5A;a	,B	5A;a	,B	5A;a	,Bvq",666 vq"a1f-999vq"a1f-999vq"a1fqAvo6&@@@vq"a1fqAvo6&@@@vq"a1fqAvo6&@@@vq"a1fqAvo6&@@@r'   c                  '   [        [        [        SS5      [        SS5      [        SS5      5      S5      S:X  d   e[        [        [        SS5      [        SS5      [        SS5      [        SS5      5      [        [        -  5      [        SS5      :X  d   e[        [        [        SS5      [        SS5      [        SS5      5      S[        S-  -  S[        -  -
  5      [        S	S5      :X  d   e[        [        [        SS5      [        S[        S5      5      [        [        S5      [        S5      5      [        [        S5      S5      5      S5      S:X  d   e[        [        SS5      [        [        S5      * S-  [        R                  5      [        [        S5      * S-  [        S5      S-  5      [        SS5      [        [        S5      S-  [        S5      S-  5      [        [        S5      S-  [        R                  5      5      n [        U S5      [        S[        S5      -  5      S-  :X  d   e[        / S
QS5      S:X  d   e[        / SQ[        [        -  5      [        SS5      :X  d   e[        / SQS[        S-  -  S[        -  -
  5      [        S	S5      :X  d   e[        SS[        S5      4S4[        S5      S4S4S/S5      S:X  d   e[        SS5      [        S5      * S-  4S4S[        S5      S-  4[        SS5      [        S5      S-  4[        S5      4[        R                  [        S5      S-  4[        S5      4S[        S5      S-  4[        R                  [        S5      * S-  4S4/n [        U S5      [        S[        S5      -  5      S-  :X  d   e[        [        [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      5      S5      S:X  d   e[        [        [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      5      S5      S:X  d   e[        / SQS5      S:X  d   e[        / SQS5      S:X  d   e[        [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS 5      5      n[        U[        S-  [        [        -  -   [        S-  -   5      [        S!5      S"-  :X  d   e[        [        S#S$5      [        S%S&5      [        S'S(5      [        S)S*5      [        S+S,5      5      n[        U[        S-  [        [        -  -   [        S-  -   5      [        S-5      S.-  :X  d   e[        [        S/S05      [        S1S25      [        S3S45      [        S5S65      5      n[        U[        S-  [        [        -  -   [        S-  -   5      [        S75      S"-  :X  d   e[        [        S8S95      [        S:S;5      [        S<S=5      [        S>S?5      [        S@SA5      5      n[        U[        S-  [        [        -  -   [        S-  -   5      [        SB5      SC-  :X  d   e[        [        SS5      [        SS5      [        SS5      5      n/ n[        SD-  [        -  [        SE-  [        S-  -  -   S[        S-  -  [        SF-  -  -   n[        S-  [        S-  -  [        S-  [        S-  -  -   S[        SG-  -  -   n[        SG-  [        SD-  [        -  -   [        SF-  [        S-  -  -   [        S-  [        S-  -  -   n	UR                  XxU	45        [        XVSGSH9n
X   [        SISJ5      :X  d   eX   [        SKSL5      :X  d   eX   [        SMSN5      :X  d   e[        [        SS5      [        SS5      [        SS5      5      n[        SE-  [        S-  -  S[        S-  -  [        S-  -  -   n[        S-  [        S-  -  [        S-  [        S-  -  -   S[        SG-  -  -   n[        SG-  [        SD-  [        -  -   [        SF-  [        S-  -  -   [        S-  [        S-  -  -   n	UR                  XxU	45        [        XVSDSH9[        SE-  [        -  S[        S-  -  [        S-  -  -   [        SOSD5      0:X  d   e[        [        [        SS5      [        SS5      [        SS5      [        SS5      5      SSH90 SS_SS_[        [        R                  _[        S-  [        S-  -  [        R                  SD-  _[        S-  [        R                  S-  _[        S-  [        R                  S-  _[        [        R                  _[        [        S-  -  [        R                  S-  _[        S-  [        R                  S-  _[        S-  [        R                  S-  _[        S-  [        -  [        R                  S-  _[        S-  [        -  [        R                  SF-  _[        [        -  [        R                  S-  _[        S-  [        R                  S-  _[        S-  [        R                  S-  _[        [        S-  -  [        R                  SF-  _:X  d   e/ SPQ/ SQQ/ SRQ/ SSQ/ STQ/ SUQ/ SVQ/n[        US5      [        SW5      :X  d   e/ SXQ/ SYQ/ SZQ/ S[Q/ S\Q/ S]Q/ S^Q/n/ S_Q/ S`Q/ SaQ/ SbQ/ ScQ/ SdQ/ SeQ/ SfQ/ SgQ/	nShSiSjSk[        R                  S-  [        R                  S-  [        R                  S-  4// SlQ/ SmQ/ SnQ/ SoQ/ SpQ/ SqQ/ SrQ/n[        U[        S-  [        S-  -   [        [        -  -   [        S-  -   5      [        SsS5      :X  d   e[        U[        S-  [        S-  -   [        [        -  -   [        S-  -   5      [        St5      Su-  :X  d   e[        U[        S-  [        S-  -   [        [        -  -   [        S-  -   5      [        Sv5      Sw-  :X  d   e[        R                  [        S5      -  SS4S[        R                  [        S5      -  S4SS[        R                  [        S5      -  4SS[        R                  [        S5      -  4S[        R                  [        S5      -  S4[        R                  [        S5      -  SS4// SxQ/ SyQ/ SzQ/ S{Q/ S|Q/ S}Q/ S~Q/ SQ/	n[        US5      [        S5      S-  :X  d   e/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        [        US5      S-
  5      S:  d   e[        S-  [        S-  -   [        S-  -   n/ / SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQPn[        [        UU5      5      S-
  S:  d   e/ / SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQPn[        [        UU5      S-
  5      S:  d   e/ / SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ GS QP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GS	QP/ GS
QP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GS QP/ GS!QP/ GS"QP/ GS#QP/ GS$QP/ GS%QP/ GS&QP/ GS'QP/ GS(QP/ GS)QP/ GS*QP/ GS+QP/ GS,QP/ GS-QP/ GS.QP/ GS/QP/ GS0QP/ GS1QP/ GS2QP/ GS3QP/ GS4QP/ GS5QP/ GS6QP/ GS7QP/ GS8QP/ GS9QP/ GS:QP/ GS;QP/ GS<QP/ GS=QP/ GS>QP/ GS?QP/ GS@QP/ GSAQP/ GSBQP/ GSCQP/ GSDQP/ GSEQP/ GSFQP/ GSGQP/ GSHQP/ GSIQP/ GSJQP/ GSKQP/ GSLQP/ GSMQP/ GSNQP/ GSOQP/ GSPQP/ GSQQP/ GSRQP/ GSSQP/ GSTQP/ GSUQP/ GSVQP/ GSWQP/ GSXQP/ GSYQP/ GSZQP/ GS[QP/ GS\QP/ GS]QP/ GS^QP/ GS_QP/ GS`QP/ GSaQP/ GSbQP/ GScQP/ GSdQP/ GSeQP/ GSfQP/ GSgQP/ GShQP/ GSiQP/ GSjQP/ GSkQP/ GSlQP/ GSmQP/ GSnQP/ GSoQP/ GSpQP/ GSqQP/ GSrQP/ GSsQP/ GStQP/ GSuQP/ GSvQP/ GSwQP/ GSxQP/ GSyQP/ GSzQP/ GS{QP/ GS|QP/ GS}QP/ GS~QP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQP/ GSQPn[        [        US5      GS-
  5      S:  d   e[        [        UU5      GS-
  5      S:  d   e[        U[        S-  [        [        -  /SSH9[        [        -  GS[        S5      -  [        S-  GS[        S5      -  0:X  d   e[        USSH9SGS[        GS[        S5      -  [        [        -  GS[        S5      -  [        GS[        S5      -  [        [        -  GS[        S5      -  [        S-  GS[        S5      -  [        S-  GS[        S5      -  [        GS[        S5      -  [        [        -  GS[        S5      -  [        S-  GS[        S5      -  0
:X  d   eg (  Nr   r   r!   r   r$   r+      (   iY)r   r   )r   r!   r   r=   r   )r;   r   r   r   r   r   r   r>   ))rA   r$   ))r   r=   ))rD   r=   r;   r>   r=   r<   rC   )r<   r   r@   )r   r=   r   r/   r   )r?   r   )rF   rH   ))r=   r   r   rB   ))r=   r=   r   rG   gQ?gX9vgףp=
gPngT㥛 gʡEg(\gKgHzG	g1Zdg}?5^@gL7A`?gS@l   le4_9 l     QJgX9v>@gK7@gB`"?g
ףp=
g{Gz
gZd;O	zGagzGg-FgZd;?l   ;U(h*Y l     gQgh|?5gtV
g;O@gbX9gMg~jtgh|?5	l   Euj g5^I?grh|gFxg+@gʡE?gjt@gQ@g333333gMڿgNbX9l   K[+r l    J)r%   r"   r    
   
max_degreei$iR  iP    iti  i.w )r   r   r   )r   r9   r9   )r9   r9   r9   )r$   r9   r   )r   r9   r   )r9   r   r9   )r$   r   r   )r   r   r9   )r   r   r$   r!   )r$   r   r+   r9   )r   r"   r+   r   )r   r9   r+   r"   )r   r!   r   r"   )r   r!   r$   r9      rN   r   r   r+   r   r+   r   r   r+   r+   r+   r   r   r+   r   r+   r+   r+   r   r+   r+   r+   )r$   r"   r9   r   )r   r+   r"   r$   )r+   r!   r9   r"   )r   r!   r+   r   )r   r   r   r$   )r   r9   r!   r   )rN   rT   )r+   r!   r   )r$   r   r   )r$   r+   r   rR   rQ   rU   )r+   r!   r+   )r$   r   r+   )r$   r+   r+   rS   )r9      r+   r   )r   r"   r9   r   )r+   r!   r$   r   r   r   )rX   rJ   r!   r+   )rJ   r%   r$   r!   )r%   r    r   r$   )r    r"   r   r   )r"   r    r%   rJ   rX   r9   rN   r   r   r   r   r   r   r   r   r   )r   r   r   )r   r$   r   )r!   r   r$   )r!   r$   r   r#   )r   r!   r   )r   r$   r   i	=  i+  r,   %   i  )r$   r!   r+   )r$   r+   r   )r$   r   r   )r$   r   r!   )r!   r   r   )r!   r   r+   )r   r   r   )r+   r   r   ))gaI{Կr   F8?)gaI{?r   F8ۿ)Sr   ׈?0?)S?r   ׈?0)rb   P/7ӿr]   )rb   P/7?r]   )r`   rc   r^   )r`   rd   r^   )aI{Ŀ      r`   )re         ?r`   )aI{?rf   rb   )rh   rg   rb   )r^   rc   rb   )r^   rd   rb   )Sпa-!r?r^   )ri   a-!rȿr^   )S?rj   r]   )rl   rk   r]   )r]   rc   r`   )r]   rd   r`   )r,   r$   r   r9      )   r"   r   r$      )r%   r9   r   r"   r    )   r   r   r!      )   r+   r   r      )rX   r!   r   r+   rJ   )r    rs   r   rp   r%   )rJ   ro   r$   r,   rX   )rm   rq   r!   rX   r,   )ro   rJ   r+   rr   rn   )rq   rm   r9   r%   rp   )rs   r    r"   rn   rr   gZ?g-q=))r   g;fr   )r   g;f?r   )ب/h?;fֿHH~?)rt   ;f?rv   )%D?SN%D?)rx   SN?rz   )HH~??z5˿HH~??)r|   z5?r~   )[ $?ru   %D׿)r   rw   r   )rv   r   r   )HH~?ӿr}   rv   )r   r   rv   )r~   r   rz   )~E?ry   r   )r   r{   r   )rz   r   rv   )~Eڿry   r   )r   r{   r   )or}   r   )r   r   r   )o?r}   r   )r   r   r   )r   r   r~   )[ $߿ru   rz   )r   rw   rz   )%Dǿry   r   )r   r{   r   )ب/hru   r~   )r   rw   r~   )r   rJ   rm   )   rJ   r   )rm   ro   r   )r   ro   r   )rm   rJ   r   )r   rJ   r   )r   ro   rm   )r   ro   r   )r   r!   rs   )   r!   r   )r   rs   rM   )rM   r   r   )   r+   r$   )r$   r+      )   r   r$   )r$   r   r   )   rs   r!   )r!   r   r   )r+   r      )r   r   r+   )r9   r    rr   )rn   r    r9   )r9   rr      )r   rn   r9   )rq   r%   r"   )r"   r%   rp   )   rq   r"   )r"   rp   r   )r    r,   rr   )rn   r,   r    )rq   rX   r%   )r%   rX   rp   )rX   rq   r   )r   rp   rX   )r   rr   r,   )r,   rn   r   )r   rM   rs   )r   r   r   )r   r   r   )r   rM   r   gÜ?gư>))re   rf   ys)re   rg   r   )rh   rf   ys?)rh   rg   r   )r_   r   r   )ra   r   r   )ri   wre   )ri   w?re   )rl   r   rh   )rl   r   rh   )r^   rc   r   )r^   rd   r   )r]   rc   r   )r]   rd   r   )r   rf   rh   )r   rg   rh   )r   rf   re   )r   rg   re   )F8r   re   )F8?r   rh   )rp   rJ   r$   r"   )ro   rs   r    r   )rp   r   r    rJ   )r$   rs   ro   r"   )rp   r"   ro   r   )r    rs   r$   rJ   )r9   r   rX   rp   )r   r%   rs   r,   )rX   r%   r   rp   )r9   r,   rs   r   )r   r,   r9   rp   )rX   r   rs   r%   )r!   rq   rX   r"   )rn   r+   r    r,   )r!   r,   r    rq   )rX   r+   rn   r"   )r!   r"   rn   r,   )r    r+   rX   rq   )r9   rJ   rr   r!   )ro   r%   r+   rm   )rr   r%   ro   r!   )r9   rm   r+   rJ   )ro   rm   r9   r!   )rr   rJ   r+   r%   )rq   rr   r   r   )rm   rn   r$   r   )rq   r   r$   rr   )r   rn   rm   r   )rq   r   rm   r   )r$   rn   r   rr   g      ?)\)r   r   O)r   r   O@)r   Tͻr   )r   r   r   )r   Tͻ@r   )r   r   r   )wVnTͻr   )r   r   r   )r   Tͻ?r   )r   r   r   )wVn@r   r   )r   r   r   )r   r   r   )r   r   r   )r   ~jr   )r   r   r   )r   ~j@r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )k)#r   V)r   r   r   )k)#@r   V?)r   r   r   )1*Tͻ r   )r   Tͻ @r   )1*@r   r   )r   r   r   )gr,Er   q
)gr,E@r   q
@)r   r   r   )r   r   r   )r   r   r   )r   r   r   )A(`Rr   r   )r   r   r   )A(`R@r   r   )r   r   r   )Vr   r   )r   r   r   )r   r   r   )V@r   r   )r   r   r   )r   r   r   )r,Er   r   )r   r   r   )r,E?r   r   )r   r   r   )ysr   r   )r   r   rl   )ys?r   r   )r   r   ri   )r   r   r   )r   r   r   )r   r   ri   )r   r   r   )r   r   ri   )r   r   r   )r   r   r   )r   r   r   )r   r   rl   )r   r   r   )r   r   rl   )r   r   r   )r   r   r   )r   r   r   )r   rf   r   )r   rg   r   )r   Tͻr   )r   r   r   )r   r   r   )r   Tͻ@r   )r   rf   r   )r   rg   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r^   r   r   )r^   r   rl   )r^   r   r   )r^   r   rl   )ri   r   r   )ri   r   r   )rl   r   r   )rl   r   r   )r]   r   r   )r]   r   ri   )r]   r   r   )r]   r   ri   )r%   B   /   ),   >   M   )r   [   1   )!   r   S   )r$   r   T   )r,   r   5   )$   r   r   )r   r   r   )I   r   r   )rr   r   .   )r   @   +   )rm   :   H   )r   r   3   )rX   r   J   )r!   r   r   )<   r   r   )#   r   r   )r   r   r   )rs   r   r   )O   r   N   )r9   8   r:   )L   r   Q   )r   r   K   )r    r:   r   )   r   r   )*   r   r   ))   r   r   )ro   r   r   )rM   r   r   )r   Y   G   )r   r   r   )rn   r   U   )rq   r   r   )A   r   r   )r   r   r   )"   r   r   )r+   r   r   )    r   r   )rJ   r   0   )-   r   r   )r"   r   r   )rp   r   r   )r\   r   r   )F   r   r   )r   r   r   )X   r   r   )&   C   r   )r   r   r   )9   r   r   )r   r   r   );   r   W   )rs   r   r   )?   r   r   )rn   r   r   )4   r   r   )'   r   r   )r   r   r:   )7   r   r   )r   r   r   )   r:   E   )ro   r   r   )R   r   r   )r"   r   r   )Z   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )6   r   D   )r+   r   r   )2   r   r   )r$   r   r   )r   r   r   )r   r   r:   )r   r   r   )r   r   r   )r   r:   r   )r   r   V   )r%   r   r   )P   r   r   )rX   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rr   r   r   )=   r   r   )r   r   r   )r   r   r   )r   r   r   )r\   r   r   )r   r   r   )r   r   r   )rM   r   r   )rJ   r   r   )r    r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rq   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r\   r   r   )r   r   r   )r   r   r   )rm   r   r   )rp   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r9   r   r   )r,   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r!   r   r   )r   r   r   )r   r   r   )rp   r   r   )r   r   r:   )r+   r   r   )r   r   r   )r9   r:   r   )r   r   r   )r   r   r   )r   r   r   )rn   r   r   )r,   r   r   )r   r   r   )r%   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r"   r   r   )r!   r   r   )r   r   r   )rr   r   r   )r   r   r   )rJ   r   r   )rM   r   r   )r   r   r   )r   r   r   )r$   r   r   )r    r   r:   )r   r   r   )rs   r   r   )r   r:   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rX   r   r   )rq   r   r   )r   r   r   )ro   r   r   )r   r   r   )rm   r   r   )r   r   r   )r   r   r   )r   r   r   gfI@g1:o@i5  }   iq  )r
   r   r   r   r   r   r   r   HalfextendOner   NegativeOner   )hexagonfig1fig2fig3fig4tripolysr0   expr2expr3result_dictcube1cube2cube3cube4
octahedrongreat_stellated_dodecahedronexproctahedron_five_compoundcube_five_compoundechidnahedrons                        r(   test_polytope_integrater  @   s    geAqk5A;&+Aqk3457:;< < <geAqk5A;&+Aqk5A;@ABQH&.q!n5 5 5 geAqk5A;aL1fr!tm-08q0AB B B geAqk5DG3D&+DGT!W&=&+DGQ&79:;=@AB B B eAqk5$q'Aqvv#>T!WHqL!A$(3U1a[DGaK12E$q'A+qvv4NPG gq)Qqay\A-====  -./1456 6 6 :;<q5BEMaQR^T T T /01!Q$A?BJ4QRBST T T|q$q'lA->!%a!a0,@ABDGHI I I "a47(Q,/3a1%"a$q'A+.Q8a1%tAw/Q!$$q'A&*,G gq)Qqay\A-==== geBmU2q\&+Aqk5A;&+Arl4568;<= = = geBmU2q\&+Aqk5A;&+ArlE!QKABCEHIJ J J  :;<>ABC C C -./1456 6 6 5'vv)>(%*?#U65%9&(D dAqD1Q3JA$56	
X&' ' ' 5&eV(<(%*?')D dAqD1Q3JA$56	/I&' ' ' 5(%*>(%*?ADdAqD1Q3JA$56	/H%& & & 5'vu)=&eV(<(*D dAqD1Q3JA$56	/F#$ $ $ %1+uQ{E!QK
8CEqDFQT!Q$Y1a41,EqDAI1QT	!AaeG+ErEAqDFNQT!Q$Y&Aad2E	LL%&'$SB?K)S!9999(B!7777*c!::::
%1+uQ{E!QK
8CqDAI!Q$q!t#EqDAI1QT	!AaeG+ErEAqDFNQT!Q$Y&Aad2E	LL%&'cQ7	
Aa!AqD&A+	x234 4 4
 geAqk5A;&+Aqk5A;@)*,0G1 0Ga 0GAqvv 0G01Qa0G01Q	0G 12Q	0G 12166	0G
 12AF
AEEAI0G 12Q	0G 12Q	0G 12Q
AEEAI0G 12Q
AEEAI0G 12Aquuqy0G 12Q	0G 12Q	0G 12AF
AEEAI0GG G G$:<|<)E eQ'1S6111.<|<)E
$ L*<nL,8L	NE Iyuuqy!%%!)QUUQY/1	9i	9.E
 eQ!Va1f_q1u%<qAv%EFE1  eQ!Va1f_q1u%<qAv%EFU8b=  eQ!Va1f_q1u%<qAv%EFR53;   MMDG+Q2QQ4Kq!--$q'12Q15547?4Kq}}tAw.2QUUT!W_a4KM Y	9iY		3J j!,Q!;;;
T( 
-	+	-	/	1	/3	1 !8 !">B "# # # q516>AF"D; / -!: ; /\ "-]; /\ /:]; /\ <G]; /^ "-_; /^ /:_; /^ <G_; /` "-a; /` /:a; /` <Fa; /b ",c; /b .9c; /b ;Fc; /d ",e; /d .8e; /d :Ee; /f "-g; /f /:g; /f <Gg; /h "-i; /h /:i; /h <Fi; /j ",k; /j .9k; /j ;Fk; /l ",m; /l .8m; /l :Em; /n "-o; /n /:o; /n <Go; /p "-q; /p /:q; /p <Hq; /r ".s; /r 0<s; /r >Js; /t ".u; /t 0<u; /t >Ju; /v ".w; /x !":DABXM
  %J N %J8 )9%J8 +99%J8 ;I9%J: );%J: +9;%J: ;I;%J< )=%J< +9=%J< ;I=%J> )?%J> +9?%J> ;I?%J@ )A%J@ +9A%J@ ;IA%JB )C%JB +9C%JB ;IC%JD )E%JD +9E%JD ;IE%JF )G%JF +9G%JF ;IG%JH )I%JH +9I%JH ;II%JJ )K%JJ +9K%JJ ;IK%JL !"4d;dBCeKKKHN [` HNx "yHNx $0yHNx 2>yHNx @LyHNz "{HNz $0{HNz 2>{HNz @L{HN| #}HN| %1}HN| 3?}HN| AM}HN~ #HN~ %1HN~ 3>HN~ @LHN@ #AHN@ %1AHN@ 3?AHN@ AMAHNB "CHNB $0CHNB 2>CHNB @KCHND #EHND %1EHND 3?EHND AMEHNF #GHNF %0GHNF 2>GHNF @LGHNH #IHNH %1IHNH 3?IHNH AMIHNJ "KHNJ $0KHNJ 2>KHNJ @LKHNL "MHNL $0MHNL 2>MHNL @LMHNN #OHNN %0OHNN 2>OHNN @LOHNP "QHNP $0QHNP 2>QHNP @LQHNR #SHNR %1SHNR 3>SHNR @LSHNT #UHNT %0UHNT 2>UHNT @LUHNV #WHNV %1WHNV 3>WHNV @KWHNX #YHNX %1YHNX 3>YHNX @LYHNZ #[HNZ %0[HNZ 2>[HNZ @K[HN\ "]HN\ $0]HN\ 2>]HN\ @K]HN^ #_HN^ %1_HN^ 3>_HN^ @L_HN` #aHN` %0aHN` 2>aHN` @LaHNb "cHNb $0cHNb 2>cHNb @LcHNd #eHNd %1eHNd 3?eHNd ALeHNf #gHNf %1gHNf 3>gHNf @LgHNh #iHNh %0iHNh 2>iHNh @LiHNj "kHNj $0kHNj 2>kHNj @KkHNl #mHNl %1mHNl 3?mHNl AMmHNn #oHNn %0oHNn 2>oHNn @LoHNp "qHNp $0qHNp 2>qHNp @LqHNr #sHNr %1sHNr 3>sHNr @LsHNt #uHNt %0uHNt 2>uHNt @KuHNv #wHNv %1wHNv 3?wHNv ALwHNx #yHNx %1yHNx 3>yHNx @LyHNz "{HNz $/{HNz 1={HNz ?K{HN| #}HN| %1}HN| 3>}HN| @L}HN~ "HN~ $0HN~ 2>HN~ @LHN@ #AHN@ %1AHN@ 3?AHN@ ALAHNB #CHNB %0CHNB 2>CHNB @LCHND #EHND %0EHND 2=EHND ?KEHNF #GHNF %1GHNF 3?GHNF AMGHNH #IHNH %1IHNH 3>IHNH @KIHNJ #KHNJ %1KHNJ 3?KHNJ AMKHNL #MHNL %1MHNL 3?MHNL AMMHNN #OHNN %1OHNN 3?OHNN AMOHNP #QHNP %1QHNP 3?QHNP AMQHNMT !-36FFG%OOO!-69IIJ	
 
 
 eadAaC[Q?	
QqtQ!VTAaD[12 2 2 e2	
CC!A$JAtad{AsQqTz	
QqtQ!VTAaD[!q&$1+	
C!A$JAtad{AFD1Q4K	AA A Ar'   c                  ^   [        [        SS5      [        SS5      [        SS5      /5      [        SS5      [        SS5      [        SS5      /:X  d   e[        SSS5      n [	        U [
        [        -  5      [        SS5      :X  d   e[	        U [
        [        -  SS	9[        SS5      :X  d   eg )
Nr   r   r   r   rC   r/   r=   r    T)	clockwise)r   r   r   r   r
   r   r   r   )fig6s    r(   test_point_sortr    s    uQ{E!QKq!=>	A1wq!}56 6 6 666*DdAaC(HRO;;;dAaCT:hq!nLLLr'   c                  >   [        [        SS5      [        SS5      [        SS5      [        SS5      [        S	S
5      [        SS5      [        SS5      [        SS5      5      n [        U [        S-  [        [        -  -   [        S-  -   5      [        S5      S-  :X  d   e[        [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      5      n[        U[        S-  [        [        -  -   [        S-  -   5      [        S5      S-  :X  d   eg ) Ng)\g9vgMbXgJ+?gT㥛 
gX9v?gq=
ףpgp=
ף g/$
@gB`"g$C@rI   gGzg\(\@g&1g9v
r   l   #ShK6. l     ^OWg/$g1Zg|?5^g/$@gGzgX9vgMb@gy&1gZd;@gd;O?l   QMQ@ l    0{
)r   r   r
   r   r   r   )fig5r  s     r(   !test_polytopes_intersecting_sidesr    s   5(%*>'vv)>'uf)='vv)>@D dAqD1Q3JA$56	
Y'( ( ( 5(%*>(%v*>&(D dAqD1Q3JA$56	.8$% % %r'   c                     [        SSSS5      n S[        [        [        [        -  [        S-  [        -  [        [        S-  -  /n[        XSS9SS[        [        R
                  [        [        R
                  [        [        -  [        SS	5      [        S-  [        -  [        SS
5      [        [        S-  -  [        SS
5      0:X  d   e[        XSS9SS[        [        R
                  [        [        R
                  [        [        -  [        SS	5      0:X  d   e[        XSS9SS[        [        R
                  [        [        R
                  0:X  d   eg )Nr  rA   r/   rC   r   r   r$   rK   r!   r9   )r   r   r   r
   r   r   r   polygonr   s     r(   test_max_degreer    s   ffff5G1ac1a461QT6*Eg;	
Aq!&&!QVVQqS(1a.!Q$q&(1a.RSTUWXTXRXZbcdfgZhij j jg;	
Aq!&&!QVVQqS(1a.9: : :g;	
Aq!&&!QVV$% % %r'   c                  
   / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n U S   nU S	S  n[        X!5      n[        S	X!U5      S
:X  d   e[        S	X!US	S9S	S
[        [        SS5      [        [        SS5      [
        [        SS5      0:X  d   eg )NrP   r   r9   r"   r$   r$   r"   r+   r   r"   r9   r!   r+   r   r+   r!   r   r$   r   r   r   r   r!   r9   r   r   r   irK   ir   )r   r   r   r   r   r   )cubeverticesfaces	hp_paramss       r(   test_main_integrate3dr$  !  s    .,l,(D AwHHE%e6IAu	:dBBBAu	aH	
D!XdA&8D!+<a$PQARST T Tr'   c            
         [        SSS5      n U R                  n[        U 5      n[        [        S-  [
        S-  -   X5      [        SS5      :X  d   e[        [        S-  [
        S-  -   XSS9S	S	SS
[
        [        SS5      [        S0:X  d   eg )Nr-   )r+   r$   r/   r   iE  r9   r   rK   r   r+   r   r$   rJ   )r   sidesr   r   r   r   r   )trianglefacetsr#  s      r(   test_main_integrater)  .  s    vvv.H^^F%h/I!Q$A+v9Xc1=MMMM!Q$A+vQG	
Aq!QQB/0 0 0r'   c            	          / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n U S   nU SS  nU S	   n[        US
S/S	X#SS	5      S:X  d   eg )NrP   r  r  r  r  r  r  r   r   rZ   r+   i)r   )r   facetr(  r!  s       r(   test_polygon_integrater,  7  s]    .,l,(D GE!"XFAwHUYNAvANRUUUUr'   c                  L    Sn [        U SS/S5      [        S5      * S-  :X  d   eg )NrN   r[   rZ   rY   r   )r	   r   )points    r(   test_distance_to_sider/  B  s.    EEIy#99E$q'RSSSSr'   c                  h    / SQn SS/n[        U SUSS5      S:X  d   e[        U SUSS5      S:X  d   eg )N)rR   rV   rW   rS   rR   rV   r   r   r+   )r   )r  line_segs     r(   test_lineseg_integrater2  G  sG    :G9%HWa1a8A===Wa1a8A===r'   c            	         [        [        SS5      [        SS5      [        SS5      5      n U R                  n[        U 5      S   u  p#[	        USX#S[
        [        4S5      S:X  d   e[	        USX#S[
        [        4S5      S:X  d   eg )Nr   r$   r+   r   )r   r   r&  r   r   r   r   )r'  r(  abs       r(   test_integration_reductionr6  N  s~    uQ{E!QKq!=H^^F *1-DA A!aVQ?1DDD A!aVQ?1DDDr'   c                     [        [        SS5      [        SS5      [        SS5      5      n U R                  n[        U 5      S   u  p#US   R                  S   n/ SQ/ SQ[
        SSS/[        SSS //n[        USX#[        S[        [
        4SSSXES5      [        SS	5      :X  d   e[        USX#SS[        [
        4SSSXES5      S:X  d   eg )
Nr   r$   r+   r   )r   r   r   r   )r   r   r   r+   rr   r   r   )	r   r   r&  r   pointsr   r   r   r   )r'  r(  r4  r5  x0monomial_valuess         r(   "test_integration_reduction_dynamicr;  V  s    uQ{E!QKq!=H^^F *1-DA			!	B#\1a}q!Qo7O )A!QA)*ArAGJRSUWX/Z Z Z(A!QA)*ArAGJKL L Lr'   c                      [        S5      SL d   e[        S5      SL d   e[        [        SS5      5      SL d   e[        S5      SL d   e[        S5      SL d   eg )Nr   F)r   r$   Tr$   )r   r$   r!   )r   r$   r!   r+   )r   r   r&   r'   r(   test_is_vertexr=  d  sf    Q<5   V$$$U1a[!T)))Y4'''\"e+++r'   c                     [        [        SS5      [        SS5      [        SS5      [        SS5      5      n S[        [        [        [        -  [        S-  [        -  [        [        S-  -  /n[	        X5      SS[        [
        R                  [        [
        R                  [        [        -  [        SS5      [        S-  [        -  [        SS5      [        [        S-  -  [        SS5      0:X  d   eS[        [        [        [        -  S[        S-  [        -  -   [        [        [        S-  -  -   /n[	        X5      SS[        [
        R                  [        [
        R                  [        [        -  [        SS5      [        S-  [        -  S-   [        SS5      [        [        S-  -  [        -   [        SS5      0:X  d   eg )Nr   r   r   r!   r9   r$   rs   )r   r   r   r   r
   r   r   r   r  s     r(   test_issue_19234r?  l  sc   eAqk5A;aU1a[IG!Q!QT!VQq!tV,Eg-	
Aq!&&!QVVQqS(1a.!Q$q&(1a.RSTUWXTXRXZbcdfgZhij j j!Q!QAaZQq!tV4Eg-	
Aq!&&!QVVQqS(1a.!Q$q&1*hrSToWXYZ\]Y]W]`aWacklmopcqrs s sr'   N)1$sympy.functions.elementary.complexesr   (sympy.functions.elementary.miscellaneousr   
sympy.corer   r   sympy.integrals.intpolyr   r   r	   r
   r   r   r   r   r   r   r   r   r   sympy.geometry.liner   sympy.geometry.polygonr   sympy.geometry.pointr   r   	sympy.abcr   r   r   sympy.testing.pytestr   r)   r7   r  r  r  r  r$  r)  r,  r/  r2  r6  r;  r=  r?  r&   r'   r(   <module>rI     s    4 9 "O O O O * * /   %-,A* {A {AzM%%
T0VT
>EL,sr'   