
    sgE                        d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZ d d	l m!Z! d
 Z"d Z#e!d        Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0y)    )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                     t        t              dt        ik(  sJ t        t        dz        dt        dz  ik(  sJ t        t        t        z        dt        t        z  ik(  sJ t        t        t        z         dt        t        z   ik(  sJ t        t        dz  t        z         t        t        dz  dk(  sJ t        dt        dz  z  dt        z  z   dz         ddt        z  dt        dz  z  dk(  sJ t        t        dz  dt        z  t        z  z         dt        dz  dt        z  t        z  z   ik(  sJ t        d	t        dz  z  t        z   dt        z  z   t        dz  z   t        dz  t        z  z   dz         ddt        z  t        z   d	t        dz  z  t        dz  t        t        dz  z  z   d
k(  sJ t        t        d      t        hk(  sJ t        t        dz  d      t        dz  hk(  sJ t        t        t        z  d      t        t        z  hk(  sJ t        t        t        z   d      t        t        hk(  sJ t        t        dz  t        z   d      t        t        dz  hk(  sJ t        dt        dz  z  dt        z  z   dz   d      ddt        z  dt        dz  z  hk(  sJ t        t        dz  dt        z  t        z  z   d      t        dz  dt        z  t        z  hk(  sJ t        d	t        dz  z  t        z   dt        z  z   t        dz  z   t        dz  t        z  z   dz   d      dt        dt        z  d	t        dz  z  t        t        dz  z  t        dz  hk(  sJ y )N      r   r            r   r   r      	   )r   r   r   r$   T)r   r   r        U/var/www/html/venv/lib/python3.12/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            	      *   t         dz  t        dz  z  t         dz  t        dz  z  z   dt        z  z   t        dz  z   t         dz  t        z  z   } t        t        dd      t        dd            }t        t        t	        d      dz  d      t        t	        d      dz  d            }t        t        dt	        d      dz        t        dt	        d      dz              }t        t        dd      t        dd            }t        t        dd      t        dd            }t        t        dd      t        dd            }t        dd||       d	k(  sJ t        d
d|t        dz        dk(  sJ t        dd|t        dz        dk(  sJ t        dd|t        dz  t         dz  z        dk(  sJ t        dd|t        dz  t         dz  z        d
k(  sJ t        dd|t        dz  t         dz  z        dk(  sJ t        dd|t        dz  t         dz  z        d
k(  sJ y )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"e,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                  x'   t        t        t        dd      t        dd      t        dd            d      dk(  sJ t        t        t        dd      t        dd      t        dd      t        dd            t        t        z        t        dd      k(  sJ t        t        t        dd      t        dd      t        dd            dt        dz  z  dt        z  z
        t        d	d      k(  sJ t        t        t        dd      t        dt        d            t        t        d      t        d            t        t        d      d            d      dk(  sJ t        t        dd      t        t        d       dz  t        j                        t        t        d       dz  t        d      dz        t        dd      t        t        d      dz  t        d      dz        t        t        d      dz  t        j                              } t        | d      t        dt        d      z        dz  k(  sJ t        g d
d      dk(  sJ t        g dt        t        z        t        dd      k(  sJ t        g ddt        dz  z  dt        z  z
        t        d	d      k(  sJ t        ddt        d      fdft        d      dfdfdgd      dk(  sJ t        dd      t        d       dz  fdfdt        d      dz  ft        dd      t        d      dz  ft        d      ft        j                  t        d      dz  ft        d      fdt        d      dz  ft        j                  t        d       dz  fdfg} t        | d      t        dt        d      z        dz  k(  sJ t        t        t        dd      t        dd      t        dd      t        dd      t        dd            d      dk(  sJ t        t        t        dd      t        dd      t        dd      t        dd      t        dd      t        dd            d      dk(  sJ t        g dd      dk(  sJ t        g dd      dk(  sJ t        t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd             }t        |t        dz  t        t        z  z   t        dz  z         t        d!      d"z  k(  sJ t        t        d#d$      t        d%d&      t        d'd(      t        d)d*      t        d+d,            }t        |t        dz  t        t        z  z   t        dz  z         t        d-      d.z  k(  sJ t        t        d/d0      t        d1d2      t        d3d4      t        d5d6            }t        |t        dz  t        t        z  z   t        dz  z         t        d7      d"z  k(  sJ t        t        d8d9      t        d:d;      t        d<d=      t        d>d?      t        d@dA            }t        |t        dz  t        t        z  z   t        dz  z         t        dB      dCz  k(  sJ t        t        dd      t        dd      t        dd            }g }t        dDz  t        z  t        dEz  t        dz  z  z   dt        dz  z  t        dFz  z  z   }t        dz  t        dz  z  t        dz  t        dz  z  z   dt        dGz  z  z   }t        dGz  t        dDz  t        z  z   t        dFz  t        dz  z  z   t        dz  t        dz  z  z   }	|j                  |||	f       t        ||dGH      }
|
|   t        dIdJ      k(  sJ |
|   t        dKdL      k(  sJ |
|	   t        dMdN      k(  sJ t        t        dd      t        dd      t        dd            }t        dEz  t        dz  z  dt        dz  z  t        dz  z  z   }t        dz  t        dz  z  t        dz  t        dz  z  z   dt        dGz  z  z   }t        dGz  t        dDz  t        z  z   t        dFz  t        dz  z  z   t        dz  t        dz  z  z   }	|j                  |||	f       t        ||dDH      t        dEz  t        z  dt        dz  z  t        dz  z  z   t        dOdD      ik(  sJ t        t        t        dd      t        dd      t        dd      t        dd            dH      i ddddt        t        j                  t        dz  t        dz  z  t        j                  dDz  t        dz  t        j                  dz  t        dz  t        j                  dz  t        t        j                  t        t        dz  z  t        j                  dz  t        dz  t        j                  dz  t        dz  t        j                  dz  t        dz  t        z  t        j                  dz  t        dz  t        z  t        j                  dFz  t        t        z  t        j                  dz  t        dz  t        j                  dz  t        dz  t        j                  dz  t        t        dz  z  t        j                  dFz  k(  sJ g dPg dQg dRg dSg dTg dUg dVg}t        |d      t        dW      k(  sJ g dXg dYg dZg d[g d\g d]g d^g}g d_g d`g dag dbg dcg ddg deg dfg dgg	}dhdidjdkt        j                  dz  t        j                  dz  t        j                  dz  fgg dlg dmg dng dog dpg dqg drg}t        |t        dz  t        dz  z   t        t        z  z   t        dz  z         t        dsd      k(  sJ t        |t        dz  t        dz  z   t        t        z  z   t        dz  z         t        dt      duz  k(  sJ t        |t        dz  t        dz  z   t        t        z  z   t        dz  z         t        dv      dwz  k(  sJ t        j                  t        d      z  ddfdt        j                  t        d      z  dfddt        j                  t        d      z  fddt        j                  t        d      z  fdt        j                  t        d      z  dft        j                  t        d      z  ddfgg dxg dyg dzg d{g d|g d}g d~g dg	}t        |d      t        d      dz  k(  sJ g dg dg dg dg dg dg dg dg dg dg dg dg dg}t        t        |d      dz
        dk  sJ t        dz  t        dz  z   t        dz  z   }g g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d}t        t        ||            dz
  dk  sJ g g dg dg dg dg dg dg dg dg d¢g dâg dĢg dŢg dƢg dǢg dȢg dɢg dʢg dˢg d̢g d͢g d΢g dϢg dТg dѢg dҢg dӢg dԢg dբg d֢g dעg dآ}t        t        ||      dz
        dk  sJ g g dڢg dۢg dܢg dݢg dޢg dߢg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g dg dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg ddg deg dfg dgg dhg dig djg dkg dlg dmg dng dog dpg dqg drg dsg dtg dug dvg dwg dxg dyg dzg d{g d|g d}g d~g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d}t        t        |d      dz
        dk  sJ t        t        ||      dz
        dk  sJ t        |t        dz  t        t        z  gdH      t        t        z  dt        d      z  t        dz  dt        d      z  ik(  sJ t        |dH      ddt        dt        d      z  t        t        z  dt        d      z  t        dt        d      z  t        t        z  dt        d      z  t        dz  dt        d      z  t        dz  dt        d      z  t        dt        d      z  t        t        z  dt        d      z  t        dz  dt        d      z  i
k(  sJ y (  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%&'$S%B?Ku)S!9999u(B!7777u*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%&'c5Q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                  ^   t        t        dd      t        dd      t        dd      g      t        dd      t        dd      t        dd      gk(  sJ t        ddd      } t	        | t
        t        z        t        dd      k(  sJ t	        | t
        t        z  d	      t        dd      k(  sJ y )
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                  :   t        t        dd      t        dd      t        dd      t        dd      t        d	d
      t        dd      t        dd      t        dd            } t        | t        dz  t        t        z  z   t        dz  z         t        d      dz  k(  sJ t        t        dd      t        dd      t        dd      t        dd      t        dd            }t        |t        dz  t        t        z  z   t        dz  z         t        d      dz  k(  sJ y ) 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                     t        dddd      } dt        t        t        t        z  t        dz  t        z  t        t        dz  z  g}t        | |d      ddt        t        j
                  t        t        j
                  t        t        z  t        dd	      t        dz  t        z  t        dd
      t        t        dz  z  t        dd
      ik(  sJ t        | |d      ddt        t        j
                  t        t        j
                  t        t        z  t        dd	      ik(  sJ t        | |d      ddt        t        j
                  t        t        j
                  ik(  sJ y )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gu;	
Aq!&&!QVVQqS(1a.!Q$q&(1a.RSTUWXTXRXZbcdfgZhij j jgu;	
Aq!&&!QVVQqS(1a.9: : :gu;	
Aq!&&!QVV$% % %r'   c                     g dg dg dg dg dg dg dg} | d   }| d	d  }t        ||      }t        d	|||      d
k(  sJ t        d	|||d	      d	d
t        t        dd      t        t        dd      t
        t        dd      ik(  sJ y )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%eX6IAuh	:dBBBAuh	aH	
D!XdA&8D!+<a$PQARST T Tr'   c            
      $   t        ddd      } | j                  }t        |       }t        t        dz  t
        dz  z   ||      t        dd      k(  sJ t        t        dz  t
        dz  z   ||d      d	d	dd
t
        t        dd      t        dik(  sJ y )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+vy9Xc1=MMMM!Q$A+vyQG	
Aq!QQB/0 0 0r'   c            	          g dg dg dg dg dg dg dg} | d   }| dd  }| d	   }t        |d
dgd	||dd	      dk(  sJ y )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NAvxANRUUUUr'   c                  J    d} t        | ddgd      t        d       dz  k(  sJ y )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                  d    g d} ddg}t        | d|dd      dk(  sJ t        | d|dd      dk(  sJ y )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            	         t        t        dd      t        dd      t        dd            } | j                  }t        |       d   \  }}t	        |d||dt
        t        fd      dk(  sJ t	        |d||dt
        t        fd      dk(  sJ y )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-DAq Aq!aVQ?1DDD Aq!aVQ?1DDDr'   c                     t        t        dd      t        dd      t        dd            } | j                  }t        |       d   \  }}|d   j                  d   }g dg dt
        dddgt        ddd gg}t        |d||t        dt        t
        fddd||d      t        dd	      k(  sJ t        |d||ddt        t
        fddd||d      dk(  sJ y )
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-DAq			!	B#\1a}q!Qo7O )Aq!QA)*Ar?AGJRSUWX/Z Z Z(Aq!QA)*Ar?AGJKL L Lr'   c                      t        d      du sJ t        d      du sJ t        t        dd            du sJ t        d      du sJ t        d      du sJ y )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                     t        t        dd      t        dd      t        dd      t        dd            } dt        t        t        t        z  t        dz  t        z  t        t        dz  z  g}t	        | |      ddt        t
        j                  t        t
        j                  t        t        z  t        dd      t        dz  t        z  t        dd      t        t        dz  z  t        dd      ik(  sJ dt        t        t        t        z  dt        dz  t        z  z   t        t        t        dz  z  z   g}t	        | |      ddt        t
        j                  t        t
        j                  t        t        z  t        dd      t        dz  t        z  dz   t        dd      t        t        dz  z  t        z   t        dd      ik(  sJ y )Nr   r   r   r!   r9   r$   rs   )r   r   r   r   r
   r   r   r   r  s     r(   test_issue_19234r?  l  sg   eAqk5A;aU1a[IG!Q!QT!VQq!tV,Egu-	
Aq!&&!QVVQqS(1a.!Q$q&(1a.RSTUWXTXRXZbcdfgZhij j j!Q!QAaZQq!tV4Egu-	
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'   