o
    jgE                     @   s,  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
d Z"dd Z#e!dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd Z,d d! Z-d"d# Z.d$d% Z/d&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                   C   s  t tdtiks
J t td dtd iksJ t tt dtt iks&J t tt dtt iks4J t td t ttd dksEJ t dtd  dt  d ddt dtd  dksaJ t td dt t  dtd dt t  iks{J t d	td  t dt  td  td t  d ddt t d	td  td ttd   d
ksJ t tdthksJ t td dtd hksJ t tt dtt hksJ t tt dtthksJ t td t dttd hksJ t dtd  dt  d dddt dtd  hksJ t td dt t  dtd dt t hks)J t d	td  t dt  td  td t  d ddtdt d	td  ttd  td hks[J d S )N      r   r            r   r   r      	   )r   r   r   r"   T)r   r   r    r$   r$   Z/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/integrals/tests/test_intpoly.pytest_decompose   s(   "842,":44&r&   c                  C   s  t d td  t d td   dt  td  t d t  } ttddtdd}tttdd dttdd d}ttdtdd tdtdd }ttddtdd}ttddtdd}ttddtdd}tdd|| d	ks{J td
d|td dksJ tdd|td dksJ tdd|td t d  dksJ tdd|td t d  d
ksJ tdd|td t d  dksJ tdd|td t d  d
ksJ 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l6r$   r$   r%   test_best_origin+   s   <&&"""&r3   c                  C   s  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 tddks5J t ttddtddtdddtd  dt  td	dksVJ t ttddtdtdttdtdttddddksxJ ttddttd d tjttd d tdd tddttdd tdd ttdd tj} t | dtdtd d ksJ t g d
ddksJ t g dtt tddksJ t g ddtd  dt  td	dksJ 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 fdfdtdd ftddtdd ftdftjtdd ftdfdtdd ftjtd d fdfg} t | dtdtd d 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sJ t g dddksJ t g dddksJ 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 tt  td  td!d" ksJ ttd#d$td%d&td'd(td)d*td+d,}t |td tt  td  td-d. ksJ ttd/d0td1d2td3d4td5d6}t |td tt  td  td7d" ksJJ ttd8d9td:d;td<d=td>d?td@dA}t |td tt  td  tdBdC ksyJ ttddtddtdd}g }tdD t tdE td   dtd  tdF   }td td  td td   dtdG   }tdG tdD t  tdF td   td td   }	|	|||	f t ||dGdH}
|
| tdIdJksJ |
| tdKdLksJ |
|	 tdMdNksJ ttddtddtdd}tdE td  dtd  td   }td td  td td   dtdG   }tdG tdD t  tdF td   td td   }	|	|||	f t ||dDdHtdE t dtd  td   tdOdDiks}J t ttddtddtddtddddHi ddddttjtd td  tj
dD td tj
d td tj
d ttjttd  tj
d td tj
d td tj
d td t tj
d td t tj
dF tt tj
d td tj
d td tj
d ttd  tj
dF ksJ g dPg dQg dRg dSg dTg dUg dVg}t |dtdWks6J 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 tj
d tj
d fgg dlg dmg dng dog dpg dqg drg}t |td td  tt  td  tdsdksJ t |td td  tt  td  tdtdu ksJ t |td td  tt  td  tdvdw ksJ tjtd ddfdtj
td dfddtjtd fddtj
td fdtjtd dftj
td 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 ksEJ g dg 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d dk s|J td td  td  }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 ||d 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 ||d dk sJ 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d dk 
s<J tt ||d dk 
sKJ t |td tt gddHtt dtd td dtd ik
soJ t |ddHddtdtd tt dtd tdtd tt dtd td dtd td dtd tdtd tt dtd td dtd i
k
sJ d S (  Nr   r   r   r   r"   r'      (   iY)r   r   )r   r   r   r8   r   )r6   r   r   r   r   r   r   r9   ))r<   r"   ))r   r8   ))r?   r8   r6   r9   r8   r7   r>   )r7   r   r;   )r   r8   r   r+   r   )r:   r   )rA   rC   ))r8   r   r   r=   ))r8   r8   r   rB   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   r4   r4   )r4   r4   r4   )r"   r4   r   )r   r4   r   )r4   r   r4   )r"   r   r   )r   r   r4   )r   r   r"   r   )r"   r   r'   r4   )r   r    r'   r   )r   r4   r'   r    )r   r   r   r    )r   r   r"   r4      rI   r   r   r'   r   r'   r   r   r'   r'   r'   r   r   r'   r   r'   r'   r'   r   r'   r'   r'   )r"   r    r4   r   )r   r'   r    r"   )r'   r   r4   r    )r   r   r'   r   )r   r   r   r"   )r   r4   r   r   )rI   rO   )r'   r   r   )r"   r   r   )r"   r'   r   rM   rL   rP   )r'   r   r'   )r"   r   r'   )r"   r'   r'   rN   )r4      r'   r   )r   r    r4   r   )r'   r   r"   r   r   r   )rS   rE   r   r'   )rE   r#   r"   r   )r#   r   r   r"   )r   r    r   r   )r    r   r#   rE   rS   r4   rI   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)r]   P/7ӿrX   )r]   P/7?rX   )r[   r^   rY   )r[   r_   rY   )aI{Ŀ      r[   )r`         ?r[   )aI{?ra   r]   )rc   rb   r]   )rY   r^   r]   )rY   r_   r]   )Sпa-!r?rY   )rd   a-!rȿrY   )S?re   rX   )rg   rf   rX   )rX   r^   r[   )rX   r_   r[   )r(   r"   r   r4      )   r    r   r"      )r#   r4   r   r    r   )   r   r   r      )   r'   r   r      )rS   r   r   r'   rE   )r   rn   r   rk   r#   )rE   rj   r"   r(   rS   )rh   rl   r   rS   r(   )rj   rE   r'   rm   ri   )rl   rh   r4   r#   rk   )rn   r   r    ri   rm   gZ?g-q=))r   g;fr   )r   g;f?r   )ب/h?;fֿHH~?)ro   ;f?rq   )%D?SN%D?)rs   SN?ru   )HH~??z5˿HH~??)rw   z5?ry   )[ $?rp   %D׿)r{   rr   r|   )rq   r   r|   )HH~?ӿrx   rq   )r}   rz   rq   )ry   r   ru   )~E?rt   r   )r~   rv   r   )ru   r   rq   )~Eڿrt   r   )r   rv   r   )orx   r   )r   rz   r   )o?rx   r   )r   rz   r   )r|   r   ry   )[ $߿rp   ru   )r   rr   ru   )%Dǿrt   r|   )r   rv   r|   )ب/hrp   ry   )r   rr   ry   )r   rE   rh   )   rE   r   )rh   rj   r   )r   rj   r   )rh   rE   r   )r   rE   r   )r   rj   rh   )r   rj   r   )r   r   rn   )   r   r   )r   rn   rH   )rH   r   r   )   r'   r"   )r"   r'      )   r   r"   )r"   r   r   )   rn   r   )r   r   r   )r'   r      )r   r   r'   )r4   r   rm   )ri   r   r4   )r4   rm      )r   ri   r4   )rl   r#   r    )r    r#   rk   )   rl   r    )r    rk   r   )r   r(   rm   )ri   r(   r   )rl   rS   r#   )r#   rS   rk   )rS   rl   r   )r   rk   rS   )r   rm   r(   )r(   ri   r   )r   rH   rn   )r   r   r   )r   r   r   )r   rH   r   gÜ?gư>))r`   ra   ys)r`   rb   r   )rc   ra   ys?)rc   rb   r   )rZ   r   r   )r\   r   r   )rd   wr`   )rd   w?r`   )rg   r   rc   )rg   r   rc   )rY   r^   r   )rY   r_   r   )rX   r^   r   )rX   r_   r   )r   ra   rc   )r   rb   rc   )r   ra   r`   )r   rb   r`   )F8r   r`   )F8?r   rc   )rk   rE   r"   r    )rj   rn   r   r   )rk   r   r   rE   )r"   rn   rj   r    )rk   r    rj   r   )r   rn   r"   rE   )r4   r   rS   rk   )r   r#   rn   r(   )rS   r#   r   rk   )r4   r(   rn   r   )r   r(   r4   rk   )rS   r   rn   r#   )r   rl   rS   r    )ri   r'   r   r(   )r   r(   r   rl   )rS   r'   ri   r    )r   r    ri   r(   )r   r'   rS   rl   )r4   rE   rm   r   )rj   r#   r'   rh   )rm   r#   rj   r   )r4   rh   r'   rE   )rj   rh   r4   r   )rm   rE   r'   r#   )rl   rm   r   r   )rh   ri   r"   r   )rl   r   r"   rm   )r   ri   rh   r   )rl   r   rh   r   )r"   ri   r   rm   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   rg   )ys?r   r   )r   r   rd   )r   r   r   )r   r   r   )r   r   rd   )r   r   r   )r   r   rd   )r   r   r   )r   r   r   )r   r   r   )r   r   rg   )r   r   r   )r   r   rg   )r   r   r   )r   r   r   )r   r   r   )r   ra   r   )r   rb   r   )r   Tͻr   )r   r   r   )r   r   r   )r   Tͻ@r   )r   ra   r   )r   rb   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rY   r   r   )rY   r   rg   )rY   r   r   )rY   r   rg   )rd   r   r   )rd   r   r   )rg   r   r   )rg   r   r   )rX   r   r   )rX   r   rd   )rX   r   r   )rX   r   rd   )r#   B   /   ),   >   M   )r   [   1   )!   r   S   )r"   r   T   )r(   r   5   )$   r   r   )r   r   r   )I   r   r   )rm   r   .   )r   @   +   )rh   :   H   )r   r   3   )rS   r   J   )r   r   r   )<   r   r   )#   r   r   )r   r   r   )rn   r   r   )O   r   N   )r4   8   r5   )L   r   Q   )r   r   K   )r   r5   r   )   r   r   )*   r   r   ))   r   r   )rj   r   r   )rH   r   r   )r   Y   G   )r   r   r   )ri   r   U   )rl   r   r   )A   r   r   )r   r   r   )"   r   r   )r'   r   r   )    r   r   )rE   r   0   )-   r   r   )r    r   r   )rk   r   r   )rW   r   r   )F   r   r   )r   r   r   )X   r   r   )&   C   r   )r   r   r   )9   r   r   )r   r   r   );   r   W   )rn   r   r   )?   r   r   )ri   r   r   )4   r   r   )'   r   r   )r   r   r5   )7   r   r   )r   r   r   )   r5   E   )rj   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   r5   )r   r   r   )r   r   r   )r   r5   r   )r   r   V   )r#   r   r   )P   r   r   )rS   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rm   r   r   )=   r   r   )r   r   r   )r   r   r   )r   r   r   )rW   r   r   )r   r   r   )r   r   r   )rH   r   r   )rE   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   )rl   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rW   r   r   )r   r   r   )r   r   r   )rh   r   r   )rk   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r4   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   )rk   r   r   )r   r   r5   )r'   r   r   )r   r   r   )r4   r5   r   )r   r   r   )r   r   r   )r   r   r   )ri   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   )rm   r   r   )r   r   r   )rE   r   r   )rH   r   r   )r   r   r   )r   r   r   )r"   r   r   )r   r   r5   )r   r   r   )rn   r   r   )r   r5   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rS   r   r   )rl   r   r   )r   r   r   )rj   r   r   )r   r   r   )rh   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polysr,   expr2expr3result_dictcube1cube2cube3cube4
octahedrongreat_stellated_dodecahedronexproctahedron_five_compoundcube_five_compoundechidnahedronr$   r$   r%   test_polytope_integrate@   sV  "*"
$











0,4$,4(
	

$
$

$

$$$


...///000111222333444555666777888999:::;<

   !!!"""###$$$%%%&
