U
    «Ì0eÔ  ã                   @   s`  d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
mZ ddlmZmZmZ ddlm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edƒ edƒ fedƒedƒf ZZedƒedƒfedƒedƒf Z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)d0d1„ Z*d2d3„ Z+d4d5„ Z,d6S )7zETests for real and complex root isolation and refinement algorithms. é    )Úring)ÚZZÚQQÚZZ_IÚEX)ÚDomainErrorÚRefinementFailedÚPolynomialError)Údup_cauchy_upper_boundÚdup_cauchy_lower_boundÚdup_mignotte_sep_bound_squared)Úraisesc                  C   s¨   t dtƒ\} }|  d¡dgks"t‚|  |¡|dgks8t‚|d d|d   d|  d }|  |¡|d|d  d|  d tddƒ | td	dƒ td
dƒ gks¤t‚d S )NÚxé   é   é   é   é   é
   é	   é   iç  éd   )r   r   Z	dup_sturmÚAssertionError©ÚRr   Úf© r   úH/tmp/pip-unpacked-wheel-_6tpq7m6/sympy/polys/tests/test_rootisolation.pyÚtest_dup_sturm   s
     r   c                   C   s|   t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ ttdƒtdƒtdƒgtƒtjksPt‚ttdƒtdƒtdƒgtƒtdƒksxt‚d S )	Nc                   S   s
   t g tƒS ©N©r
   r   r   r   r   r   Ú<lambda>   ó    z-test_dup_cauchy_upper_bound.<locals>.<lambda>c                   S   s   t tdƒgtƒS ©Nr   r    r   r   r   r   r!      r"   c                   S   s   t tdƒtdƒgtƒS r#   )r
   r   r   r   r   r   r!      r"   r   r   éþÿÿÿr   )r   r	   r   r
   r   Zzeror   r   r   r   r   Útest_dup_cauchy_upper_bound   s
    &r%   c                   C   sf   t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ ttdƒtdƒtdƒgtƒtd	d
ƒksbt‚d S )Nc                   S   s
   t g tƒS r   ©r   r   r   r   r   r   r!       r"   z-test_dup_cauchy_lower_bound.<locals>.<lambda>c                   S   s   t tdƒgtƒS r#   r&   r   r   r   r   r!   !   r"   c                   S   s   t tdƒtdƒtdƒgtƒS )Nr   r   r&   r   r   r   r   r!   "   r"   c                   S   s   t tdƒtdƒgtƒ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   Útest_dup_cauchy_lower_bound   s
    r'   c                   C   sJ   t tdd„ ƒ t tdd„ ƒ ttdƒtdƒtdƒgtƒtddƒksFt‚d S )	Nc                   S   s
   t g tƒS r   ©r   r   r   r   r   r   r!   )   r"   z5test_dup_mignotte_sep_bound_squared.<locals>.<lambda>c                   S   s   t tdƒgtƒS r#   r(   r   r   r   r   r!   *   r"   r   r   r$   r   r   )r   r	   r   r   r   r   r   r   r   Ú#test_dup_mignotte_sep_bound_squared(   s    r)   c                     s†  t dtƒ\‰ } | d d ‰ˆ jˆtdƒtdƒddtdƒtdƒfksHt‚ˆ jˆtdƒtdƒddtdƒtdƒfksvt‚tt‡ ‡fdd„ƒ tddƒtddƒ }}ˆ jˆ||ddtddƒtddƒfksÊt‚ˆ jˆ||ddtddƒtd	dƒfksôt‚ˆ jˆ||ddtd
d	ƒtd	dƒfks t‚ˆ jˆ||d	dtddƒtd	dƒfksLt‚ˆ jˆ||d
dtddƒtddƒfksxt‚tddƒtd	dƒ }}ˆ jˆ||ddtddƒtd	dƒfksºt‚ˆ jˆ||ddtd
d	ƒtd	dƒfksæt‚ˆ jˆ||ddtddƒtd	dƒfkst‚ˆ jˆ||d	dtddƒtddƒfks>t‚ˆ jˆ||d
dtddƒtddƒfksjt‚tddƒtdd	ƒ }}ˆ jˆ||ddtddƒtdd	ƒfks¬t‚ˆ jˆ||ddtddƒtd	dƒfksØt‚ˆ jˆ||ddtddƒtd	dƒfkst‚ˆ jˆ||d	dtddƒtddƒfks0t‚ˆ jˆ||d
dtddƒtddƒfks\t‚tddƒtddƒ }}ˆ jˆ||ddtddƒ tddƒ fks¢t‚ˆ jˆ||ddtd	dƒ tddƒ fksÒt‚ˆ jˆ||ddtd	dƒ td
d	ƒ fkst‚ˆ jˆ||d	dtd	dƒ tddƒ fks2t‚ˆ jˆ||d
dtddƒ tddƒ fksbt‚tt‡ ‡fdd„ƒ tdƒtdƒtddƒtddƒtddƒf\}}}}}ˆ jˆ||tddƒd||fksÎt‚ˆ jˆ||dd||fksît‚ˆ jˆ||tddƒdd||fkst‚ˆ jˆ||tddƒdd||fks>t‚ˆ jˆ||tddƒdd||fksft‚tdƒtdƒtddƒtdd	ƒf\}}}}ˆ jˆ||tdƒd||fks²t‚ˆ jˆ||| d||fksÔt‚ˆ jˆ|||d||fksôt‚tdƒtdƒtd
d	ƒtd	dƒf\}}}}ˆ jˆ||tdƒd||fks@t‚ˆ jˆ||| d||fksbt‚ˆ jˆ|||d||fks‚t‚d S )Nr   r   r   )Ústepsr   c                      s   ˆ   ˆtdƒtdƒ¡S )Nr$   r   ©Údup_refine_real_rootr   r   ©r   r   r   r   r!   6   r"   z+test_dup_refine_real_root.<locals>.<lambda>r   r   r   é   r   r   é   é   r   é   é   éÿÿÿÿr$   c                      s   ˆ   ˆtdƒtdƒ¡S )Nr   r   r+   r   r-   r   r   r!   X   r"   é   r   ©Úepsé   )r6   r*   éýÿÿÿéüÿÿÿéûÿÿÿ)Zdisjoint)r   r   r,   r   r   r   Ú
ValueErrorr   )r   ÚsÚtÚuÚvÚwr   r-   r   Útest_dup_refine_real_root/   sX    ..**,,,,,,,,,,,,,000002& (((($" ($"rA   c               	      s²  t dtƒ\‰ ‰ˆ  d¡g ks t‚ˆ  d¡g ks2t‚ˆ  ˆd ˆ ¡ddgksPt‚ˆ  ˆd ˆ ¡ddgksnt‚ˆ  ˆd ˆ d	 ¡g ksŒt‚d
dg} ˆ  ˆd d ¡| ks®t‚ˆ  ˆd  d ¡| ksÊt‚ˆ  ˆd	 ¡dgksât‚ˆ  ˆd dˆ  d ¡ddgks
t‚ˆ  ˆd dˆd   dˆ  d ¡dddgks@t‚ˆ  ˆd dˆd   dˆd   dˆ  d ¡ddddgks„t‚ˆ  ˆd dˆd   dˆd   dˆd   dˆ  d ¡dddddgksÖt‚ˆ  ˆd ¡dgksðt‚ˆ  ˆd dˆ  d ¡ddgkst‚ˆ  ˆd d ˆd   d!ˆ  d" ¡ddd#gksNt‚ˆ  ˆd d$ˆd   d%ˆd   d&ˆ  d' ¡ddd#d(gks’t‚ˆ  ˆd d)ˆd   d*ˆd   d+ˆd   d,ˆ  d- ¡ddd#d(d.gksät‚ˆ  ˆd	 ¡dgksþt‚ˆ  ˆd dˆ  d ¡d/dgks&t‚ˆ  ˆd dˆd   dˆ  d ¡d0d/dgks\t‚ˆ  ˆd dˆd   dˆd   dˆ  d ¡d1d0d/dgks t‚ˆ  ˆd dˆd   dˆd   dˆd   dˆ  d ¡d2d1d0d/dgksòt‚ˆ  ˆd ¡d3gkst‚ˆ  ˆd dˆ  d ¡d4d3gks4t‚ˆ  ˆd d ˆd   d!ˆ  d" ¡d5d4d3gksjt‚ˆ  ˆd d$ˆd   d%ˆd   d&ˆ  d' ¡d6d5d4d3gks®t‚ˆ  ˆd d)ˆd   d*ˆd   d+ˆd   d,ˆ  d- ¡d7d6d5d4d3gks t‚ˆ  ˆd d ¡d8d9gks t‚ˆ  ˆd d ¡dgks>t‚ˆ  ˆd d ¡d
dgks^t‚ˆ  ˆd d ¡dgks|t‚ˆ  ˆd d ¡d
dgksœt‚ˆ  ˆd: d ¡dgksºt‚ˆ  ˆd; d ¡d
dgksÚt‚ˆ  ˆd< d ¡dgksøt‚ˆ  ˆd d	 ¡ddgkst‚ˆ  ˆd dˆd   ˆ d ¡d/ddgksJt‚ˆ  ˆd dˆd   d ¡d/dddgkszt‚ˆ  ˆd dˆd   dˆd   dˆd   dˆ  d= ¡d0d/dddgksÌt‚ˆ  ˆd d>ˆd   d?ˆd   d@ ¡d0d/ddddgkst‚ˆ  dˆd:  ˆd  dAˆd   d>ˆd   dBˆd   d?ˆd   dCˆ  d@ ¡d0d/ddDdddgkszt‚ˆ  dˆd;  dEˆd   dFˆd   dGˆd   d@ ¡d0d/ddDdHdddgksÎt‚d<ˆd  d }ˆ  |¡dDdHgksöt‚ˆ j|td	dƒdItdJdƒtdKd:ƒftdd:ƒtd	dƒfgks8t‚ˆ j|td	d$ƒdItdLdMƒtdNdOƒftd;dOƒtd<dMƒfgkszt‚ˆ j|td	dPƒdItdQdRƒtdNdOƒftd;dOƒtdSdRƒfgks¼t‚ˆ j|td	dTƒdItdQdRƒtdUdVƒftdWdVƒtdSdRƒfgksþt‚ˆ j|td	dXƒdItdYdZƒtd[d\ƒftd]d\ƒtd^dZƒfgk	s@t‚ˆ j|td	d_ƒdItd`daƒtd[d\ƒftd]d\ƒtdbdaƒfgk	s‚t‚dcˆd  ddˆd   deˆd   dfˆd   dgˆ  d }ˆ  |¡tdƒtd	dhƒftd	dhƒtd	dhƒftd	dƒtd	dƒftd	ƒtd	ƒftdƒtdƒfgk
s"t‚ˆ j|td	dXƒdItd	diƒtd	diƒftd	dhƒtd	dhƒftd	dƒtd	dƒftd	ƒtd	ƒftdƒtdƒfgk
s’t‚dj\}}}}dkˆd  dlˆd   dmˆd   dnˆ  do }ˆ  |¡| | fdDdH||fgk
söt‚ˆ j|td	dpƒdIt|ƒ t|ƒ ftd	|ƒ td	|ƒ ftd	|ƒtd	|ƒft|ƒt|ƒfgks\t‚ˆ j|dqdr\\}}}}	\}
}||   k r”|k ràn nH|td	ƒ tdƒfkrà|	tdƒtd	ƒfkrà|
|  k rÞ|k sän t‚ˆ j|dqtd	dsƒdtt|ƒ t|ƒ ftd	|ƒ td	|ƒ ftd	|ƒtd	|ƒft|ƒt|ƒfgksLt‚duˆd  d;ˆd   dvˆd   dwˆ  dx }ˆ  |¡d/d
dd9gks˜t‚ˆ j|td	d$ƒdItdƒ tdƒ ftdyd>ƒ tdzdƒ ftdƒtdƒftd{d|ƒtd}d<ƒfgksþt‚ˆd	 }ˆ j|dd~g kst‚ˆ j|ddg ks6t‚ˆ  |¡dgksLt‚ˆ j|d	d~dgksft‚ˆ j|d	ddgks€t‚ˆ j|d	d	d€dgksœt‚ˆd d }ˆ j|td:dƒd~g ksÆt‚ˆ j|td:dƒd~td:dƒtddƒfgksöt‚ˆ j|td:dƒdd
gkst‚ˆ j|td:dƒdd
d	tddƒfgksBt‚ˆ j|td:dƒ dg ksbt‚ˆ j|td:dƒ dtddƒ td:dƒ fgks˜t‚ˆ j|td:dƒ d~dgksºt‚ˆ j|td:dƒ d~tddƒ dJfdgksêt‚d
dg} ˆ j|dd~| ks
t‚ˆ j|dd| ks"t‚ˆ j|ddd€| ks<t‚t dtƒ\‰ ‰td;dƒˆd  td‚dƒƒˆ  tdOd„ƒ }ˆ  |¡dDd…gksŒt‚t dtƒ\‰ ‰tt‡ ‡fd†d‡„ƒ d S )ˆNr   r   r   r   ©r3   r3   ©r   r   ©r   r   r   r   ©r$   r3   ©r   r   r   )r   r   r7   é   )r   r   r   é#   é2   r4   )r   r   é   éU   éá   i  éx   )r   r   )r   r   é   éÈ   )é   rP   é<   iL  ip  )rN   rN   r   i¬  iPÃ  i€© )é(   rR   é–   i4!  ièn i Ï) i · )rI   rI   )r$   r$   )r8   r8   )r9   r9   )r:   r:   )éöÿÿÿrT   )éìÿÿÿrU   )éâÿÿÿrV   )éØÿÿÿrW   )éÎÿÿÿrX   )r8   r$   )r   r   r.   é   r   r0   é   é1   é$   é   éb   éH   ©r3   r   é9   éÒ   éÁ   ©r   r   r5   r3   r8   i÷ÿÿÿr2   iøÿÿÿr/   iè  ißÿÿÿéF   é!   i'  i•ÿÿÿéã   ék   i † iÏþÿÿi‡  iðþÿÿiA  i  i1  i@B iŸûÿÿiJ	  ia  i¬Híi¤¿)i_¡À)i¶kïiQœ  i'  i'  )l   jŸ'a$i£7wl   çw (	 l   Hk}a$l   N•,-UŸ, l   ñ*0B¿de_Ê/ l   Å@FRµ{®.hNÛ^À3Ðma3 l   Yv~1¤bÎ@´Þý
Ml   H_ø‹Zee W
l    hí] T)Úfastl      @*_kæzÁcP )ri   r6   rT   éP   é    é    é   é   é'   é   é   ©Úinf©Úsup©rs   ru   r$   iNU i  i  )rZ   rJ   c                      s   ˆ   ˆd ¡S ©Nr   )Údup_isolate_real_roots_sqfr   ©r   r   r   r   r!     r"   z1test_dup_isolate_real_roots_sqf.<locals>.<lambda>)r   r   rx   r   r   r   r   r   )ÚIr   ÚaÚbÚcÚdr>   r?   ÚBÚCr<   r=   r   ry   r   Útest_dup_isolate_real_roots_sqfp   sx   ÿÿ
$ÿ
0
ÿ
<ÿ
ÿ
ÿ
$ÿ
0
ÿ
<ÿ
ÿ
ÿ
$ÿ
0
ÿ
<ÿ
ÿ
ÿ
$ÿ
0
ÿ
<ÿ
    ÿ
 ÿ

