
    \h                     r   S r SSKJr  SSKJrJrJrJr  SSKJ	r	J
r
Jr  SSKJrJrJr  SSKJr  S rS rS	 rS
 rS rS rS rS rS rS r\" S5      * \" S5      * 4\" S5      \" S5      4srr\" S5      \" S5      4\" S5      \" S5      4srrS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,g) zETests 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                  X   [        S[        5      u  pU R                  S5      S/:X  d   eU R                  U5      US/:X  d   eUS-  SUS-  -  -
  SU-  -   S-
  nU R                  U5      USUS-  -  SU-  -
  S-   [        SS5      * U-  [        S	S5      -   [        S
S5      * /:X  d   eg )Nx               
   	      i  d   )r   r   	dup_sturmRr   fs      \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/tests/test_rootisolation.pytest_dup_sturmr      s    R=DA;;q>aS   ;;q>aV###	1qAv!aA;;q>a1a4!A#!1Br!H9Q;Bq3IBtTWL=YYYY    c                  h   [        [        S 5        [        [        S 5        [        [        S 5        [        [	        S5      [	        S5      [	        S5      /[        5      [        R
                  :X  d   e[        [	        S5      [	        S5      [	        S5      /[        5      [	        S5      :X  d   eg )Nc                  "    [        / [        5      $ Nr   r    r    r   <lambda>-test_dup_cauchy_upper_bound.<locals>.<lambda>       $:2r$Br    c                  6    [        [        S5      /[        5      $ Nr   r$   r%   r    r   r&   r'          $:BqE7B$Gr    c                  J    [        [        S5      [        S5      /[        5      $ r*   )r   r   r%   r    r   r&   r'           6Qa7I4 Pr    r   r   r   )r   r
   r   r   r   zeror%   r    r   test_dup_cauchy_upper_boundr0      s{    
?BC
?GH
;PQ!2a5"Q%A"7<GGG!2a5"Q%B"8"=AFFFr    c                     [        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [	        S5      [	        S5      [	        S5      /[        5      [	        SS	5      :X  d   eg )
Nc                  "    [        / [        5      $ r#   r   r   r%   r    r   r&   -test_dup_cauchy_lower_bound.<locals>.<lambda>    r(   r    c                  6    [        [        S5      /[        5      $ r*   r3   r%   r    r   r&   r4   !   r+   r    c                  ^    [        [        S5      [        S5      [        S5      /[        5      $ )Nr   r   r3   r%   r    r   r&   r4   "   s     $:BqE2a5"Q%;PRT$Ur    c                  J    [        [        S5      [        S5      /[        5      $ r*   )r   r   r%   r    r   r&   r4   #   r-   r    r   r   r.   r   r   )r   r
   r   r   r   r%   r    r   test_dup_cauchy_lower_boundr8      s\    
?BC
?GH
?UV
;PQ!2a5"Q%B"8"=AqIIIr    c                      [        [        S 5        [        [        S 5        [        [        S5      [        S5      [        S5      /[        5      [        SS5      :X  d   eg )Nc                  "    [        / [        5      $ r#   r   r   r%   r    r   r&   5test_dup_mignotte_sep_bound_squared.<locals>.<lambda>)   s    $B2r$Jr    c                  6    [        [        S5      /[        5      $ r*   r;   r%   r    r   r&   r<   *   s    $BBqE7B$Or    r   r   r.   r   r   )r   r
   r   r   r%   r    r   #test_dup_mignotte_sep_bound_squaredr>   (   sF    
?JK
?OP)2a5"Q%B*@"EAqQQQr    c            	        ^^ [        S[        5      u  mn U S-  S-
  mTR                  T[        S5      [        S5      SS9[        S5      [        S5      4:X  d   eTR                  T[        S5      [        S5      SS9[        S5      [        S5      4:X  d   e[	        [
        UU4S j5        [        SS5      [        SS5      p!TR                  TXSS9[        SS5      [        SS5      4:X  d   eTR                  TXSS9[        SS5      [        SS5      4:X  d   eTR                  TXSS9[        S	S5      [        SS5      4:X  d   eTR                  TXSS9[        S
S5      [        SS5      4:X  d   eTR                  TXS	S9[        S
S5      [        SS
5      4:X  d   e[        SS5      [        SS5      p!TR                  TXSS9[        SS5      [        SS5      4:X  d   eTR                  TXSS9[        S	S5      [        SS5      4:X  d   eTR                  TXSS9[        S
S5      [        SS5      4:X  d   eTR                  TXSS9[        S
S5      [        SS
5      4:X  d   eTR                  TXS	S9[        S
S5      [        SS5      4:X  d   e[        SS5      [        SS5      p!TR                  TXSS9[        SS5      [        SS5      4:X  d   eTR                  TXSS9[        SS5      [        SS5      4:X  d   eTR                  TXSS9[        S
S5      [        SS5      4:X  d   eTR                  TXSS9[        S
S5      [        SS5      4:X  d   eTR                  TXS	S9[        S
S5      [        SS5      4:X  d   e[        SS5      [        SS5      p!TR                  TXSS9[        SS5      * [        SS5      * 4:X  d   eTR                  TXSS9[        SS5      * [        SS5      * 4:X  d   eTR                  TXSS9[        SS5      * [        S	S5      * 4:X  d   eTR                  TXSS9[        SS5      * [        S
S5      * 4:X  d   eTR                  TXS	S9[        SS
5      * [        S
S5      * 4:X  d   e[	        [        UU4S j5        [        S5      [        S5      [        SS5      [        SS5      [        S
S5      4u  pp4nTR                  TX[        SS5      S9X44:X  d   eTR                  TXSS9X44:X  d   eTR                  TX[        SS5      SS9XT4:X  d   eTR                  TX[        SS5      SS9X44:X  d   eTR                  TX[        SS5      S
S9X44:X  d   e[        S5      [        S5      [        SS5      [        SS5      4u  pp4TR                  TX[        S5      S9X4:X  d   eTR                  TXU* S9X4:X  d   eTR                  TXUS9X44:X  d   e[        S5      [        S5      [        S	S5      [        SS5      4u  pp4TR                  TX[        S5      S9X4:X  d   eTR                  TXU* S9X4:X  d   eTR                  TXUS9X44:X  d   eg )Nr   r   r   )stepsr   c                  N   > T R                  T[        S5      [        S5      5      $ )Nr.   r   dup_refine_real_rootr   r   r   s   r   r&   +test_dup_refine_real_root.<locals>.<lambda>6   s    q55aBAGr    r   r   r      r   r         r         r.   c                  N   > T R                  T[        S5      [        S5      5      $ )Nr   r   rB   rD   s   r   r&   rE   X   s    Q%;%;Ar!ube%Lr       r   eps   )rO   r@   )disjoint)r   r   rC   r   r   
ValueErrorr	   )r   stuvwr   r   s         @@r   test_dup_refine_real_rootr[   /   s   R=DAq	1qA!!!RUBqE!;1r!u~MMM!!!RUBqE!;1r!u~MMM
:GHa8R1Xq!!!Q!31a"Q(7KKKK!!!Q!31a"Q(7KKKK!!!Q!31a"Q(7KKKK!!!Q!31a"Q(7KKKK!!!Q!31a"R)7LLLLa8R1Xq!!!Q!31a"Q(7KKKK!!!Q!31a"Q(7KKKK!!!Q!31a"Q(7KKKK!!!Q!31a"R)7LLLL!!!Q!31a"R*7MMMMa8R1Xq!!!Q!31a"Q(7KKKK!!!Q!31a"Q(7KKKK!!!Q!31a"Q(7KKKK!!!Q!31a"R)7LLLL!!!Q!31a"R*7MMMMb!9bQiq!!!Q!3Aq	Bq!H97MMMM!!!Q!3Aq	Bq!H97MMMM!!!Q!3Aq	Bq!H97MMMM!!!Q!3Aq	Bq!H97MMMM!!!Q!3B
R1XI7NNNN
LMqE2a5"R*bRj"Q(BMA!!!!Qr!Sz!:qfDDD!!!Q!3v===!!!Qr!Sz!CvMMM!!!Qr!Sz!CvMMM!!!Qr!Sz!CvMMMBBBBr1I5JA!!!!QBrF!;vEEE!!!QQB!7A6AAA!!!QA!61&@@@A1r!QxAq1JA!!!!QBqE!:qfDDD!!!QQB!7A6AAA!!!QA!61&@@@r    c            	      `  ^^ [        S[        5      u  mmTR                  S5      / :X  d   eTR                  S5      / :X  d   eTR                  TS-  T-   5      SS/:X  d   eTR                  TS-  T-
  5      SS/:X  d   eTR                  TS-  T-   S	-   5      / :X  d   eS
S/n TR                  TS-  S-
  5      U :X  d   eTR                  TS-  * S-   5      U :X  d   eTR                  TS	-
  5      S/:X  d   eTR                  TS-  ST-  -
  S-   5      SS/:X  d   eTR                  TS-  STS-  -  -
  ST-  -   S-
  5      / SQ:X  d   eTR                  TS-  STS-  -  -
  STS-  -  -   ST-  -
  S-   5      / SQ:X  d   eTR                  TS-  STS-  -  -
  STS-  -  -   STS-  -  -
  ST-  -   S-
  5      / SQ:X  d   eTR                  TS-
  5      S/:X  d   eTR                  TS-  ST-  -
  S-   5      SS/:X  d   eTR                  TS-  S TS-  -  -
  S!T-  -   S"-
  5      / S#Q:X  d   eTR                  TS-  S$TS-  -  -
  S%TS-  -  -   S&T-  -
  S'-   5      / S(Q:X  d   eTR                  TS-  S)TS-  -  -
  S*TS-  -  -   S+TS-  -  -
  S,T-  -   S--
  5      / S.Q:X  d   eTR                  TS	-   5      S/:X  d   eTR                  TS-  ST-  -   S-   5      S/S/:X  d   eTR                  TS-  STS-  -  -   ST-  -   S-   5      / S0Q:X  d   eTR                  TS-  STS-  -  -   STS-  -  -   ST-  -   S-   5      / S1Q:X  d   eTR                  TS-  STS-  -  -   STS-  -  -   STS-  -  -   ST-  -   S-   5      / S2Q:X  d   eTR                  TS-   5      S3/:X  d   eTR                  TS-  ST-  -   S-   5      S4S3/:X  d   eTR                  TS-  S TS-  -  -   S!T-  -   S"-   5      / S5Q:X  d   eTR                  TS-  S$TS-  -  -   S%TS-  -  -   S&T-  -   S'-   5      / S6Q:X  d   eTR                  TS-  S)TS-  -  -   S*TS-  -  -   S+TS-  -  -   S,T-  -   S--   5      / S7Q:X  d   eTR                  TS-  S-
  5      S8S9/:X  d   eTR                  TS-  S-
  5      S/:X  d   eTR                  TS-  S-
  5      S
S/:X  d   eTR                  TS-  S-
  5      S/:X  d   eTR                  TS-  S-
  5      S
S/:X  d   eTR                  TS:-  S-
  5      S/:X  d   eTR                  TS;-  S-
  5      S
S/:X  d   eTR                  TS<-  S-
  5      S/:X  d   eTR                  TS-  S	-
  5      SS/:X  d   eTR                  TS-  STS-  -  -   T-
  S-
  5      / S=Q:X  d   eTR                  TS-  STS-  -  -
  S-   5      / S>Q:X  d   eTR                  TS-  STS-  -  -   STS-  -  -
  STS-  -  -
  ST-  -   S?-   5      / S@Q:X  d   eTR                  TS-  SATS-  -  -
  SBTS-  -  -   SC-
  5      / SDQ:X  d   eTR                  STS:-  -  TS-  -   SETS-  -  -
  SATS-  -  -
  SFTS-  -  -   SBTS-  -  -   SGT-  -
  SC-
  5      / SHQ:X  d   eTR                  STS;-  -  SITS-  -  -
  SJTS-  -  -   SKTS-  -  -
  SC-   5      / SLQ:X  d   eS<TS-  -  S-
  nTR                  U5      SMSN/:X  d   eTR                  U[        S	S5      SO9[        SPS5      [        SQS:5      4[        SS:5      [        S	S5      4/:X  d   eTR                  U[        S	S$5      SO9[        SRSS5      [        STSU5      4[        S;SU5      [        S<SS5      4/:X  d   eTR                  U[        S	SV5      SO9[        SWSX5      [        STSU5      4[        S;SU5      [        SYSX5      4/:X  d   eTR                  U[        S	SZ5      SO9[        SWSX5      [        S[S\5      4[        S]S\5      [        SYSX5      4/:X  d   eTR                  U[        S	S^5      SO9[        S_S`5      [        SaSb5      4[        ScSb5      [        SdS`5      4/:X  d   eTR                  U[        S	Se5      SO9[        SfSg5      [        SaSb5      4[        ScSb5      [        ShSg5      4/:X  d   eSiTS-  -  SjTS-  -  -
  SkTS-  -  -   SlTS-  -  -
  SmT-  -   S-
  nTR                  U5      [        S5      [        S	Sn5      4[        S	Sn5      [        S	Sn5      4[        S	S5      [        S	S5      4[        S	5      [        S	5      4[        S5      [        S5      4/:X  d   eTR                  U[        S	S^5      SO9[        S	So5      [        S	So5      4[        S	Sn5      [        S	Sn5      4[        S	S5      [        S	S5      4[        S	5      [        S	5      4[        S5      [        S5      4/:X  d   eSpu  p#pESqTS-  -  SrTS-  -  -   SsTS-  -  -
  StT-  -
  Su-   nTR                  U5      U* U* 4SMSNXU4/:X  d   eTR                  U[        S	Sv5      SO9[        U5      * [        U5      * 4[        S	U5      * [        S	U5      * 4[        S	U5      [        S	U5      4[        U5      [        U5      4/:X  d   eTR                  USwSx9u  u  pgpu  pXb* s=:  a  U:  aH  O   eU[        S	5      * [        S5      4:X  a)  U	[        S5      [        S	5      4:X  a  Xs=:  a  U:  d   e   eTR                  USw[        S	Sy5      Sz9[        U5      * [        U5      * 4[        S	U5      * [        S	U5      * 4[        S	U5      [        S	U5      4[        U5      [        U5      4/:X  d   eS{TS-  -  S;TS-  -  -   S|TS-  -  -   S}T-  -
  S~-
  nTR                  U5      / SQ:X  d   eTR                  U[        S	S$5      SO9[        S5      * [        S5      * 4[        SSA5      * [        SS5      * 4[        S5      [        S5      4[        SS5      [        SS<5      4/:X  d   eTS	-
  nTR                  USS9/ :X  d   eTR                  USS9/ :X  d   eTR                  U5      S/:X  d   eTR                  US	S9S/:X  d   eTR                  US	S9S/:X  d   eTR                  US	S	S9S/:X  d   eTS-  S-
  nTR                  U[        S:S5      S9/ :X  d   eTR                  U[        S:S5      S9[        S:S5      [        SS5      4/:X  d   eTR                  U[        S:S5      S9S
/:X  d   eTR                  U[        S:S5      S9S
S	[        SS5      4/:X  d   eTR                  U[        S:S5      * S9/ :X  d   eTR                  U[        S:S5      * S9[        SS5      * [        S:S5      * 4/:X  d   eTR                  U[        S:S5      * S9S/:X  d   eTR                  U[        S:S5      * S9[        SS5      * SP4S/:X  d   eS
S/n TR                  USS9U :X  d   eTR                  USS9U :X  d   eTR                  USSS9U :X  d   e[        S[        5      u  mm[        S;S5      TS-  -  [        SS5      T-  -
  [        SUS5      -
  nTR                  U5      SMS/:X  d   e[        S[        5      u  mm[        [        UU4S j5        g )Nr   r   r   r   rK   rK   r   r   r   r   r   r   r.   rK   r   r   r   r   r   rP      )r_   rb   r   r   r   #   2   rM   )r_   rb   rd   r   r      U      i  x   )r_   rb   rd   rg   )r   r   r   r            rp   <   iL  ip  )rl   ro   rm   rm   r   i  iP  i )rl   ro   rr   (   rt      i4!  in i ) i  )rl   ro   rr   rs   )rf   rf   r.   r.   )rQ   rQ   rv   r]   )rR   rR   rw   rv   r]   ))rS   rS   rx   rw   rv   r]   rz   r|   )r~   r{   ry   )r   r}   r{   ry   ))r   r   r}   r{   ry   )rQ   r.   r   r   rF      r   )rv   r]   r_   )rv   r]   r_   rb   rH   )rw   rv   r]   r_   rb      1   $   )rw   rv   r]   r_   rb   rd      b   H   )rw   rv   r]   rK   r   r_   rb   rd   9         )rw   rv   r]   r   r   r   r_   rb   rd   r   r   rN   rK   rQ   irJ   irG   i  iF   !   i'  i   k   i ii  iiA  i  i1  i@B iiJ	  ia  iHi)i_)ikiQ  i'  i'  )l   j'a$i7wl   w (	 l   Hk}a$l   N,-U, l   *0Bde_/ l   @FR{.hN^3ma3 l   Yv~1b@
Ml   H_Zee W
l    h] T)fastl      @*_kzcP )r   rO   rz   P          )rv   r`   rb   r         '         infsupr   r   r.   iNU i  i  )r   rh   c                  ,   > T R                  TS-   5      $ Nr   )dup_isolate_real_roots_sqfr   r   s   r   r&   1test_dup_isolate_real_roots_sqf.<locals>.<lambda>  s     < <QU Cr    )r   r   r   r   r   r   r   )Ir   abcdrX   rY   BCrV   rW   r   r   s               @@r   test_dup_isolate_real_roots_sqfr   p   s   R=DAq''*b000''*b000''1q1h5GGGG''1q1h5GGGG''1q15;;;	6A''1q1Q666''A	2a777''A.	  ''1qs
Q7	  ''1qAv1(<q(@A ! ! !''1r!Q$wAqD(@2a4(G"(LM() ) )''1r!Q$wAqD(@3q!t8(KcRSe(SVY(YZ01 1 1 ''B/	
  ''1r!tc(9:	8  ''1r!Q$wa(?$(FG&' ' '''1s1a4x$q!t)(CeAg(MPV(VW01 1 1''1s1a4x$q!t)(CfQPQTk(QT[\]T](]`h(hi:; ; ; ''A.	
  ''1qs
Q7	8  ''1qAv1(<q(@A&' ' '''1r!Q$wAqD(@2a4(G"(LM01 1 1''1r!Q$wAqD(@3q!t8(KcRSe(SVY(YZ:; ; ; ''B/	  ''1r!tc(9:	Z ! ! !''1r!Q$wa(?$(FG,- - -''1s1a4x$q!t)(CeAg(MPV(VW89 9 9''1s1a4x$q!t)(CfQPQTk(QT[\]T](]`h(hiDE E E ''1q1h5GGGG''1q1fX===''1q1h5GGGG''1q1fX===''1q1h5GGGG''1q1fX===''1q1h5GGGG''1q1fX===''1q1	6  ''1qAv(9A(=>$% % %''1qAv(9:,- - -''1qAv!Q$(>AqD(H1Q3(NQS(ST67 7 7''1r!Q$wAqD(@2(EF>? ? ?''!Q$A1a4(?"QT'(IBqRStG(SVXYZ\]Y]V](]`bcd`d(dgi(ijGH H H''!Q$AqD(83q!t8(Cc!Q$h(NQS(STOP P P 	
!Q$
A''*	&   ''r!Ry'9
R)RAY	"Q(Bq!H!567 7 7''r!Sz':
R*bRj	!Bq"Ir!Ry#9:; ; ;''r!T{';
S"+r"bz	"R2Y2r
$;<= = =''r!U|'<
S"+r$}	%3bRj'ABC C C''r!V}'=
T3-D#	'"S#,3)EFG G G''r!W~'>
UD/2dC=	)BsCL"T4.+IJK K K 	!Q$1a4')AqD.89QT>IERSGSVWWA''*
Q%Au	Aur!U| <
Q(Bq!H	1r!u~1r!u~	?? ? ? ''r!V}'=
Q,1e	%1ebEl'C
Q(Bq!H	1r!u~1r!u~	?? ? ? IJA!QT!$QT)	*6q!t;	< 	-Q.	/ 	$		$A ''*"qb7FQF+, , , ''r!\/B'Ca5&2a5&	R1XI1ay1Bq!HbAh3G"Q%QSTUQVXY Y Y 777EFQA&1r:A:TT!A1.1A13F19ST9TT9TT''"Q@^:_'`a5&2a5&	R1XI1ay1Bq!HbAh3G"Q%QSTUQVXY Y Y 	AqD1QT6Bq!tG#bd*S0A''*,- - - ''r!Sz':a5&2a5&	RBZK"R*51r!u~2r
TVWY[\T]G^_` ` ` 	
AA''q'1R777''q'1R777''*vh666''q'1fX===''q'1fX===''qa'8VHDDD	1qA''r!Qx'8B>>>''r!Qx'8bAh1a=Q<RRRR''r!Qx'8XJFFF''r!Qx'8X2aQR8}<UUUU''1ay'9R???''1ay'91ay2aQR8)>T=UUUU''1ay'9fXEEE''1ay'91ay"ov=VVVV	6A''r'2a777''r'2a777''rq'9Q>>>R=DAq
1aA5$))Br3K7A''*w.AAAAR=DAq
;CDr    c            	      b  ^^ [        S[        5      u  mmTR                  S5      / :X  d   eTR                  S5      / :X  d   eTR                  ST-  5      S/:X  d   eTR                  STS-  -  5      S/:X  d   eTR                  TS	-  T-   5      S
S/:X  d   eTR                  TS	-  T-
  5      SS/:X  d   eTR                  TS-  T-   S-   5      / :X  d   eSS/n TR                  TS	-  S	-
  5      U :X  d   eTR                  TS	-  * S	-   5      U :X  d   eSTS-  -  STS-  -  -
  STS-  -  -   STS-  -  -   STS-  -  -
  STS-  -  -
  STS-  -  -   STS-  -  -   STS-  -  -
  S TS-  -  -   S!TS-  -  -   S"TS-  -  -
  S#TS	-  -  -
  S$T-  -   S%-
  nTR                  U5      nTR                  U5      [	        S	5      * [	        SS	5      * 4S	4[	        SS	5      * [	        SS5      * 4S4[	        S5      [	        SS	5      4S4[	        SS	5      [	        SS	5      4S4[	        SS5      [	        S	5      4S	4/:X  d   eTR                  U5      [	        S	5      * [	        SS	5      * 4[	        SS	5      * [	        SS5      * 4[	        S5      [	        SS	5      4[	        SS	5      [	        SS	5      4[	        SS	5      [	        S	5      4/:X  d   eTR                  U5      [	        S	5      * [	        SS	5      * 4S4[	        SS	5      * [	        SS5      * 4S4[	        S5      [	        SS	5      4S4[	        SS	5      [	        SS	5      4S4[	        SS	5      [	        S	5      4S4/:X  d   eTS-
  nTR                  US	S&9/ :X  d   eTR                  USS'9/ :X  d   eTR                  U5      S/:X  d   eTR                  USS&9S/:X  d   eTR                  USS'9S/:X  d   eTR                  USSS(9S/:X  d   eTS-  STS	-  -  -
  S-   nTR                  U[	        SS5      S&9/ :X  d   eTR                  U[	        SS5      S&9[	        SS5      [	        SS	5      4S	4/:X  d   eTR                  U[	        SS5      S'9S)/:X  d   eTR                  U[	        SS5      S'9S)S[	        SS	5      4S	4/:X  d   eTR                  U[	        SS5      * S'9/ :X  d   eTR                  U[	        SS5      * S'9[	        SS	5      * [	        SS5      * 4S	4/:X  d   eTR                  U[	        SS5      * S&9S*/:X  d   eTR                  U[	        SS5      * S&9[	        SS	5      * S+4S	4S*/:X  d   eS)S*/n TR                  US,S&9U :X  d   eTR                  US	S'9U :X  d   eTR                  US,S	S(9U :X  d   eTS-  STS-  -  -
  TS-  -
  STS-  -  -   STS-  -  -
  STS-  -  -
  STS-  -  -   STS-  -  -
  nTR                  US-S.9/ S/Q:X  d   eTR                  US0S.9S1S	/ S2Q4S3SSS/4S4SSS+/4S5S	/ S2Q4/:X  d   eTS6-  S6TS7-  -  -
  S8TS9-  -  -   S-
  nTS:-  S;TS9-  -  -
  S<TS=-  -  -   S>TS?-  -  -
  S@TSA-  -  -   SBTSC-  -  -
  SDTSE-  -  -   SFTSG-  -  -
  SHTSI-  -  -   SJTSK-  -  -
  SLTSM-  -  -   SNTSO-  -  -
  SPTSQ-  -  -   SRTSS-  -  -
  STTSU-  -  -   SVTSW-  -  -
  SXTSY-  -  -   SZTS[-  -  -
  S\TS-  -  -   S]TS^-  -  -
  S\TS_-  -  -   SZTS`-  -  -
  SXTSa-  -  -   SVTSb-  -  -
  STTSc-  -  -   SRTSd-  -  -
  SPTS-  -  -   SNTSe-  -  -
  SLTS-  -  -   SJTS-  -  -
  SHTS-  -  -   SFTS-  -  -
  SDTS-  -  -   SBTS-  -  -
  S@TS-  -  -   S>TS-  -  -
  S<TS-  -  -   SfTS-  -  -
  SgTS-  -  -   S;TS-  -  -
  ShTS	-  -  -   SiT-  -
  S-   nTR                  X-  5      S[	        SS	5      4S4[	        S	S5      [	        SS5      4S4[	        SS5      S4S4SjSk/:X  d   e[        S[        5      u  mm[        [        UU4Sl j5        g )mNr   r   r   r   r^   r   rF   r   r^   r   r   )r]   r   )r_   r   r   )r`   r   )ra   r   r   r   `   r   rM   rH   i  rc   i?  r   i@  r   i#  r   i(  iGU  rP   i6  iT  ih  id  i<  i  r   r   r   r`   r   ra   r   rK   r.   Fbasis)r   r   )r_   r   r   Tr`   r   r   r.   r^   r_   ra   -   ,   i  +   .   iL;  i# rt   iȸ0r   iτ&   ij۪A%   l   +e r   l   \2X6 re   l   7h$ "   l   szc^ r   l   EX3 r   l   `ML   l   }F3rm   l   VC]   l   N6e-A
r   l   X.xrI   l   *xx	g   l   4pTB   l   s=l   ;m}r   r      rp   rJ   r   rG   rh   i iq} i  /   ))rP   rF   r   ))rM   r   r   c                  ,   > T R                  TS-   5      $ r   )dup_isolate_real_rootsr   s   r   r&   -test_dup_isolate_real_roots.<locals>.<lambda>m  s     8 8Q ?r    )	r   r   r   dup_sqf_partr   r   r   r   r   )r   r   gr   r   s      @@r   test_dup_isolate_real_rootsr   !  sJ   R=DAq##A&",,,##A&",,,##AaC([M999##AadF+}<<<##AqD1H--1MMMM##AqD1H-+{1KKKK##AqD1HqL1R777	$A##AqD1H-222##QTEAI.!333
1b52ae8bBh&QU2T!R%Z?$q!t)KdSTVWSWiWAqD	A:	 %ad
	+-21a4Z	8:?1*	EGKAqDy	QSXYZSZ	[]a	bA	qA##A&qE6Bq!H9
q	!bAhYAq	$:A#>"Q%AqARTU@Va8R1X
	"bAh1%6$:	<< < < ''*a5&2a8)	1ay2a8)4r!ubAh6G
Q(Bq!H	1a"Q%0	22 2 2 ##A&qE6Bq!H9
q	!bAhYAq	$:A#>"Q%AqARTU@Va8R1X
	"bAh1%6$:	<< < < 	
AA##A1#-333##A1#-333##A&;-777##A1#-+>>>##A1#-+>>>##A1!#4EEE	1qAvA##A2a8#4:::##A2a8#42a8R1X:NPQ9R8SSSS##A2a8#4GGG##A2a8#4!RPQSTXXYHZ8[[[[##ABq!H9#5;;;##ABq!H9#5R1XI1ay;QST:U9VVVV##ABq!H9#5+FFF##ABq!H9#5R1XIr?A:NP[9\\\\	$A##A2#.!333##A2#.!333##A21#5:::	2!R%!Q$AqD(1QT61AadF:R1WDqAvMA##AU#3>? ? ?##AT#2
Az	"VQA$7&!aW9MPVXY[eOfgh h h 
BArE	C2I	%	)A	
Bq"u	wq"u}	,x2~	=	!R%	OR\]^`b]bRb	beopqsupueu	u  yD  EF  HJ  EJ  yJ  
J  MX  YZ  \^  Y^  M^  
^  am  no  qs  ns  as  
s  vB  CD  FH  CH  vH  
H  KW  XY  []  X]  K]  
]  `l  mn  pr  mr  `r  
r  uB  CD  FH  CH  uH  
H  KX  YZ  \^  Y^  K^  
^  an  op  rt  ot  at  
t  wD  EF  HJ  EJ  wJ  
J  MZ  [\  ^`  [`  M`  
`  cp  qr  tv  qv  cv  
v  yF  GH  JL  GL  yL  
L  O\  ]^  `b  ]b  Ob  
b  er  st  vx  sx  ex  
x  {H  IJ  LN  IN  {N  
N  Q^  _`  bd  _d  Qd  
d  gt  uv  xz  uz  gz  
z  }J  KL  NP  KP  }P  
P  S_  `a  ce  `e  Se  
e  ht  uv  xz  uz  hz  
z  }I	  J	K	  M	O	  J	O	  }O	  
O	  R	^	  _	`	  b	d	  _	d	  R	d	  
d	  g	r	  s	t	  v	x	  s	x	  g	x	  
x	  {	F
  G
H
  J
L
  G
L
  {	L
  
L
  O
Y
  Z
[
  ]
_
  Z
_
  O
_
  
_
  b
l
  m
n
  p
q
  m
q
  b
q
  
q
  t
}
  ~

  AB  ~
B  t
B  
B  EM  NO  QR  NR  ER  
R  U\  ]^  `a  ]a  Ua  
a  dk  lm  op  lp  dp  
p  sy  z{  }~  z~  s~  
~  AF  GH  JK  GK  AK  
K  NR  ST  VW  SW  NW  
W  Z\  ]^  Z^  
^  ab  
bA##AC(bAh-	r!QxAq2A6"Q(A8JKYfgh h h R=DAq
;?@r    c            	        ^^ [        S[        5      u  mmTR                  TS-  T-   T/5      SSS04SSSS.4/:X  d   eTR                  TS-  T-
  T/5      SSSS.4SSS04/:X  d   eTR                  TS-   TS-   TS-
  TS-   TS-
  TS-
  /5      [        S5      * [        S5      * 4SS04[        S5      * [        S5      * 4SSS	.4[        S5      [        S5      4SSSS
.4/:X  d   eTR                  TS-   TS-   TS-
  TS-   TS-
  TS-   /5      [        S5      * [        S5      * 4SSS.4[        S5      * [        S5      * 4SSS	.4[        S5      [        S5      4SSS.4/:X  d   eTS-  STS-  -  -
  S-   TS-
  pTR                  X/[        SS5      S9/ :X  d   eTR                  X/[        SS5      S9[        SS5      [        SS5      4SS04/:X  d   eTR                  X/[        SS5      S9SSS04SSS04/:X  d   eTR                  X/[        SS5      S9SSS04SSS04S[        SS5      4SS04/:X  d   eTR                  X/[        SS5      * S9/ :X  d   eTR                  X/[        SS5      * S9[        SS5      * [        SS5      * 4SS04/:X  d   eTR                  X/[        SS5      * S9SSS04SSS04/:X  d   eTR                  X/[        SS5      * S9[        SS5      * S4SS04SSS04SSS04/:X  d   eSTS-  -  S-
  TS-  S-
  pTR                  X/5      [        S5      * [        S5      * 4SS04[        S5      * [        S5      4SS04[        S5      [        S5      4SS04[        S5      [        S5      4SS04/:X  d   eTR                  X/SS9[        SS5      * [        SS5      * 4SS04[        S5      * [        SS5      * 4SS04[        SS5      [        S5      4SS04[        SS5      [        SS5      4SS04/:X  d   eTS-  S-
  TS-  TS-  -
  ST-  -
  S-   pTR                  X/5      [        S5      * [        S5      * 4SSS.4[        S5      [        S5      4SS04[        S5      [        S5      4SSS.4/:X  d   eTS-  ST-  -
  TS-  TS-  -
  STS-  -  -
  STS-  -  -   pTR                  X/5      [        S5      * [        S5      * 4SSS.4[        S5      [        S5      4SSS.4[        S5      [        S5      4SS04[        S5      [        S5      4SSS.4/:X  d   eTS-  STS-  -  -
  TS-  -
  STS-  -  -   STS-  -  -
  STS-  -  -
  STS-  -  -   STS-  -  -
  TS-  STS-  -  -
  STS-  -  -   STS-  -  -
  ST-  -   pTR                  X/SS9SSS04SSSS.4SSSS.4SSS04/:X  d   eTR                  X/SS9SSS0/ S Q4SSSS.SS/4SSSS.SS/4SSS0/ S Q4/:X  d   e[        S[        5      u  mm[        [        UU4S! j5        g )"Nr   r   r]   r   r   r^   r   r_   )r   r   )r   r   r   )r   r   )r   r   r   rF   r   r   r   r   r`   ra   rK   T)strict)r   r   r   r   rc   rP   rH   Fr   r   c                  .   > T R                  TS-   /5      $ r   )dup_isolate_real_roots_listr   s   r   r&   2test_dup_isolate_real_roots_list.<locals>.<lambda>  s     = =q1ug Fr    )r   r   r   r   r   r   r   )r   r   r   r   s     @@r    test_dup_isolate_real_roots_listr   p  sk   R=DAq((!Q$(A7
QF	f!l345 5 5((!Q$(A7
aA,	&1a&!123 3 3 ((!a%QAq1ua!eQQRU)STqE6BqE6
QF	#1v1v&6A!%EAPRSTPU\]bchiXjGklm m m ((!a%QAq1ua!eQQRU)STqE6BqE6
aL	)beVbeV,<!l+KrRSuVXYZV[nbchi^jMklm m m a4!AqD&=1a!eq((!R1X(>"DDD((!R1X(>a8R1X
A	'() ) )((!R1X(>
QF	fq!f-./ / /((!R1X(>
QF	fq!f-Bq!H1v/FGH H H((!bAhY(?2EEE((!bAhY(?q!H9r!Qxi
 1a&	)*+ + +((!bAhY(?
1a&	FQF+,- - -((!bAhY(?q!H9b/Aq6	"VaV$4v1v6FGH H H QT6A:q!taxq((!0qE6BqE6
QF	#1vr!uo1v%>a5"Q%.1a&	!RUBqENQF#;	== = = ((!(=q!H9r!Qxi
 1a&	)beVbAhY,?!Q+Ha8RU
aV	$1a"Q(';aV&D	FF F F a4!8QTAqD[1Q3&*q((!0qE6BqE6
aL	)RUBqENQF+Cr!ubQRenZ[`aVbEcde e e a4!A#:q!tad{Qq!tV+a1f4q((!0qE6BqE6
aL	)RUBqENaL+Ia5"Q%.1a&	!RUBqENaL#A	CC C C a4!AqD&=1a4"QT')AadF2Qq!tV;bAgE!Q$NPQSTPTWXYZ\]Y]W]P]`abcefbf`fPfijklnokoioPorsturuPuq((!u(=
QF	f!l3f!l5KfWXZ[V\M]^_ _ _((!t(<
QFJ	'&aA,A)G
aA,B	(6Aq6:*F	HH H H R=DAq
;FGr    c                     [        S[        5      u  pUS-  S-
  nUS-  S-
  nU R                  X#/5      [        SS5      [        SS5      4S	S
04[        SS5      [        SS5      4S
S
04/:X  d   e[        S[        5      u  p[        S
S5      * US-  -  S
-   n[        S
S5      * US-  -  S
-   nU R                  X#/5      [        SS5      [        SS5      4S	S
04[        SS5      [        SS5      4S
S
04/:X  d   eg )Nr   r   rn      K   r   e   re   r   r   i5  r   r   )r   r   r   r   )r   r   r   r   s       r   #test_dup_isolate_real_roots_list_QQr     s*   R=DA	1s
A	1s
A((!0b":r#r{
#aV	,3bQi/H1a&.QRS S S R=DA	AsAqD1A	AsAqD1A((!0b":r#r{
#aV	,3bQi/H1a&.QRS S Sr    c                  b   [        S[        5      u  pU R                  S5      S:X  d   eU R                  S5      S:X  d   eUS-
  nU R                  U5      S:X  d   eU R                  USS9S:X  d   eU R                  USS9S:X  d   eU R                  USS9S:X  d   eU R                  USSS9S:X  d   eU R                  USSS9S:X  d   eU R                  USSS9S:X  d   eUS-  S-
  nU R                  U5      S:X  d   eU R                  USS9S:X  d   eU R                  US	SS9S:X  d   eg )
Nr   r   rF   r   r   r   r   r   rK   )r   r   dup_count_real_rootsr   s      r   test_dup_count_real_rootsr     s   R=DA!!!$)))!!!$)))	AA!!!$)))!!!!+q000!!!!+q000!!!!+q000!!!!2a777!!!!2a777!!!!2a777	1qA!!!$)))!!!!+q000!!!!3q888r    r   c                  D   [        S[        5      u  pUS-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eg )Nr   r   r   r   r   dup_count_complex_rootsr   r   r   r   r   s      r   test_dup_count_complex_roots_1r     s    R=DA 	
AA$$Q1-222$$Q1-222 	
AA$$Q1-222$$Q1-222r    c                  |   [        S[        5      u  pUS-  U-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  * U-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  U-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  * U-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eg )Nr   r   r   r   r   s      r   test_dup_count_complex_roots_2r     s7   R=DA 	
1qA$$Q1-222$$Q1-222 
A	A$$Q1-222$$Q1-222 	
1qA$$Q1-222$$Q1-222 
A	A$$Q1-222$$Q1-222r    c                     [        S[        5      u  pUS-  S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  U-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  * U-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eg )Nr   r   r   r   r   r   s      r   test_dup_count_complex_roots_3r      s    R=DA 	
1qA$$Q1-222$$Q1-222 	
1qA$$Q1-222$$Q1-222 
A	A$$Q1-222$$Q1-222r    c                     [        S[        5      u  pUS-  S-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  U-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  * U-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -
  U-   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -
  US-  -   U-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  * US-  -   US-  -
  U-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  U-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  * U-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eg Nr   r   r   r   r   r   r   r   s      r   test_dup_count_complex_roots_4r     s   R=DA 	
1qA$$Q1-222$$Q1-222 	
1qA$$Q1-222$$Q1-222 
A	A$$Q1-222$$Q1-222 	
1q!ta!A$$Q1-222$$Q1-222 	
1q!tadQA$$Q1-222$$Q1-222 
A1q!taA$$Q1-222$$Q1-222 	
1qA$$Q1-222$$Q1-222 	
1qA$$Q1-222$$Q1-222 
A	A$$Q1-222$$Q1-222r    c                     [        S[        5      u  pUS-  SU-  -   S-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -   SU-  -
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -   SU-  -   S-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -   SUS-  -  -   SU-  -   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -   US-  -   SU-  -
  S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -   US-  -   SUS-  -  -
  SU-  -
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eg )Nr   r   r   r   r   r   r   r   r   s      r   test_dup_count_complex_roots_5r   D  s   R=DA 	
1qs
QA$$Q1-222$$Q1-222 	
1q!taA$$Q1-222$$Q1-222 	
1q!tacA$$Q1-222$$Q1-222 	
1qAv!aA$$Q1-222$$Q1-222 	
1qAv!Q$1$A$$Q1-222$$Q1-222 	
1qAv1qs"Q&A$$Q1-222$$Q1-222 	
1qAv1qAv%!+A$$Q1-222$$Q1-222r    c                     [        S[        5      u  pUS-  SU-  -
  S-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -
  SU-  -   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -
  SUS-  -  -   SU-  -
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -
  S-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -
  SU-  -   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -
  US-  -   SU-  -   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -
  US-  -   SUS-  -  -   SU-  -
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eg r   r   r   s      r   test_dup_count_complex_roots_6r   k  s   R=DA 	
1qs
QA$$Q1-222$$Q1-222 	
1qAv!aA$$Q1-222$$Q1-222 	
1qAv!Q$1$A$$Q1-222$$Q1-222 	
1q!taA$$Q1-222$$Q1-222 	
1q!tacA$$Q1-222$$Q1-222 	
1qAv1qs"Q&A$$Q1-222$$Q1-222 	
1qAv1qAv%!+A$$Q1-222$$Q1-222r    c                     [        S[        5      u  pUS-  S-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -
  SU-  -   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -
  SUS-  -  -   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -
  SU-  -   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -
  SUS-  -  -   SU-  -
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -   SU-  -   S-   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -   SUS-  -  -   SU-  -   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  US-  -
  SUS-  -  -   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS	-  US-  -
  SUS-  -  -   SU-  -
  nU R                  U[        [        5      S	:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -   S-
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eg )
Nr   r   r   r   r   r   rP   r   rF   r   r   s      r   test_dup_count_complex_roots_7r     s   R=DA 	
1qA$$Q1-222$$Q1-222 	
1qAv!aA$$Q1-222$$Q1-222 	
1qAv!Q$"A$$Q1-222$$Q1-222 	
1q!tacAA$$Q1-222$$Q1-222 	
1q!ta1fqs"A$$Q1-222$$Q1-222 	
1q!tacAA$$Q1-222$$Q1-222 	
1q!ta1fqs"A$$Q1-222$$Q1-222 	
1q!ta1fq A$$Q1-222$$Q1-222 	
1q!ta1fqs"A$$Q1-222$$Q1-222 	
1qAvA$$Q1-222$$Q1-222r    c                     [        S[        5      u  pUS-  SUS-  -  -   SU-  -
  nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eUS-  SUS-  -  -
  SUS-  -  -   S	US-  -  -
  SUS-  -  -
  S
U-  -   nU R                  U[        [        5      S:X  d   eU R                  U[
        [        5      S:X  d   eg )Nr   r   r   r   r   rc   r   rF   rP   r   r   r   s      r   test_dup_count_complex_roots_8r     s    R=DA 	
1qAv!A$$Q1-222$$Q1-222 	
2!Q$1a4!AqD&(1QT61AaC7A$$Q1-222$$Q1-222r    c                      [        S[        5      u  pUS-  U-
  nU R                  U5      S:X  d   eU R                  USS9S:X  d   eU R                  USS9S:X  d   eg )Nr   r   r^   r   r   r   )r   r   r   r   s      r   %test_dup_count_complex_roots_implicitr     ss    R=DA 	
1qA$$Q'1,,,$$QF$3q888$$QF$3q888r    c                     [        S[        5      u  pUS-  U-
  n[        S5      * [        S5      4[        S5      [        S5      4pCU R                  X#U5      S:X  d   eU R                  X#US/S9S:X  d   eU R                  X#US	/S9S:X  d   eU R                  X#USS	/S9S
:X  d   eU R                  X#US/S9S:X  d   eU R                  X#US/S9S:X  d   eU R                  X#USS/S9S:X  d   eU R                  X#U/ SQS9S
:X  d   eU R                  X#US/S9S:X  d   eU R                  X#US/S9S:X  d   eU R                  X#USS/S9S
:X  d   eU R                  X#U/ SQS9S:X  d   eU R                  X#U/ SQS9S:X  d   e[        S5      [        S5      4[        S5      [        S5      4pCU R                  X#USS9S:X  d   eg )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   s        r   $test_dup_count_complex_roots_excluder     s5   R=DA 	
1qAUFBqE?RUBqENq$$Q1-222$$Q1se$<AAA$$Q1se$<AAA$$Q1sCj$AQFFF$$Q1se$<AAA$$Q1se$<AAA$$Q1sCj$AQFFF$$Q16J$KqPPP$$Q1tf$=BBB$$Q1tf$=BBB$$Q1tTl$CqHHH$$Q16G$HAMMM$$Q16L$MQRRRRqE2a5>BqE2a5>q$$Q1d$;q@@@r    c            
      8   [        S[        5      u  pUS-  SU-  -
  S-   nU R                  U5      SS/:X  d   eU R                  USS9 Vs/ s H  o3R                  5       PM     snSS/:X  d   eU R                  U[	        SS	5      S
9[	        SS5      [	        SS5      * 4[	        SS5      [	        SS5      * 44[	        SS5      [	        SS5      4[	        SS5      [	        SS5      44/:X  d   eU R                  U[	        SS5      S
9[	        SS5      [	        SS5      * 4[	        SS5      [	        SS5      * 44[	        SS5      [	        SS5      4[	        SS5      [	        SS5      44/:X  d   eSUS-  -  SUS-  -  -
  SUS-  -  -   SU-  -   S-   nU R                  U5      [	        SS5      * [	        SS5      * 4S4[	        SS5      * S4S[	        SS5      44S[	        SS5      * 4[	        SS5      S44S[	        SS5      [	        SS5      44/:X  d   eg s  snf )Nr   r   r   ))r   )rP   r   )r^   )rP   rP   T)blackboxr   r   rN   rh   r   r   r   r   r         ik  i  i   i  rF   r   rJ   rp   rG   rt   r^   r   )r   r   dup_isolate_complex_roots_sqfas_tupler   )r   r   r   rs       r   "test_dup_isolate_complex_roots_sqfr     so   R=DA	1qs
QA**1-	,-. . .#$#B#B1t#B#TV#TaZZ\#TV	,-. . . **1"Q)*<b":1ay
!Br2JB#<	=b":r"bz
"RBZAq$:	;	== = = **1"Q**=c3<"S#,
'"S#,C)F	Gc3<C
&Cr#s|(D	E	GG G G 	
!Q$AqD2ad7"RT)B.A**1-r1I:2q	z
"F	+2q	z1o2b!9~-Nr"ayj/Br1Iq>	*VbQiB5K,L	NN N N Ws   Hc            	      6   [        S[        5      u  pSUS-  -  US-  -
  SUS-  -  -   SU-  -   nU R                  U5      SS/S[        SS5      * 4[        SS5      S44S[        SS5      [        SS5      44/4:X  d   eU R                  U[        S	S
5      S9[        SS5      [        SS5      4S/[        SS5      [        SS5      * 4[        SS5      [        SS5      * 44[        SS5      [        SS5      4[        SS5      [        SS5      44/4:X  d   eg )Nr   r   r   r   r   r   r^   r   r   r   rN   r   r   rF   re   @   r   A   )r   r   dup_isolate_all_roots_sqfr   r   s      r   test_dup_isolate_all_roots_sqfr    sQ   R=DA	!Q$A!Q$1$A&&q)
6	1ay>Bq!Ha=
)FR1Xr!Qx4H+I	J	LL L L &&qbBi&8b!9bQi
 &	)r2JB$r!Qx"R*&=
>"R*bQSUWjAY\^_`bc\dfhikmofp[q@r	s	uu u ur    c            	        ^^ [        S[        5      u  mn SU S-  -  U S-  -
  SU S-  -  -   SU -  -   mTR                  T5      SS/S[        SS5      * 4[        SS5      S44S	4S
[        SS5      [        SS5      44S	4/4:X  d   eTR                  T[        S	S5      S9[        SS5      [        SS5      4S	4S/[        SS5      [        SS5      * 4[        SS5      [        SS5      * 44S	4[        SS5      [        SS5      4[        SS5      [        SS5      44S	4/4:X  d   eU S-  U S-  -   SU S-  -  -
  SU S-  -  -
  U -   S	-   m[	        [
        UU4S j5        g )Nr   r   r   r   r   )r   r   r   r   r   r^   r   rN   r   r   r   rF   re   r  r   r  c                  &   > T R                  T5      $ r#   )dup_isolate_all_rootsrD   s   r   r&   ,test_dup_isolate_all_roots.<locals>.<lambda>7  s    (?(?(Br    )r   r   r  r   r   NotImplementedError)r   r   r   s    @@r   test_dup_isolate_all_rootsr
  (  s   R=DAq	!Q$A!Q$1$A""1%
	$Aq	NR1XqM*A
.R1Xr!Qx()1
-
/	00 0 0
 ""1"Q)"4r1Ir"ay!1
%{	3BZ"R*%1a2b":+'>?
CBZB$r!QxB&<=q
A
C	DD D D
 	
1q!ta1fqAv%)A-A
 BCr    N)-__doc__sympy.polys.ringsr   sympy.polys.domainsr   r   r   r   sympy.polys.polyerrorsr   r	   r
   sympy.polys.rootisolationr   r   r   sympy.testing.pytestr   r   r0   r8   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>r     s    K " 0 0 Q Q  (ZGJR>ABoEbLA^<H~S$9, 
AA"Q%A1	AA"Q%A13303&.3b$3N$3N33l3	9ADN.
uDr    