
    sgh              
       J   d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZmZmZ ddlmZ ddlmZmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ ddlmZ ddl m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=Z=ddl>m?Z?  e
d      \
  Z@ZAZBZCZDZEZFZGZHZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRd  ZSd! ZTd" ZUd# ZVd$ ZWd% ZXd& ZYd' ZZd( Z[d) Z\d* Z]d+ Z^d, Z_d- Z`d. Zad/ Zbd0 Zce:d1        Zdd2 Zed3 Zfd4 Zgd5 Zhd6 Zid7 Zjy)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                     t        d | D              }t        | d |       t        | d |       k(  sJ t        |t	        |       d      D ]*  }| |dz      | |   k(  r| |dz      t        | |         k(  r* y y)Nc              3   <   K   | ]  }|j                   rd nd  yw)   r   N)is_real.0is     S/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_polyroots.py	<genexpr>z_check.<locals>.<genexpr>(   s     5!QYYA%5      r0   FT)sumsortedlistrangelenr
   )r%   nrealixs      r5   _checkr@   $   s     5u55E%- Dv$7777E3u:q) b1fr*b1f59!55	
     c                  j    t        t        dt        z  dz   t                    t        dd      gk(  sJ y )Nr8   r0   )r   r   xr    rA   r5   test_roots_linearrF   2   s-    QqS1Wa()hr1o->>>>rA   c            	      8
   t        t        dt        dz  z  t                    ddgk(  sJ t        t        dt        dz  z  dt        z  z   t                    t        dd      dgk(  sJ t        t        dt        dz  z  dz   t                    t         t        d      z  dz  t        t        d      z  dz  gk(  sJ t        t        dt        dz  z  dt        z  z   dz   t                    dt        t        d      z  dz  z
  dt        t        d      z  dz  z   gk(  sJ t        t        dt        dz  z  dt        z  z   dz   t              j                                t        dz  dt        z  t        z  dt        z  t        z  z   t        t        z
  z  t        z  z   t        t        z
  t        t        dz  z  z   t        t        dz  z  z
  t        t        z
  z  z   } t        t        | t                    t         t        t        z   z  t        t        z
  z  t        t        t        z  t        t        z  z   t        t        z  z
  t        t        z  z
  dt        z  t        z  t        dz  z  z         t        t        z
  z  z
  t         t        t        z   z  t        t        z
  z  t        t        t        z  t        t        z  z   t        t        z  z
  t        t        z  z
  dt        z  t        z  t        dz  z  z         t        t        z
  z  z   gk(  sJ t        t        t        dz  z  dt        z  z
  dt        z  z
  t              } t        |       t        dt        dz  z  dz          t        z  dt        z  z   t        dt        dz  z  dz         t        z  dt        z  z   gk(  sJ t        t        dz  t        dz   dz
  t        z  z   t        dz  z   dz   t              } t        |       dt        dz  dz   gk(  sJ t        t        d      t        dz  z  dz
  t              } t        |       }|t        |      k(  sJ t        d	t        dz  z  d
t        z  z
  dz         } | j                  d      D cg c]  }|j                  d       c}| j                  d      D cg c]  }|j                  d       c}k(  sJ t!        ddd      D ]C  \  }}}t        |t        dz  z  |t        z  z   |z         } t        |       }|t        |      k(  rCJ  y c c}w c c}w )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   sM   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7qACCF7KKK78qACCF89 9 9gw8 &
BAqD2a4"$%"u%%%& 88s   1TTc                     t        t        dz  t        z  t        dz  z   t        z   t              } t        |       t	        t        dz  t	        d      t        z  dz  z         dt	        t	        d       t        z  dz  t        dz  z         dt	        t        dz  t	        d      t        z  dz  z          dt	        t	        d       t        z  dz  t        dz  z          dik(  sJ y )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                     t        dt        ddgt              j                         t	        t        t              t              } t        dd      t        dz  dz  z
  | D cg c]  }|j                  t               }}t        |      t        t	        t        j                  t              t                          k(  sJ t        fd|D              sJ y c c}w )Nr0   rN   rI   r8      c              3      K   | ]5  }j                  t        t        |i      j                  d d      dk(   7 yw)r8   Tchopr   N)subsrU   rD   rV   )r3   r4   pzs     r5   r6   z"test_issue_8438.<locals>.<genexpr>i   s7     GQqvvq!Ql#%%ad%3q8Gs   ;>)