ÿ
<ÿ
(ÿ
Tÿ
8ÿ
ÿ
&ÿ
&ÿ
&ÿ
&ÿ
&ÿ
&ÿ
<"  ÿÿ
$  ÿÿ


ÿ
þýüÿ
Jÿ
jJÿ
0
ÿ
Jÿ
0 , 6"0*r   c               	      sÖ  t dtƒ\‰ ‰ˆ  d¡g ks t‚ˆ  d¡g ks2t‚ˆ  dˆ ¡dgksJt‚ˆ  dˆd  ¡dgksft‚ˆ  ˆd	 ˆ ¡d
dgks„t‚ˆ  ˆd	 ˆ ¡ddgks¢t‚ˆ  ˆd ˆ d ¡g ksÀt‚ddg} ˆ  ˆd	 d	 ¡| ksâ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   d!ˆd   d"ˆd   d#ˆd	   d$ˆ  d% }ˆ  |¡}ˆ  |¡td	ƒ tdd	ƒ fd	ftdd	ƒ tddƒ fdftdƒtdd	ƒfdftdd	ƒtdd	ƒfdftddƒtd	ƒfd	fgks4t‚ˆ  |¡td	ƒ tdd	ƒ ftdd	ƒ tddƒ ftdƒtdd	ƒftdd	ƒtdd	ƒftdd	ƒtd	ƒfgks¤t‚ˆ  |¡td	ƒ tdd	ƒ fdftdd	ƒ tddƒ fdftdƒtdd	ƒfdftdd	ƒtdd	ƒfdftdd	ƒtd	ƒfdfgks(t‚ˆd }ˆ j|d	d&g ksHt‚ˆ j|dd'g ks`t‚ˆ  |¡dgksvt‚ˆ j|dd&dgkst‚ˆ j|dd'dgksªt‚ˆ j|ddd(dgksÆt‚ˆd dˆd	   d }ˆ j|tddƒd&g ksüt‚ˆ j|tddƒd&tddƒtdd	ƒfd	fgks0t‚ˆ j|tddƒd'd)gksPt‚ˆ j|tddƒd'd)dtdd	ƒfd	fgks€t‚ˆ j|tddƒ d'g ks t‚ˆ j|tddƒ d'tdd	ƒ tddƒ fd	fgksÚt‚ˆ j|tddƒ d&d*gksüt‚ˆ j|tddƒ d&tdd	ƒ d+fd	fd*gks0t‚d)d*g} ˆ j|d,d&| ksPt‚ˆ j|d	d'| ksht‚ˆ j|d,d	d(| ks‚t‚ˆd dˆd   ˆd  dˆd   dˆd   dˆd   dˆd   dˆd   }ˆ j|d-d.d)dd/d*gksút‚ˆ j|d0d.d1d	ddd,gfd2dddgfd3ddd+gfd4d	ddd,gfgksFt‚ˆd5 d5ˆd6   d7ˆd8   d }ˆd9 d:ˆd8   d;ˆd<   d=ˆd>   d?ˆd@   dAˆdB   dCˆdD   dEˆdF   dGˆdH   dIˆdJ   dKˆdL   dMˆdN   dOˆdP   dQˆdR   dSˆdT   dUˆdV   dWˆdX   dYˆdZ   d[ˆd   d\ˆd]   d[ˆd^   dYˆd_   dWˆd`   dUˆda   dSˆdb   dQˆdc   dOˆd   dMˆdd   dKˆd   dIˆd   dGˆd   dEˆd   dCˆd   dAˆd   d?ˆd   d=ˆd   d;ˆd   deˆd   dfˆd   d:ˆd   dgˆd	   dhˆ  d }ˆ  || ¡dtdd	ƒfdftd	dƒtddƒfdftddƒdfdfdidjgks°t‚t dtƒ\‰ ‰tt	‡ ‡fdkdl„ƒ d S )mNr   r   r   r   ©rC   r   r.   r   )rC   r   r   )rB   r   )rD   r   r   )rE   r   )rF   r   rp   rZ   é`   r   r4   r0   i¨  rG   i?  r   i@  r   iì#  rY   i(  iGU  r7   i6  iºT  i h  id  iÀ<  iÈ  rr   rt   rv   )rE   r   )rF   r   r3   r$   F©Zbasis)rD   r   TrE   rC   rD   rF   é-   é,   iÞ  é+   é.   iL;  i#íŽ rR   iÈ¸0ro   iÏ„é&   ijÛªAé%   l   Õ+ðe r\   l   \2X6 rH   l   7h$ é"   l   szc^ rf   l   EX¡3ß rk   l   `MLÜé   l   ê}F3›rN   l   ¬VæC]é   l   N6e-A
r]   l   X.Ëxr1   l   *xx	gé   l   4pÞTBé   l   Þsˆ=´l   °;m}órm   rq   é   rP   r2   rn   r/   rJ   i‚ê iq} i  é/   ))r7   r.   r   ))r4   r   r   c                      s   ˆ   ˆd ¡S rw   )Údup_isolate_real_rootsr   ry   r   r   r!   m  r"   z-test_dup_isolate_real_roots.<locals>.<lambda>)
r   r   r’   r   Zdup_sqf_partr   rx   r   r   r   )rz   r   Úgr   ry   r   Útest_dup_isolate_real_roots!  s¤    R
ÿ
ÿ
ÿ
ÿ
ÿ
ÿÿÿ
F ÿÿ
: ÿÿ
F ÿÿ
4 0 :"4X
ÿ
6ÿ
$ÿ õ<ÿ
r”   c               	      s,  t dtƒ\‰ ‰ˆ  ˆd ˆ ˆg¡dddifddddœfgksBt‚ˆ  ˆd ˆ ˆg¡ddddœfdddifgksvt‚ˆ  ˆd ˆd ˆd ˆd ˆd ˆd g¡tdƒ tdƒ fddiftdƒ tdƒ fddd	œftdƒtdƒfdddd
œfgksüt‚ˆ  ˆd ˆd ˆd ˆd ˆd ˆd g¡tdƒ tdƒ fdddœftdƒ tdƒ fddd	œftdƒtdƒfdddœfgks„t‚ˆd dˆd   d ˆd  } }ˆ j| |gtddƒdg ksÈt‚ˆ j| |gtddƒdtddƒtddƒfddifgkst‚ˆ j| |gtddƒddddifdddifgks:t‚ˆ j| |gtddƒddddifdddifdtddƒfddifgks„t‚ˆ j| |gtddƒ dg ks¨t‚ˆ j| |gtddƒ dtddƒ tddƒ fddifgksêt‚ˆ j| |gtddƒ ddddifdddifgks"t‚ˆ j| |gtddƒ dtddƒ dfddifdddifdddifgkspt‚dˆd  d ˆd d  } }ˆ  | |g¡tdƒ tdƒ fddiftdƒ tdƒfddiftdƒtdƒfddiftdƒtdƒfddifgkst‚ˆ j| |gddtddƒ tddƒ fddiftdƒ tddƒ fddiftddƒtdƒfddiftddƒtddƒfddifgksŒt‚ˆd d ˆd ˆd  dˆ  d  } }ˆ  | |g¡tdƒ tdƒ fdddœftdƒtdƒfddiftdƒtdƒfdddœfgkst‚ˆd dˆ  ˆd ˆd  dˆd   dˆd    } }ˆ  | |g¡tdƒ tdƒ fdddœftdƒtdƒfdddœftdƒtdƒfddiftdƒtdƒfdddœfgksÌt‚ˆd dˆd   ˆd  dˆd   dˆd   dˆd   dˆd   dˆd   ˆd dˆd   dˆd   dˆd   dˆ   } }ˆ j| |gdddddifddddœfddddœfdddifgks¢t‚ˆ j| |gdddddiddd gfddddœddgfddddœddgfdddiddd gfgkst‚t dtƒ\‰ ‰tt‡ ‡fd!d"„ƒ d S )#Nr   r   rB   r   r   rC   rd   rD   )r   r   )r   r   r   )r   r   )r   r   r   r.   rr   r   r   rt   rE   rF   r3   T)Ústrict)r   r   r   rY   rG   r7   r0   Fr„   r$   c                      s   ˆ   ˆd g¡S rw   )Údup_isolate_real_roots_listr   ry   r   r   r!   ¬  r"   z2test_dup_isolate_real_roots_list.<locals>.<lambda>)r   r   r–   r   r   r   r   r   )r   r“   r   ry   r   Ú test_dup_isolate_real_roots_listp  sŒ    ÿÿ,Rÿ,Rÿ
""ÿ
ÿ
*ÿ
$ ÿ
ÿ
,ÿ
2 ÿÿ
: ÿÿ
*Lÿ
:4 ÿÿ
Ž.ÿ
$ ÿÿ
r—   c                  C   sü   t dtƒ\} }|d d }|d d }|  ||g¡tddƒtddƒfd	d
iftddƒtddƒfd
d
ifgkspt‚t dtƒ\} }td
dƒ |d  d
 }td
dƒ |d  d
 }|  ||g¡tddƒtddƒfd	d
iftddƒtddƒfd
d
ifgksøt‚d S )Nr   r   rO   éÉ   éK   rŽ   ée   rH   r   r   i5  rh   r   )r   r   r–   r   r   )r   r   r   r“   r   r   r   Ú#test_dup_isolate_real_roots_list_QQ¯  s    6ÿ6ÿr›   c                  C   s*  t dtƒ\} }|  d¡dks t‚|  d¡dks2t‚|d }|  |¡dksLt‚| j|dddksbt‚| j|dddksxt‚| j|dddksŽt‚| j|ddddks¦t‚| j|ddddks¾t‚| j|ddddksÖt‚|d d }|  |¡dksôt‚| j|dddkst‚| j|d	dddks&t‚d S )
Nr   r   r.   r   rr   rt   rv   r   r3   )r   r   Zdup_count_real_rootsr   r   r   r   r   Útest_dup_count_real_rootsÁ  s    rœ   r   c                  C   sz   t dtƒ\} }|d }|  |tt¡dks,t‚|  |tt¡dksBt‚|d }|  |tt¡dks`t‚|  |tt¡dksvt‚d S )Nr   r   r   ©r   r   Údup_count_complex_rootsr{   r|   r   r}   r~   r   r   r   r   Útest_dup_count_complex_roots_1Ú  s    rŸ   c                  C   sö   t dtƒ\} }|d | }|  |tt¡dks0t‚|  |tt¡dksFt‚|d  | }|  |tt¡dksjt‚|  |tt¡dks€t‚|d | }|  |tt¡dks¢t‚|  |tt¡dks¸t‚|d  | }|  |tt¡dksÜt‚|  |tt¡dksòt‚d S )Nr   r   r   r   r   r   r   r   Útest_dup_count_complex_roots_2è  s    r    c                  C   s¼   t dtƒ\} }|d d }|  |tt¡dks0t‚|  |tt¡dksFt‚|d | }|  |tt¡dksht‚|  |tt¡dks~t‚|d  | }|  |tt¡dks¢t‚|  |tt¡dks¸t‚d S )Nr   r   r   r   r   r   r   r   r   Útest_dup_count_complex_roots_3   s    r¡   c                  C   sP  t dtƒ\} }|d d }|  |tt¡dks0t‚|  |tt¡dksFt‚|d | }|  |tt¡dksht‚|  |tt¡dks~t‚|d  | }|  |tt¡dks¢t‚|  |tt¡dks¸t‚|d |d  | d }|  |tt¡dksæt‚|  |tt¡dksüt‚|d |d  |d  | }|  |tt¡dks0t‚|  |tt¡dksHt‚|d  |d  |d  | }|  |tt¡dks~t‚|  |tt¡dks–t‚|d d }|  |tt¡dksºt‚|  |tt¡dksÒt‚|d | }|  |tt¡dksöt‚|  |tt¡dkst‚|d  | }|  |tt¡dks4t‚|  |tt¡dksLt‚d S ©Nr   r   r   r   r   r   r   r   r   r   r   Útest_dup_count_complex_roots_4  s8    r£   c                  C   s6  t dtƒ\} }|d d|  d }|  |tt¡dks8t‚|  |tt¡dksNt‚|d |d  d }|  |tt¡dksxt‚|  |tt¡dksŽt‚|d |d  d|  }|  |tt¡dks¼t‚|  |tt¡dksÒt‚|d d|d   d|  d }|  |tt¡dks
t‚|  |tt¡dks"t‚|d d|d   d|d   d|  }|  |tt¡dksbt‚|  |tt¡dkszt‚|d d|d   |d  d|  d }|  |tt¡dksºt‚|  |tt¡dksÒt‚|d d|d   |d  d|d   d|  }|  |tt¡dkst‚|  |tt¡dks2t‚d S )Nr   r   r   r   r   r   r   r   r   r   r   r   Útest_dup_count_complex_roots_5D  s,     ((0r¤   c                  C   s6  t dtƒ\} }|d d|  d }|  |tt¡dks8t‚|  |tt¡dksNt‚|d d|d   d|  d }|  |tt¡dks„t‚|  |tt¡dksšt‚|d d|d   d|d   d|  }|  |tt¡dksØt‚|  |tt¡dksît‚|d |d  d }|  |tt¡dkst‚|  |tt¡dks2t‚|d |d  d|  }|  |tt¡dksbt‚|  |tt¡dkszt‚|d d|d   |d  d|  d }|  |tt¡dksºt‚|  |tt¡dksÒt‚|d d|d   |d  d|d   d|  }|  |tt¡dkst‚|  |tt¡dks2t‚d S r¢   r   r   r   r   r   Útest_dup_count_complex_roots_6k  s,     ((0r¥   c                  C   s  t dtƒ\} }|d d }|  |tt¡dks0t‚|  |tt¡dksFt‚|d d|d   d|  d }|  |tt¡dks|t‚|  |tt¡dks’t‚|d d|d   d|d   d }|  |tt¡dksÌt‚|  |tt¡dksât‚|d |d  d|  d }|  |tt¡dkst‚|  |tt¡dks.t‚|d |d  d|d   d|  }|  |tt¡dksjt‚|  |tt¡dks‚t‚|d |d  d|  d }|  |tt¡dks¶t‚|  |tt¡dksÎt‚|d |d  d|d   d|  }|  |tt¡dks
t‚|  |tt¡dks"t‚|d |d  d|d   d }|  |tt¡dksZt‚|  |tt¡dksrt‚|d	 |d  d|d   d|  }|  |tt¡d	ks®t‚|  |tt¡dksÆt‚|d d|d   d }|  |tt¡dksöt‚|  |tt¡dkst‚d S )
Nr   r   r   r   r   rY   r7   r   r.   r   r   r   r   r   Útest_dup_count_complex_roots_7’  s>     $$$ $r¦   c                  C   sÆ   t dtƒ\} }|d d|d   d|  }|  |tt¡dks@t‚|  |tt¡dksVt‚|d d|d   d|d   d	|d   d|d   d
|  }|  |tt¡dks¬t‚|  |tt¡dksÂt‚d S )Nr   r   r   r   r   rG   r   r.   r7   rY   r   r   r   r   r   Útest_dup_count_complex_roots_8È  s    @r§   c                  C   s\   t dtƒ\} }|d | }|  |¡dks,t‚| j|dddksBt‚| j|dddksXt‚d S )Nr   r   rC   rt   r   rr   )r   r   rž   r   r   r   r   r   Ú%test_dup_count_complex_roots_implicitÖ  s
    r¨   c                  C   s
  t dtƒ\} }|d | }tdƒ tdƒftdƒtdƒf }}|  |||¡dksTt‚| j|||dgddkspt‚| j|||d	gddksŒt‚| j|||dd	gdd
