o
    oÇhéf  ă                   @   sŽ  d Z ddlmZmZmZmZmZ ddl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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#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/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? dd	l@mAZA dd
lBmCZC ddlDmEZE ddlFmGZG ddlHmIZI ddlJmKZK dd e7 D \ZLZMZNZOZPZQZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd  ZZd!d" Z[d#d$ Z\d%d& Z]d'd( Z^d)d* Z_d+d, Z`d-d. Zad/d0 Zbd1d2 Zcd3d4 Zdd5d6 Zed7d8 Zfd9d: Zgd;d< Zhd=d> Zid?d@ ZjdAdB ZkdCdD ZldEdF ZmdGdH ZndIdJ ZodKdL ZpdMdN ZqdOdP ZrdQdR ZsdSdT ZtdUdV ZudWdX ZvdYdZ Zwd[S )\z.Tests for dense recursive polynomials' tools. é    )Ú
dup_normalÚ
dmp_normalÚdup_from_raw_dictÚdmp_convertÚdmp_swap)Údmp_mul_ground)%Údup_clear_denomsÚdmp_clear_denomsÚdup_integrateÚdmp_integrateÚdmp_integrate_inÚdup_diffÚdmp_diffÚdmp_diff_inÚdup_evalÚdmp_evalÚdmp_eval_inÚdmp_eval_tailÚdmp_diff_eval_inÚ	dup_truncÚ	dmp_truncÚdmp_ground_truncÚ	dup_monicÚdmp_ground_monicÚdup_contentÚdmp_ground_contentÚdup_primitiveÚdmp_ground_primitiveÚdup_extractÚdmp_ground_extractÚdup_real_imagÚ
dup_mirrorÚ	dup_scaleÚ	dup_shiftÚ	dmp_shiftÚdup_transformÚdup_composeÚdmp_composeÚdup_decomposeÚdmp_liftÚdup_sign_variationsÚ
dup_revertÚ
dmp_revert)ÚANP)ÚMultivariatePolynomialErrorÚExactQuotientFailedÚNotReversibleÚDomainError)Úf_polys)ÚFFÚZZÚQQÚZZ_IÚQQ_IÚEXÚRR)Úring)ÚI)ÚS)Úsin)Úx)Úraisesc                 C   s   g | ]}|  Ą qS Š )Úto_dense)Ú.0Úfr@   r@   úu/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/polys/tests/test_densetools.pyÚ
<listcomp>4   ó    rE   c                   C   s  t g dtg ks
J t g dtg ksJ t tdgdttdtdgks'J t tdgdttddtdtdgks>J t tdtdtdgdttdtdtdgksZJ t tdtdtdgdttddtdtdtdgkszJ t tdtdtdgdttddtddtddtdtdgksJ t tdtdtdgdttddtddtddtdtdtdgksÇJ t tdtditdttd	tdd
itksŕJ t ttdtdddtdtttdd
tdddtksJ d S )Né   é   r   é   é   é<   é   é   é    i@t  )rL   é   i   )rN   é   )r
   r5   r   r@   r@   r@   rD   Útest_dup_integrate6   s,   &.˙˙&˙,˙˙ ˙rQ   c                   C   s  t tdgddttddtdtdgksJ t g ggddtg ggks'J t g ggddtg ggks6J t tdgggddttdggg ggksMJ t tdgggddttddggg gg ggksgJ t tdgtdgtdggddttdgtdgtdggksJ t tdgtdgtdggddttddgtdgtdgg gksŻJ t tdgtdgtdggddttddgtddgtddgg g gks×J t tdgtdgtdggddttddgtddgtddgg g g gksJ d S )NrG   rH   r   rI   rJ   rK   )r   r5   r@   r@   r@   rD   Útest_dmp_integrateM   s"   0.4$˙$˙$$˙$&˙rR   c                	      s  t tdtt t dddtttt dddtddtdddtks$J t dddtttt dddtddtdddtksAJ t dddtttt dddtddtdddtks^J t dddtttt dddtddtdddtks{J tt fdd tt fdd d S )NrI   rH   rG   r   c                      ó   t  dddtS ŠNrG   é˙˙˙˙rI   Šr   r5   r@   ŠrC   r@   rD   Ú<lambda>p   ó    z'test_dmp_integrate_in.<locals>.<lambda>c                      rS   ŠNrG   é   rI   rV   r@   rW   r@   rD   rX   q   rY   )	r   Úf_6r4   r5   r   r   r   r?   Ú
