
    \hh              
       J   S r SSKJrJrJr  SSK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SKJrJr  SSKJr  SS	KJrJrJr  SS
KJr  SSKJr  SSKJr  SSK J!r!J"r"J#r#J$r$J%r%  SSK&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0  SSK1J2r2  SSK3J4r4J5r5  SSK6J7r7  SSK8J9r9J:r:  SSK;J<r<  SSK=r=SSK>J?r?  \
" S5      u
  r@rArBrCrDrErFrGrHrIS rJS rKS rLS rMS rNS rOS rPS rQS rRS  rSS! rTS" rUS# rVS$ rWS% rXS& rYS' rZS( r[S) r\S* r]S+ r^S, r_S- r`S. raS/ rbS0 rc\:S1 5       rdS2 reS3 rfS4 rgS5 rhS6 riS7 rjg)8zBTests for algorithms for computing symbolic roots of polynomials.     )IRationalpi)S)SymbolWildsymbols)	conjugateimre)exp)rootsqrt)	Piecewise)acoscossin)ZZ)Interval)powsimp)Polycyclotomic_poly	intervalsnrootsrootof)
root_factorsroots_linearroots_quadraticroots_cubicroots_quarticroots_quinticroots_cyclotomicroots_binomialpreprocess_rootsroots)legendre_poly)PolynomialErrorUnsolvableFactorError)_nsort)raisesslow)verify_numericallyN)productza,b,c,d,e,q,t,x,y,zc                     [        S U  5       5      n[        U S U 5      [        U S U 5      :X  d   e[        U[	        U 5      S5       H*  nXS-      X   :X  a  M  XS-      [        X   5      :X  a  M*    g   g)Nc              3   J   #    U  H  oR                   (       a  S OSv   M     g7f)   r   N)is_real.0is     X/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/tests/test_polyroots.py	<genexpr>_check.<locals>.<genexpr>(   s     5u!YYA%us   !#   r0   FT)sumsortedlistrangelenr
   )r%   nrealixs      r5   _checkr@   $   s|     5u55E%- Dv$7777E3u:q)1f*1f59!55	 *
     c                  l    [        [        S[        -  S-   [        5      5      [        SS5      /:X  d   eg )Nr8   r0   )r   r   xr    rA   r5   test_roots_linearrF   2   s-    QqS1Wa()hr1o->>>>rA   c            	      J
   [        [        S[        S-  -  [        5      5      SS/:X  d   e[        [        S[        S-  -  S[        -  -   [        5      5      [        SS5      S/:X  d   e[        [        S[        S-  -  S-   [        5      5      [        * [        S5      -  S-  [        [        S5      -  S-  /:X  d   e[        [        S[        S-  -  S[        -  -   S-   [        5      5      S[        [        S5      -  S-  -
  S[        [        S5      -  S-  -   /:X  d   e[        [        S[        S-  -  S[        -  -   S-   [        5      R                  5       5        [        S-  S[        -  [        -  S[        -  [        -  -   [        [        -
  -  [        -  -   [        [        -
  [        [        S-  -  -   [        [        S-  -  -
  [        [        -
  -  -   n [        [        U [        5      5      [        * [        [        -   -  [        [        -
  -  [        [        [        -  [        [        -  -   [        [        -  -
  [        [        -  -
  S[        -  [        -  [        S-  -  -   5      [        [        -
  -  -
  [        * [        [        -   -  [        [        -
  -  [        [        [        -  [        [        -  -   [        [        -  -
  [        [        -  -
  S[        -  [        -  [        S-  -  -   5      [        [        -
  -  -   /:X  d   e[        [        [        S-  -  S[        -  -
  S[        -  -
  [        5      n [        U 5      [        S[        S-  -  S-   5      * [        -  S[        -  -   [        S[        S-  -  S-   5      [        -  S[        -  -   /:X  d   e[        [        S-  [        S-  * S-
  [        -  -   [        S-  -   S-   [        5      n [        U 5      S[        S-  S-   /:X  d   e[        [        S5      [        S-  -  S-
  [        5      n [        U 5      nU[        U5      :X  d   e[        S	[        S-  -  S
[        -  -
  S-   5      n U R                  SS9 Vs/ s H  o"R                  S5      PM     snU R                  SS9 Vs/ s H  o"R                  S5      PM     sn:X  d   e[!        SSS5       HD  u  p4n[        U[        S-  -  U[        -  -   U-   5      n [        U 5      nU[        U5      :X  a  MD   e   g s  snf s  snf )Nr8   r            rC   r0   i   i  T)radicalsF)r8   )r   rC   )r   r   rD   r   r   r   r@   	all_rootsaecdbyr)   nr-   )frw_a_b_cr%   s          r5   test_roots_quadraticr]   6   sN   4!Q$?+1v5554!Q$1a01hr1oq5IIII4!Q$
A./QBtAwJqL!DG)A+3NNNN4!Q$1q 0!45"qay{:JBQRSWXYSZQZ[\Q\L\9]]]]
4!Q$1q !$..01	1!A!AA&q((AEAadFNQq!tV,Ca!e+LLA41:&
QUQU	d1Q319qs?QqS#81Q3q5A:#EFAN	N
QUQU	d1Q319qs?QqS#81Q3q5A:#EFAN	N	PP P P
 	Qq!tVac\AaC#A1
qAvz
	1	qs	"D1a4!$4Q$61$<=> > >QTadUQYM!AqD(1,a0A1	
1a4!8   	T!WQT\Aq!AAq	>> 	SAXA#$AKKK676qCCF67KKK787qCCF789 9 9gw8
AqD2a4"$%"u%%% 9 88s   6T#T c                     [        [        S-  [        -  [        S-  -   [        -   [        5      n [        U 5      [	        [        S-  [	        S5      [        -  S-  -   5      S[	        [	        S5      * [        -  S-  [        S-  -   5      S[	        [        S-  [	        S5      [        -  S-  -   5      * S[	        [	        S5      * [        -  S-  [        S-  -   5      * S0:X  d   eg )NrK   r8      r0   )r   rD   r   r%   r   eqs    r5   test_issue_7724rb   X   s    	ad1fq!tma	#B9QqS4719Q;d1gXaZ\AaC !	acDGAIaK	  !	tAwhqjlQqS 	!!1	& & & &rA   c                    ^^ [        S[        SS/[        5      R                  5       m[	        [        T[        5      [        5      n [        SS5      [        S-  S-  -
  mU  Vs/ s H  oR                  [        T5      PM     nn[        U5      [        [	        [        TR                  [        T5      [        5      5      5      :X  d   e[        UU4S jU 5       5      (       d   eg s  snf )Nr0   rN   rI   r8      c              3      >#    U  H3  nTR                  [        T[        U05      R                  S SS9S:H  v   M5     g7f)r8   Tchopr   N)subsrU   rD   rV   )r3   r4   pzs     r5   r6   "test_issue_8438.<locals>.<genexpr>i   s7     G$Qqvvq!Ql#%%ad%3q8$s   ;>)
r   rU   rD   as_exprr   r   r   rh   setall)r%   rX   postri   rj   s      @@r5   test_issue_8438rp   a   s    aB^Q'')AQ
A&EQ!A#a%A"'(%QFF1aL%D(t9D1q)*+, , , G$GGGGG	 )s   $C(c                     [        S[        S-  -  S-
  [        5      [        [        S-  S-   5      -  R                  5       n [        U 5      (       d   e[        [        S-  S[        S-  -  -   S-   [        5      n[	        S5       Vs/ s H  n[        X5      PM     nn[        [        S-  S[        S-  -  -   S-   [        5      R                  5       n X:X  d   e[        U 5      (       d   e[        S[        S-  -  S-
  5      R                  5       n [        U 5      (       d   e[        [        S[        S-  -  S-
  5      R                  5       5      S:X  d   eg s  snf )NrK      r0   r8   r_   rJ   
   )r   rD   rO   r@   r<   r   r=   )r%   rW   r4   ros       r5   test_issue_8285ru   l   s"   !AqD&1*a adQh/::<E%===QTAadF]Q"A %a	)1&,B	)A!Q$"A&002E;;%=== 1a4!&&(E%===tAaeGaK **,-333 
*s   Ec                  .   [        [        S-  S-   5      [        [        S-  S-   5      -  R                  5       n [        U 5      (       d   e[        [        S-  S[        S-  -  -   S-   [        5      R                  5       n [        U 5      (       d   e[        [        S-  [        -
  S-   5      R                  5       n [        U 5      (       d   e[        [        S-  S[        S-  -  -   S-   [        5      R                  5       n [        U 5      (       d   eg )Nr8   rK   rJ   rH   r0   )r   rD   rO   r@   r%   s    r5   test_issue_8289rx   {   s    !Q$(^DAN*557E%===A!Q$"A&002E%===AA((*E%===A!Q$"A&002E%===rA   c            	         [        [        S-
  S-  S-   [        S-
  S-  S-   -  [        S-
  -  5      R                  5       SS[        -
  S[        -   S[	        S5      [        -  -
  S[	        S5      [        -  -   /:X  d   e[        S-  S[        S-  -  -   S-   n [        S5       Vs/ s H  n[        X5      PM     nn[        U 5      R                  5       U:X  d   e[        U5        g s  snf )Nr0   r8   rK   rs   )r   rD   rO   r   r   r<   r   r@   )ri   r4   anss      r5   test_issue_14291r{      s    !a%!a1q51*q.11q59 

)+!QUAE1tAwqy=!d1gai-HI I I	1r!Q$wA!&q
*A6!<C
*7#%%%
3K +s   &C(c                      [        [        S-  [        [        5      [        -  -   [        -   [        SS9n [	        U 5      n[        U5      S:X  d   eg )NrH   EXdomain)r   rU   r   rD   r%   r=   )ra   roots_ds     r5   test_issue_13340r      s@    	adSVAXo!1T	2BBiGw<1rA   c                     ^ [        [        S-  [        S-  SS[        -  -   -  -   [        S-  SS[        -  -   -  -   [        SS	[        -  -
  -  -   S
-
  S[        -  -
  [        5      m[        T5      n [	        U4S jU  5       5      (       d   eg )NrK   rH          r8   ii  ii  i
  i  c              3   :   >#    U  H  nT" U5      S :H  v   M     g7fr   NrE   r3   rX   ra   s     r5   r6   #test_issue_14522.<locals>.<genexpr>   s     ,8ar!uz8s   )r   rD   r   r%   rn   )roots_eqra   s    @r5   test_issue_14522r      s    	adQT219%%1dSUl(;;aQ>OORVVY]^_Y__ab	cBRyH,8,,,,,rA   c                      [        [        [        S-  S[        S-  -  -
  [        [        -  -   S-
  [        5      5      n U S   R	                  [        5      (       d   eg )NrK   rJ   r8   rH   r   )r    r   trD   has)sols    r5   test_issue_15076r      sG    
QTAadF]QqS014a8
9Cq6::a===rA   c                      [        [        S-  S[        S5      -  [        S-  -  -
  S[        S-  -  -   S[        S5      -  [        S-  -  -
  S[        -  -   [        5      n [        U 5      nSU;   d   eg )NrK   rr   r8   rH   @   i   r   )r   rD   r   r%   )ra   r   s     r5   test_issue_16589r      sg    	adQtAwYq!t^#a1f,r$q'z!Q$>aG	KBRyH==rA   c                  H   [        [        S[        S-  -  [        5      5      / SQ:X  d   e[        [        [        S-  S[        S-  -  -
  S[        -  -   S-
  [        5      5      / SQ:X  d   e[        [        S5      n [        [        [        S-  [        -
  [        5      5      U U [
        R                  * [        S5      [        -  S-  -   -  U [
        R                  * [        S5      [        -  S-  -
  -  /:X  d   e[        [        [        S-  S-
  [        5      5      S[
        R                  [        [        S5      -  S-  -
  [
        R                  [        [        S5      -  S-  -   /:X  d   e[        [        S[        S-  -  S[        S-  -  -
  S[        -  -
  S-
  [        5      5      S   [
        R                  S[        SS5      -  S-  -   S[        SS5      -  S-  -   :X  d   e[        S-  * S[        S-  -  -   S[        -  -   S-
  n[        USSS	9[        [        U[        5      SS
9s=:X  a  [        SS5      S[        S5      -  [        [        S[        S5      -  S-  5      S-  5      -  S-  -   S[        S5      -  [        [        S[        S5      -  S-  5      * S-  [        S-  -   5      -  S-  [        SS5      -   S[        S5      -  [        [        S[        S5      -  S-  5      * S-  [        S-  -   5      -  S-  [        SS5      -   /:X  d   e   eg )Nr8   rH   )r   r   r   r0   r0   r0   r0   rC   r   T)trigmultiple)r      rr      rN   rJ   )r   r   rD   r   rU   r   Halfr   r   r   r%   r   r   r   r   )rX   ra   s     r5   test_roots_cubicr      s   tAadFA'9444tAqD1QT6MAaC/!3Q78IEEE 	Q
AtAqD1Ha()a	AFF7T!WQYq[ !	AFF7T!WQYq[ !.# # # # tAqD2Iq)*	QVVaQik!166Ad1gIaK#789 9 9tAadFQq!tVOac1A5q9:1=	
!Xa^#A%	%8Aq>(9!(;	;< < <
Q$1a4!A#		!B$.tB{.
A48CQtBxZ^(<Q(>$??AA
48CaRjn--a/"Q$6779HQNJ
48CaRjn--a/"Q$6779HQNJ3

 
 
 
 
rA   c                  *  ^^^ [        [        [        S-  [        5      5      / SQ:X  d   e[        [        [        S-  [        S-  -   [        5      5      / SQ/ SQ/ SQ/ SQ4;   d   e[        [        [        S-  [        S-  -
  [        5      5      / SQ/ S	Q/ S
Q/ SQ4;   d   e[        [        [        S-  [        -   [        5      5      n [        R                  [
        [        S5      -  S-  -   [        R                  [
        [        S5      -  S-  -
  [        R                  [        R                  * /n[        U [        S9[        U[        S9:X  d   e[        / SQ5       H  u  nu  p4pVUS:X  a%  U* US-  [        S5      -  U[        S5      -  -
  -  nO;US:X  a5  X3US-  [        SS5      -  U[        S5      -  -
  -  U[        S5      -  -   -  n[        S-  U[        S-  -  -   U[        S-  -  -   U[        -  -   U-   m[        [        T[        5      5      n[        U4S jU 5       5      (       a  M   e   [        [        [        -  [        S-  -   [        S-  -   [        S-  -   S[        S-  -  -   [        SS5      -
  [        5      m[        T5      n[        U4S jU 5       5      (       d   e[        SSS9m[        S-  S[        S-  -  -   S[        S-  -  -   [        TS-   -  -   S-   m[        [        T[        5      5      n	[        UU4S jU	 5       5      (       d   e[        [         [        S-  -  [        S-  -   [        -
  T-   [        5      m[        T5      n[        S U 5       5      (       d   e[        SS5      [        SS5      S.[        SS5      [        SS5      S.[        SS5      SS.4n
U
 HP  m[        [        TR#                  T5      [        5      5      n[        U4S j[%        Xx5       5       5      (       a  MP   e   g ) NrK   r   r   r   r   rH   )rC   r   r   r   )r   rC   r   r   )r   r   rC   r   )r   r   r   rC   )r0   r   r   r   )r   r0   r   r   )r   r   r0   r   )r   r   r   r0   r8   key))r0   r8   rH   r   )rH   i	   r0   r8   rH   rK   r   )r   rI   rH   )rI   r_   r   )rJ   irI   rr      r   c              3   p   >#    U  H+  nTR                  [        U5      R                  S S9S:H  v   M-     g7f)Trf   r   Nrh   rD   rV   )r3   aira   s     r5   r6   %test_roots_quartic.<locals>.<genexpr>   s.     Bc2771b>###.!3cs   36r0   c              3   d   >#    U  H%  n[        TR                  [        U5      S 5      v   M'     g7fr   r,   rh   rD   )r3   r4   ra   s     r5   r6   r      s&     AS!"''!Q-33S   -0rj   T)negative   r_   c              3   n   >#    U  H*  n[        TR                  [        U4TS 445      S5      v   M,     g7f)rC   r   Nr   )r3   r4   ra   rj   s     r5   r6   r      s2     O$Q!"''Aq6Ar7*;"<a@@$s   25c              3   F   #    U  H  n[        U5      [        :H  v   M     g 7fN)typer   r2   s     r5   r6   r      s     1StAw)#Ss   !rC   )rU   rj   rN   c              3   d   >#    U  H%  u  p[        UR                  T5      U-
  S 5      v   M'     g7fr   )r,   rh   )r3   rY   sreps      r5   r6   r      s*     Tmda%affSkAoq99mr   )r    r   rD   r   r   r   r   ZeroOner:   hash	enumerater   rn   qr	   rU   rh   zip)lhsrhsr4   rP   rT   rR   rS   rz   r   zansrepsra   r   rj   s              @@@r5   test_roots_quarticr      s   adA'<777adQTk1-.	3    adQTk1-.	3    QTAXq)
*C66Ad1gIaK!DG)A+!5qvvv
FC#4 F3D$9999 % &8 9<A! 6AqD1I!A$&'A!Vad8As++a"g561Q4?@ATAadF]Qq!tV#ac)A-DQK(BcBBBBB9  
acAaCi!Q$A%!Q$.!Q?	CB

CASAAAAAd#A	
A!Q$1a4	!QV*	,q	0Bb!%DO$OOOOO 
a1fq!tma!#Q	'B

C1S11111r1oHRO4r1oHRO4r1oB')D Dq12Tc#mTTTTT rA   c                      [        S [        [        [        S-  [        S-  SS[        -  -   -  -
  S[        -  S[        -   -  -   S-
  S[        -  -   [        5      5       5       5      (       a   eg )Nc              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )
isinstancer   r2   s     r5   r6   #test_issue_21287.<locals>.<genexpr>   s%      B 6A:a++ 6As   rK   r8   rH   r_   rC   r0   )anyr    r   rD   r   rE   rA   r5   test_issue_21287r      sy     B]QTAqD!ac'N"QqS"q&\1A5!;Q?6A B B B B B BrA   c                  T  ^ [         S-  S-
  [         S-  S-   S-  S[         S-  S-   -  -
  S-   [         S-  S[         S-  -  -
  S[         S-  -  -
  S[         -  -   S	-   4n U  HD  m[        [        T5      5      n[        U5      S:X  d   e[	        U4S
 jU 5       5      (       a  MD   e   g )Nr_   r8   r0      n   rH   7   i	  i  c              3      >#    U  H:  nTR                  [        UR                  S 5      5      R                  SS9S:H  v   M<     g7f)rs   gh㈵>rf   r   Nr   r   s     r5   r6   %test_roots_quintic.<locals>.<genexpr>  s7     JEq2771acc"g&(((5:Es   AA)rD   r!   r   r=   rn   )eqsr%   ra   s     @r5   test_roots_quinticr      s    a4!8qS1WqL1acAg;&+qD3q!t8ObAg%Q.46C d2h'5zQJEJJJJJ rA   c                  $
   [        [        S[        SS95      S/:X  d   e[        [        S[        SS95      S/:X  d   e[        [        S[        SS95      [        SS5      [        [        S5      -  S-  -
  [        SS5      [        [        S5      -  S-  -   /:X  d   e[        [        S[        SS95      [        * [        /:X  d   e[        [        S[        SS95      [        R                  [        [        S5      -  S-  -
  [        R                  [        [        S5      -  S-  -   /:X  d   e[        [        S	[        SS95      [        [        S	-  5      * [        [        [        S	-  5      -  -
  [        [        S	-  5      * [        [        [        S	-  5      -  -   [        [        [        SS	5      -  5      * [        [        [        [        SS	5      -  5      -  -
  [        [        [        SS	5      -  5      * [        [        [        [        SS	5      -  5      -  -   [        [        [        SS	5      -  5      [        [        [        [        SS	5      -  5      -  -
  [        [        [        SS	5      -  5      [        [        [        [        SS	5      -  5      -  -   /:X  d   e[        [        S
[        SS95      [        S5      * S-  [        [        S5      -  S-  -
  [        S5      * S-  [        [        S5      -  S-  -   [        S5      S-  [        [        S5      -  S-  -
  [        S5      S-  [        [        S5      -  S-  -   /:X  d   e[        [        S[        SS95      [        S5      * S-  [        S-  -
  [        S5      * S-  [        S-  -   [        S5      S-  [        S-  -
  [        S5      S-  [        S-  -   /:X  d   e[        [        S[        SS9SS9S/:X  d   e[        [        S[        SS9SS9S/:X  d   e[        [        S[        SS9SS9[        SS5      * S[        SS5      -   /:X  d   e[        [        S[        SS9SS9[        * [        /:X  d   e[        [        S[        SS9SS9[        SS5      * [        SS5      S-  * [        SS5      S-  S[        SS5      S-  -
  [        SS5      -   [        SS5      S-  -   /:X  d   e[        [        S[        SS9SS9S[        SS5      -
  [        SS5      /:X  d   eg )Nr0   Tpolysr8   rC   rH   rK   rJ   rd   rr   r   )factorr_   )r"   r   rD   r   r   r   r   r   r   r   r   r   rE   rA   r5   test_roots_cyclotomicr     s   OAq=>1#EEEOAq=>2$FFFO	1D 'A471<hr1oPQRVWXRYPYZ[P[>[\] ] ]OAq=>A2q'IIIO	1D  vv$q'	!3QVVaQik5IJK K K OAq=>	RT
Qs2a4y[ 	RT
Qs2a4y[ 	RA	!C8Aq>(9$:"::	RA	!C8Aq>(9$:"::Bx1~3r(1a.'8#9!99Bx1~3r(1a.'8#9!99C    OAq=>	a
QtAwYq[ 	a
QtAwYq[ Q	Ad1gIaKQ	Ad1gIaK	C    OB>?	a
QqS	a
QqSQ	AaCQ	AaC	D    1D)$8<=3? ? ?1D)$8<>4@ @ @ OAq=dK
r1+rDQK'() ) )OAq=dK
Q  OAq=dK
r1+RQRQT"a[!^8KdSUWXk8Y\`acef\gij\j8jkl l l OAq=dK	
T"a[$r1+&' ' 'rA   c            
      V   [        [        S[        -  [        5      5      S/:X  d   e[        [        S[        S-  -  [        5      5      / SQ:X  d   e[        [        S[        -  S-   [        5      5      [        SS5      /:X  d   eS[        SS5      -  S-  n [        [        S[        S-  -  S-   [        5      5      U * U [        -  -
  U * U [        -  -   X [        -  -
  X [        -  -   /:X  d   e[        [        [        [        S	-  S-
  5      5      5        [        S
SS9n[        SSS9n[        [        U[        S-  -  U-   [        5      5      n[        [        U[        S-  -  U-   [        5      5      n[        US   5      [        US   5      :X  d   e[        US   5      [        US   5      :X  d   e[        SSSS5       HI  u  pVpxXV:X  a  US:w  a  M  [        U[        U-  -  Xv-  -   5      n	[        U	5      n
U
[        U
5      :X  a  MI   e   [        [        S[        S-  -  S[        S-  -  -
  [        5      5      S[        -  [        SS5      [        S5      [        -  S-  -
  -  SS[        -  SS[        -  [        SS5      [        S5      [        -  S-  -   -  S0:X  d   eg )Nr_   r   rK   r   r8   rN   rs   rH   rr   a1T)nonnegativeb1r0   )r0   r8   )rC   r0   )r8   rH   rK   r_   r   rC   )r#   r   rD   r   r   r@   r   r   r   r-   r)   r%   rU   r   )Ar   r   r0r1rP   rT   r   rV   ri   rz   s              r5   test_roots_binomialr   7  sh   $qsA,'A3...$qAvq/*l:::$qsQw*+Q/@@@@
HQN2A$qAvz1-.
acA2!8Q1WaA#g./ / /
>$q!tax.)*	$	'B	$	'B	bAglA.	/B	R1Wr\1-	.B2a5>WRU^+++2a5>WRU^+++ffg|D
a6a1f1a4!#QfSk!!! E a1fr!Q$w&*+	!Xb!_tAwqy{*+Q	!Q	!Xb!_tAwqy{*+Q00 0 0 0rA   c            	      	   [         [        -  [        S-  -  [        -   [        -
  n [	        [        U [        5      5      u  pUS:X  d   eU[        [         [        -  [        S-  -  [        -   [        -
  [        5      :X  d   e[        S-  [        S-  -  [        S-  [        S-  -  -   [        [        -  -   [         -   n [	        [        U [        5      5      u  pUS[        -  :X  d   eU[        [        S-  [        S-  -   [        -   [         -   [        5      :X  d   e[        S-  [        S-  -  [        S-  [        S-  -  -   [         -   n [	        [        U [        5      5      u  pUS[        -  :X  d   eU[        [        S-  [        S-  -   [         -   [        5      :X  d   e[        S-  [        S-  -  [        [        -  -   [         -   n [	        [        U [        5      5      u  pUS[        -  :X  d   eU[        [        S-  [        -   [         -   [        5      :X  d   e[        S-  [        S-  -  [         -   n [	        [        U [        5      5      u  pUS[        -  :X  d   eU[        [        S-  [         -   [        5      :X  d   e[        S5      u  p4pVSUS-  -  US-  -  US-  -  SU-  [        -  US	-  -  US	-  -  US
-  -  -   SUS-  -  US-  -  US-  -  [        S-  -  US-  -  -
  SUS-  -  US-  -  US-  -  [        S-  -  US-  -  -   SUS-  -  US-  -  US-  -  [        S-  -  US-  -  -
  SUS-  -  US-  -  US-  -  [        S-  -  US-  -  -   SUS-  -  US-  -  US-  -  [        S-  -  SUS-  -  -  -   SU-  U-  US	-  -  [        S	-  -  SUS-  -  -  -
  SUS-  -  [        S-  -  S-  -   n [	        [        U [        5      5      u  pUSU-  U-  XFS-  -  -  :X  d   eUS[        S-  -  S[        S	-  -  -
  S[        S-  -  -   S[        S-  -  -   S[        S-  -  -
  S[        S-  -  -   S[        S-  -  -
  S[        -  -   S -
  :X  d   e[        [        S-  * [        S-  [        [        5      -  -   [        [        [        [        [        5      4   S!9n [        [        S-  * [        [        5      -   [        [        [        [        5         S!9n[	        U 5      [        U4:X  d   eg )"Nr8   r0   rH   E,F,J,L [r|)s2^ rr   r       83ll8rd         ]$=,y rJ   r      /@:r_   rs      D!^ rK   q 
    P   y   q    id i B i߰l   ul   /1g&l   g l   FW&k r~   )
rP   rU   rD   rT   r$   r   rR   r	   r   r   )rW   coeffpolyEFJLgs           r5   test_roots_preprocessingr   X  s   	!AqD1qA"41:.KEA::4!AqD1q(!,,,,	1QT	AqDAI!#a'A"41:.KEAaC<<41q!ta!+Q////	1QT	AqDAI!A"41:.KEAaC<<41q!ta++++	1QT	AaC!A"41:.KEAaC<<41q1a((((	1QT	AA"41:.KEAaC<<41q!$$$$#JA!ad"1a4'2-1Qq!t#AqD(B.	/Aad"1a4'1,QU2	3 	q!tAqD A%ad*1b50	1 	AqDAad"1a4'1,		-
 	Aad1a41$QT)	* 	ad
1a41QT!1QT6*	+ 	QqAadBq!tG$	% 	AqDAf	A #41:.KEBqDFAdFO###3q!t8fQTk)GAqDL89QT>IKXY[\X\L\\QT*1a4/02@2BCETU U U U 	adUQT#a&[ !Bq#a&yM:AadUSV^Qr#a&z2AA1a&(((rA   c                  D.   [        S[        5      0 :X  d   e[        [        [        5      [        R                  S0:X  d   e[        [        S-  [        5      [        R                  S0:X  d   e[        [        S-
  [        S-   -  [        S-
  -  R	                  5       [        5      [        S5      * S[        S5      S[        S5      S0:X  d   e[        S[        -  S-   [        5      [        SS5      S0:X  d   e[        S[        -  S-   S-  [        5      [        SS5      S0:X  d   e[        S[        -  S-   S-  [        5      [        SS5      S0:X  d   e[        S[        -  S-   S-  [        5      [        SS5      S0:X  d   e[        [        S-  S-
  [        5      [        S[        R                  S[        R                  * S[        * S0:X  d   e[        [        S-  S-
  S-  [        5      [        S[        R                  S[        R                  * S[        * S0:X  d   e[        S[        -  S-
  S-  R	                  5       [        5      [        SS5      S0:X  d   e[        S[        -  S-   S-  R	                  5       [        5      [        S	S5      S0:X  d   e[        S[        -  S-
  S-  R	                  5       [        5      [        SS5      S0:X  d   e[        S[        -  S-   S-  R	                  5       [        5      [        S	S5      S0:X  d   e[        S[        -  S-
  S-  R	                  5       [        5      [        SS5      S0:X  d   e[        S[        -  S-   S-  R	                  5       [        5      [        S	S5      S0:X  d   e[        [        [        -  [        -
  S-  R	                  5       [        5      [        [        -  S0:X  d   e[        [        [        -  [        -   S-  R	                  5       [        5      [        * [        -  S0:X  d   e[        [        S-  [        * S-
  [        -  -   [        -   [        5      [        S[        R                  S0:X  d   e[        [        S-  S[        S-  -  -
  S-   [        5      [        R                  S[        R                  S0:X  d   e[        [        S
-  S[        S-  -  -
  S[        S-  -  -   [        S-  -
  [        5      [        R                  SS[        S5      -
  S[        R                  SS[        S5      -   S0:X  d   e[        [        S-  S-
  [        5      [        S5      S-  [        [        S5      -  S-  -   S[        S5      S-  [        [        S5      -  S-  -
  S[        S5      * S-  [        [        S5      -  S-  -   S[        S5      * S-  [        [        S5      -  S-  -
  S[        R                  S[        R                  * S[        S[        * S0:X  d   eS[        S-  -  S[        S-  -  -
  S[        S-  -  -
  S[        S-  -  -   S[        S
-  -  -   S[        S-  -  -
  S[        S-  -  -
  S[        S-  -  -
  n [        U 5      [        R                  S[        S5      * S[        S5      S[        SS5      S[        S	S5      S[        SS5      S[        SS5      S0:X  d   e[        [        [        -   [        -   [        -  [        [        -   [        -   [        -   -
  [        5      [        [        -   [        -   [        -   [        [        -   [        -   -  S0:X  d   e[        [        S-  [        S-  -   [        -
  S-   [        SS90 :X  d   e[        [        S-
  [        S-   -  [        S-
  -  R	                  5       [        SS9[        S5      * S[        S5      S[        S5      S0:X  d   e[        [        S-
  [        S-   -  [        S-
  -  [        S-
  -  R	                  5       [        SS9[        S5      * S[        S5      S[        S5      S[        S5      S0:X  d   e[        [        S-  S[        S-  -  -   S[        -  -   S-   [        5      [        S5      * SS[        -  SS[        -  S0:X  d   e[        [        S-  S[        S-  -  -   S[        -  -   S-   [        SS9S[        -  SS[        -  S[        S5      * S0:X  d   e[        [        S-  [        -
  [        S-  S[        S-  -  -   S[        -  -   S-   -  [        5      [        R                  S[        R                  S[        S5      * SS[        -  SS[        -  S0:X  d   e[        R                  [        SS5      p!S[        S5      -  S-   U-  nSU-  S-  nUS-  n[        S5      [        -  S-  nXa-
  nU* U-
  n[        [        S-  [        S-  -   [        -
  S-   [        SS9U* U-
  U-
  SU* U-  XW-  -
  U-
  SU* U-  XX-  -
  U-
  S0:X  d   e[        S-  S[        -  -   S-   R                  [        S[        S-  -  S[        -  -   5      R                  [        S[        -  S-
  5      n S V	s/ s H  n	[        U	6 PM     sn	u  p[        S5      n[        U [        5      X[        SS[        -  U-  -
  5      -  -   SX[        SS[        -  U-  -
  5      -  -
  SX[        SS[        -  U-  -   5      -  -   SX[        SS[        -  U-  -   5      -  -
  S0:X  d   e[        S-  [        S-  -   [        S-  -   [        -   S-   n S V	s/ s H  n	[        U	6 PM     sn	u  pn[        U [        5      U* USU-  -  -   [        XSU-  -  -   U-  -  -   SU* USU-  -  -   [        XSU-  -  -   U-  -  -
  SU* USU-  -  -
  [        XSU-  -  -
  U-  -  -   SU* USU-  -  -
  [        XSU-  -  -
  U-  -  -
  S0:X  d   e[         S-  S["        -
  [         S-  -  -   SS["        -  -   S[        S-  -  -
  [         -  -   ["        -
  S[        S-  -  -   n [        U [         5      [        R                  S[        R                  [        R                  ["        -  -   [        R                  [        SS["        -  -
  ["        S-  -   S[        S-  -  -   5      -  -   S[        R                  [        R                  ["        -  -   [        R                  [        SS["        -  -
  ["        S-  -   S[        S-  -  -   5      -  -
  S0:X  d   e[        [        [        -  [        -  [        S-  -  S[        S-  -  -   S[        -  -   S-   [        SS90 :X  d   e[        [        [        -  [        -  [        S-  -  S[        S-  -  -   S[        -  -   S-   [        SS90 :w  d   e[        [        S-  S-
  [        SS9[        R                  S[        R                  * S0:X  d   e[        [        S-  S-
  [        S S9[        S[        * S0:X  d   e[        [        S-
  [        S-   -  [        5      [        R                  S[        R                  * S0:X  d   e[        [        S-
  [        S-   -  [        S! S"9[        R                  S0:X  d   e[        [        S-  S-
  [        SSS#9[        R                  * [        R                  /:X  d   e[        [        S-  S-
  [        S SS#9[        [        * /:X  d   e[%        S$SS%9u  nn[        S-  UU-
  S-  -  S[        -  UU-
  -  -   S-   n[        U[        S&S9SUU-
  -  S0:X  d   e[        [        S-  [        SS'9[        R                  [        R                  [        R                  /:X  d   e[        S([        SS'9/ :X  d   e[        S
-  [        S-  -
  [        S-  -   [        S-  -
  [        S-  -   [        -
  S-   n [        U 5      [        * ['        [(        S-  5      -  [+        [(        S-  5      -   S[        * ['        [(        [        SS5      -  5      -  [+        [(        [        SS5      -  5      -
  S[        * ['        [(        [        SS5      -  5      -  [+        [(        [        SS5      -  5      -   S[        ['        [(        S-  5      -  [+        [(        S-  5      -   S[        ['        [(        [        SS5      -  5      -  [+        [(        [        SS5      -  5      -
  S[        ['        [(        [        SS5      -  5      -  [+        [(        [        SS5      -  5      -   S0:X  d   e[        S-  S-   U S-  -  R	                  5       n[        U5      [        * ['        [(        S-  5      -  [+        [(        S-  5      -   S[        * ['        [(        [        SS5      -  5      -  [+        [(        [        SS5      -  5      -
  S[        * ['        [(        [        SS5      -  5      -  [+        [(        [        SS5      -  5      -   S[        ['        [(        S-  5      -  [+        [(        S-  5      -   S[        ['        [(        [        SS5      -  5      -  [+        [(        [        SS5      -  5      -
  S[        ['        [(        [        SS5      -  5      -  [+        [(        [        SS5      -  5      -   S[        * S[        S0:X  d   e[        [        S-  S)[        -  -   S-   5      n	U	 Vs/ s H  nUR,                  (       d  M  UPM     snS*   nS+S
[        S,5      -  -   nUS[/        US5      -  S-  S-[/        US5      -  -   :X  d   e[1        SS[        S5      -  -   [        S-  -  S.S[        S5      -  -
  [        S-  -  -   [        S5      * S-
  [        -  -   S-   [        S/S09n[        U5      S[        S5      -   SSS[        S5      -  -   S[        S5      * S-   S0:X  d   e[1        S1[        S-  -  S2[        S5      -  [        S-  -  -   S3[        S-  -  -
  S+[        S5      -  [        S-  -  -
  S4[        S-  -  -   S5[        S5      -  [        S-  -  -   S6[        S-  -  -
  S7[        S5      -  [        S-  -  -
  S8[        S5      -  [        -  -
  S8[        -  -
  S9-   [        S/S09n[        U5      [        S5      * S-   SSS[        S5      -  -   SS[        S5      -   SS:S[        S5      -  -   SS	S[        S5      -  -   S0:X  d   e[1        [        S-  S[        S-  -  -
  S
[        S5      -  [        S-  -  -   S[        S5      -  [        -  -
  S;[        -  -   S<-
  S<[        S5      -  -   [        S/S09n[        U5      S[        S5      -  S-   SS[        S5      -  S-   SS[        S5      -  S-
  S0:X  d   e[        [1        [        [        S5      -   S-  S-
  [        S/S095      [        S5      * [/        SS5      [        R                  * [        S5      [        -  S-  -
  -  -   S[        S5      * [/        SS5      [        R                  * [        S5      [        -  S-  -   -  -   S[        S5      * [/        SS5      -   S0:X  d   eg s  sn	f s  sn	f s  snf )=Nr0   r   r8   rH   rK   rC   r_   rs   rI   rJ   rr   i i  i  i  i     rd   i  r   r   F)cubicsrN   T!      ))r   r   )r0   r   ))r0   rK   )r0   rr   )r_   rr   Zfilterr   c                     U R                   $ r   )is_positive)rX   s    r5   <lambda>test_roots0.<locals>.<lambda>  s    rA   )	predicate)r   r   za, b)realRr   i  (   r   l   i2  r   r   r}   r~   )            }   -            r      r   )r%   rD   r   r   expandr   r   r   rP   rT   NegativeOner   rR   rS   r   rh   rj   rU   r	   r   r   r   r1   r   r   )rW   r1_2r1_3x0x1x2x3x4x5rX   r13_20r1_20s2r1_4r1_8r5_8arbrri   r   rx	real_rootcrra   s                           r5   test_roots0r$    s   A;"A;1661+%%%Aq>affa[(((1q51q5/1q5)113Q7QqTE1adAqQRtUV;WWWW1q!"a! 4444!A#'Aq!hr1oq%9999!A#'Aq!hr1oq%9999!A#'B"xA&;;;;A1!Qq155&!aR!CCCC!Q$(Q"q!QUUAvq1"a&HHHH1Q37Q,&&(!,1a!0DDDD1Q37Q,&&(!,"a!0DDDD1Q37Q,&&(!,1a!0DDDD1Q37Q,&&(!,"a!0DDDD1Q37Q,&&(!,1a!0DDDD1Q37Q,&&(!,"a!0DDDD1Q37Q,&&(!,!A#q	9991Q37Q,&&(!,!Aq	999A!a
"Q&*q!QUUA.>>>>A!Q$"A&155!Q]]A*FFFFA!Q$1a4'!Q$.2	
2Q<AFFArDG|Q?@ @ @ A1Q	Ad1gIaKQ	Ad1gIaK	a
QtAwYq[ !	a
QtAwYq[ !	q155&!QA2q"    	ad
T!Q$Yad*T!Q$Y6adBAqD	q!t8	 Ag	&A 8AaD5!QqT1hr1oqQHROQAK K K K !a%!)Q!a%!)a-0!4!a%!)a-!a%RS)9TVW8XXXXA1q1$a6"<<<1q5	AA!E389!ua1q!A$PQ6RS S S1q51q5/1q5)1q5199;QuM
A$1Q4AaD!QqT1-. . .A!Q$1$q(!,!A$2a4AaC0KKKKA!Q$1$q(!D9	Aq!A#q1Q4%#$ $ $!Q$(QTAadF]QqS0145q:	
1661qteQ1a1a89 9 9 !Q$
DH*r/D	 B	
2aB	AB	a1B	B
tBA1q1$a5	b4	Bq	Bq:    
A!aa1a4!A#.33AqsQw?A %'$A l$'MF 
aBA;tA!BJ'''tA!BJ'''tA!BJ'''tA!BJ'''	    	
1q!tadQ"A/GI/G!1/GIDA;	QWq$ag"5!<<<a	QWq$ag"5!<<<a	QWq$ag"5!<<<a	QWq$ag"5!<<<a	    	
1Q1}AaC!AqD& 0!33a7!AqD&@AA;	q	AFF4AaC!Q$1a4(?#@@@!	AFF4AaC!Q$1a4(?#@@@!    1Qq!ta1f$qs*Q.%@BFFF1Qq!ta1f$qs*Q.$?2EEEA1S)aeeQ-BBBBA1S)aQB]:::!a%!a%!$AEE61(====	
QQ&=?CD55!*M M M A1S48aeeVQUUOKKKA1S48QGCCCV$'FB	1beaZ!A#r"u+%)AAc"q"r'{A&6666Aq4(QVVQVVQVV,DDDDq4(B...	1q!tadQT!AqD(1,q0A8	
3r!t9s2a4y !	
3r(1a. !!C8Aq>(9$::A	
3r(1a. !!C8Aq>(9$::A	#bd)c"Q$i	#b!Q
  3r(1a.'8#991	#b!Q
  3r(1a.'8#991    Q$(AqD  "A8	
3r!t9s2a4y !	
3r(1a. !!C8Aq>(9$::A	
3r(1a. !!C8Aq>(9$::A	#bd)c"Q$i	#b!Q
  3r(1a.'8#991	#b!Q
  3r(1a.'8#991	
Aq!    	adRTkBA.a2::a.q1I	qd|	B4A;q(2d2qk>9999	q1T!W9}ad"b1T!W9nad%::tAwhlA=MMPQQST]a	bB9d1gq"qay.!d1gX\1MMMM	bAg47
1a4'#ad(2Sa[A5EE1H47{1a4 "$QT'*,.tAwJq!tO<>@ajlKqD	
B 9$q'Aq"qay.!R$q'\1aQiB47NA? ? ? ? 
adQq!tVmaQi1n,qay{:RTABFtAwJ$
(B9DGaBtAwJNAr$q'zA~qQQQQq47{Q&*Ad;<
q'DAJ$q'!)A+ 56	6
q'DAJ$q'!)A+ 56	6
q'DAJ		## # #w' Jz /s   &A\=A\M.A\NA\c            
      L   [        S5      u  pp#nUS-  U-  X-  -   XB-  U-  -   U -
  nUS-  XX#-
  -  U -  -   -  X@-  U-  U-  X-  U-
  -  -   X-  X#-  -
  -   n[        [        XT5      R                  5       5      SS/:X  d   e[        [        Xd5      R                  5       5      SS/:X  d   e[        S5      u  pxppnX}-
  X-
  -  X-
  -  X-  U-  -   U-   U
-
  U-
  nX}-
  U-  U-  XU-
  -  U-  -   X-  X-
  -  -   n[        [        X-
  U5      R                  5       5      / SQ:X  d   eUS-  SUS-  -  -   S-   n[        [        U5      R	                  5       5      n[        S U Vs/ s H"  nUR                  UU5      R                  S	S
9PM$     sn 5       5      (       a   egs  snf )z6Just test that calculating these roots does not hang. z	a,b,c,d,xr8   r0   zzz,yy,xx,zy,zx,yx,kr   rH   rr   c              3   $   #    U  H  ov   M     g 7fr   rE   r2   s     r5   r6   "test_roots_slow.<locals>.<genexpr>T  s     GF1Fs   Trf   N)r	   r;   r%   valueskeysr   rh   rV   )rP   rT   rR   rS   rD   f1f2zzyyxxzyzxyxke1e2rW   r  ris                      r5   test_roots_slowr6  @  s   K(MA!	
Aa13!#a%	!	#B	
Aqae9Q;	!#a%'137"3	3qsQSy	ABb##%&1a&000b##%&1a&000")*?"@RRRQ
&26	BF	#beBh	.	3b	82	=B
&"R"1f+b.	(25"&>	9Bbgq!((*+y888	1qAvAU1X]]_AGAFAbqvva}D9AFGGGGGGFs   $)F!
c                     [        [        S-  [        -   S-   [        SS9n [        [        S-  [        -   S-   [        SS9n[        X5       H  u  p#[        X#-
  5      S:  a  M   e   [        S-  S[	        S	5      -  [        S
-  -  -   SS[	        S5      -  -   [        S-  -  -
  SS[	        S5      -  S-   -  -   n[        USS9n Sn[        X5       H  u  p#[        X#-
  5      S:  a  M   e   g )Nr8   r0   Tr  g      ?g-q=rK   g      @g       @rH   g     S@g      8@g      b@g      "@)g؋~)g)cg3!	@g
 @绽|=)r%   rD   r   absr   )R1R2r   r2rW   s        r5   test_roots_inexactr=  W  s    	q!tax!|Q	.B	q!tax#~q4	0Bb+27|e###  	
1s49}QT!!TDcN%:AqD$@@
49s"
#	$A 
q4	 B
.B b+27|e### rA   c                     [        S5      u  pp#SU S-  -  US-  -  US-  -  SU-  [        -  U S-  -  US-  -  US-  -  -   SU S	-  -  US
-  -  US	-  -  [        S
-  -  US-  -  -
  SU S-  -  US-  -  US-  -  [        S-  -  US-  -  -   SU S-  -  US-  -  US-  -  [        S-  -  US-  -  -
  SU S-  -  US-  -  US-  -  [        S-  -  US	-  -  -   SU S
-  -  US	-  -  US
-  -  [        S	-  -  SUS-  -  -  -   SU -  U-  US-  -  [        S-  -  SUS
-  -  -  -
  SUS-  -  [        S-  -  S-  -   n[        U[        5      0 :X  d   e[        UR                  5       [        SS9n/ SQn[	        S5      nXp-  U-  XS
-  -  -  n[        U5      [        U5      :X  d   e[        XV5       H/  u  pU	R                  U5      nUb  [        X   U
-
  5      S:  a  M/   e   g )Nr   r   rr   r   r   rd   r   r   rJ   r8   r   r   r_   rH   rs   r   rK   r   r   r   r   r   r   Tr  )g?|YcgOXLzGX@g'I^g@g|۰n@gdZw@g5`e@gS$Ȫ@gJm@rY   r8  )	r	   rD   r%   evalfr   r=   r   matchr9  )r   r   r   r   rW   r:  r;  rY   ri   r   r<  r@  s               r5   test_roots_preprocessedrA  i  sa   #JA!ad"1a4'2-1Qq!t#AqD(B.	/Aad"1a4'1,QU2	3 	q!tAqD A%ad*1b50	1 	AqDAad"1a4'1,		-
 	Aad1a41$QT)	* 	ad
1a41QT!1QT6*	+ 	QqAadBq!tG$	% 	AqDAf	A A;"	qwwy!d	+B
RB 	S	A	AqAvAr7c"gb+ SB%7%%??? rA   c                  8   [        [        S-  S[        -  -
  S-   SS9SS0:X  d   e[        [        S-  S[        -  -
  S-   SS9SS0:X  d   e[        [        S-  S[        S-  -  -
  [        S-  -
  S[        -  -   S-
  SS9SS0:X  d   e[        [        S	 5        g )
Nr8   r0   FstrictTrJ   r_   rH   c                  l    [        [        S-  S[        S-  -  -
  [        S-  -
  S[        -  -   S-
  SS9$ )NrJ   r8   r_   rH   TrC  )r%   rD   rE   rA   r5   r   #test_roots_strict.<locals>.<lambda>  s3    %1qAv10Dqs0JQ0NW[*\rA   )r%   rD   r*   r(   rE   rA   r5   test_roots_strictrG    s    A!a.1a&888A!a-!Q777A!Q$A%!+a/>1a&HHH
 "\]rA   c                     SS[         -  -
  S[         S-  -  -
  S[         S-  -  -   S[         S-  -  -
  n [        U S	S
9u  p[        U 5      n[        U S	S9nU VVVs/ s H  u  u  pVn[	        XV5      PM     nnnnU VVVs/ s HE  u  u  pVn[	        [        U5      [        U5      5      [	        [        U5      [        U5      5      -  PMG     nnnnX-   nU V	s/ s H  oR                  5       PM     nn	[        US S9n[        US S9nX44 HM  n
[        X5       H;  u  pU	R                  (       a	  X;   d   eM  [        U	5      [        U	5      4U;   a  M;   e   MO     g s  snnnf s  snnnf s  sn	f )Nipi  i  r8   i
  rH   1   rK   T)rn   r  c                 "    U R                  5       $ r   sort_keyrD   s    r5   r   "test_roots_mixed.<locals>.<lambda>  
    AJJLrA   r   c                 "    U R                  5       $ r   rK  rM  s    r5   r   rN    rO  rA   )rD   r   r   r%   r   r   r   r?  r:   r   r1   )rW   _re_im_nroots_srootsrP   rT   _
_intervalsrX   _rootsr4   s               r5   test_roots_mixedrX    sV   Qad"T!Q$Y.AqD8A%HCQiGA%G,/
1CyvqHQNCC
1?fq RUBqE"8BqE2a5#99   J#*,7a	7G,W"89GW"89G$
+DAyyvv1r!u~***	 , % 2 -s   E?AE$E+c            
      b   [        [        S[        5      5      [        S[        5      /:X  d   e[        [        [        [        5      5      [        [        [        5      /:X  d   e[        [        S-  S-
  [        5      [        S-   [        S-
  /:X  d   e[        [        S-  [        -
  [        5      [        [	        [        5      -
  [        [	        [        5      -   /:X  d   e[        [        S-  S-
  S-  5      [        S-   [        S-   [        S-
  [        S-
  [        [
        -
  [        [
        -
  [        [
        -   [        [
        -   /:X  d   e[        [        [        S-  S-
  [        5      SS9[        [        S-   [        5      [        [        S-
  [        5      [        [        S-  S-   [        5      /:X  d   e[        S[        S-  -  S[        S-  -  -   S[        S-  -  -   [        S-  -   [        S	S9[        [        [        S-  S[        S-  -  -   S[        S-  -  -   S-   /:X  d   eg )
Nr0   r8   rK   r   r   rr   r   rJ   Q)r   r   rD   rU   r   r   rE   rA   r5   test_root_factorsr[    s   Q
#Q
|333Q
#Q
|3331q!$QA6661q!$T!Wa$q'k(BBBBAA&	
QAq1ua!eQUAE1q5!a%@A A A QTAXq)#6	a!eQa!eQadQh):;< < <!Q$AqD(1QT61AqD8!CH	
Aq!ta1f}r!Q$w&*+, , ,rA   c                     ^ Sn [        U [        SS9m[        [        R                  R
                  U4S j5        TR                  SS9nU Vs/ s H  n[        U5      PM     sn/ SQ:X  d   eg s  snf )Nr   Tr   c                  $   > T R                  SSS9$ )NrH   r_   )rV   maxsteps)r   )ri   s   r5   r   test_nroots1.<locals>.<lambda>  s    AHHq1H,ErA   rH   rV   )@z-0.999z-0.996z-0.991z-0.983z-0.973z-0.961z-0.946z-0.930z-0.911z-0.889z-0.866z-0.841z-0.813z-0.784z-0.753z-0.720z-0.685z-0.649z-0.611z-0.572z-0.531z-0.489z-0.446z-0.402z-0.357z-0.311z-0.265z-0.217z-0.170z-0.121z-0.0730z-0.0243z0.0243z0.0730z0.121z0.170z0.217z0.265z0.311z0.357z0.402z0.446z0.489z0.531z0.572z0.611z0.649z0.685z0.720z0.753z0.784z0.813z0.841z0.866z0.889z0.911z0.930z0.946z0.961z0.973z0.983z0.991z0.996z0.999)r&   rD   r*   mpmathmpNoConvergencer   str)rV   r%   rX   ri   s      @r5   test_nroots1re    sm    
Aa$'A
699""$EFHHqHME ""EqCFE"	K
K 
K 
K"s   A/c                  ,   [        [        S-  S[        -  -   S-   [        5      n U R                  SS9nU Vs/ s H  n[        U5      PM     sn/ SQ:X  d   eU R                  SS9nU Vs/ s H  n[        U5      PM     sn/ SQ:X  d   eg s  snf s  snf )Nr_   rH   r0   r`  )z-0.332z-0.839 - 0.944*Iz-0.839 + 0.944*Iz1.01 - 0.937*Iz1.01 + 0.937*I)z-0.33199z-0.83907 - 0.94385*Iz-0.83907 + 0.94385*Iz1.0051 - 0.93726*Iz1.0051 + 0.93726*I)r   rD   r   rd  )ri   r%   rX   s      r5   test_nroots2rg    s    QTAaCZ!^QAHHqHME ""EqCFE"44 4 4 HHqHME!"EqCFE":: : : #
 #s   B+Bc                      [        [        [        [        S-  [        S-  [	        [
        5      -  -   [        -   [
        -   [        SS95      5      S:X  d   eg )NrH   r8   T)	composite)r=   r%   r   rU   r   rD   rE   rA   r5   test_roots_compositerj    sB    uT!Q$Ad1g-1A5qDIJKqPPPrA   c                  x   ^  [        [        5      S-  [        [        5      -
  S-   m [        [        U 4S j5        g )NrH   r0   c                     > [        T 5      $ r   rw   r`   s   r5   r   "test_issue_19113.<locals>.<lambda>  s	    E"IrA   )r   rD   r*   r'   r`   s   @r5   test_issue_19113rn    s)    	QSV	a	B
?-.rA   c                  h    [        SSSS[        -  -
  S-  -  S-  S[        -  -   S/S	S
9SS/:X  d   eg )Nr0   rI   r   rK   r8   rr   r   r   Tr  )r%   r   rE   rA   r5   test_issue_17454rp    sA    !RacA%a'"Q$.2TBq!fLLLrA   c                      [        [        S-   [        5      R                  5       S/:X  d   e[        [        S-  S-   [        5      R                  5       S[        S5      S-  -  * /:X  d   eg )Nl          l       rH   rK   r8   )r   rD   
real_rootsr   rE   rA   r5   test_issue_20913rs    s`    --q1<<>C]B^^^^1q!'')q1Q46{l^;;;rA   c            
      :   [        SS5      n S[        -  U -  [        S-   SU -  -  -  n[        [        [        [        S-  -  [        S-   S-  -   [        5      5      USU* S[        S5      [        -  -   -  S-  SUS[        S5      [        -  -   -  S-  S0:X  d   eg )Nr0   rH   rC   r_   r8   )r   rP   r%   r   rD   r   r   )rQ   rX   s     r5   test_issue_22768ru    s    AA	A	1q5AaC. Aa1fAz)1-.	1	
AQ	M1a	2Q	>1a3! ! ! !rA   )k__doc__sympy.core.numbersr   r   r   sympy.core.singletonr   sympy.core.symbolr   r   r	   $sympy.functions.elementary.complexesr
   r   r   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   r   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   r   sympy.polys.domains.integerringr   sympy.sets.setsr   sympy.simplify.powsimpr   sympy.polysr   r   r   r   r   sympy.polys.polyrootsr   r   r   r   r    r!   r"   r#   r$   r%   sympy.polys.orthopolysr&   sympy.polys.polyerrorsr'   r(   sympy.polys.polyutilsr)   sympy.testing.pytestr*   r+   sympy.core.randomr,   ra  	itertoolsr-   rP   rT   rR   rS   rQ   r   r   rD   rU   rj   r@   rF   r]   rb   rp   ru   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r$  r6  r=  rA  rG  rX  r[  re  rg  rj  rn  rp  rs  ru  rE   rA   r5   <module>r     sK   H 0 0 " 5 5 D D 6 A : E E . $ * H H? ? ? 1 ( - 0    ''<= 1aAq!Q1?&D&H4	-

.7UtB
K-'`0B9)xj#XH.$$@:^+2,  K K*:"Q/
M<
!rA   