a
    Ÿ¬<bÔ  ã                   @   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"J ‚|  |¡|dgks8J ‚|d d|d   d|  d }|  |¡|d|d  d|  d tddƒ | td	dƒ td
dƒ gks¤J ‚d S )NÚxé   é   é   é   é   é
   é	   é   iç  éd   )r   r   Z	dup_sturm©ÚRr   Úf© r   út/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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sPJ ‚ttdƒtdƒtdƒgtƒtdƒksxJ ‚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   Ú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sbJ ‚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   Ú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sFJ ‚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   Ú#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sHJ ‚ˆ jˆtdƒtdƒddtdƒtdƒfksvJ ‚tt‡ ‡fdd„ƒ tddƒtddƒ }}ˆ jˆ||ddtddƒtddƒfksÊJ ‚ˆ jˆ||ddtddƒtd	dƒfksôJ ‚ˆ jˆ||ddtd
d	ƒtd	dƒfks J ‚ˆ jˆ||d	dtddƒtd	dƒfksLJ ‚ˆ jˆ||d
dtddƒtddƒfksxJ ‚tddƒtd	dƒ }}ˆ jˆ||ddtddƒtd	dƒfksºJ ‚ˆ jˆ||ddtd
d	ƒtd	dƒfksæJ ‚ˆ jˆ||ddtddƒtd	dƒfksJ ‚ˆ jˆ||d	dtddƒtddƒfks>J ‚ˆ jˆ||d
dtddƒtddƒfksjJ ‚tddƒtdd	ƒ }}ˆ jˆ||ddtddƒtdd	ƒfks¬J ‚ˆ jˆ||ddtddƒtd	dƒfksØJ ‚ˆ jˆ||ddtddƒtd	dƒfksJ ‚ˆ jˆ||d	dtddƒtddƒfks0J ‚ˆ jˆ||d
dtddƒtddƒfks\J ‚tddƒtddƒ }}ˆ jˆ||ddtddƒ tddƒ fks¢J ‚ˆ jˆ||ddtd	dƒ tddƒ fksÒJ ‚ˆ jˆ||ddtd	dƒ td
d	ƒ fksJ ‚ˆ jˆ||d	dtd	dƒ tddƒ fks2J ‚ˆ jˆ||d
dtddƒ tddƒ fksbJ ‚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ÎJ ‚ˆ jˆ||dd||fksîJ ‚ˆ jˆ||tddƒdd||fksJ ‚ˆ jˆ||tddƒdd||fks>J ‚ˆ jˆ||tddƒdd||fksfJ ‚tdƒtdƒtddƒtdd	ƒf\}}}}ˆ jˆ||tdƒd||fks²J ‚ˆ jˆ||| d||fksÔJ ‚ˆ jˆ|||d||fksôJ ‚tdƒtdƒtd
d	ƒtd	dƒf\}}}}ˆ jˆ||tdƒd||fks@J ‚ˆ jˆ||| d||fksbJ ‚ˆ jˆ|||d||fks‚J ‚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é   )r5   r)   éýÿÿÿéüÿÿÿéûÿÿÿ)Zdisjoint)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& (((($" ($"r@   c                     sT  t dtƒ\‰ ‰ˆ  d¡g ks J ‚ˆ  d¡g ks2J ‚ˆ  ˆd ˆ ¡ddgksPJ ‚ˆ  ˆd ˆ ¡ddgksnJ ‚ˆ  ˆd ˆ d	 ¡g ksŒJ ‚d
dg} ˆ  ˆd d ¡| ks®J ‚ˆ  ˆd  d ¡| ksÊJ ‚ˆ  ˆd	 ¡dgksâJ ‚ˆ  ˆd dˆ  d ¡ddgks
J ‚ˆ  ˆd dˆd   dˆ  d ¡g d¢ks>J ‚ˆ  ˆd dˆd   dˆd   dˆ  d ¡g d¢ks~J ‚ˆ  ˆd dˆd   dˆd   dˆd   dˆ  d ¡g d¢ksÊJ ‚ˆ  ˆd ¡dgksäJ ‚ˆ  ˆd dˆ  d ¡ddgksJ ‚ˆ  ˆd d ˆd   d!ˆ  d" ¡g d#¢ks@J ‚ˆ  ˆd d$ˆd   d%ˆd   d&ˆ  d' ¡g d(¢ks€J ‚ˆ  ˆd d)ˆd   d*ˆd   d+ˆd   d,ˆ  d- ¡g d.¢ksÌJ ‚ˆ  ˆd	 ¡dgksæJ ‚ˆ  ˆd dˆ  d ¡d/dgksJ ‚ˆ  ˆd dˆd   dˆ  d ¡g d0¢ksBJ ‚ˆ  ˆd dˆd   dˆd   dˆ  d ¡g d1¢ks‚J ‚ˆ  ˆd dˆd   dˆd   dˆd   dˆ  d ¡g d2¢ksÎJ ‚ˆ  ˆd ¡d3gksèJ ‚ˆ  ˆd dˆ  d ¡d4d3gksJ ‚ˆ  ˆd d ˆd   d!ˆ  d" ¡g d5¢ksDJ ‚ˆ  ˆd d$ˆd   d%ˆd   d&ˆ  d' ¡g d6¢ks„J ‚ˆ  ˆd d)ˆd   d*ˆd   d+ˆd   d,ˆ  d- ¡g d7¢ksÐJ ‚ˆ  ˆd d ¡d8d9gksðJ ‚ˆ  ˆd d ¡dgksJ ‚ˆ  ˆd d ¡d
dgks.J ‚ˆ  ˆd d ¡dgksLJ ‚ˆ  ˆd d ¡d
dgkslJ ‚ˆ  ˆd: d ¡dgksŠJ ‚ˆ  ˆd; d ¡d
dgksªJ ‚ˆ  ˆd< d ¡dgksÈJ ‚ˆ  ˆd d	 ¡ddgksèJ ‚ˆ  ˆd dˆd   ˆ d ¡g d=¢ksJ ‚ˆ  ˆd dˆd   d ¡g d>¢ksDJ ‚ˆ  ˆd dˆd   dˆd   dˆd   dˆ  d? ¡g d@¢ksJ ‚ˆ  ˆd dAˆd   dBˆd   dC ¡g dD¢ksÈJ ‚ˆ  dˆd:  ˆd  dEˆd   dAˆd   dFˆd   dBˆd   dGˆ  dC ¡g dH¢ks,J ‚ˆ  dˆd;  dIˆd   dJˆd   dKˆd   dC ¡g dL¢kstJ ‚d<ˆd  d }ˆ  |¡dMdNgksœJ ‚ˆ j|td	dƒdOtdPdƒtdQd:ƒftdd:ƒtd	dƒfgksÞJ ‚ˆ j|td	d$ƒdOtdRdSƒtdTdUƒftd;dUƒtd<dSƒfgks J ‚ˆ j|td	dVƒdOtdWdXƒtdTdUƒftd;dUƒtdYdXƒfgksbJ ‚ˆ j|td	dZƒdOtdWdXƒtd[d\ƒftd]d\ƒtdYdXƒfgks¤J ‚ˆ j|td	d^ƒdOtd_d`ƒtdadbƒftdcdbƒtddd`ƒfgksæJ ‚ˆ j|td	deƒdOtdfdgƒtdadbƒftdcdbƒtdhdgƒfgk	s(J ‚diˆd  djˆd   dkˆd   dlˆd   dmˆ  d }ˆ  |¡tdƒtd	dnƒftd	dnƒtd	dnƒftd	dƒtd	dƒftd	ƒtd	ƒftdƒtdƒfgk	sÈJ ‚ˆ j|td	d^ƒdOtd	doƒtd	doƒftd	dnƒtd	dnƒftd	dƒtd	dƒftd	ƒtd	ƒftdƒtdƒfgk
s8J ‚dp\}}}}dqˆd  drˆd   dsˆd   dtˆ  du }ˆ  |¡| | fdMdN||fgk
sœJ ‚ˆ j|td	dvƒdOt|ƒ t|ƒ ftd	|ƒ td	|ƒ ftd	|ƒtd	|ƒft|ƒt|ƒfgksJ ‚ˆ j|dwdx\\}}}}	\}
}||   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 J ‚ˆ j|dwtd	dyƒdzt|ƒ t|ƒ ftd	|ƒ td	|ƒ ftd	|ƒtd	|ƒft|ƒt|ƒfgksòJ ‚d{ˆd  d;ˆd   d|ˆd   d}ˆ  d~ }ˆ  |¡g d¢ks:J ‚ˆ j|td	d$ƒdOtdƒ tdƒ ftd€dAƒ tddƒ ftdƒtdƒftd‚dƒƒtd„d<ƒfgks J ‚ˆd	 }ˆ j|dd…g ksÀJ ‚ˆ j|dd†g ksØJ ‚ˆ  |¡dgksîJ ‚ˆ j|d	d…dgksJ ‚ˆ j|d	d†dgks"J ‚ˆ j|d	d	d‡dgks>J ‚ˆd d }ˆ j|td:dƒd…g kshJ ‚ˆ j|td:dƒd…td:dƒtddƒfgks˜J ‚ˆ j|td:dƒd†d
gks¸J ‚ˆ j|td:dƒd†d
d	tddƒfgksäJ ‚ˆ j|td:dƒ d†g ksJ ‚ˆ j|td:dƒ d†tddƒ td:dƒ fgks:J ‚ˆ j|td:dƒ d…dgks\J ‚ˆ j|td:dƒ d…tddƒ dPfdgksŒJ ‚d
dg} ˆ j|dˆd…| ks¬J ‚ˆ j|dd†| ksÄJ ‚ˆ j|dˆdd‡| ksÞJ ‚t dtƒ\‰ ‰td;dƒˆd  td‰dŠƒˆ  tdUd‹ƒ }ˆ  |¡dMdŒgks.J ‚t dtƒ\‰ ‰tt‡ ‡fddŽ„ƒ d S )Nr   r   r   r   ©r2   r2   ©r   r   ©r   r   r   r   ©r#   r2   ©r   r   r   ©r   r   r6   é   )rC   rF   ©r   r   r   é#   é2   r3   )rC   rF   rH   ©r   r   é   éU   éá   i  éx   )rC   rF   rH   rK   )r   r   ©r   r   é   éÈ   ©é   rT   é<   iL  ip  )rP   rS   ©rQ   rQ   r   i¬  iPÃ  i€© )rP   rS   rV   ©é(   rX   é–   i4!  ièn i Ï) i · )rP   rS   rV   rW   )rJ   rJ   ©r#   r#   )©r7   r7   rZ   rA   )©r8   r8   r[   rZ   rA   ))r9   r9   r\   r[   rZ   rA   ©éöÿÿÿr^   ©éìÿÿÿr`   )©éâÿÿÿrb   r_   r]   )©éØÿÿÿrd   ra   r_   r]   ))éÎÿÿÿre   rc   ra   r_   r]   )r7   r#   ©r   r   r-   é   r   )rZ   rA   rC   )rZ   rA   rC   rF   r/   )r[   rZ   rA   rC   rF   é   é1   é$   )r[   rZ   rA   rC   rF   rH   é   éb   éH   )r[   rZ   rA   ©r2   r   rC   rF   rH   é9   éÒ   éÁ   )r[   rZ   rA   rn   ©r   r   rC   rF   rH   rn   rr   r4   r2   r7   i÷ÿÿÿr1   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 )rw   r5   r^   éP   é    é    )rZ   rD   rF   rf   é   é   é'   é   é   ©Úinf©Úsup©r   rƒ   r#   iNU i  i  )rh   rL   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   r†   r   r   r   r   )ÚIr   ÚaÚbÚcÚdr=   r>   ÚBÚCr;   r<   r   r‡   r   Útest_dup_isolate_real_roots_sqfp   sp   ÿÿ
$ÿ
0ÿ
<ÿ
ÿ
ÿ
$ÿ
0ÿ
<ÿ
ÿ
ÿ
$ÿ
0ÿ
<ÿ
ÿ
ÿ
$ÿ
0ÿ
<ÿ
    ÿ
 ÿ