r   rU   rD   as_exprr   r   r   rh   setall)r%   rX   postri   rj   s      @@r5   test_issue_8438ro   a   s    aB^Q'')AQ
A&EQ!A#a%A"'(QAFF1aL(D(t9D1q)*+, , , G$GGGG	 )s   $Cc                     t        dt        dz  z  dz
  t              t        t        dz  dz         z  j                         } t        |       sJ t        t        dz  dt        dz  z  z   dz   t              }t	        d      D cg c]  }t        ||       }}t        t        dz  dt        dz  z  z   dz   t              j                         } | |k(  sJ t        |       sJ t        dt        dz  z  dz
        j                         } t        |       sJ t        t        dt        dz  z  dz
        j                               dk(  sJ y c c}w )NrK      r0   r8   r_   rJ   
   )r   rD   rO   r@   r<   r   r=   )r%   rW   r4   ros       r5   test_issue_8285rt   l   s   !AqD&1*a adQh/::<E%==QTAadF]Q"A %a	)1&A,	)B	)A!Q$"A&002EB;;%== 1a4!&&(E%==tAaeGaK **,-333 
*s   E	c                     t        t        dz  dz         t        t        dz  dz         z  j                         } t        |       sJ t        t        dz  dt        dz  z  z   dz   t              j                         } t        |       sJ t        t        dz  t        z
  dz         j                         } t        |       sJ t        t        dz  dt        dz  z  z   dz   t              j                         } t        |       sJ y )Nr8   rK   rJ   rH   r0   )r   rD   rO   r@   r%   s    r5   test_issue_8289rw   {   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            	         t        t        dz
  dz  dz   t        dz
  dz  dz   z  t        dz
  z        j                         ddt        z
  dt        z   dt	        d      t        z  z
  dt	        d      t        z  z   gk(  sJ t        dz  dt        dz  z  z   dz   } t        d      D cg c]  }t        | |       }}t        |       j                         |k(  sJ t        |       y c c}w )Nr0   r8   rK   rr   )r   rD   rO   r   r   r<   r   r@   )ri   r4   anss      r5   test_issue_14291rz      s    !a%!a1q51*q.11q59 

)+!QUAE1tAwqy=!d1gai-HI I I	1r!Q$wA!&q
*A6!Q<
*C
*7#%%%
3K +s   %C$c                      t        t        dz  t        t              t        z  z   t        z   t        d      } t	        |       }t        |      dk(  sJ y )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                     t        t        dz  t        dz  ddt        z  z   z  z   t        dz  ddt        z  z   z  z   t        dd	t        z  z
  z  z   d
z
  dt        z  z
  t              t              } t	        fd| D              sJ y )NrK   rH          r8   ii  ii  i
  i  c              3   4   K   | ]  } |      d k(    ywr   NrE   r3   rX   ra   s     r5   r6   z#test_issue_14522.<locals>.<genexpr>   s     ,ar!uz,s   )r   rD   r   r%   rm   )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                      t        t        t        dz  dt        dz  z  z
  t        t        z  z   dz
  t                    } | d   j	                  t              sJ y )NrK   rJ   r8   rH   r   )r    r   trD   has)sols    r5   test_issue_15076r      sE    
QTAadF]QqS014a8
9Cq6::a==rA   c                      t        t        dz  dt        d      z  t        dz  z  z
  dt        dz  z  z   dt        d      z  t        dz  z  z
  dt        z  z   t              } t        |       }d|v sJ y )NrK   rq   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                  F   t        t        dt        dz  z  t                    g dk(  sJ t        t        t        dz  dt        dz  z  z
  dt        z  z   dz
  t                    g dk(  sJ t        t        d      } t        t        t        dz  t        z
  t                    | | t
        j                   t        d      t        z  dz  z   z  | t
        j                   t        d      t        z  dz  z
  z  gk(  sJ t        t        t        dz  dz
  t                    dt
        j                  t        t        d      z  dz  z
  t
        j                  t        t        d      z  dz  z   gk(  sJ t        t        dt        dz  z  dt        dz  z  z
  dt        z  z
  dz
  t                    d   t
        j                  dt        dd      z  dz  z   dt        dd      z  dz  z   k(  sJ t        dz   dt        dz  z  z   dt        z  z   dz
  }t        |dd	      t        t        |t              d
      cxk(  rt        dd      dt        d      z  t        t        dt        d      z  dz        dz        z  dz  z   dt        d      z  t        t        dt        d      z  dz         dz  t        dz  z         z  dz  t        dd      z   dt        d      z  t        t        dt        d      z  dz         dz  t        dz  z         z  dz  t        dd      z   gk(  sJ  J y )Nr8   rH   )r   r   r   r0   r0   r0   r0   rC   r   T)trigmultiple)r      rq      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                     t        t        t        dz  t                    g dk(  sJ t        t        t        dz  t        dz  z   t                    g dg dg dg dfv sJ t        t        t        dz  t        dz  z
  t                    g dg d	g d
g dfv sJ t        t        t        dz  t        z   t                    } t        j                  t
        t        d      z  dz  z   t        j                  t
        t        d      z  dz  z
  t        j                  t        j                   g}t        | t              t        |t              k(  sJ t        g d      D ]  \  }\  }}}}|dk(  r%| |dz  t        d      z  |t        d      z  z
  z  }n;|dk(  r6|||dz  t        dd      z  |t        d      z  z
  z  |t        d      z  z   z  }t        dz  |t        dz  z  z   |t        dz  z  z   |t        z  z   |z   t        t        t                    }t        fd|D              rJ  t        t        t        z  t        dz  z   t        dz  z   t        dz  z   dt        dz  z  z   t        dd      z
  t              t              }t        fd|D              sJ t        dd      t        dz  dt        dz  z  z   dt        dz  z  z   t        dz   z  z   dz   t        t        t                    }	t        fd|	D              sJ t        t         t        dz  z  t        dz  z   t        z
  z   t              t              }t        d |D              sJ t        dd      t        dd      dt        dd      t        dd      dt        dd      ddf}
