o
    GZhE                     @   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$   Q/var/www/auris/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   
   Z
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      rH   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   )rH   rN   )r'   r   r   )r"   r   r   )r"   r'   r   rL   rK   rO   )r'   r   r'   )r"   r   r'   )r"   r'   r'   rM   )r4      r'   r   )r   r    r4   r   )r'   r   r"   r   r   r   )rR   rE   r   r'   )rE   r#   r"   r   )r#   r   r   r"   )r   r    r   r   )r    r   r#   rE   rR   r4   rH   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ӿrW   )r\   P/7?rW   )rZ   r]   rX   )rZ   r^   rX   )aI{Ŀ      rZ   )r_         ?rZ   )aI{?r`   r\   )rb   ra   r\   )rX   r]   r\   )rX   r^   r\   )Sпa-!r?rX   )rc   a-!rȿrX   )S?rd   rW   )rf   re   rW   )rW   r]   rZ   )rW   r^   rZ   )r(   r"   r   r4      )   r    r   r"      )r#   r4   r   r    r   )   r   r   r      )   r'   r   r      )rR   r   r   r'   rE   )r   rm   r   rj   r#   )rE   ri   r"   r(   rR   )rg   rk   r   rR   r(   )ri   rE   r'   rl   rh   )rk   rg   r4   r#   rj   )rm   r   r    rh   rl   gZ?g-q=))r   g;fr   )r   g;f?r   )ب/h?;fֿHH~?)rn   ;f?rp   )%D?SN%D?)rr   SN?rt   )HH~??z5˿HH~??)rv   z5?rx   )[ $?ro   %D׿)rz   rq   r{   )rp   r   r{   )HH~?ӿrw   rp   )r|   ry   rp   )rx   r   rt   )~E?rs   r   )r}   ru   r   )rt   r   rp   )~Eڿrs   r   )r~   ru   r   )orw   r   )r   ry   r   )o?rw   r   )r   ry   r   )r{   r   rx   )[ $߿ro   rt   )r   rq   rt   )%Dǿrs   r{   )r   ru   r{   )ب/hro   rx   )r   rq   rx   )r   rE   rg   )   rE   r   )rg   ri   r   )r   ri   r   )rg   rE   r   )r   rE   r   )r   ri   rg   )r   ri   r   )r   r   rm   )   r   r   )r   rm   rG   )rG   r   r   )   r'   r"   )r"   r'      )   r   r"   )r"   r   r   )   rm   r   )r   r   r   )r'   r      )r   r   r'   )r4   r   rl   )rh   r   r4   )r4   rl      )r   rh   r4   )rk   r#   r    )r    r#   rj   )   rk   r    )r    rj   r   )r   r(   rl   )rh   r(   r   )rk   rR   r#   )r#   rR   rj   )rR   rk   r   )r   rj   rR   )r   rl   r(   )r(   rh   r   )r   rG   rm   )r   r   r   )r   r   r   )r   rG   r   gÜ?gư>))r_   r`   ys)r_   ra   r   )rb   r`   ys?)rb   ra   r   )rY   r   r   )r[   r   r   )rc   wr_   )rc   w?r_   )rf   r   rb   )rf   r   rb   )rX   r]   r   )rX   r^   r   )rW   r]   r   )rW   r^   r   )r   r`   rb   )r   ra   rb   )r   r`   r_   )r   ra   r_   )F8r   r_   )F8?r   rb   )rj   rE   r"   r    )ri   rm   r   r   )rj   r   r   rE   )r"   rm   ri   r    )rj   r    ri   r   )r   rm   r"   rE   )r4   r   rR   rj   )r   r#   rm   r(   )rR   r#   r   rj   )r4   r(   rm   r   )r   r(   r4   rj   )rR   r   rm   r#   )r   rk   rR   r    )rh   r'   r   r(   )r   r(   r   rk   )rR   r'   rh   r    )r   r    rh   r(   )r   r'   rR   rk   )r4   rE   rl   r   )ri   r#   r'   rg   )rl   r#   ri   r   )r4   rg   r'   rE   )ri   rg   r4   r   )rl   rE   r'   r#   )rk   rl   r   r   )rg   rh   r"   r   )rk   r   r"   rl   )r   rh   rg   r   )rk   r   rg   r   )r"   rh   r   rl   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   rf   )ys?r   r   )r   r   rc   )r   r   r   )r   r   r   )r   r   rc   )r   r   r   )r   r   rc   )r   r   r   )r   r   r   )r   r   r   )r   r   rf   )r   r   r   )r   r   rf   )r   r   r   )r   r   r   )r   r   r   )r   r`   r   )r   ra   r   )r   Tͻr   )r   r   r   )r   r   r   )r   Tͻ@r   )r   r`   r   )r   ra   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rX   r   r   )rX   r   rf   )rX   r   r   )rX   r   rf   )rc   r   r   )rc   r   r   )rf   r   r   )rf   r   r   )rW   r   r   )rW   r   rc   )rW   r   r   )rW   r   rc   )r#   B   /   ),   >   M   )r   [   1   )!   r   S   )r"   r   T   )r(   r   5   )$   r   r   )r   r   r   )I   r   r   )rl   r   .   )r   @   +   )rg   :   H   )r   r   3   )rR   r   J   )r   r   r   )<   r   r   )#   r   r   )r   r   r   )rm   r   r   )O   r   N   )r4   8   r5   )L   r   Q   )r   r   K   )r   r5   r   )   r   r   )*   r   r   ))   r   r   )ri   r   r   )rG   r   r   )r   Y   G   )r   r   r   )rh   r   U   )rk   r   r   )A   r   r   )r   r   r   )"   r   r   )r'   r   r   )    r   r   )rE   r   0   )-   r   r   )r    r   r   )rj   r   r   )rV   r   r   )F   r   r   )r   r   r   )X   r   r   )&   C   r   )r   r   r   )9   r   r   )r   r   r   );   r   W   )rm   r   r   )?   r   r   )rh   r   r   )4   r   r   )'   r   r   )r   r   r5   )7   r   r   )r   r   r   )   r5   E   )ri   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   )rR   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   )rV   r   r   )r   r   r   )r   r   r   )rG   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   )rk   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rV   r   r   )r   r   r   )r   r   r   )rg   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   )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   )rj   r   r   )r   r   r5   )r'   r   r   )r   r   r   )r4   r5   r   )r   r   r   )r   r   r   )r   r   r   )rh   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   )rl   r   r   )r   r   r   )rE   r   r   )rG   r   r   )r   r   r   )r   r   r   )r"   r   r   )r   r   r5   )r   r   r   )rm   r   r   )r   r5   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rR   r   r   )rk   r   r   )r   r   r   )ri   r   r   )r   r   r   )rg   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extendZOner   ZNegativeOner   )ZhexagonZfig1Zfig2Zfig3Zfig4Ztripolysr,   Zexpr2Zexpr3Zresult_dictZcube1Zcube2Zcube3Zcube4Z
octahedronZgreat_stellated_dodecahedronexprZoctahedron_five_compoundZcube_five_compoundZ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)Z	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   )Z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 )NrJ   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verticesZ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 )NrJ   r   r   r   r   r   r   r   r   rT   r'   i)r   )r   Z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 )NrH   rU   rT   rS   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)rL   rP   rQ   rM   rL   rP   r   r   r'   )r   )r   Z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'   rl   r   r   )	r   r   r  r   Zpointsr   r   r   r   )r  r  r  r  Zx0Z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"   rm   )r   r   r   r   r	   r   r   r   r   r$   r$   r%   test_issue_19234l  s   &$D,Lr  N)1Z$sympy.functions.elementary.complexesr   Z(sympy.functions.elementary.miscellaneousr   Z
sympy.corer   r   Zsympy.integrals.intpolyr   r   r   r	   r
   r   r   r   r   r   r   r   r   Zsympy.geometry.liner   Zsympy.geometry.polygonr   Zsympy.geometry.pointr   r   Z	sympy.abcr   r   r   Zsympy.testing.pytestr   r&   r3   r   r   r   r   r  r  r  r
  r  r  r  r  r  r$   r$   r$   r%   <module>   s8    <
   @		