ÿ
<ÿ
(ÿ
Tÿ
8ÿ
ÿ
&ÿ
&ÿ
&ÿ
&ÿ
&ÿ
&ÿ
<".ÿÿ
$.ÿÿ


ÿ
þýüÿ
Jÿ
jJÿ
0ÿ
Jÿ
0 , 6"0*r   c                     sÎ  t dtƒ\‰ ‰ˆ  d¡g ks J ‚ˆ  d¡g ks2J ‚ˆ  dˆ ¡dgksJJ ‚ˆ  dˆd  ¡dgksfJ ‚ˆ  ˆd	 ˆ ¡d
dgks„J ‚ˆ  ˆd	 ˆ ¡ddgks¢J ‚ˆ  ˆd ˆ d ¡g ksÀJ ‚ddg} ˆ  ˆd	 d	 ¡| ksâJ ‚ˆ  ˆd	  d	 ¡| ksþJ ‚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s4J ‚ˆ  |¡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¤J ‚ˆ  |¡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(J ‚ˆd }ˆ j|d	d&g ksHJ ‚ˆ j|dd'g ks`J ‚ˆ  |¡dgksvJ ‚ˆ j|dd&dgksJ ‚ˆ j|dd'dgksªJ ‚ˆ j|ddd(dgksÆJ ‚ˆd dˆd	   d }ˆ j|tddƒd&g ksüJ ‚ˆ j|tddƒd&tddƒtdd	ƒfd	fgks0J ‚ˆ j|tddƒd'd)gksPJ ‚ˆ j|tddƒd'd)dtdd	ƒfd	fgks€J ‚ˆ j|tddƒ d'g ks J ‚ˆ j|tddƒ d'tdd	ƒ tddƒ fd	fgksÚJ ‚ˆ j|tddƒ d&d*gksüJ ‚ˆ j|tddƒ d&tdd	ƒ d+fd	fd*gks0J ‚d)d*g} ˆ j|d,d&| ksPJ ‚ˆ j|d	d'| kshJ ‚ˆ j|d,d	d(| ks‚J ‚ˆd dˆd   ˆd  dˆd   dˆd   dˆd   dˆd   dˆd   }ˆ j|d-d.g d/¢ksöJ ‚ˆ j|d0d.d1d	g d2¢fd3dddgfd4ddd+gfd5d	g d2¢fgks>J ‚ˆd6 d6ˆd7   d8ˆd9   d }ˆd: d;ˆd9   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\ˆd_   dZˆd`   dXˆda   dVˆdb   dTˆdc   dRˆdd   dPˆd   dNˆde   dLˆd   dJˆd   dHˆd   dFˆd   dDˆd   dBˆd   d@ˆd   d>ˆd   d<ˆd   dfˆd   dgˆd   d;ˆd   dhˆd	   diˆ  d }ˆ  || ¡dtdd	ƒfdftd	dƒtddƒfdftddƒdfdfdjdkgks¨J ‚t dtƒ\‰ ‰tt‡ ‡fdldm„ƒ d S )nNr   r   r   r   ©rB   r   r-   r   ©rB   r   r   )rA   r   )rC   r   r   )rD   r   )rE   r   r~   rh   é`   r   r3   r/   i¨  rG   i?  r   i@  r   iì#  rg   i(  iGU  r6   i6  iºT  i h  id  iÀ<  iÈ  r€   r‚   r„   ©rD   r   ©rE   r   r2   r#   F©Zbasis)r“   r‘   )rC   r   r”   TrD   ©r   r   r#   rB   rC   rE   é-   é,   iÞ  é+   é.   iL;  i#íŽ rX   iÈ¸0r}   iÏ„é&   ijÛªAé%   l   Õ+ðe rj   l   \2X6 rI   l   7h$ é"   l   szc^ rt   l   EX¡3ß ry   l   `MLÜé   l   ê}F3›rQ   l   ¬VæC]é   l   N6e-A
rk   l   X.Ëxr0   l   *xx	gé   l   4pÞTBé   l   Þsˆ=´l   °;m}ór{   r   é   rT   r1   r|   r.   rL   i‚ê iq} i  é/   ))r6   r-   r   ))r3   r¡   r   c                      s   ˆ   ˆd ¡S r…   )Údup_isolate_real_rootsr   r‡   r   r   r    m  r!   z-test_dup_isolate_real_roots.<locals>.<lambda>)	r   r   r¤   Zdup_sqf_partr   r†   r   r   r   )rˆ   r   Úgr   r‡   r   Útest_dup_isolate_real_roots!  sž    R
ÿ
ÿ
ÿ
ÿ
ÿ
ÿÿÿ
F*ÿÿ
:"ÿÿ
F*ÿÿ
4 0 :"4Xÿ
2ÿ
$ÿ õ<ÿ
r¦   c               	      s(  t dtƒ\‰ ‰ˆ  ˆd ˆ ˆg¡dddifddddœfgksBJ ‚ˆ  ˆd ˆ ˆg¡ddddœfdddifgksvJ ‚ˆ  ˆ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üJ ‚ˆ  ˆ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„J ‚ˆd dˆd   d ˆd  } }ˆ j| |gtddƒdg ksÈJ ‚ˆ j| |gtddƒdtddƒtddƒfddifgksJ ‚ˆ j| |gtddƒddddifdddifgks:J ‚ˆ 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„J ‚ˆ j| |gtddƒ dg ks¨J ‚ˆ j| |gtddƒ dtddƒ tddƒ fddifgksêJ ‚ˆ j| |gtddƒ ddddifdddifgks"J ‚ˆ 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spJ ‚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J ‚ˆ 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ŒJ ‚ˆ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J ‚ˆ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ÌJ ‚ˆ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¢J ‚ˆ j| |gdddddig d ¢fddddœddgfddddœddgfdddig d ¢fgksJ ‚t dtƒ\‰ ‰tt‡ ‡fd!d"„ƒ d S )#Nr   r   rA   r   r   rB   rr   rC   )r   r   )r   r   r   )r   r   )r   r   r   r-   r€   r   r   r‚   rD   rE   r2   T)Ústrict)r   r   r   rg   rG   r6   r/   Fr•   r–   c                      s   ˆ   ˆd g¡S r…   )Údup_isolate_real_roots_listr   r‡   r   r   r    ¬  r!   z2test_dup_isolate_real_roots_list.<locals>.<lambda>)r   r   r¨   r   r   r   r   )r   r¥   r   r‡   r   Ú test_dup_isolate_real_roots_listp  s„    ÿÿ,Rÿ,Rÿ
""ÿ
ÿ
*ÿ
$ ÿ
ÿ
,ÿ
2,ÿÿ
: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spJ ‚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øJ ‚d S )Nr   r   rR   éÉ   éK   r    ée   rI   r   r   i5  rv   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 J ‚|  d¡dks2J ‚|d }|  |¡dksLJ ‚| j|dddksbJ ‚| j|dddksxJ ‚| j|dddksŽJ ‚| j|ddddks¦J ‚| j|ddddks¾J ‚| j|ddddksÖJ ‚|d d }|  |¡dksôJ ‚| j|dddksJ ‚| j|d	dddks&J ‚d S )
Nr   r   r-   r   r€   r‚   r„   r   r2   )r   r   Zdup_count_real_rootsr   r   r   r   Útest_dup_count_real_rootsÁ  s    r®   r   c                  C   sz   t dtƒ\} }|d }|  |tt¡dks,J ‚|  |tt¡dksBJ ‚|d }|  |tt¡dks`J ‚|  |tt¡dksvJ ‚d S )Nr   r   r   ©r   r   Údup_count_complex_rootsr‰   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s0J ‚|  |tt¡dksFJ ‚|d  | }|  |tt¡dksjJ ‚|  |tt¡dks€J ‚|d | }|  |tt¡dks¢J ‚|  |tt¡dks¸J ‚|d  | }|  |tt¡dksÜJ ‚|  |tt¡dksòJ ‚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s0J ‚|  |tt¡dksFJ ‚|d | }|  |tt¡dkshJ ‚|  |tt¡dks~J ‚|d  | }|  |tt¡dks¢J ‚|  |tt¡dks¸J ‚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s0J ‚|  |tt¡dksFJ ‚|d | }|  |tt¡dkshJ ‚|  |tt¡dks~J ‚|d  | }|  |tt¡dks¢J ‚|  |tt¡dks¸J ‚|d |d  | d }|  |tt¡dksæJ ‚|  |tt¡dksüJ ‚|d |d  |d  | }|  |tt¡dks0J ‚|  |tt¡dksHJ ‚|d  |d  |d  | }|  |tt¡dks~J ‚|  |tt¡dks–J ‚|d d }|  |tt¡dksºJ ‚|  |tt¡dksÒJ ‚|d | }|  |tt¡dksöJ ‚|  |tt¡dksJ ‚|d  | }|  |tt¡dks4J ‚|  |tt¡dksLJ ‚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s8J ‚|  |tt¡dksNJ ‚|d |d  d }|  |tt¡dksxJ ‚|  |tt¡dksŽJ ‚|d |d  d|  }|  |tt¡dks¼J ‚|  |tt¡dksÒJ ‚|d d|d   d|  d }|  |tt¡dks
J ‚|  |tt¡dks"J ‚|d d|d   d|d   d|  }|  |tt¡dksbJ ‚|  |tt¡dkszJ ‚|d d|d   |d  d|  d }|  |tt¡dksºJ ‚|  |tt¡dksÒJ ‚|d d|d   |d  d|d   d|  }|  |tt¡dksJ ‚|  |tt¡dks2J ‚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s8J ‚|  |tt¡dksNJ ‚|d d|d   d|  d }|  |tt¡dks„J ‚|  |tt¡dksšJ ‚|d d|d   d|d   d|  }|  |tt¡dksØJ ‚|  |tt¡dksîJ ‚|d |d  d }|  |tt¡dksJ ‚|  |tt¡dks2J ‚|d |d  d|  }|  |tt¡dksbJ ‚|  |tt¡dkszJ ‚|d d|d   |d  d|  d }|  |tt¡dksºJ ‚|  |tt¡dksÒJ ‚|d d|d   |d  d|d   d|  }|  |tt¡dksJ ‚|  |tt¡dks2J ‚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s0J ‚|  |tt¡dksFJ ‚|d d|d   d|  d }|  |tt¡dks|J ‚|  |tt¡dks’J ‚|d d|d   d|d   d }|  |tt¡dksÌJ ‚|  |tt¡dksâJ ‚|d |d  d|  d }|  |tt¡dksJ ‚|  |tt¡dks.J ‚|d |d  d|d   d|  }|  |tt¡dksjJ ‚|  |tt¡dks‚J ‚|d |d  d|  d }|  |tt¡dks¶J ‚|  |tt¡dksÎJ ‚|d |d  d|d   d|  }|  |tt¡dks
J ‚|  |tt¡dks"J ‚|d |d  d|d   d }|  |tt¡dksZJ ‚|  |tt¡dksrJ ‚|d	 |d  d|d   d|  }|  |tt¡d	ks®J ‚|  |tt¡dksÆJ ‚|d d|d   d }|  |tt¡dksöJ ‚|  |tt¡dksJ ‚d S )
Nr   r   r   r   r   rg   r6   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@J ‚|  |tt¡dksVJ ‚|d d|d   d|d   d	|d   d|d   d
|  }|  |tt¡dks¬J ‚|  |tt¡dksÂJ ‚d S )Nr   r   r   r   r   rG   r   r-   r6   rg   r¯   r   r   r   r   Útest_dup_count_complex_roots_8È  s    @r¹   c                  C   s\   t dtƒ\} }|d | }|  |¡dks,J ‚| j|dddksBJ ‚| j|dddksXJ ‚d S )Nr   r   rB   r‚   r   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sTJ ‚| j|||dgddkspJ ‚| j|||d	gddksŒJ ‚| j|||dd	gdd
ksªJ ‚| j|||dgddksÆJ ‚| j|||dgddksâJ ‚| j|||ddgddksJ ‚| j|||g d¢dd
ks"J ‚| j|||dgddks@J ‚| j|||dgddks^J ‚| j|||ddgdd
ks~J ‚| j|||g d¢ddksžJ ‚| j|||g d¢ddks¾J ‚tdƒtdƒftdƒtdƒf }}| j|||dddksüJ ‚d S )Nr   r   r   r   r   ÚS)Úexcluder   ÚNr   ÚEÚW)r½   r»   r¾   r¿   ÚSWÚSE)rÀ   rÁ   r»   )rÀ   rÁ   r»   r½   T)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s8J ‚dd„ | j|dd	D ƒddgks\J ‚| 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ÈJ ‚| 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s6J ‚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âJ ‚d S )!Nr   r   r   ))r   éúÿÿÿ)r6   r   )rB   )r6   r6   c                 S   s   g | ]}|  ¡ ‘qS r   )Úas_tuple)Ú.0Úrr   r   r   Ú
<listcomp>
  r!   z6test_dup_isolate_complex_roots_sqf.<locals>.<listcomp>T)Zblackboxr   r   r4   rL   r~   rt   ry   r—   r   éÿ   é   ik  i  i   iÓ  r-   r   r1   rT   r.   rX   rB   r   )r   r   Zdup_isolate_complex_roots_sqfr   r   r   r   r   Ú"test_dup_isolate_complex_roots_sqf  s0    ÿÿ*&ÿÿ*&ÿÿ
062ÿÿ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‚J ‚| 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J ‚d S )Nr   r   r   r   r   rn   rB   r   r   r   r4   éùÿÿÿrg   rÃ   r-   rI   é@   ry   éA   )r   r   Zdup_isolate_all_roots_sqfr   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ŠJ ‚ˆ 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J ‚| d | d  d| d   d| d   |  d	 ‰tt‡ ‡fdd„ƒ d S )Nr   r   r   r   r   )rn   r   r   r   r   rB   r   r4   rË   rg   rÃ   r-   rI   rÌ   ry   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   Ú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(   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   Ú<module>   s>   
		A 2O?&"1''6"