|
D ]J  t        t        j#                        t                    }t        fdt%        ||      D              rJJ  y ) 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   rq      r   c              3   p   K   | ]-  }j                  t        |      j                  d       dk(   / yw)Trf   r   Nrh   rD   rV   )r3   aira   s     r5   r6   z%test_roots_quartic.<locals>.<genexpr>   s.     B2771b>###.!3Bs   36r0   c              3   ^   K   | ]$  }t        j                  t        |      d        & ywr   r,   rh   rD   )r3   r4   ra   s     r5   r6   z%test_roots_quartic.<locals>.<genexpr>   s#     A!"''!Q-3As   *-rj   T)negative   r_   c              3   h   K   | ])  }t        j                  t        |fd ff      d       + yw)rC   r   Nr   )r3   r4   ra   rj   s     r5   r6   z%test_roots_quartic.<locals>.<genexpr>   s/     OQ!"''Aq6Ar7*;"<a@Os   /2c              3   @   K   | ]  }t        |      t        k(    y wN)typer   r2   s     r5   r6   z%test_roots_quartic.<locals>.<genexpr>   s     1tAw)#1s   rC   )rU   rj   rN   c              3   `   K   | ]%  \  }}t        |j                        |z
  d        ' ywr   )r,   rh   )r3   rY   sreps      r5   r6   z%test_roots_quartic.<locals>.<genexpr>   s)     Tda%affSkAoq9Ts   +.)r    r   rD   r   r   r   r   ZeroOner:   hash	enumerater   rm   qr	   rU   rh   zip)lhsrhsr4   rP   rT   rR   rS   ry   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 C<Aq!Q 6AqD1I!A$&'A!V1ad8As++a"g561Q4?@ATAadF]Qq!tV#ac)A-DQK(BcBBBBC  
acAaCi!Q$A%!Q$.!Q?	CB

CASAAAAd#A	
A!Q$1a4	!QV*	,q	0Bb!%DO$OOOO 
a1fq!tma!#Q	'B

C1S1111r1oHRO4r1oHRO4r1oB')D  UDq12Tc#smTTTTUrA   c                      t        d t        t        t        dz  t        dz  ddt        z  z   z  z
  dt        z  dt        z   z  z   dz
  dt        z  z   t                    D              rJ y )Nc              3   <   K   | ]  }t        |t                y wr   )
