U
    	Ç-eÔ  ã                   @   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   úe/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/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   Ú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é   )r7   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& (((($" ($"rB   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   ©r4   r4   ©r   r   ©r   r   r   r   ©r$   r4   ©r   r   r   )r   r   r8   é   )r   r   r   é#   é2   r5   )r   r   é   éU   éá   i  éx   )r   r   )r   r   é   éÈ   )é   rQ   é<   iL  ip  )rO   rO   r   i¬  iPÃ  i€© )é(   rS   é–   i4!  ièn i Ï) i · )rJ   rJ   )r$   r$   )r9   r9   )r:   r:   )r;   r;   )éöÿÿÿrU   )éìÿÿÿrV   )éâÿÿÿrW   )éØÿÿÿrX   )éÎÿÿÿrY   )r9   r$   )r   r   r/   é   r   r1   é   é1   é$   é   éb   éH   ©r4   r   é9   éÒ   éÁ   ©r   r   r6   r4   r9   i÷ÿÿÿr3   iøÿÿÿr0   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 )rj   r7   rU   éP   é    é    é   é   é'   é   é   ©Úinf©Úsup©rt   rv   r$   iNU i  i  )r[   rK   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   ry   r   r   r   r   r   )ÚIr   ÚaÚbÚcÚdr?   r@   ÚBÚCr=   r>   r   rz   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   ©rD   r   r/   r   )rD   r   r   )rC   r   )rE   r   r   )rF   r   )rG   r   rq   r[   é`   r   r5   r1   i¨  rH   i?  r   i@  r   iì#  rZ   i(  iGU  r8   i6  iºT  i h  id  iÀ<  iÈ  rs   ru   rw   )rF   r   )rG   r   r4   r$   F©Zbasis)rE   r   TrF   rD   rE   rG   é-   é,   iÞ  é+   é.   iL;  i#íŽ rS   iÈ¸0rp   iÏ„é&   ijÛªAé%   l   Õ+ðe r]   l   \2X6 rI   l   7h$ é"   l   szc^ rg   l   EX¡3ß rl   l   `MLÜé   l   ê}F3›rO   l   ¬VæC]é   l   N6e-A
r^   l   X.Ëxr2   l   *xx	gé   l   4pÞTBé   l   Þsˆ=´l   °;m}órn   rr   é   rQ   r3   ro   r0   rK   i‚ê iq} i  é/   ))r8   r/   r   ))r5   r   r   c                      s   ˆ   ˆd ¡S rx   )Údup_isolate_real_rootsr   rz   r   r   r!   m  r"   z-test_dup_isolate_real_roots.<locals>.<lambda>)
r   r   r“   r   Zdup_sqf_partr   ry   r   r   r   )r{   r   Úgr   rz   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   rC   r   r   rD   re   rE   )r   r   )r   r   r   )r   r   )r   r   r   r/   rs   r   r   ru   rF   rG   r4   T)Ústrict)r   r   r   rZ   rH   r8   r1   Fr…   r$   c                      s   ˆ   ˆd g¡S rx   )Údup_isolate_real_roots_listr   rz   r   r   r!   ¬  r"   z2test_dup_isolate_real_roots_list.<locals>.<lambda>)r   r   r—   r   r   r   r   r   )r   r”   r   rz   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   rP   éÉ   éK   r   ée   rI   r   r   i5  ri   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   rs   ru   rw   r   r4   )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   rZ   r8   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   rH   r   r/   r8   rZ   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   rD   ru   r   rs   )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   éúÿÿÿ)r8   r   )rD   )r8   r8   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   r6   rK   rq   rg   rl   r†   r   éÿ   é   ik  i  i   iÓ  r/   r   r3   rQ   r0   rS   rD   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   ra   rD   r   r   r   r6   éùÿÿÿrZ   r°   r/   rI   é@   rl   é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   )ra   r   rƒ   r   r   rD   r   r6   r¸   rZ   r°   r/   rI   r¹   rl   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*   rB   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"