U
    ZÊ¹jE’  ã                   @   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t‚t td ƒdtd iks0t‚t tt ƒdtt iksLt‚t tt ƒdtt iksht‚t td t ƒttd dœksŠt‚t dtd  dt  d ƒddt dtd  dœksÂt‚t td dt t  ƒdtd dt t  iksöt‚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�s^t‚t tdƒthk�stt‚t td dƒtd hk�s’t‚t tt dƒtt hk�s°t‚t tt dƒtthk�sÌt‚t td t dƒttd hk�sðt‚t dtd  dt  d dƒddt dtd  hk�s*t‚t td dt t  dƒtd dt t hk�s^t‚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Ât‚d S )Né   é   ©r   r   é   é   é   )r   r   r   é   é	   )r   r   r   r!   T)r   r   ÚAssertionErrorr   © r$   r$   úa/var/www/html/bwave/python/venv/lib/python3.8/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öt‚td
d|td ƒdk�st‚tdd|td ƒdk�s.t‚tdd|td t d  ƒdk�sRt‚tdd|td t d  ƒd
k�svt‚tdd|td t d  ƒdk�sšt‚tdd|td t d  ƒd
k�s¾t‚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   r#   )Úexpr1Úl1Úl2Úl3Úl4Úl5Úl6r$   r$   r%   Útest_best_origin+   s    <&&$$$r3   c               ·   C   sp  t ttddƒtddƒtddƒƒdƒdks,t‚t ttddƒtddƒtddƒtddƒƒtt ƒtddƒksjt‚t ttddƒtddƒtddƒƒdtd  dt  ƒtd	dƒks¬t‚t ttddƒtdtdƒƒttdƒtdƒƒttdƒdƒƒdƒdksðt‚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�s‚t‚t d
ddgdƒdk�sœt‚t d
dddgtt ƒtddƒk�sÂt‚t dddgdtd  dt  ƒtd	dƒk�sòt‚t d
dtdƒfdftdƒdfdfdgdƒdk�s&t‚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Ît‚t ttddƒtddƒtddƒtddƒtddƒƒdƒdk�st‚t ttddƒtddƒtddƒtddƒtddƒtddƒƒdƒdk�sRt‚t dddddgdƒdk�spt‚t ddddddgdƒdk�s�t‚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�sþt‚ttd*d+ƒtd,d-ƒtd.d/ƒtd0d1ƒtd2d3ƒƒ}t |td tt  td  ƒtd4ƒd5 k�s\t‚ttd6d7ƒtd8d9ƒtd:d;ƒtd<d=ƒƒ}t |td tt  td  ƒtd>ƒd) k�s²t‚ttd?d@ƒtdAdBƒtdCdDƒtdEdFƒtdGdHƒƒ}t |td tt  td  ƒtdIƒdJ k�st‚ttddƒtddƒtddƒƒ}g }tdK t tdL td   dtd  tdM   }td td  td td   dtdN   }tdN tdK t  tdM td   td td   }	| 
|||	f¡ t ||dNdO�}
|
| tdPdQƒk�søt‚|
| tdRdSƒk�st‚|
|	 tdTdUƒk�s(t‚ttddƒtddƒtddƒƒ}tdL td  dtd  td   }td td  td td   dtdN   }tdN tdK t  tdM td   td td   }	| 
|||	f¡ t ||dKdO�tdL t dtd  td   tdVdKƒik�st‚t ttddƒtddƒtddƒtddƒƒddO�ddddttj	td td  tjdK 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dM tt tjd td tjd td tjd ttd  tjdM ik�s$t‚dWdXdYdZd[d\d]d^gddddgddddgddLddgddddLgddddLgddddgg}t |dƒtd_ƒk�sŽt‚dWd`dadbdcdddedfgddLddgdddLdgddddLgddddgddddgddddgg}dWdcdgdhdidad`dddjdkdldbgddmddgddLddgddddddgdmdNddgdNdKddgdKdMddgdMdLddgdLdMdKdNdmdgg	}dWdndodptjd tjd tjd fgdddgdddgdddgdddgdddgdddgdddgg}t |td td  tt  td  ƒtdqdƒk�	sìt‚t |td td  tt  td  ƒtdrƒds k�
s$t‚t |td td  tt  td  ƒtdtƒdu k�
s\t‚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dddgdddgdddgdddgdddgdddgdddgdddgg	}t |dƒtdƒd k�s*t‚dvdwdxdydzd{d|d}d~dd€d�d‚dƒd„d…d†d‡dˆd‰gdsddddŠgd‹dLdddŒgdKdddLdMgd�ddddŽgd�dddd�gdmddddNgdMd�dd�dKgdNdŒddsdmgdŠdŽddmdsgdŒdNdd�d‹gdŽdŠddKd�gd�dMdLd‹d�gg}tt |dƒd‘ ƒd’k �st‚td td  td  }d“d”d•d–d—d˜d™dšd›dœd�dždŸd d¡d¢d£d¤d¥d¦d§d¨d©dªd«d¬d­d®d¯d°gddNdŠgd±dNdgdŠdŒdgddŒd±gdŠdNdgddNd±gddŒdŠgd±dŒdgddd�gd²ddgdd�dSgdSd²dgd³ddgddd´gdµd³dgdd´dµgd¶d�dgdd²d¶gdd³d·gd·d´dgddMd�gd‹dMdgdd�d¸gd¸d‹dgdŽdKdLgdLdKd�gd¹dŽdLgdLd�d¹gdMdsd�gd‹dsdMgdŽdmdKgdKdmd�gdmdŽd¹gd¹d�dmgd¸d�dsgdsd‹d¸gd¶dSd�gd³dµd·gd·dµd´gd²dSd¶gg)}tt ||ƒƒdº d»k �sºt‚d¼d½d¾d¿dÀdÁdÂdÃdÄdÅdÆdÇdÈdÉdÊdËdÌdÍdÎdÏgd�dNddLgdŒd�dMdgd�ddMdNgdd�dŒdLgd�dLdŒdgdMd�ddNgdddmd�gddKd�dsgdmdKdd�gddsd�dgddsdd�gdmdd�dKgddŽdmdLgd‹ddMdsgddsdMdŽgdmdd‹dLgddLd‹dsgdMddmdŽgddNd�dgdŒdKddŠgd�dKdŒdgddŠddNgdŒdŠddgd�dNddKgdŽd�ddgdŠd‹ddgdŽddd�gdd‹dŠdgdŽddŠdgdd‹dd�gg}tt ||ƒdÐ ƒd’k �s0t‚dÑdÒdÓdÔdÕdÖd×dØdÙdÚdÛdÜdÝdÞdßdàdádâdãdädådædçdèdédêdëdìdídîdïdðdñdòdódôdõdöd÷dødùdúdûdüdýdþdÿ�d �d�d�d�d�d�d�d�d�d	�d
�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d �d!�d"�d#�d$�d%�d&�d'�d(�d)�d*�d+�d,g\dK�d-�d.g�d/�d0�d1gd³�d2�d3g�d4�d.�d5gd�d1�d6gds�d3�d7g�d8�d6�d-gd·�d7�d0g�d9�d5�d2gd��d6�d:gd¸�d;�d<gdŠ�d=�d>gdµ�d:�d?gdm�d<�d@gd�d>�d2g�dA�d@�d6g�dB�d2�d;gd±�d?�d=gd��d@�d1g�dC�d5�dDgd�dEdg�dF�d1�dGgd´�dD�dHgdMd�d=g�dI�dH�d@g�dJ�d=�d5g�dK�dG�dEgdŒ�dH�d<gdS�d?�d.gd�dL�dMgd¹�d<�d0gd‹�d.�dNgdŽ�dM�dEg�dO�dN�dHgd²�dE�d?g�dP�d0�dLgd�dN�dDg�dQ�dG�d:gdN�d7�dRg�dS�dD�d;gdL�d:�d-gd��dR�dLgdt�d-�dNg�dT�dL�dGgd¶�d;�d7g�dU�d@dg�dV�dW�dRg�dJ�d5�d>g�dXd�dNg�dP�dR�d0g�dY�d>�dZgd��d0�d@g�d[�dZ�dWgd‹�dN�d5g�d\�dHdg�d]�dZ�d3gd²�d?dg�d^d�d-gd¶�d3�d;g�d_d�d`gdŒ�d;�dHg�da�d`�dZgdL�d-�d?g�db�dNdg�dY�d`�d>g�dT�dG�dMg�dUd�d6g�d9�d>�d5g�dc�dM�ddgd�d5�dNg�de�dd�d`gd�d6�dGg�dX�d-dg�d_�dddgd·�d0�dRg�d\d�d@gd±d�d?g�dV�dR�dfgdK�d?�d-g�dg�df�ddgdm�d@�d0g�d^�d6dg�dc�df�dMg�dB�d;�d3g�dbd�dHg�dK�dM�dGg�d]�d3�dWgd��dG�d6g�dh�dW�dfgd´�dH�d;gd¹�d7�d<g�de�d`dgdt�dN�d.g�dI�d<�dHg�dhd�dWgdS�d.�d=gdN�dW�d7gdM�d=�d`g�db�dH�dNg�dS�d2�dDg�dg�dddg�d8�d-�d:g�dO�dD�dNg�d[d�dZg�dQ�d:�dEgd³�dZ�d2gdŽ�dE�ddg�dX�dN�d-g�d4�d=�d.g�dh�dfdg�dA�d6�d1gdt�d.�d-g�dad�d`g�d/�d1�dLgdŠ�d`�d=gd��dL�dfg�d^�d-�d6gdµ�dE�d:g�d[�dWdg�dI�d@�d<g�d8�d:�d6g�ded�ddgd¸�d<�d7gd�dd�dEgds�d7�dWg�dU�d6�d@g�dF�dL�d1g�da�dZdg�dO�dH�dDg�dA�d1�d@g�dgd�dfg�dC�dD�d2gd�df�dLgd�d2�dZg�d\�d@�dHgd´�d;�dDgd��df�dRgd±�d=dgd�dD�d5gd·�dR�d7gdd�ddgd¸�d7�d;g�dc�dd�dfg�d4�d5�d=gd‹�d5�d.gds�dW�d3g�dK�dE�dMgdK�d.�d?g�dB�d3�d2gd�dM�dfg�dC�d2�d5g�dV�df�dWgdµ�d?�dEgdL�d?�d:gd�dZ�d>g�dP�dL�dRgd��d:�dGg�dJ�d>�d=gdN�dR�dWgdS�d=�d?g�d]�dW�dZg�dF�dG�dLgd�dG�d1gdM�d`dgd¶�d7�d3gd��d1�d0gd²d�dEgd³�d3�dZg�dQ�dE�dGg�dY�dZ�d`gd¹�d0�d7gdm�d0�d<gdŽ�dd�dMg�d9�d2�d>gdŒ�d<�d;g�dT�dM�dLgdŠ�d>�d`g�d/�dL�d0g�d_�d`�ddg�dS�d;�d2ggµ}tt |dƒ�di ƒd’k �sTt‚tt ||ƒ�dj ƒd’k �srt‚t |td tt gddO�tt �dktdƒ td �dktdƒ ik�sºt‚t |ddO�d�dlt�dmtdƒ tt �dktdƒ t�dmtdƒ tt �dktdƒ td �dktdƒ td �dktdƒ t�dmtdƒ tt �dktdƒ td �dktdƒ i
k�slt‚d S (n  Nr   r   r   r   r!   r'   é   é(   iYüÿÿ)©éÿÿÿÿr   r   )r   r   )©r   r7   r   )©r   r   r   )©r   r   r   )r9   r!   ))r   éþÿÿÿr7   ))r;   r7   éýÿÿÿr7   r6   r:   )r6   r   ))r   r7   r   )r+   r   )r8   r   ))r7   r   r   ))r7   r7   r   g…ëQ¸…ó?gX9´Èvê¿g×£p=
×÷¿gP�—nÀgTã¥›Ä ÀgÁÊ¡E¶óù¿gö(\�ÂõÀg²�ï§ÆK·¿gHáz®G	Àg1¬Zdï¿g}?5^ºÉ@gL7‰A`åÀ?gÏ÷Sã¥@l   ‡le4_9 l     QJgX9´Èv>@gð§ÆK7‰@gB`åÐ"Û÷?g
×£p=
õ¿g{®Gáz
ÀgZd;ßO	Àçáz®GaÀgáz®GáÀg-²�ï§FÀg¬Zd;ßý?l   ;U(h*Y l     ÝÒgìQ¸…ëÀgh‘í|?5þ¿g¼t“V
Àg;ßO�—î@gbX9´ÈÀgçû©ñÒMæ¿gú~j¼t“ä¿gh‘í|?5	Àl   ÁE¥uj g5^ºIË?g°rh‘í|ÀgF¶óýÔxÀg+‡ÙÎ@gÁÊ¡E¶óÝ?gj¼t“„@g…ëQ¸…@g333333õ¿gçû©ñÒMÚ¿gNbX9´ð¿l   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   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   ©r   r   r   i	=  i+„  r(   é%   iÀ  )g¯aIû{ËÔ¿r   çäFˆ8Û?)g¯aIû{ËÔ?r   çäFˆ8Û¿)çS¡ÊÒà¿r   ç×ˆò?0´¹?)çS¡ÊÒà?r   ç×ˆò?0´¹¿)rT   çPé/7ïÆÓ¿rO   )rT   çPé/7ïÆÓ?rO   )rR   rU   rP   )rR   rV   rP   )ç¯aIû{ËÄ¿ç      à¿rR   )rW   ç      à?rR   )ç¯aIû{ËÄ?rX   rT   )rZ   rY   rT   )rP   rU   rT   )rP   rV   rT   )çS¡ÊÒÐ¿ça- ‘!rÈ?rP   )r[   ça- ‘!rÈ¿rP   )çS¡ÊÒÐ?r\   rO   )r^   r]   rO   )rO   rU   rR   )rO   rV   rR   é   é   é   é   é   é   é   gZÂžáÄ?gê-�™—q=)r   gÍ;fž æ¿r   )r   gÍ;fž æ?r   )çØ¨ô/‹h½?çÍ;fž Ö¿çH¥Hî~?ã¿)rf   çÍ;fž Ö?rh   )ç%ö–D¸ÊÇ?çœü·SNâ¿ç%ö–D¸Ê×?)rj   çœü·SNâ?rl   )çH¥Hî~?Ó?çÙz5øË¿çH¥Hî~?ã?)rn   çÙz5øË?rp   )ç[ ”Û$ß?rg   ç%ö–D¸Ê×¿)rr   ri   rs   )rh   r   rs   )çH¥Hî~?Ó¿ro   rh   )rt   rq   rh   )rp   r   rl   )ç~ÏEº¡™Ú?rk   r   )ru   rm   r   )rl   r   rh   )ç~ÏEº¡™Ú¿rk   r   )rv   rm   r   )ç·Ío™…å¿ro   r   )rw   rq   r   )ç·Ío™…å?ro   r   )rx   rq   r   )rs   r   rp   )ç[ ”Û$ß¿rg   rl   )ry   ri   rl   )ç%ö–D¸ÊÇ¿rk   rs   )rz   rm   rs   )çØ¨ô/‹h½¿rg   rp   )r{   ri   rp   é   é   é   é   é   é   é   é   é   g¤ÅÃœ Ö?g�íµ ÷Æ°>)rW   rX   çy«s©æ¿)rW   rY   r…   )rZ   rX   çy«s©æ?)rZ   rY   r†   )rQ   r   r…   )rS   r   r†   )r[   ç¨ô—›wãé¿rW   )r[   ç¨ô—›wãé?rW   )r^   r‡   rZ   )r^   rˆ   rZ   )rP   rU   r†   )rP   rV   r†   )rO   rU   r…   )rO   rV   r…   )r…   rX   rZ   )r…   rY   rZ   )r†   rX   rW   )r†   rY   rW   )çåFˆ8ë¿r   rW   )çäFˆ8ë?r   rZ   g      ô?)r   r   ç�¿ÊOëÀ)r   r   ç�¿ÊOë@)r   çTúËÍ»ñÀr‹   )r   r�   rŒ   )r   çTúËÍ»ñ@r‹   )r   rŽ   rŒ   )çwöVnÀçTúËÍ»ñô¿r‹   )r�   r�   rŒ   )r�   çTúËÍ»ñô?r‹   )r�   r‘   rŒ   )çwöV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–   )çy«s©ö¿r   r•   )r¥   r   r^   )çy«s©ö?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^   )r˜   r”   rž   )r‰   r   r˜   )rŠ   r   r–   )r…   rX   r–   )r…   rY   r–   )r…   çTúËÍ»ñÀr–   )r…   rš   r–   )r…   r›   r–   )r…   çTúËÍ»ñ@r–   )r†   rX   r˜   )r†   rY   r˜   )r†   r§   r˜   )r†   rš   r˜   )r†   r›   r˜   )r†   r¨   r˜   )rP   r�   r•   )rP   r�   r^   )rP   r‘   r•   )rP   r‘   r^   )r[   r‡   r˜   )r[   rˆ   r˜   )r^   r‡   r–   )r^   rˆ   r–   )rO   r�   r—   )rO   r�   r[   )rO   r‘   r—   )rO   r‘   r[   éB   é/   é,   é>   éM   é[   é1   é!   éS   éT   é5   é$   éI   é.   é@   é+   é:   éH   é3   éJ   é<   é#   éO   éN   é8   éL   éQ   éK   é   é*   é)   éY   éG   éU   éA   é"   é    é0   é-   éF   éX   é&   éC   é9   é;   éW   é?   é4   é'   é7   é   éE   éR   éZ   é6   éD   é2   éV   éP   é=   gØfð³I@gè×1:²o@i5  é}   iq  )r	   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@   sÎ   ÿÿÿ ÿÿþÿÿþþþ  þ$ÿÿÿ
 ÿÿÿ
ÿÿÿ
 ÿÿÿ
û$ þþþ
  þþþ
 ÿÿÿ
 þþþ
  ý
ÿ
 þ
ÿ
 ÿ
ÿ
 þ
ÿ
0,4$,4(ÿ
 ÿþ    
   
 
    
 óþ
   ÿ
 
 
 

 
ý
  ÿ
 
 
 

 
ý
     þ
 
  

 
 
 üÿ     ý$ÿ
$
ÿ
$
ÿ
$  þ      üí      çÿ
ÿÿ
Ô.                          Å<ÿ
å
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 
Û&¥\               
   
                        
               
                                              
  
                  
  
          € ø ÿ
&ÿ

4          þÿ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@t‚tdddƒ} t| tt ƒtddƒksht‚t| tt dd	�tddƒksˆt‚d S )
Nr   r   ©r   r   r:   r+   r7   r   T)Z	clockwise)	r
   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stt‚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Ðt‚d S ) Ng)\�Âõ¨Àg9´Èv¾Ÿê¿gòÒMbXÀgJ+‡ù?gTã¥›Ä 