isinstancer   r2   s     r5   r6   z#test_issue_21287.<locals>.<genexpr>   s      B:a+ Br7   rK   r8   rH   r_   rC   r0   )anyr    r   rD   r   rE   rA   r5   test_issue_21287r      ss     B]QTAqD!ac'N"QqS"q&\1A5!;Q?6A B B B B BrA   c                  B   t         dz  dz
  t         dz  dz   dz  dt         dz  dz   z  z
  dz   t         dz  dt         dz  z  z
  dt         dz  z  z
  dt         z  z   d	z   f} | D ]<  t        t                    }t        |      dk(  sJ t	        fd
|D              r<J  y )Nr_   r8   r0      n   rH   7   i	  i  c              3      K   | ]<  }j                  t        |j                  d             j                  d      dk(   > yw)rr   gh㈵>rf   r   Nr   r   s     r5   r6   z%test_roots_quintic.<locals>.<genexpr>  s7     Jq2771acc"g&(((5:Js   AA)rD   r!   r   r=   rm   )eqsr%   ra   s     @r5   test_roots_quinticr      s    a4!8qS1WqL1acAg;&+qD3q!t8ObAg%Q.46C  Kd2h'5zQJEJJJJKrA   c                  
   t        t        dt        d            dgk(  sJ t        t        dt        d            dgk(  sJ t        t        dt        d            t        dd      t        t        d      z  dz  z
  t        dd      t        t        d      z  dz  z   gk(  sJ t        t        dt        d            t         t        gk(  sJ t        t        dt        d            t        j                  t        t        d      z  dz  z
  t        j                  t        t        d      z  dz  z   gk(  sJ t        t        d	t        d            t        t        d	z         t        t        t        d	z        z  z
  t        t        d	z         t        t        t        d	z        z  z   t        t        t        dd	      z         t        t        t        t        dd	      z        z  z
  t        t        t        dd	      z         t        t        t        t        dd	      z        z  z   t        t        t        dd	      z        t        t        t        t        dd	      z        z  z
  t        t        t        dd	      z        t        t        t        t        dd	      z        z  z   gk(  sJ t        t        d
t        d            t        d       dz  t        t        d      z  dz  z
  t        d       dz  t        t        d      z  dz  z   t        d      dz  t        t        d      z  dz  z
  t        d      dz  t        t        d      z  dz  z   gk(  sJ t        t        dt        d            t        d       dz  t        dz  z
  t        d       dz  t        dz  z   t        d      dz  t        dz  z
  t        d      dz  t        dz  z   gk(  sJ t        t        dt        d      d      dgk(  sJ t        t        dt        d      d      dgk(  sJ t        t        dt        d      d      t        dd       dt        dd      z   gk(  sJ t        t        dt        d      d      t         t        gk(  sJ t        t        dt        d      d      t        dd       t        dd      dz   t        dd      dz  dt        dd      dz  z
  t        dd      z   t        dd      dz  z   gk(  sJ t        t        dt        d      d      dt        dd      z
  t        dd      gk(  sJ y )Nr0   Tpolysr8   rC   rH   rK   rJ   rd   rq   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            
      T   t        t        dt        z  t                    dgk(  sJ t        t        dt        dz  z  t                    g dk(  sJ t        t        dt        z  dz   t                    t        dd      gk(  sJ dt        dd      z  dz  } t        t        dt        dz  z  dz   t                    |  | t        z  z
  |  | t        z  z   | | t        z  z
  | | t        z  z   gk(  sJ t        t        t        t        d	z  dz
                     t        d
d      }t        dd      }t        t        |t        dz  z  |z   t                    }t        t        |t        dz  z  |z   t                    }t        |d         t        |d         k(  sJ t        |d         t        |d         k(  sJ t        dddd      D ]H  \  }}}}||k(  r|dk7  rt        |t        |z  z  ||z  z         }	t        |	      }
|
t        |
      k(  rHJ  t        t        dt        dz  z  dt        dz  z  z
  t                    dt        z  t        dd      t        d      t        z  dz  z
  z  ddt        z  ddt        z  t        dd      t        d      t        z  dz  z   z  dik(  sJ y )Nr_   r   rK   r   r8   rN   rr   rH   rq   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   ry   s              r5   test_roots_binomialr   7  sx   $qsA,'A3...$qAvq/*l:::$qsQw*+Q/@@@@
HQN2A$qAvz1-.
acA2!8Q1Wa!A#g./ / /
>$q!tax.)*	$	'B	$	'B	bAglA.	/B	R1Wr\1-	.B2a5>WRU^+++2a5>WRU^+++ffg|D "
1a6a1f1a4!A#QfSk!!!" a1fr!Q$w&*+	!Xb!_tAwqy{*+Q	!Q	!Xb!_tAwqy{*+Q00 0 0 0rA   c            	      	   t         t        z  t        dz  z  t        z   t        z
  } t	        t        | t                    \  }}|dk(  sJ |t        t         t        z  t        dz  z  t        z   t        z
  t              k(  sJ t        dz  t        dz  z  t        dz  t        dz  z  z   t        t        z  z   t         z   } t	        t        | t                    \  }}|dt        z  k(  sJ |t        t        dz  t        dz  z   t        z   t         z   t              k(  sJ t        dz  t        dz  z  t        dz  t        dz  z  z   t         z   } t	        t        | t                    \  }}|dt        z  k(  sJ |t        t        dz  t        dz  z   t         z   t              k(  sJ t        dz  t        dz  z  t        t        z  z   t         z   } t	        t        | t                    \  }}|dt        z  k(  sJ |t        t        dz  t        z   t         z   t              k(  sJ t        dz  t        dz  z  t         z   } t	        t        | t                    \  }}|dt        z  k(  sJ |t        t        dz  t         z   t              k(  sJ t        d      \  }}}}d|dz  z  |dz  z  |dz  z  d|z  t        z  |d	z  z  |d	z  z  |d