IndexErrorr@   r@   rW   rD   Útest_dmp_integrate_in`   s.    ˙˙ ˙˙ ˙˙ ˙˙r^   c                  C   sö  t g dtg ks
J t dgdtg ksJ t ddgdtdgks"J t g d˘dtddgks0J t g d˘dtg d˘ks>J t g d˘dtg d˘ksLJ tg d	˘t} t | d
t| ks]J t | dtg d˘ksiJ t | dtt t | dtdtks{J t | dtt t t | dtdtdtksJ td}tg d	˘|} t | d|tg d˘|ksŤJ t | d|tg d˘|ksşJ t | d|tg |ksÇJ t | d
|| ksŃJ t | d|t t | d|d|ksăJ t | d|t t t | d|d|d|ksůJ d S )NrG   é   rH   ŠrG   rH   rG   )rG   rH   rI   r[   )rI   r[   rI   ŠrG   rU   r   r   rH   )r[   éý˙˙˙r   r   )rM   é"   é8   i§ţ˙˙é   éL   r   r   rJ   rI   r_   r   )
éŞ   i2  iŔ  iö˙˙é   i|  r   r   é   rI   rI   )
rH   r   rG   r   r   rH   r   r   r   r   )rG   r   r   rH   r   r   r   )r   r4   r   r3   )rC   ÚKr@   r@   rD   Útest_dup_difft   s6   $˙˙$˙˙rk   c                  C   sx  t g ddtg ksJ t g gddtg gksJ t g ggddtg ggks'J t dgdgggddtg ggks9J t dggg ggddtdgggksLJ t dggdggg ggddtdggdgggkseJ t g d˘ddttg d˘dtksxJ t tddttksJ t tddtdggg ggg d˘g g g d	˘ggg ggd
ggdggg gdgg ddgg gg gggks´J t tddtt t tddtddtksÉJ t tddtt t t tddtddtddtksăJ td} ttd| }t |dd| |ksřJ t |dd| t |dd| ks	J t |dd| t t |dd| dd| ksJ t |dd| t t t |dd| dd| dd| ks:J d S )NrG   r   rH   rI   é   ra   i!  )é   r   r   )iy˙˙˙r   r   iYţ˙˙iŃ˙˙˙é   é^   re   )r   r4   r   r\   r3   r   )rj   ÚF_6r@   r@   rD   Útest_dmp_diff   s>   $&2˙&
ý˙˙
˙",˙rq   c                	   C   s  t tdddtttttdddtddtdddtksJ t tdddtttttdddtddtdddtks:J t tdddtttttdddtddtdddtksWJ t tdddtttttdddtddtdddtkstJ ttdd  ttdd  d S )NrH   rG   rI   r   c                   S   ó   t tdddtS rT   Šr   r\   r4   r@   r@   r@   rD   rX   ź   rY   z"test_dmp_diff_in.<locals>.<lambda>c                   S   rr   rZ   rs   r@   r@   r@   rD   rX   ˝   rY   )r   r\   r4   r   r   r?   r]   r@   r@   r@   rD   Útest_dmp_diff_in˛   s   $˙$˙$˙$˙rt   c                   C   sH   t g dtdks
J t ddgdtdksJ t g d˘dtdks"J d S )Nr_   r   rG   rH   ŠrG   rH   rI   éB   )r   r4   r@   r@   r@   rD   Útest_dup_evalż   s   rw   c                   C   s  t g ddtdksJ t g gddtg ksJ t g ggddtg gks%J t ddggddtddgks5J t dgggddtdggksEJ t ddgggddtddggksWJ t ddgddggddtddgksjJ t ddggddgggddtddggksJ d S )NrI   r   rG   rH   é
   rP   )r   r4   r@   r@   r@   rD   Útest_dmp_evalĹ   s     $&0ry   c                  C   sV  t tdddttttdddtddtksJ t tdddttttdddtddtks.J t tdddtttttdddtddtdddtksKJ t tdddtttttdddtddtdddtkshJ tdggg gg gtdgd	gg tdtdtd
tdggg} t | dddtdgg g g d˘gksJ ttdd  ttdd  d S )Néţ˙˙˙rG   rI   r   r_   rH   é-   é÷˙˙˙rU   rx   )r|   rU   r   iÔ˙˙˙c                   S   ó   t ttdddtS rT   Šr   r\   r4   r@   r@   r@   rD   rX   ă   rF   z"test_dmp_eval_in.<locals>.<lambda>c                   S   r}   rZ   r~   r@   r@   r@   rD   rX   ä   rF   )r   r\   r4   r   r   Úintr?   r]   rW   r@   r@   rD   Útest_dmp_eval_inÔ   s,   
˙˙
˙˙ 
˙ 
˙@˙r   c                   C   s  t g gdgdtg ksJ t g ggdgdtg gksJ t g ggddgdtg ks+J t tg dttks6J t tg d˘dtdksCJ t tddgdtg d˘ksRJ t tdgdtddgd	gg d
˘gksfJ t tddgdtg d˘ksuJ t tdd	gdtg d˘ksJ t tdd	gdtg d˘ksJ t tddgdtg d˘ks˘J t tddgdtg d˘ksąJ t tg d˘d	tg d˘ksŔJ d S )NrG   rH   )rG   éď˙˙˙rP   iJ r   rP   )iú˙˙rI   iO éS   rI   )i.  éQ   rG   )ix˙˙˙iS=  iÎ#  iř˙˙iô˙˙˙)iú˙˙r   iBý˙˙i8ű˙˙r   iý˙˙)é   éR   iĂë˙˙i8˙˙iěĹ˙˙iäý˙˙é   rU   )
l   Áoä iů lü˙˙˙fc5lý˙˙˙y
?÷i(č˙l   2c[l   ţ|U78éü˙˙˙l   XLk^ i× )rU   i˛˙˙˙iř˙˙iXť˙˙)r   rH   r[   )i°  r   r   i  )	r   r4   Úf_0Úf_1Úf_2Úf_3Úf_4Úf_5r\   r@   r@   r@   rD   Útest_dmp_eval_tailç   s2   (˙˙˙˙˙˙"r   c                	   C   sz   t tddddtttttdddtddtddtksJ t tddddttttddtddtks4J ttdd  d S )NrH   r_   rG   rI   r   c                   S   s   t tdtdddtS rZ   )r   r\   r4   r@   r@   r@   rD   rX     ó    z'test_dmp_diff_eval_in.<locals>.<lambda>)r   r\   r4   r   r   r   r?   r]   r@   r@   r@   rD   Útest_dmp_diff_eval_in  s   "˙˙r   c                  C   s   t dd t dt ddt dt dd t dt dg} t ddt dt ddt dt ddt dt dg}t| dt |ks@J ttd	d
  d S )NrG   éĐ  r   ri   rH   é=   rO   rP   c                   S   ó   t tdtdgdtS )NrG   r   rI   )r+   r5   r@   r@   r@   rD   rX     ó    z!test_dup_revert.<locals>.<lambda>)r5   r+   r?   r0   ŠrC   Úgr@   r@   rD   Útest_dup_revert  s   84r   c                  C   s   t dd t dt ddt dt dd t dt dg} t ddt dt ddt dt ddt dt dg}t| ddt |ksAJ ttd	d
  d S )NrG   r   r   ri   rH   r   rO   rP   c                   S   s   t dggddtS ŠNrG   rH   )r,   r5   r@   r@   r@   rD   rX     s    z!test_dmp_revert.<locals>.<lambda>)r5   r,   r?   r.   r   r@   r@   rD   Útest_dmp_revert  s   84r   c                  C   sź   t g d˘tdtg d˘ksJ t g d˘tdtg d˘ks J t} t | d| d| dg| d| | d| d	gks=J td}t |d|d|dg|d||d|d
gks\J d S )NŠrG   rH   rI   r[   rO   rl   rI   )rG   rU   r   rG   rU   r   )rl   rO   r[   rI   rH   rG   )rU   rG   r   rU   rG   r[   rO   rG   rU   r   )r   r4   r6   r3   )ÚRrj   r@   r@   rD   Útest_dup_trunc  s     6:r   c                   C   sT   t g gddgdtg gksJ t ddgg d˘dggddgdtdgdggks(J d S )NrG   rH   )rG   r[   rG   rb   )r   r4   r@   r@   r@   rD   Útest_dmp_trunc(  s   6r   c                   C   sH   t ttddttg d˘dggg gg d˘g d˘dgggdtks"J d S )NrI   rH   )rG   rU   r   rU   )rG   rU   rG   rG   )r   r   r4   r   r@   r@   r@   rD   Útest_dmp_ground_trunc-  s
   (˙˙r   c                   C   s   t g d˘tg d˘ksJ ttdd  t g tg ksJ t tdgttdgks,J t tdtdtdgttdtddtdgksHJ d S )	NŠrI   rl   é	   ru   c                   S   s   t g d˘tS )N)rI   r[   rO   )r   r4   r@   r@   r@   rD   rX   6  s    z test_dup_monic.<locals>.<lambda>rG   r_   é   rI   )r   r4   r?   r/   r5   r@   r@   r@   rD   Útest_dup_monic3  s
   <r˘   c                   C   sÜ   t g d˘dtg d˘ksJ t dgdgdggdtdgdgdggks$J ttd	d
  t g gdtg gks7J t tdggdttdggksIJ t tdgtdgtdggdttdgtddgtdggkslJ d S )Nr   r   ru   rI   rl   r    rG   rH   c                   S   s   t dgdgdggdtS )NrI   r[   rO   rG   )r   r4   r@   r@   r@   rD   rX   C  r   z'test_dmp_ground_monic.<locals>.<lambda>r_   rĄ   )r   r4   r?   r/   r5   r@   r@   r@   rD   Útest_dmp_ground_monic=  s   ,˙$˙˙rŁ   c                   C   s  t g ttdksJ t dgttdksJ t dgttdks#J t ddgttdks0J t ddgttdks=J t g d˘ttdksJJ t g d˘ttdksWJ t tddtdd	gttdd	kskJ t tddtdd
gttddksJ d S )Nr   rG   rU   rH   r`   )rH   r[   rH   rI   r[   r    rO   é   )r   r4   r5   r@   r@   r@   rD   Útest_dup_contentK  s   (,rĽ   c                   C   s  t g gdttdksJ t g gdttdksJ t dggdttdks(J t dggdttdks6J t dgdggdttdksFJ t dgdggdttdksVJ t dgdgdggdttdkshJ t dgdgdggdttdkszJ t tddgtddggdttddksJ t tddgtddggdttdd	ks¨J t tdttdks´J t tttddtdttdksÇJ t tdttdksÓJ t tttddtdttdksćJ t tdttdksňJ t tttddtdttdksJ t tdttdksJ t tttddtdttdks'J t tdttdks4J t tttd
dtdttd
ksHJ t t	dttdksUJ t tt	tddtdttdksiJ t t
dttdksvJ t tt
tddtdttdksJ d S )NrG   r   rU   rH   r[   rI   r    rO   r¤   rl   r_   rP   )r   r4   r5   r   r   r   r   r   r   r   r\   r@   r@   r@   rD   Útest_dmp_ground_contentX  sh     $$..˙˙˙˙˙
˙˙
˙˙
˙˙
˙˙˙rŚ   c                   C   sź  t g ttdg fksJ t tdgttdtdgfks J t tdtdgttdtdtdgfks9J t tdtdgttdtdtdgfksRJ t tdtdtdgttdtdtdtdgfksqJ t tdtdtdgttdtdtdtdgfksJ t g ttdg fksJ t tdgttdtdgfks°J t tdtdgttdtdtdgfksÉJ t tdtdgttdtdtdgfksâJ t tdtdtdgttdtdtdtdgfksJ t tdtdtdgttdtdtdtdgfks"J t tddtddgttddtdtdgfks?J t tddtddgttddtdtd	gfks\J d S )
Nr   rG   rH   r[   rI   r    rO   r¤   rl   )r   r4   r5   r@   r@   r@   rD   Útest_dup_primitive  sL   &22˙˙˙˙&22˙
˙˙
˙˙
˙˙˙r§   c                   C   s  t tdgdttdtdgfksJ t g gdttdg gfks$J t tdttdtfks2J t tttddtdttdtfksGJ t tdttdtfksUJ t tttddtdttdtfksjJ t tdttdtfksxJ t tttddtdttdtfksJ t tdttdtfksJ t tttddtdttdtfks°J t tdttdtfksžJ t tttddtdttdtfksÓJ t tdttdtfksáJ t tttddtdttdtfksöJ t t	dttdt	fksJ t tt	td	dtdttd	t	fksJ t tdggdttdtdggfks2J t t
dggdt
t
dt
dggfksIJ t t
ddgt
dd
ggdt
t
dd
t
dgt
dggfkskJ t t
ddgt
ddggdt
t
ddt
dgt
dggfksJ d S )NrG   r   rH   rI   r[   rO   rl   r_   rP   r    r¤   )r   r4   r   r   r   r   r   r   r   r\   r5   r@   r@   r@   rD   Útest_dmp_ground_primitive  sp   ( ˙
˙˙
˙˙
˙˙
˙˙
˙˙
˙˙

˙..˙
˙˙˙r¨   c                  C   sV   t g d˘t} t g d˘t}t g d˘t}t g d˘t}t| |td||fks)J d S )N)é š, r   éŔ! r   é°b r   éä˛  )é Vr   é + r   é`Ĺ r   )é@   r   é0   r   rJ   r   rG   )é  r   éŔ   r   ri   r   rŹ   )r   r4   r   ŠrC   r   ÚFÚGr@   r@   rD   Útest_dup_extractĹ  s
   rˇ   c                  C   s    t dgg dgg dgg dggdt} t dgg dgg dgg gdt}t d	gg d
gg dgg dggdt}t dgg dgg dgg gdt}t| |dtd||fksNJ d S )NrŠ   rŞ   rŤ   rŹ   rG   r­   rŽ   rŻ   r°   rą   rJ   r˛   rł   ri   )r   r4   r   r´   r@   r@   rD   Útest_dmp_ground_extractĎ  s   ˙" r¸   c                	   C   sL  t g tg gg gfksJ t dgtdggg gfksJ t ddgtdgdggddggfks0J t ddgtdgdggddggfksDJ t g d˘tdgdgg d˘gddgddggfks^J t tdtdtdtdgttdgg tdtdtdgtdggtdtdgg tdtdtdtdggfksJ ttd	d
  d S )NrG   r   rH   ru   )rU   r   rI   rI   rb   rU   c                   S   s   t tdtdgtS r   )r    r8   r@   r@   r@   rD   rX   é  r   z$test_dup_real_imag.<locals>.<lambda>)r    r4   r?   r1   r@   r@   r@   rD   Útest_dup_real_imagÚ  s   ((˙ ˙ (,
ţrš   c                   C   s`   t g tg ks	J t dgtdgksJ t g d˘tg d˘ks!J t g d˘tg d˘ks.J d S )NrG   ŠrG   rH   rI   r[   rO   ŠrG   rz   rI   r   rO   r   )rU   rH   rb   r[   éű˙˙˙rl   )r!   r4   r@   r@   r@   rD   Útest_dup_mirrorí  s   r˝   c                   C   sh   t g dtg ks
J t dgdtdgksJ t g d˘dtg d˘ks$J t g d˘dtg d˘ks2J d S )NrU   rG   rş   rť   iů˙˙˙)ia	  iRý˙˙é   iä˙˙˙rO   )r"   r4   r@   r@   r@   rD   Útest_dup_scaleő  ó    rż   c                   C   sh   t g dtg ks
J t dgdtdgksJ t g d˘dtg d˘ks$J t g d˘dtg d˘ks2J d S )NrG   rş   )rG   rl   r¤   é   r¤   r_   )rG   é   iS  i°  iĂ  )r#   r4   r@   r@   r@   rD   Útest_dup_shiftý  rŔ   rĂ   c                  C   s´   t tdtdgtdgdttdtdgksJ t g gtdtdgdtg gks-J tdtdgg g} tdtdgtdtdgg}t | tdtdgdt|ksXJ d S )NrG   rH   r   rI   )r$   r4   )ÚxyÚx1y2r@   r@   rD   Útest_dmp_shift  s
   4& &rĆ   c                   C   s~   t g g ddgtg ksJ t g dgddgtg ksJ t g ddgddgtg ks*J t g d˘g d˘ddgtg d˘ks=J d S )NrG   rH   )rl   rź   r[   rb   rM   )rG   rb   r[   rb   )	rl   iŽ˙˙˙i  ic÷˙˙i  iMÎ˙˙i'C  iÝĘ˙˙iĽ  )r%   r4   r@   r@   r@   rD   Útest_dup_transform  s   ˙rÇ   c                   C   s(  t g g tg ks
