a
    kş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 Š )Zto_dense)Ú.0Úfr@   r@   úO/var/www/auris/lib/python3.9/site-packages/sympy/polys/tests/test_densetools.pyÚ
<listcomp>4   ó    rD   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sNJ 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s´J t tdtdtdgdttddt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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  )rK   é   i   )rM   é   )r
   r5   r   r@   r@   r@   rC   Útest_dup_integrate6   s,    &.˙˙&˙
,˙
˙
 ˙rP   c                   C   s  t tdgddttddtdtdgks0J t g ggddtg ggksNJ t g ggddtg ggkslJ t tdgggddttdggg ggksJ t tdgggddttddggg gg ggksÎJ 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sbJ 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 )NrF   rG   r   rH   rI   rJ   )r   r5   r@   r@   r@   rC   Útest_dmp_integrateM   s"    0.4$˙
$˙
$$˙
$&˙rQ   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sHJ 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 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 )NrH   rG   rF   r   c                      s   t  dddtS ŠNrF   é˙˙˙˙rH   Šr   r5   r@   ŠrB   r@   rC   Ú<lambda>p   rE   z'test_dmp_integrate_in.<locals>.<lambda>c                      s   t  dddtS ŠNrF   é   rH   rT   r@   rU   r@   rC   rV   q   rE   )	r   Úf_6r4   r5   r   r   r   r?   Ú
IndexErrorr@   r@   rU   rC   Ú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sDJ t g d˘dtddgks`J t g d˘dtg d˘ks|J t g d˘dtg d˘ksJ tg d	˘t} t | d
t| ksşJ t | dtg d˘ksŇJ 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sZJ t | d|tg d˘|kszJ 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 )NrF   é   rG   ŠrF   rG   rF   )rF   rG   rH   rX   )rH   rX   rH   ŠrF   rS   r   r   rG   )rX   éý˙˙˙r   r   )rL   é"   é8   i§ţ˙˙é   éL   r   r   rI   rH   r\   r   )
éŞ   i2  iŔ  iö˙˙é   i|  r   r   é   rH   rH   )
rG   r   rF   r   r   rG   r   r   r   r   )rF   r   r   rG   r   r   r   )r   r4   r   r3   )rB   ÚKr@   r@   rC   Útest_dup_difft   s6    $˙˙
  &˙˙rh   c                  C   s  t g ddtg ksJ t g gddtg gks0J t g ggddtg ggksNJ t dgdgggddtg ggksrJ t dggg ggddtdgggksJ t dggdggg ggddtdggdgggksĘJ t g d˘ddttg d˘dtksđJ 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slJ 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sHJ t |dd| t t t |dd| dd| dd| ks~J d S )NrF   r   rG   rH   é   r^   i!  )é   r   r   )iy˙˙˙r   r   iYţ˙˙iŃ˙˙˙é   é^   rb   )r   r4   r   rY   r3   r   )rg   ZF_6r@   r@   rC   Útest_dmp_diff   s>    $&2˙&ý˙˙
˙",˙rm   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stJ 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  ttdd  d S )NrG   rF   rH   r   c                   S   s   t tdddtS rR   Šr   rY   r4   r@   r@   r@   rC   rV   ź   rE   z"test_dmp_diff_in.<locals>.<lambda>c                   S   s   t tdddtS rW   rn   r@   r@   r@   rC   rV   ˝   rE   )r   rY   r4   r   r   r?   rZ   r@   r@   r@   rC   Útest_dmp_diff_in˛   s    $˙$˙$˙$˙ro   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sDJ d S )Nr\   r   rF   rG   ŠrF   rG   rH   éB   )r   r4   r@   r@   r@   rC   Útest_dup_evalż   s    rr   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sJJ t ddggddtddgksjJ t dgggddtdggksJ t ddgggddtddggksŽJ t ddgddggddtddgksÔJ t ddggddgggddtddggksJ d S )NrH   r   rF   rG   é
   rO   )r   r4   r@   r@   r@   rC   Útest_dmp_evalĹ   s      $&rt   c                  C   sX  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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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s8J ttdd  ttdd  d S )Néţ˙˙˙rF   rH   r   r\   rG   é-   é÷˙˙˙rS   rs   )rw   rS   r   iÔ˙˙˙c                   S   s   t ttdddtS rR   Šr   rY   r4   r@   r@   r@   rC   rV   ă   rE   z"test_dmp_eval_in.<locals>.<lambda>c                   S   s   t ttdddtS rW   rx   r@   r@   r@   rC   rV   ä   rE   )r   rY   r4   r   r   Úintr?   rZ   rU   r@   r@   rC   Útest_dmp_eval_inÔ   s,    
˙˙
˙˙ ˙
 ˙
@˙
rz   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s8J t g ggddgdtg ksVJ t tg dttkslJ t tg d˘dtdksJ t tddgdtg d˘ks¤J t tdgdtddgd	gg d
˘g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ddgdtg d˘ksJJ t tddgdtg d˘ksjJ t tg d˘d	tg d˘ksJ d S )NrF   rG   )rF   éď˙˙˙rO   iJ r{   rO   )iú˙˙rH   iO éS   rH   )i.  éQ   rF   )ix˙˙˙iS=  iÎ#  iř˙˙iô˙˙˙)iú˙˙r   iBý˙˙i8ű˙˙r   iý˙˙)é   éR   iĂë˙˙i8˙˙iěĹ˙˙iäý˙˙é   rS   )
l   Áoä iů lü˙˙˙fc5lý˙˙˙y
?÷i(č˙l   2c[l   ţ|U78éü˙˙˙l   XLk^ i× )rS   i˛˙˙˙iř˙˙iXť˙˙)r   rG   rX   )i°  r   r   i  )	r   r4   Úf_0Úf_1Úf_2Úf_3Úf_4Úf_5rY   r@   r@   r@   rC   Ú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shJ ttdd  d S )NrG   r\   rF   rH   r   c                   S   s   t tdtdddtS rW   )r   rY   r4   r@   r@   r@   rC   rV     rE   z'test_dmp_diff_eval_in.<locals>.<lambda>)r   rY   r4   r   r   r   r?   rZ   r@   r@   r@   rC   Ú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 )NrF   éĐ  r   rf   rG   é=   rN   rO   c                   S   s   t tdtdgdtS )NrF   r   rH   )r+   r5   r@   r@   r@   rC   rV     rE   z!test_dup_revert.<locals>.<lambda>)r5   r+   r?   r0   ŠrB   Úgr@   r@   rC   Ú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sJ ttd	d
  d S )NrF   r   r   rf   rG   r   rN   rO   c                   S   s   t dggddtS ŠNrF   rG   )r,   r5   r@   r@   r@   rC   rV     rE   z!test_dmp_revert.<locals>.<lambda>)r5   r,   r?   r.   r   r@   r@   rC   Ú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szJ td}t |d|d|dg|d||d|d
gks¸J d S )NŠrF   rG   rH   rX   rN   ri   rH   )rF   rS   r   rF   rS   r   )ri   rN   rX   rH   rG   rF   )rS   rF   r   rS   rF   rX   rN   rF   rS   r   )r   r4   r6   r3   )ÚRrg   r@   r@   rC   Ú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sPJ d S )NrF   rG   )rF   rX   rF   r_   )r   r4   r@   r@   r@   rC   Útest_dmp_trunc(  s    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sDJ d S )NrH   rG   )rF   rS   r   rS   )rF   rS   rF   rF   )r   r   r4   r   r@   r@   r@   rC   Ú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sXJ t tdtdtdgttdtddtdgksJ d S )	NŠrH   ri   é	   rp   c                   S   s   t g d˘tS )N)rH   rX   rN   )r   r4   r@   r@   r@   rC   rV   6  rE   z test_dup_monic.<locals>.<lambda>rF   r\   é   rH   )r   r4   r?   r/   r5   r@   r@   r@   rC   Ú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sHJ ttd	d
  t g gdtg gksnJ t tdggdttdggksJ 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sŘJ d S )Nr   r   rp   rH   ri   r   rF   rG   c                   S   s   t dgdgdggdtS )NrH   rX   rN   rF   )r   r4   r@   r@   r@   rC   rV   C  rE   z'test_dmp_ground_monic.<locals>.<lambda>r\   r   )r   r4   r?   r/   r5   r@   r@   r@   rC   Ú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sFJ t ddgttdks`J t ddgttdkszJ t g d˘ttdksJ t g d˘ttdksŽJ t tddtdd	gttdd	ksÖJ t tddtdd
