
    gE                        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 Z0dS )    )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 d S )N      r   r            r   r   r      	   )r   r   r   r$   T)r   r   r        ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/integrals/tests/test_intpoly.pytest_decomposer)      sn   Q<<Aq6!!!!QT??q!Q$i''''QqS>>a1X%%%%QU1q5z))))QTAXaAqD//1111Qq!tVac\A%&&aAaCAadF*C*CCCCCQTAaCE\""q!Q$1Q,&77777Qq!tVaZ!A#%1,q!tAv59::!A#'a1fA!Q$778 8 8 8 Q!$$$$Q!VT""q!tf,,,,QUD!!a!eW,,,,QUD!!aV++++Q!VaZ&&1a1f+5555QaZ!a%'!+T22q!A#qAv6FFFFFQ!Va!eai'..161q5192EEEEEQaZ!^a!e+a1f4qAvzAAEtLLq!A#qAvqAvq!t,- - - - - -r'   c            	      F   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 d S )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   +   sF   FQ!VOa1fqAvo-A5R?!q&1*LE	5A;;a	,	,B	511%%uQqTTAXq'9'9	:	:B	5AaDD1H%%uQ!q'9'9	:	:B	5A;;a	,	,B	5A;;a	,	,B	5A;;a	,	,Bvq"e,,6666 vq"a1f--9999vq"a1f--9999vq"a1fqAvo66&@@@@vq"a1fqAvo66&@@@@vq"a1fqAvo66&@@@@vq"a1fqAvo66&@@@@@@r'   c                  f-   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   }	|	                    |||	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   }	|	                    |||	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 d S (  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_$    geAqkk5A;;&+Aqkk3 3457 7:;< < < <geAqkk5A;;&+Aqkk5A;;@ @ABQH H&.q!nn5 5 5 5 geAqkk5A;;aLL1fr!tm- -08q0A0AB B B B geAqkk5DGG3D3D&+DGGT!WW&=&=&+DGGQ&7&79 9:;= =@AB B B B eAqkk5$q''Aqv#>#>T!WWHqL!A$$(33U1a[[DGGaK122E$q''A+qv4N4NP PG gq))Qqay\\A-=====  - - -./1 1456 6 6 6 : : :;<q5B BEMaQR^^T T T T / / /01!Q$A? ?BJ4QRBSBST T T T|q$q''lA->!%a!a0,@ABD DGHI I I I "a477(Q,/3a1%"a$q''A+.Q8a1%tAww/Q!$$q''A&*,G gq))Qqay\\A-===== geBmmU2q\\&+Aqkk5A;;&+Arll4 4568 8;<= = = = geBmmU2q\\&+Aqkk5A;;&+ArllE!QKKA ABCE EHIJ J J J  : : :;<> >ABC C C C - - -./1 1456 6 6 6 5''vv)>)>((%*?*?##U65%9%9&&( (D dAqD1Q3JA$566	
X&' ' ' ' 5&&eV(<(<((%*?*?'') )D dAqD1Q3JA$566	/I&' ' ' ' 5((%*>*>((%*?*?A ADdAqD1Q3JA$566	/H%& & & & 5''vu)=)=&&eV(<(<((* *D dAqD1Q3JA$566	/F#$ $ $ $ %1++uQ{{E!QKK
8
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99u(B!7!77777u*c!:!:::::
%1++uQ{{E!QKK
8
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77	
Aa!AqD&A+	x2234 4 4 4
 geAqkk5A;;&+Aqkk5A;;@ @)*, , ,0G1 0Ga 0GAqv 0G01Qa0G01Q	0G 12Q	0G 1216	0G
 12AF
AEAI0G 12Q	0G 12Q	0G 12Q
AEAI0G 12Q
AEAI0G 12Aquqy0G 12Q	0G 12Q	0G 12AF
AEAI0GG G G G$: : :\\<<<|||\\<<<)E eQ''1S661111. . .\\<<<|||\\<<<)E
$ $ $ ]]LLL*<*<*<nnn]]LLL,,,8L8L8L	NE Iyuqy!%!)QUQY/1YY			999iiiYY			999.E
 eQ!Va1f_q1u%<qAv%EFFE1   eQ!Va1f_q1u%<qAv%EFFU88b=   eQ!Va1f_q1u%<qAv%EFFR553;    MDGG+Q2QQ4Kq!-$q''12Q15477?4Kq}tAww.2QUT!WW_a4KM ))YYY			999iii))YYY				3J j!,,Q!;;;;
T 
T 
T( 
		---	+++			---			///			111			///3	1 !8 !">BB  "# # # # q516>AF"D; / -!: -!: -!: ; /\ "-]; /\ /:kk]; /\ <G;;]; /^ "-_; /^ /:kk_; /^ <G;;_; /` "-a; /` /:kka; /` <F::a; /b ",c; /b .9[[c; /b ;F++c; /d ",e; /d .8ZZe; /d :Ee; /f "-g; /f /:kkg; /f <G;;g; /h "-i; /h /:kki; /h <F::i; /j ",k; /j .9[[k; /j ;F++k; /l ",m; /l .8ZZm; /l :Em; /n "-o; /n /:kko; /n <G;;o; /p "-q; /p /:kkq; /p <H<<q; /r ".s; /r 0<||s; /r >J\\s; /t ".u; /t 0<||u; /t >J\\u; /v ".w; /x !":DAABBXM
   %J N N N %J8 )..9%J8 +9..9%J8 ;I..9%J: )..;%J: +9..;%J: ;I..;%J< )..=%J< +9..=%J< ;I..=%J> )..?%J> +9..?%J> ;I..?%J@ )..A%J@ +9..A%J@ ;I..A%JB )..C%JB +9..C%JB ;I..C%JD )..E%JD +9..E%JD ;I..E%JF )..G%JF +9..G%JF ;I..G%JH )..I%JH +9..I%JH ;I..I%JJ )..K%JJ +9..K%JJ ;I..K%JL !"4d;;dBCCeKKKKHN [` [` [` HNx "kkyHNx $0<<yHNx 2>yHNx @L||yHNz "kk{HNz $0<<{HNz 2>{HNz @L||{HN| #ll}HN| %1LL}HN| 3?,,}HN| AM}HN~ #llHN~ %1LLHN~ 3>++HN~ @L||HN@ #llAHN@ %1LLAHN@ 3?,,AHN@ AMAHNB "kkCHNB $0<<CHNB 2>CHNB @K{{CHND #llEHND %1LLEHND 3?,,EHND AMEHNF #llGHNF %0KKGHNF 2>GHNF @L||GHNH #llIHNH %1LLIHNH 3?,,IHNH AMIHNJ "kkKHNJ $0<<KHNJ 2>KHNJ @L||KHNL "kkMHNL $0<<MHNL 2>MHNL @L||MHNN #llOHNN %0KKOHNN 2>OHNN @L||OHNP "kkQHNP $0<<QHNP 2>QHNP @L||QHNR #llSHNR %1LLSHNR 3>++SHNR @L||SHNT #llUHNT %0KKUHNT 2>UHNT @L||UHNV #llWHNV %1LLWHNV 3>++WHNV @K{{WHNX #llYHNX %1LLYHNX 3>++YHNX @L||YHNZ #ll[HNZ %0KK[HNZ 2>[HNZ @K{{[HN\ "kk]HN\ $0<<]HN\ 2>]HN\ @K{{]HN^ #ll_HN^ %1LL_HN^ 3>++_HN^ @L||_HN` #llaHN` %0KKaHN` 2>aHN` @L||aHNb "kkcHNb $0<<cHNb 2>cHNb @L||cHNd #lleHNd %1LLeHNd 3?,,eHNd ALeHNf #llgHNf %1LLgHNf 3>++gHNf @L||gHNh #lliHNh %0KKiHNh 2>iHNh @L||iHNj "kkkHNj $0<<kHNj 2>kHNj @K{{kHNl #llmHNl %1LLmHNl 3?,,mHNl AMmHNn #lloHNn %0KKoHNn 2>oHNn @L||oHNp "kkqHNp $0<<qHNp 2>qHNp @L||qHNr #llsHNr %1LLsHNr 3>++sHNr @L||sHNt #lluHNt %0KKuHNt 2>uHNt @K{{uHNv #llwHNv %1LLwHNv 3?,,wHNv ALwHNx #llyHNx %1LLyHNx 3>++yHNx @L||yHNz "kk{HNz $/;;{HNz 1={HNz ?Kll{HN| #ll}HN| %1LL}HN| 3>++}HN| @L||}HN~ "kkHN~ $0<<HN~ 2>HN~ @L||HN@ #llAHN@ %1LLAHN@ 3?,,AHN@ ALAHNB #llCHNB %0KKCHNB 2>CHNB @L||CHND #llEHND %0KKEHND 2=EHND ?KllEHNF #llGHNF %1LLGHNF 3?,,GHNF AMGHNH #llIHNH %1LLIHNH 3>++IHNH @K{{IHNJ #llKHNJ %1LLKHNJ 3?,,KHNJ AMKHNL #llMHNL %1LLMHNL 3?,,MHNL AMMHNN #llOHNN %1LLOHNN 3?,,OHNN AMOHNP #llQHNP %1LLQHNP 3?,,QHNP AMQHNMT !-336FFGG%OOOO!-669IIJJ	
 
 
 
 eadAaC[Q???	
QqttQ!VTAaDD[12 2 2 2 e222	
CC!A$$JAtadd{AsQqTTz	
QqttQ!VTAaDD[!q&$1+	
C!A$$JAtadd{AFD1Q44K	AA A 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 d S )
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!QKKq!=>>	A1wq!}}56 6 6 6 666**DdAaC((HROO;;;;dAaCT:::hq!nnLLL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 d S ) 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6	
Y'( ( ( ( 5((%*>*>((%v*>*>&&( (D dAqD1Q3JA$56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 d S )Nr  rA   r/   rC   r   r   r$   rK   r!   r9   )r   r   r   r
   r   r   r   polygonr   s     r(   test_max_degreer    sI   ffff55G1ac1a461QT6*Egu;;;	
Aq!&!QVQqS(1a..!Q$q&(1a..RSTUWXTXRXZbcdfgZhZhij j j jgu;;;	
Aq!&!QVQqS(1a..9: : : :gu;;;	
Aq!&!QV$% % % % % %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 d S )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    . . .LL,,,lllLL,,,(D AwHHE%eX66IAuh	::dBBBBAuh	aHHH	
D!XdA&&8D!+<+<a$PQARARST T T 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 d S )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99Xc1=M=MMMMM!Q$A+vyQGGG	
Aq!QQB/0 0 0 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 d S )NrP   r  r  r  r  r  r  r   r   rZ   r+   i)r   )r   facetr(  r!  s       r(   test_polygon_integrater,  7  s    . . .LL,,,lllLL,,,(D GE!""XFAwHUYNAvxANNRUUUUUUUr'   c                  ^    d} t          | ddgd          t          d           dz  k    sJ d S )NrN   r[   rZ   rY   r   )r	   r   )points    r(   test_distance_to_sider/  B  s<    EEIy#99EE$q''RSSSSSSSr'   c                  z    g d} ddg}t          | d|dd          dk    sJ t          | d|dd          dk    sJ d S )N)rR   rV   rW   rS   rR   rV   r   r   r+   )r   )r  line_segs     r(   test_lineseg_integrater2  G  s_    :::G9%HWa1a88A====Wa1a88A======r'   c            	      V   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 d S )Nr   r$   r+   r   )r   r   r&  r   r   r   r   )r'  r(  abs       r(   test_integration_reductionr6  N  s    uQ{{E!QKKq!==H^F **1-DAq Aq!aVQ??1DDDD Aq!aVQ??1DDD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 d S )
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!QKKq!==H^F **1-DAq		!	B#||\\\1a}q!Qo7O )Aq!QA)*Ar?AG GJRSUWX//Z Z Z Z(Aq!QA)*Ar?AG GJKL L L 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 d S )Nr   F)r   r$   Tr$   )r   r$   r!   )r   r$   r!   r+   )r   r   r&   r'   r(   test_is_vertexr=  d  s    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 d S )Nr   r   r   r!   r9   r$   rs   )r   r   r   r   r
   r   r   r   r  s     r(   test_issue_19234r?  l  s   eAqkk5A;;aU1a[[IIG!Q!QT!VQq!tV,Egu--	
Aq!&!QVQqS(1a..!Q$q&(1a..RSTUWXTXRXZbcdfgZhZhij j j j!Q!QAaZQq!tV4Egu--	
Aq!&!QVQqS(1a..!Q$q&1*hrSTooWXYZ\]Y]W]`aWacklmopcqcqrs s s 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 4 4 4 4 4 9 9 9 9 9 9 " " " " " " " "O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O * ) ) ) ) ) * * * * * * / / / / / / / /           % % % % % %- - -,A A A* {A {A {AzM M M% % %% % %
T 
T 
T0 0 0V V VT T T
> > >E E EL L L, , ,s s s s sr'   