z  z  z   d|dz  z  |dz  z  |dz  z  t        dz  z  |dz  z  z
  d|dz  z  |dz  z  |dz  z  t        dz  z  |dz  z  z   d|dz  z  |dz  z  |dz  z  t        dz  z  |dz  z  z
  d|dz  z  |dz  z  |dz  z  t        dz  z  |dz  z  z   d|dz  z  |dz  z  |dz  z  t        dz  z  d|dz  z  z  z   d|z  |z  |d	z  z  t        d	z  z  d|dz  z  z  z
  d|dz  z  t        dz  z  dz  z   } t	        t        | t                    \  }}|d|z  |z  ||dz  z  z  k(  sJ |dt        dz  z  dt        d	z  z  z
  dt        dz  z  z   dt        dz  z  z   dt        dz  z  z
  dt        dz  z  z   dt        dz  z  z
  dt        z  z   d z
  k(  sJ t        t        dz   t        dz  t        t              z  z   t        t        t        t        t              f   !      } t        t        dz   t        t              z   t        t        t        t                 !      }t	        |       t        |fk(  sJ y )"Nr8   r0   rH   E,F,J,L [r|)s2^ rq   r       83ll8rd         ]$=,y rJ   r      /@:r_   rr      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:.KE4A::4!AqD1q(!,,,,	1QT	AqDAI!#a'A"41:.KE4AaC<<41q!ta!+Q////	1QT	AqDAI!A"41:.KE4AaC<<41q!ta++++	1QT	AaC!A"41:.KE4AaC<<41q1a((((	1QT	AA"41:.KE4AaC<<41q!$$$$#JAq!Q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:.KE4BqDFAa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                  R.   t        dt              i k(  sJ t        t        t              t        j                  dik(  sJ t        t        dz  t              t        j                  dik(  sJ t        t        dz
  t        dz   z  t        dz
  z  j	                         t              t        d       dt        d      dt        d      dik(  sJ t        dt        z  dz   t              t        dd      dik(  sJ t        dt        z  dz   dz  t              t        dd      dik(  sJ t        dt        z  dz   dz  t              t        dd      dik(  sJ t        dt        z  dz   dz  t              t        dd      dik(  sJ t        t        dz  dz
  t              t        dt        j                  dt        j                   dt         dik(  sJ t        t        dz  dz
  dz  t              t        dt        j                  dt        j                   dt         dik(  sJ t        dt        z  dz
  dz  j	                         t              t        dd      dik(  sJ t        dt        z  dz   dz  j	                         t              t        d	d      dik(  sJ t        dt        z  dz
  dz  j	                         t              t        dd      dik(  sJ t        dt        z  dz   dz  j	                         t              t        d	d      dik(  sJ t        dt        z  dz
  dz  j	                         t              t        dd      dik(  sJ t        dt        z  dz   dz  j	                         t              t        d	d      dik(  sJ t        t        t        z  t        z
  dz  j	                         t              t        t        z  dik(  sJ t        t        t        z  t        z   dz  j	                         t              t         t        z  dik(  sJ t        t        dz  t         dz
  t        z  z   t        z   t              t        dt        j                  dik(  sJ t        t        dz  dt        dz  z  z
  dz   t              t        j                  dt        j                  dik(  sJ t        t        d
z  dt        dz  z  z
  dt        dz  z  z   t        dz  z
  t              t        j                  ddt        d      z
  dt        j                  ddt        d      z   dik(  sJ t        t        dz  dz
  t              t        d      dz  t        t        d      z  dz  z   dt        d      dz  t        t        d      z  dz  z
  dt        d       dz  t        t        d      z  dz  z   dt        d       dz  t        t        d      z  dz  z
  dt        j                  dt        j                   dt        dt         dik(  sJ dt        dz  z  dt        dz  z  z
  dt        dz  z  z
  dt        dz  z  z   dt        d
z  z  z   dt        dz  z  z
  dt        dz  z  z
  dt        dz  z  z
  } t        |       t        j                  dt        d       dt        d      dt        dd      dt        d	d      dt        dd      dt        dd      dik(  sJ t        t        t        z   t        z   t        z  t        t        z   t        z   t        z   z
  t              t        t        z   t        z   t        z   t        t        z   t        z   z  dik(  sJ t        t        dz  t        dz  z   t        z
  dz   t        d      i k(  sJ t        t        dz
  t        dz   z  t        dz
  z  j	                         t        d      t        d       dt        d      dt        d      dik(  sJ t        t        dz
  t        dz   z  t        dz
  z  t        dz
  z  j	                         t        d      t        d       dt        d      dt        d      dt        d      dik(  sJ t        t        dz  dt        dz  z  z   dt        z  z   dz   t              t        d       ddt        z  ddt        z  dik(  sJ t        t        dz  dt        dz  z  z   dt        z  z   dz   t        d      dt        z  ddt        z  dt        d       dik(  sJ t        t        dz  t        z
  t        dz  dt        dz  z  z   dt        z  z   dz   z  t              t        j                  dt        j                  dt        d       ddt        z  ddt        z  dik(  sJ t        j                  t        dd      }}dt        d      z  dz   |z  }d|z  dz  }|dz  }t        d      t        z  dz  }||z
  }| |z
  }t        t        dz  t        dz  z   t        z
  dz   t        d      | |z
  |z
  d| |z  ||z  z
  |z
  d| |z  ||z  z
  |z
  dik(  sJ t        dz  dt        z  z   dz   j                  t        dt        dz  z  dt        z  z         j                  t        dt        z  dz
        } dD 	cg c]
  }	t        |	  c}	\  }
}t        d      }t        | t              |
|t        ddt        z  |z  z
        z  z   d|
|t        ddt        z  |z  z
        z  z
  d|
|t        ddt        z  |z  z         z  z   d|
|t        ddt        z  |z  z         z  z
  dik(  sJ t        dz  t        dz  z   t        dz  z   t        z   dz   } dD 	cg c]
  }	t        |	  c}	\  }}}t        | t              | |d|z  z  z   t        ||d|z  z  z   |z  z  z   d| |d|z  z  z   t        ||d|z  z  z   |z  z  z
  d| |d|z  z  z
  t        ||d|z  z  z
  |z  z  z   d| |d|z  z  z
  t        ||d|z  z  z
  |z  z  z
  dik(  sJ t         dz  dt"        z
  t         dz  z  z   ddt"        z  z   dt        dz  z  z
  t         z  z   t"        z
  dt        dz  z  z   } t        | t               t        j                  dt        j                  t        j                  t"        z  z   t        j                  t        ddt"        z  z
  t"        dz  z   dt        dz  z  z         z  z   dt        j                  t        j                  t"        z  z   t        j                  t        ddt"        z  z
  t"        dz  z   dt        dz  z  z         z  z
  dik(  sJ t        t        t        z  t        z  t        dz  z  dt        dz  z  z   dt        z  z   dz   t        d      i k(  sJ t        t        t        z  t        z  t        dz  z  dt        dz  z  z   dt        z  z   dz   t        d      i k7  sJ t        t        dz  dz
  t        d      t        j                  dt        j                   dik(  sJ t        t        dz  dz
  t        d       t        dt         dik(  sJ t        t        dz
  t        dz   z  t              t        j                  dt        j                   dik(  sJ t        t        dz
  t        dz   z  t        d! "      t        j                  dik(  sJ t        t        dz  dz
  t        dd#      t        j                   t        j                  gk(  sJ t        t        dz  dz
  t        d d#      t        t         gk(  sJ t%        d$d%      \  }}t        dz  ||z
  dz  z  dt        z  ||z
  z  z   dz   }t        |t        d&      d||z
  z  dik(  sJ t        t        dz  t        d'      t        j                  t        j                  t        j                  gk(  sJ t        d(t        d'      g k(  sJ t        d
z  t        dz  z
  t        dz  z   t        dz  z
  t        dz  z   t        z
  dz   } t        |       t         t'        t(        dz        z  t+        t(        dz        z   dt         t'        t(        t        dd      z        z  t+        t(        t        dd      z        z
  dt         t'        t(        t        dd      z        z  t+        t(        t        dd      z        z   dt        t'        t(        dz        z  t+        t(        dz        z   dt        t'        t(        t        dd      z        z  t+        t(        t        dd      z        z
  dt        t'        t(        t        dd      z        z  t+        t(        t        dd      z        z   dik(  sJ t        dz  dz   | dz  z  j	                         }t        |      t         t'        t(        dz        z  t+        t(        dz        z   dt         t'        t(        t        dd      z        z  t+        t(        t        dd      z        z
  dt         t'        t(        t        dd      z        z  t+        t(        t        dd      z        z   dt        t'        t(        dz        z  t+        t(        dz        z   dt        t'        t(        t        dd      z        z  t+        t(        t        dd      z        z
  dt        t'        t(        t        dd      z        z  t+        t(        t        dd      z        z   dt         dt        dik(  sJ t        t        dz  d)t        z  z   dz         }	|	D cg c]  }|j,                  s| c}d*   }d+d
t        d,      z  z   }|dt/        |d      z  dz  d-t/        |d      z  z   k(  sJ t1        ddt        d      z  z   t        dz  z  d.dt        d      z  z
  t        dz  z  z   t        d       dz
  t        z  z   dz   t        d/0      }t        |      dt        d      z   dddt        d      z  z   dt        d       dz   dik(  sJ t1        d1t        dz  z  d2t        d      z  t        dz  z  z   d3t        dz  z  z
  d+t        d      z  t        dz  z  z
  d4t        dz  z  z   d5t        d      z  t        dz  z  z   d6t        dz  z  z
  d7t        d      z  t        dz  z  z
  d8t        d      z  t        z  z
  d8t        z  z
  d9z   t        d/0      }t        |      t        d       dz   dddt        d      z  z   ddt        d      z   dd:dt        d      z  z   dd	dt        d      z  z   dik(  sJ t1        t        dz  dt        dz  z  z
  d
t        d      z  t        dz  z  z   dt        d      z  t        z  z
  d;t        z  z   d<z
  d<t        d      z  z   t        d/0      }t        |      dt        d      z  dz   ddt        d      z  dz   ddt        d      z  dz
  dik(  sJ t        t1        t        t        d      z   dz  dz
  t        d/0            t        d       t/        dd      t        j                   t        d      t        z  dz  z
  z  z   dt        d       t/        dd      t        j                   t        d      t        z  dz  z   z  z   dt        d       t/        dd      z   dik(  sJ y c c}	w c c}	w c c}w )=Nr0   r   r8   rH   rK   rC   r_   rr   rI   rJ   rq   i i  i  i  i     rd   i  r   r   F)cubicsrN   T!      ))r   r   )r0   r   ))r0   rK   )r0   rq   )r_   rq   Zfilterr   c                     | j                   S r   )is_positive)rX   s    r5   <lambda>z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
DH*r/D	 B	
2aB	AB	a1B	dB
tBA1q1$a5	b4	BBq	BBq:    
A!aa1a4!A#.33AqsQw?A %' l 'MFE 
aBA;tA!BJ'''tA!BJ'''tA!BJ'''tA!BJ'''	    	
1q!tadQ"A/GI!1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.2::.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\2A\M7A\$N	A\$c            
      l   t        d      \  } }}}}|dz  |z  | |z  z   ||z  |z  z   | z
  }|dz  | |||z
  z  | z  z   z  || z  |z  |z  ||z  |z
  z  z   | |z  ||z  z
  z   }t        t        ||      j                               ddgk(  sJ t        t        ||      j                               ddgk(  sJ t        d      \  }}}	}
}}}||z
  ||z
  z  |	|z
  z  |