ksªt‚| j|||dgddksÆt‚| j|||dgddksât‚| j|||ddgddkst‚| j|||d	dddgdd
ks&t‚| j|||dgddksDt‚| j|||dgddksbt‚| j|||ddgdd
ks‚t‚| j|||dddgddks¤t‚| j|||dddd	gddksÈt‚tdƒtdƒftdƒtdƒf }}| j|||dddkst‚d S )Nr   r   r   r   r   ÚS)Úexcluder   ÚNr   ÚEÚWZSWZSET)r   r   r   rž   r   )r   r   r   r{   r|   r   r   r   Ú$test_dup_count_complex_roots_excludeâ  s$    $ $ "$"r®   c               	   C   sæ  t dtƒ\} }|d d|  d }|  |¡ddgks8t‚dd„ | j|dd	D ƒddgks\t‚| j|td
dƒdtddƒtddƒ ftddƒtddƒ fftddƒtddƒftddƒtddƒffgksÈt‚| j|td
dƒdtddƒtddƒ ftddƒtddƒ fftddƒtddƒftddƒtddƒffgks6t‚d|d  d|d   d|d   d|  d }|  |¡tddƒ tddƒ fdftddƒ d fd tddƒffd tddƒ ftddƒd ffdtddƒtddƒffgksât‚d S )!Nr   r   r   ))r   éúÿÿÿ)r7   r   )rC   )r7   r7   c                 S   s   g | ]}|  ¡ ‘qS r   )Úas_tuple)Ú.0Úrr   r   r   Ú
<listcomp>
  s     z6test_dup_isolate_complex_roots_sqf.<locals>.<listcomp>T)Zblackboxr   r   r5   rJ   rp   rf   rk   r…   r   éÿ   é   ik  i  i   iÓ  r.   r   r2   rP   r/   rR   rC   r   )r   r   Zdup_isolate_complex_roots_sqfr   r   r   r   r   r   Ú"test_dup_isolate_complex_roots_sqf  s2    ÿÿ*&ÿÿ*&ÿÿ