gttddksţJ d S )Nr   rF   rS   rG   r]   )rG   rX   rG   rH   rX   r   rN   é   )r   r4   r5   r@   r@   r@   rC   Ú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s4J t dggdttdksPJ t dggdttdkslJ t dgdggdttdksJ t dgdggdttdksŹJ t dgdgdggdttdksĐJ t dgdgdggdtt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dgtddggdttdd	ksTJ t tdttdksnJ 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s\J t tdttdksvJ 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 d S )NrF   r   rS   rG   rX   rH   r   rN   r   ri   r\   rO   )r   r4   r5   r   r   r   r   r   r   r   rY   r@   r@   r@   rC   Útest_dmp_ground_contentX  sh      $$00˙˙
˙˙
˙˙
˙˙
˙˙
˙˙
˙˙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srJ 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 g ttdg fks>J t tdgttdtdgfksfJ 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sNJ 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   rF   rG   rX   rH   r   rN   r   ri   )r   r4   r5   r@   r@   r@   rC   Útest_dup_primitive  sL    &22˙˙˙˙
(44˙˙
˙˙
˙˙
˙˙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sHJ t tdttdtfksdJ 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sfJ 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sDJ t tdggdttdtdggfksrJ t t
dggdt
t
dt
dggfks J 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 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 )NrF   r   rG   rH   rX   rN   ri   r\   rO   r   r   )r   r4   r   r   r   r   r   r   r   rY   r5   r@   r@   r@   rC   Ú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sRJ d S )N)é š, r   éŔ! r   é°b r   éä˛  )é Vr   é + r   é`Ĺ r   )é@   r   é0   r   rI   r   rF   )é  r   éŔ   r   rf   r   rŁ   )r   r4   r   ŠrB   r   ÚFÚGr@   r@   rC   Ú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sJ d S )Nr    rĄ   r˘   rŁ   rF   r¤   rĽ   rŚ   r§   r¨   rI   rŠ   rŞ   rf   )r   r4   r   rŤ   r@   r@   rC   Útest_dmp_ground_extractĎ  s    ˙"rŻ   c                	   C   sN  t g tg gg gfksJ t dgtdggg gfks8J t ddgtdgdggddggfks`J t ddgtdgdggddggfksJ 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 )NrF   r   rG   rp   )rS   r   rH   rH   r_   rS   c                   S   s   t tdtdgtS r   )r    r8   r@   r@   r@   rC   rV   é  rE   z$test_dup_real_imag.<locals>.<lambda>)r    r4   r?   r1   r@   r@   r@   rC   Ú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sBJ t g d˘tg d˘ks\J d S )NrF   ŠrF   rG   rH   rX   rN   ŠrF   ru   rH   r   rN   r   )rS   rG   r_   rX   éű˙˙˙ri   )r!   r4   r@   r@   r@   rC   Ú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sHJ t g d˘dtg d˘ksdJ d S )NrS   rF   rą   r˛   iů˙˙˙)ia	  iRý˙˙é   iä˙˙˙rN   )r"   r4   r@   r@   r@   rC   Útest_dup_scaleő  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sHJ t g d˘dtg d˘ksdJ d S )NrF   rą   )rF   ri   r   é   r   r\   )rF   é   iS  i°  iĂ  )r#   r4   r@   r@   r@   rC   Útest_dup_shiftý  s    rš   c                  C   s´   t tdtdgtdgdttdtdgks4J t g gtdtdgdtg gksZJ 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s°J d S )NrF   rG   r   rH   )r$   r4   )ZxyZx1y2r@   r@   rC   Ú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s6J t g ddgddgtg ksTJ t g d˘g d˘ddgtg d˘kszJ d S )NrF   rG   )ri   rł   rX   r_   rL   )rF   r_   rX   r_   )	ri   iŽ˙˙˙i  ic÷˙˙i  iMÎ˙˙i'C  iÝĘ˙˙iĽ  )r%   r4   r@   r@   r@   rC   Ú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sBJ t dgg tdgksZJ t g d˘g tg ksrJ t g d˘g tdgksJ t g d˘dgtdgks¨J t g d˘dgtdgksÄJ t g d˘ddgtg d	˘ksäJ 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 )NrF   rG   )rF   rG   r   r]   rX   r\   r§   rS   ŠrF   r   r   )rF   rX   rX   ŠrF   rX   rO   rO   rX   )r&   r4   r@   r@   r@   rC   Ú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sDJ t g ggdgggdtg ggkshJ t g ggdggdgggdtg ggksJ t dgggg dtdgggks´J t dgdgg gg gdtg gksŘJ 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sZJ 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˝   rG   rF   rX   r\   r§   rS   rO   )r'   r4   r@   r@   r@   rC   Útest_dmp_compose*  s     ""$*"$*,,48 ˙˙rż   c                  C   sč  t dgtdggksJ t ddgtddggks4J t g d˘tg d˘gksPJ t g d˘tg d˘g d˘gksrJ t g d˘tg d˘g d˘gksJ t g d˘tg d˘g d˘gksśJ t g d	˘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 g d˘} t | tg d˘g d˘gksNJ 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 )#NrF   r   )rF   r   r   r   )rF   r   r   r   r   rź   )rF   r   r   r   r   r   r   )r\   r   r   r   rF   )r\   r   rF   )rX   r   rH   r   rG   )rX   rH   rG   )rF   r   rˇ   r   é   r   iô  r   iq  ru   r   iö˙˙˙r   )rF   r   r   ru   r   )rF   r   rN   r   )rG   r   é(   r   i,  r   ič  r   iâ  r   r   iě˙˙˙é   )rG   r   r   r   rÂ   )rF   r   rˇ   éř˙˙˙rŔ   i˙˙˙i  i¨ý˙˙ia  iöű˙˙iX  iV˙˙˙rK   )rF   rĂ   rf   iŢ˙˙˙rK   Útri   rG   é*   r¨   é`   r~   i  i   ip  i`  rŠ   él   rH   i8  i°  rŞ   )r(   r4   r:   Z	to_domain)rB   r   rÄ   r@   r@   rC   Útest_dup_decompose@  s2    "˙˙""  "ürČ   c               	   C   sî   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  g d˘Ą}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 )NrF   r   rL   )	rF   r   r   r   r   r   rF   r`   i!  c                   S   s   t tdtdgdtS )NrF   rG   r   )r)   r8   r@   r@   r@   rC   rV   q  rE   ztest_dmp_lift.<locals>.<lambda>)	r5   r-   Úmapr)   Zalgebraic_fieldr;   r7   r?   r1   )ÚqZf_aZf_liftZf_gr@   r@   rC   Útest_dmp_liftc  s    &4˙&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sTJ t g d˘tdksjJ 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s6J t g d˘tdksNJ t g d˘tdksfJ 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   rF   )rF   r   rG   )rF   r   rH   r   )rF   r   rX   r   rN   )rS   r   rG   )rS   r   rH   r   )rS   r   rX   r   rN   )rS   r   rł   )rF   r   rł   )rF   rX   rł   )rF   r   rN   rG   )rS   rX   rł   )rS   rX   rN   )rS   r   rN   )rF   rX   rN   )rS   r   r   r   rł   )rF   r   r   r   rł   )rF   r   rX   r   rł   )rF   r   r   r   rN   )rS   r   rX   r   rł   )rS   r   r   r   rN   )r*   r4   r@   r@   r@   rC   Útest_dup_sign_variationst  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sDJ t tdgtttdtdgfkslJ t tddgttdtdgfksJ 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sBJ 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sşJ d S )NrF   r\   rH   r   rG   TŠÚconvertr   rX   ri   gE/ŁXnů @gjŢq @g¤p=
×Ł@g        z0(x + 0.353356890459364, [1.05971731448763, 0.0]))
r   r5   r4   r8   r<   r=   r>   r9   Z
frac_fieldÚstr)rŹ   Úresultr@   r@   rC   Útest_dup_clear_denoms  sV    (((*˙˙˙˙

˙˙˙˙

˙˙˙˙
 ˙˙
(@
"rŃ   c                   C   sP  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sPJ 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sŹJ t tddggdtttdtdggfksÜJ 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sfJ 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sJ 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sŘJ 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sLJ d S )NrF   r\   rH   rG   r   TrÍ   r   rX   ri   )r	   r5   r4   r8   r<   r=   r>   r@   r@   r@   rC   Útest_dmp_clear_denomsŻ  sp    "...0˙˙
˙˙˙˙

˙˙˙˙
˙˙˙
˙˙˙˙
˙˙
&˙˙
.rŇ   N)xÚ__doc__Zsympy.polys.densebasicr   r   r   r   r   Zsympy.polys.densearithr   Z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,   Zsympy.polys.polyclassesr-   Zsympy.polys.polyerrorsr.   r/   r0   r1   Zsympy.polys.specialpolysr2   Zsympy.polys.domainsr3   r4   r5   r6   r7   r8   r9   Zsympy.polys.ringsr:   Zsympy.core.numbersr;   Zsympy.core.singletonr<   Z(sympy.functions.elementary.trigonometricr=   Z	sympy.abcr>   Zsympy.testing.pytestr?   r   r   r   r   r   r   rY   rP   rQ   r[   rh   rm   ro   rr   rt   rz   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@   rC   Ú<module>   sf   $!
		
**

	#