|z  |z  z   |z   |
z
  |z
  }||z
  |z  |z  |||z
  z  |z  z   |
|
z  |	|z
  z  z   }t        t        ||z
  |      j                               g dk(  sJ |dz  d|dz  z  z   dz   }t        t        |      j	                               }t        d |D cg c]$  }|j                  ||      j                  d	
      & c}D              rJ yc c}w )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   rq   c              3       K   | ]  }|  y wr   rE   r2   s     r5   r6   z"test_roots_slow.<locals>.<genexpr>T  s     G1Gs   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_slowr.  @  s   K(MAq!Q	
Aa1Q3!A#a%	!	#B	
Aq1a!e9Q;	!A#a%'1Q37"3	3qsQqSy	ABb!##%&1a&000b!##%&1a&000")*?"@RRRQ
q&26	BF	#beBh	.	3b	82	=B
q&"R"b1f+b.	(2b5"q&>	9Bb2gq!((*+y888	1qAvAU1X]]_AGAFbqvva}D9FGGGGGFs   9)F1
c                     t        t        dz  t        z   dz   t        d      } t        t        dz  t        z   dz   t        d      }t        | |      D ]  \  }}t        ||z
        dk  rJ  t        dz  dt	        d	      z  t        d
z  z  z   ddt	        d      z  z   t        dz  z  z
  ddt	        d      z  dz   z  z   }t        |d      } d}t        | |      D ]  \  }}t        ||z
        dk  rJ  y )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_inexactr5  W  s   	q!tax!|Q	.B	q!tax#~q4	0Bb"+ $B27|e###$ 	