J t g dgtg ksJ t g ddgtg ks!J t dgg tdgks-J t g d˘g tg ks9J t g d˘g tdgksFJ t g d˘dgtdgksTJ t g d˘dgtdgksbJ t g d˘ddgtg d	˘ksrJ t g d˘ddgtg d
˘ksJ t g d˘g d˘tg d˘ksJ d S )NrG   rH   )rG   rH   r   r`   r[   r_   r°   rU   ŠrG   r   r   )rG   r[   r[   ŠrG   r[   rP   rP   r[   )r&   r4   r@   r@   r@   rD   Útest_dup_compose  s     $rĘ   c                   C   s  t g d˘g d˘dtg d˘ksJ t g ggg ggdtg ggks"J t g ggdgggdtg ggks4J t g ggdggdgggdtg ggksIJ t dgggg dtdgggksZJ t dgdgg gg gdtg gkslJ t dgdgdggg gdtdggksJ t dgdgdggdggdtdggksJ t dgdgdggdggdtdggksŞJ t dgdgdggdgd	ggdtdgg g gksĂJ t dgdgdggdgdggdtdgdgdggksŢJ t dgdgdggdgdgdggdtdgdgd
gd
gdggks˙J d S )Nr`   r   rÉ   rH   rG   r[   r_   r°   rU   rP   )r'   r4   r@   r@   r@   rD   Útest_dmp_compose*  s    ""$*"$(**26 ˙˙rË   c                  C   sâ  t dgtdggksJ t ddgtddggksJ t g d˘tg d˘gks(J t g d˘tg d˘g d˘gks9J t g d˘tg d˘g d˘gksJJ t g d˘tg d˘g d˘gks[J t g d	˘tg d
˘g d˘gkslJ g d˘} t | tg d˘g d˘gksJ g d˘} t | tg d˘g d˘gksJ g d˘} t | tg d˘g d˘gksĽJ tdt\}}d|d  d d|d  d d|d  d|  d d|d  d|  d d|d  d |d   d!|  d" g} t | | Ą | gksďJ d S )#NrG   r   )rG   r   r   r   )rG   r   r   r   r   rČ   )rG   r   r   r   r   r   r   )r_   r   r   r   rG   )r_   r   rG   )r[   r   rI   r   rH   )r[   rI   rH   )rG   r   rÁ   r   é   r   iô  r   iq  rz   r   iö˙˙˙r    )rG   r   r   rz   r    )rG   r   rO   r   )rH   r   é(   r   i,  r   ič  r   iâ  r   r   iě˙˙˙é   )rH   r   r   r   rÎ   )rG   r   rÁ   éř˙˙˙rĚ   i˙˙˙i  i¨ý˙˙ia  iöű˙˙iX  iV˙˙˙rL   )rG   rĎ   ri   iŢ˙˙˙rL   Útrl   rH   é*   rą   é`   r   i  i   ip  i`  r˛   él   rI   i8  i°  rł   )r(   r4   r:   Ú	to_domain)rC   r   rĐ   r@   r@   rD   Útest_dup_decompose@  s2   "˙˙"""ürŐ   c                  C   sJ  t ddt ddt ddg} tt ddg| t tg | t tg | t tt ddt ddg| t tt ddt ddg| t g}t dt dt dt dt dt dt dt dt dt dt dt dt dt dt dt dt dg}t|dt  tĄ|ksJ tdtdtdtddtddg}t|dt|ksJ ttdd	  d S )
NrG   r   rM   rH   iB  ižý˙˙iAF c                   S   r   )NrG   rH   r   )r)   r8   r@   r@   r@   rD   rX   r  r   ztest_dmp_lift.<locals>.<lambda>)r5   r-   r)   Úalgebraic_fieldr;   r7   r?   r1   )ÚqÚf_aÚf_liftÚf_gr@   r@   rD   Útest_dmp_liftc  s   &4˙60˙&rŰ   c                   C   s  t g tdks	J t ddgtdksJ t g d˘tdksJ t g d˘tdks*J t g d˘tdks5J t g d˘tdks@J t g d˘tdksKJ t g d˘tdksVJ t g d	˘tdksaJ t g d
˘tdkslJ t g d˘tdkswJ t g d˘tdksJ t g d˘tdksJ t g d˘tdksJ t g d˘tdksŁJ t g d˘tdksŽJ t g d˘tdksšJ t g d˘tdksÄJ t g d˘tdksĎJ t g d˘tdksÚJ t g d˘tdksĺJ t g d˘tdksđJ t g d˘tdksűJ t g d˘tdksJ d S )Nr   rG   )rG   r   rH   )rG   r   rI   r   )rG   r   r[   r   rO   )rU   r   rH   )rU   r   rI   r   )rU   r   r[   r   rO   )rU   r   rź   )rG   r   rź   )rG   r[   rź   )rG   r   rO   rH   )rU   r[   rź   )rU   r[   rO   )rU   r   rO   )rG   r[   rO   )rU   r   r   r   rź   )rG   r   r   r   rź   )rG   r   r[   r   rź   )rG   r   r   r   rO   )rU   r   r[   r   rź   )rU   r   r   r   rO   )r*   r4   r@   r@   r@   rD   Útest_dup_sign_variationsu  s0   rÜ   c                  C   s¸  t g tttdg fksJ t tdgtttdtdgfks"J t tdgtttdtdgfks6J t tddgttdtdgfksJJ t tddgtttdtdgfks_J t tdtdtdgtttdtdtdtdgfksJ t tdtddtdgtttdtdtdtdgfks J t tdtdtdgttddtdtdtdtdgfksÂJ t tdtddtdgttddtdtdtdtdgfksĺJ t ttdd ttdd	 gttd	td
tdgfksJ t tdgttdtdgfksJ t tttt tdgtttttttdgfks;J t tĄ} t | ddt d  | dg| }t	|dksZJ d S )NrG   r_   rI   r   rH   TŠÚconvertr    r[   rl   gE/ŁXnů @gjŢq @g¤p=
×Ł@g        z0(x + 0.353356890459364, [1.05971731448763, 0.0]))
r   r5   r4   r8   r<   r=   r>   r9   Ú
frac_fieldÚstr)rľ   Úresultr@   r@   rD   Útest_dup_clear_denoms  sV   (((*˙˙˙˙
˙˙˙˙
˙˙˙˙ ˙
˙(@
"râ   c                   C   sH  t g gdtttdg gfksJ t tdggdtttdtdggfks(J t tdggdtttdtdggfks?J t tddggdttdtdggfksVJ t tddggdtttdtdggfksnJ t tdgtdgg gdtttdtdgtdgg gfksJ t tdgtddgg gdtttdtdgtdgg gfksąJ t tdtdtdgdttddtdtdtdtdgfksÔJ t tdtddtdgdttddtdtdtdtdgfksřJ t tdgtdgg gdttddtdtdgtdgg gfksJ t tdgtddgg gdttddtdtdgtdgg gfksAJ t ttdd gttdd	 ggdttd	td
gtdggfkshJ t tdggdttdtdggfksJ t tttt tdggdtttttttdggfks˘J d S )NrG   r_   rI   rH   r   TrÝ   r    r[   rl   )r	   r5   r4   r8   r<   r=   r>   r@   r@   r@   rD   Útest_dmp_clear_denoms°  sp   "...0˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙
˙˙
˙&˙
˙.Jră   N)xÚ__doc__Úsympy.polys.densebasicr   r   r   r   r   Úsympy.polys.densearithr   Úsympy.polys.densetoolsr   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,   Úsympy.polys.polyclassesr-   Úsympy.polys.polyerrorsr.   r/   r0   r1   Úsympy.polys.specialpolysr2   Úsympy.polys.domainsr3   r4   r5   r6   r7   r8   r9   Úsympy.polys.ringsr:   Úsympy.core.numbersr;   Úsympy.core.singletonr<   Ú(sympy.functions.elementary.trigonometricr=   Ú	sympy.abcr>   Úsympy.testing.pytestr?   r   r   r   r   r   r   r\   rQ   rR   r^   rk   rq   rt   rw   ry   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@   rD   Ú<module>   sh    $!
		
**

	#