ÀgX9´Èvô?gq=
×£pñ¿g¤p=
×£ Àg/Ý$�
@gB`åÐ"Ûå¿gÝ$�•C@r=   g®Gáz”Àg\�Âõ(\@gé&1¬ð¿g9´Èv¾Ÿ
Àr   l   #ShK6. l     ó^OWg¾Ÿ/Ý$Àg1¬ZäÀg‘í|?5^º¿g /Ý$@g®Gáz®ù¿gX9´ÈvÀgªñÒMb@gyé&1¬è¿gZd;ßÏ@gd;ßO�—Þ?l   QMüQº@ l    0Þ{é
)r   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sŠt‚t| |dd�ddttjttjtt tdd	ƒiks¾t‚t| |dd�ddttjttjiksät‚d S )Nrë   r9   r+   r:   r   r   r!   r?   r   r4   )r   r   r   r	   r   ræ   r   r#   ©Úpolygonrè   r$   r$   r%   Útest_max_degree  s    $Dÿ ÿÿrñ   c                  C   sÆ   ddddddddgd	d
ddgddddgdd
ddgddddgdddd	gddd
d	gg} | d }| dd … }t ||ƒ}td|||ƒdks†t‚td|||dd�ddttdd	ƒttdd	ƒttdd	ƒiksÂt‚d S )NrA   rC   rD   rE   rF   rG   rH   rI   r   r4   r    r!   r'   r   r   r   iƒÿÿÿr?   i�ýÿÿ)r   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@t‚ttd td  ||dd�d	d	dd
ttddƒtdikszt‚d S )Nr)   )r'   r!   r+   r   iE  r4   r   r?   r   r'   r¾   r!   r>   )r   Úsidesr   r   r   r   r   r#   )ÚtriangleÚfacetsrô   r$   r$   r%   Útest_main_integrate.  s    &ÿrù   c               
   C   s’   ddddddddgd	d
ddgddddgdd
ddgddddgdddd	gddd
d	gg} | d }| dd … }| d }t |ddgd||ddƒdksŽt‚d S )NrA   rC   rD   rE   rF   rG   rH   rI   r   r4   r    r!   r'   r   r   r   rL   içÿÿÿ)r   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&t‚d S )NrA   rM   rL   rK   r   )r   r   r#   )Úpointr$   r$   r%   Útest_distance_to_sideB  s    rü   c                  C   sH   ddddg} ddg}t | d|ddƒdks,t‚t | d|ddƒdksDt‚d S )NrD   rH   rI   rE   r   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sTt‚t|d||dttfdƒdkstt‚d S )Nr   r!   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 }ddddgddddg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 t	‚t|d||ddttfddd||dƒdksÌt	‚d S )Nr   r!   r'   r   rd   rƒ   r   )
r   r   rö   r   Zpointsr   r   r   r   r#   )r÷   rø   rþ   rÿ   Zx0Zmonomial_valuesr$   r$   r%   Ú"test_integration_reduction_dynamicV  s4    
 
ÿ    ÿÿ    ÿÿr  c                   C   sZ   t dƒdkst‚t dƒdks t‚t tddƒƒdks6t‚t dƒdksFt‚t dƒdksVt‚d S )Nr   F)r   r!   Tr!   )r   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sžt‚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�s(t‚d S )Nr   r   r   r   r4   r!   re   )	r   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>   s6   <
   @		