1s49}QT!!TDcN%:AqD$@@
49s"
#	$A 
q4	 B
.B b"+ $B27|e###$rA   c                     t        d      \  } }}}d| dz  z  |dz  z  |dz  z  d|z  t        z  | dz  z  |dz  z  |dz  z  z   d| d	z  z  |d
z  z  |d	z  z  t        d
z  z  |dz  z  z
  d| dz  z  |dz  z  |dz  z  t        dz  z  |dz  z  z   d| dz  z  |dz  z  |dz  z  t        dz  z  |dz  z  z
  d| dz  z  |dz  z  |dz  z  t        dz  z  |d	z  z  z   d| d
z  z  |d	z  z  |d
z  z  t        d	z  z  d|dz  z  z  z   d| z  |z  |dz  z  t        dz  z  d|d
z  z  z  z
  d|dz  z  t        dz  z  dz  z   }t        |t              i k(  sJ t        |j                         t        d      }g d}t	        d      }|| z  |z  ||d
z  z  z  }t        |      t        |      k(  sJ t        ||      D ].  \  }	}
|	j                  |      }|t        ||   |
z
        dk  r.J  y )Nr   r   rq   r   r   rd   r   r   rJ   r8   r   r   r_   rH   rr   r   rK   r   r   r   r   r   r   Tr   )g?|YcgOXLzGX@g'I^g@g|۰n@gdZw@g5`e@gS$Ȫ@gJm@rY   r0  )	r	   rD   r%   evalfr   r=   r   matchr1  )r   r   r   r   rW   r2  r3  rY   ri   r   r4  r8  s               r5   test_roots_preprocessedr9  i  sv   #JAq!Q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qAvAr7c"gb"+ @B SqB%7%%???@rA   c                  D   t        t        dz  dt        z  z
  dz   d      ddik(  sJ t        t        dz  dt        z  z
  dz   d      ddik(  sJ t        t        dz  dt        dz  z  z
  t        dz  z
  dt        z  z   dz
  d      ddik(  sJ t        t        d	        y )
Nr8   r0   FstrictTrJ   r_   rH   c                  r    t        t        dz  dt        dz  z  z
  t        dz  z
  dt        z  z   dz
  d      S )NrJ   r8   r_   rH   Tr;  )r%   rD   rE   rA   r5   r   z#test_roots_strict.<locals>.<lambda>  s5    %1qAv10Dqs0JQ0NW[*\ rA   )r%   rD   r*   r(   rE   rA   r5   test_roots_strictr>    s    A!a.1a&888A!a-!Q777A!Q$A%!+a/>1a&HHH
 "\]rA   c                     ddt         z  z
  dt         dz  z  z
  dt         dz  z  z   dt         dz  z  z
  } t        | d	
      \  }}t        |       }t        | d	      }|D cg c]  \  \  }}}t	        ||       }}}}|D cg c]E  \  \  }}}t	        t        |      t        |            t	        t        |      t        |            z  G }}}}||z   }|D 	cg c]  }	|	j                          }}	t        |d       }t        |d       }||fD ]C  }