\\\\]]]]^^^^____````aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvwwwwxxxxyyyyzzzz{{{{||||}}}}~~~~                                                                 	  	  	  	  
&

462r  c                  C   s   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 tddks4J t| tt dd	tddksDJ d S )
Nr   r   r   r   r>   r+   r8   r   T)	clockwise)r
   r   r   r   r	   r   r   r   )fig6r$   r$   r%   test_point_sort  s   $r  c                  C   s   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 tt  td  tdd ks:J t tddtddtddtddtdd}t|td tt  td  tdd kshJ d S ) Ng)\g9vgMbXgJ+?gT㥛 
gX9v?gq=
ףpgp=
ף g/$
@gB`"g$C@rD   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
  r$   r$   r%   !test_polytopes_intersecting_sides  s   

r  c                  C   s   t dddd} dtttt td t ttd  g}t| |ddddttjttjtt tdd	td t tdd
ttd  tdd
iksEJ t| |ddddttjttjtt tdd	iks_J t| |ddddttjttjiksrJ d S )Nr  r<   r+   r>   r   r   r"   rF   r   r4   )r   r   r   r	   r   r   r   polygonr   r$   r$   r%   test_max_degree  s   $D r  c                  C   s   g dg dg dg dg dg dg dg} | d }| d	d  }t ||}td	|||d
ks1J td	|||d	dd	d
ttddttddttddiksOJ d S )NrK   r   r4   r    r"   r"   r    r'   r   r    r4   r   r'   r   r'   r   r   r"   r   r   r   r   r   r4   r   r   r   irF   ir   )r   r   r   r   r   r   )cubeverticesfaces	hp_paramsr$   r$   r%   test_main_integrate3d!  s   
$r  c               	   C   s~   t ddd} | j}t| }ttd td  ||tddks J ttd td  ||ddd	d	dd
ttddtdiks=J d S )Nr)   )r'   r"   r+   r   iE  r4   r   rF   r   r'   r   r"   rE   )r   sidesr   r   r   r   r   )trianglefacetsr  r$   r$   r%   test_main_integrate.  s   &r  c                  C   sn   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s5J d S )NrK   r  r  r  r  r  r  r   r   rU   r'   i)r   )r  facetr  r  r$   r$   r%   test_polygon_integrate7  s   $r!  c                  C   s*   d} t | ddgdtd d ksJ d S )NrI   rV   rU   rT   r   )r   r   )pointr$   r$   r%   test_distance_to_sideB  s   &r#  c                  C   sD   g d} ddg}t | d|dddksJ t | d|dddks J d S )N)rM   rQ   rR   rN   rM   rQ   r   r   r'   )r   )r  line_segr$   r$   r%   test_lineseg_integrateG  s   r%  c                  C   sx   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br$   r$   r%   test_integration_reductionN  s
    $r(  c                  C   s   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sLJ t|d||ddttfddd||ddksbJ d S )
Nr   r"   r'   r   )r   r   r   r   )r   r   r   r'   rm   r   r   )	r   r   r  r   pointsr   r   r   r   )r  r  r&  r'  x0monomial_valuesr$   r$   r%   "test_integration_reduction_dynamicV  s"   

r,  c                   C   sZ   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$   r%   test_is_vertexd  s
   r-  c                  C   s*  t tddtddtddtdd} dtttt td t ttd  g}t| |ddttjttjtt tddtd t tddttd  tddiksOJ dtttt dtd t  tttd   g}t| |ddttjttjtt tddtd t d tddttd  t tddiksJ d S )Nr   r   r   r   r4   r"   rn   )r   r   r   r   r	   r   r   r   r  r$   r$   r%   test_issue_19234l  s   &$D,L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&   r3   r  r  r  r  r  r  r!  r#  r%  r(  r,  r-  r.  r$   r$   r$   r%   <module>   s8    <
   @		