06 ÿÿr¶   c                  C   s  t dtƒ\} }d|d  |d  d|d   d|  }|  |¡ddgdtddƒ ftddƒdffdtddƒtddƒffgfks‚t‚| j|td	d
ƒdtddƒtddƒfdgtddƒtddƒ ftddƒtddƒ fftddƒtddƒftddƒtddƒffgfkst‚d S )Nr   r   r   r   r   r`   rC   r   r   r   r5   éùÿÿÿrY   r¯   r.   rH   é@   rk   éA   )r   r   Zdup_isolate_all_roots_sqfr   r   r   r   r   r   Útest_dup_isolate_all_roots_sqf  s    (4ÿÿRÿÿrº   c                     sd  t dtƒ\‰ } d| d  | d  d| d   d|   ‰ˆ  ˆ¡ddgdtddƒ ftddƒdffd	fd
tddƒtddƒffd	fgfksŠt‚ˆ jˆtd	dƒdtddƒtddƒfd	fdgtddƒtddƒ ftddƒtddƒ ffd	ftddƒtddƒftddƒtddƒffd	fgfkst‚| d | d  d| d   d| d   |  d	 ‰tt‡ ‡fdd„ƒ d S )Nr   r   r   r   r   )r`   r   r‚   r   r   rC   r   r5   r·   rY   r¯   r.   rH   r¸   rk   r¹   c                      s
   ˆ   ˆ¡S r   )Údup_isolate_all_rootsr   r-   r   r   r!   7  r"   z,test_dup_isolate_all_roots.<locals>.<lambda>)r   r   r»   r   r   r   ÚNotImplementedError)r   r   r-   r   Útest_dup_isolate_all_roots(  s$    ( ÿÿÿ.*ÿÿÿ
0r½   N)-Ú__doc__Zsympy.polys.ringsr   Zsympy.polys.domainsr   r   r   r   Zsympy.polys.polyerrorsr   r   r	   Zsympy.polys.rootisolationr
   r   r   Zsympy.testing.pytestr   r   r%   r'   r)   rA   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   Ú<module>   s>   
		A 2O?&"1''6"