t        ||
      D ]2  \  }}	|	j                  r|	|v rJ t        |	      t        |	      f|v r2J  E y c c}}}w c c}}}w c c}	w )Nipi  i  r8   i
  rH   1   rK   T)rm   r   c                 "    | j                         S r   sort_keyrD   s    r5   r   z"test_roots_mixed.<locals>.<lambda>      AJJL rA   r   c                 "    | j                         S r   rB  rD  s    r5   r   z"test_roots_mixed.<locals>.<lambda>  rE  rA   )rD   r   r   r%   r   r   r   r7  r:   r   r1   )rW   _re_im_nroots_srootsrP   rT   _
_intervalsrX   _rootsr4   s               r5   test_roots_mixedrN    sv   Qad"T!Q$Y.AqD8A%HCQiGA%G,/
1
1yv1qHQN
1C
1  ?fq! RUBqE"8BqE2a5#99 C  sJ#*,a	,G,W"89GW"89GG$ +
F+ 	+DAqyyAvv1r!u~***		++ 2 -s   "EA
E#E*c            
      `   t        t        dt                    t        dt              gk(  sJ t        t        t        t                    t        t        t              gk(  sJ t        t        dz  dz
  t              t        dz   t        dz
  gk(  sJ t        t        dz  t        z
  t              t        t	        t              z
  t        t	        t              z   gk(  sJ t        t        dz  dz
  dz        t        dz   t        dz   t        dz
  t        dz
  t        t
        z
  t        t
        z
  t        t
        z   t        t
        z   gk(  sJ t        t        t        dz  dz
  t              d      t        t        dz   t              t        t        dz
  t              t        t        dz  dz   t              gk(  sJ t        dt        dz  z  dt        dz  z  z   dt        dz  z  z   t        dz  z   t        d	      t        t        t        dz  dt        dz  z  z   dt        dz  z  z   dz   gk(  sJ y )
Nr0   r8   rK   r   r   rq   r   rJ   Q)r   r   rD   rU   r   r   rE   rA   r5   test_root_factorsrQ    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                      d} t        | t        d      t        t        j                  j
                  fd       j                  d      }|D cg c]  }t        |       c}g dk(  sJ y c c}w )Nr   Tr   c                  *     j                  dd      S )NrH   r_   )rV   maxsteps)r   )ri   s   r5   r   ztest_nroots1.<locals>.<lambda>  s    AHHq1H,E rA   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_nroots1rZ    si    
Aa$'A
699""$EFHHqHME ""qCF"	K
K 
K 
K"s   A0c                  (   t        t        dz  dt        z  z   dz   t              } | j                  d      }|D cg c]  }t        |       c}g dk(  sJ | j                  d      }|D cg c]  }t        |       c}g dk(  sJ y c c}w c c}w )Nr_   rH   r0   rU  )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   rY  )ri   r%   rX   s      r5   test_nroots2r\    s    QTAaCZ!^QAHHqHME ""qCF"44 4 4 HHqHME!"qCF":: : : #
 #s   B
-Bc                      t        t        t        t        dz  t        dz  t	        t
              z  z   t        z   t
        z   t        d                  dk(  sJ y )NrH   r8   T)	composite)r=   r%   r   rU   r   rD   rE   rA   r5   test_roots_compositer_    sB    uT!Q$Ad1g-1A5qDIJKqPPPrA   c                  v     t        t              dz  t        t              z
  dz    t        t         fd       y )NrH   r0   c                      t               S r   rv   r`   s   r5   r   z"test_issue_19113.<locals>.<lambda>  s    E"I rA   )r   rD   r*   r'   r`   s   @r5   test_issue_19113rb    s)    	QSV	a	B
?-.rA   c                  l    t        ddddt        z  z
  dz  z  dz  dt        z  z   dgd	
      ddgk(  sJ y )Nr0   rI   r   rK   r8   rq   r   r   Tr   )r%   r   rE   rA   r5   test_issue_17454rd    sA    !RacA%a'"Q$.2TBq!fLLLrA   c                      t        t        dz   t              j                         dgk(  sJ t        t        dz  dz   t              j                         dt        d      dz  z   gk(  sJ y )Nl          l       rH   rK   r8   )r   rD   
real_rootsr   rE   rA   r5   test_issue_20913rg    s`    --q1<<>C]B^^^^1q!'')q1Q46{l^;;;rA   c            
      8   t        dd      } dt        z  | z  t        dz   d| z  z  z  }t        t        t        t        dz  z  t        dz   dz  z   t                    |d| dt        d      t        z  z   z  dz  d|dt        d      t        z  z   z  dz  dik(  sJ y )Nr0   rH   rC   r_   r8   )r   rP   r%   r   rD   r   r   )rQ   rX   s     r5   test_issue_22768ri    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,   rV  	itertoolsr-   rP   rT   rR   rS   rQ   r   r   rD   rU   rj   r@   rF   r]   rb   ro   rt   rw   rz   r   r   r   r   r   r   r   r   r   r   r   r  r.  r5  r9  r>  rN  rQ  rZ  r\  r_  rb  rd  rg  ri  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   