
    gh              
       X   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 ZjdS )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                 R   t          d | D                       }t          | d |                   t          | d |                   k    sJ t          |t	          |           d          D ]<}| |dz            | |         k    s%| |dz            t          | |                   k    s dS =dS )Nc              3   ,   K   | ]}|j         rd ndV  dS )   r   Nis_real.0is     \/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/tests/test_polyroots.py	<genexpr>z_check.<locals>.<genexpr>(   s-      55!QY%A555555       r1   FT)sumsortedlistrangelenr
   )r&   nrealixs      r7   _checkrB   $   s     55u55555E%-  Dvv$7$77777E3u::q))  b1fr**b1f59!5!555554r9   c                      t          t          dt          z  dz   t                              t          dd          gk    sJ d S )Nr:   r1   )r   r   xr    r9   r7   test_roots_linearrG   2   s>    QqS1Wa(())hr1oo->>>>>>>r9   c            	         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                                                               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             } d |                     d          D             d |                     d          D             k    sJ t          ddd          D ]R\  }}}t          |t          dz  z  |t          z  z   |z             } t          |           }|t          |          k    sJ Sd S )Nr:   r            rD   r1   i   i  c                 8    g | ]}|                     d           S r:   nr5   ws     r7   
<listcomp>z(test_roots_quadratic.<locals>.<listcomp>P   s"    777qACCFF777r9   T)radicalsc                 8    g | ]}|                     d           S rO   rP   rR   s     r7   rT   z(test_roots_quadratic.<locals>.<listcomp>Q   s"    888qACCFF888r9   F)r:   )r   rD   )r   r   rE   r   r   r   rB   	all_rootsaecdbyr*   r.   )fr_a_b_cr&   s         r7   test_roots_quadraticrd   6   s   4!Q$??++1v55554!Q$1a0011hr1ooq5IIIII4!Q$
A..//QBtAwwJqL!DGG)A+3NNNNN4!Q$1q 0!4455"qay{:JBQRSWXYSZSZQZ[\Q\L\9]]]]]
4!Q$1q !$$..0011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FAN	N
QUQU	d1Q319qs?QqS#81Q3q5A:#EFFAN	N	PP P P P
 	Qq!tVac\AaC##A1
qAvz

	1	qs	"D1a4!$4$4Q$61$<=> > > >QTadUQYM!AqD(1,a00A1	
1a4!8    	T!WWQT\Aq!!AAq		>>>> 	SAXA#$$A77AKKK6677788AKKK778889 9 9 9gw88 & &
BAqD2a4"$%%""u%%%%%& &r9   c                  8   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 d S )NrL   r:      r1   )r   rE   r   r&   r   eqs    r7   test_issue_7724ri   X   s    	ad1fq!tma	#	#B99QqS47719Q;d1ggXaZ\AaC  !	acDGGAIaK	 	  !	tAwwhqjlQqS 	!	!!1	& & & & & & &r9   c                     t          dt          ddgt                                                    t	          t          t                    t                    } t          dd          t          dz  dz  z
  fd| D             }t          |          t          t	          t                              t                    t                                        k    sJ t          fd|D                       sJ d S )Nr1   rW   rJ   r:      c                 F    g | ]}|                     t                    S rF   )subsr^   )r5   r`   zs     r7   rT   z#test_issue_8438.<locals>.<listcomp>e   s%    (((QAFF1aLL(((r9   c              3      K   | ]@}                     t          t          |i                              d d          dk    V  AdS )r:   Tchopr   N)rm   r^   rE   rQ   )r5   r6   prn   s     r7   r8   z"test_issue_8438.<locals>.<genexpr>i   sO      GGQqvvq!Ql##%%ad%33q8GGGGGGr9   )
r   r^   rE   as_exprr    r   r   setrm   all)r&   postrr   rn   s     @@r7   test_issue_8438rw   a   s    aB^Q''))AQ

A&&EQ!A#a%A((((%(((Dt99D1q))**++, , , , GGGGG$GGGGGGGGGGr9   c                     t          dt          dz  z  dz
  t                    t          t          dz  dz             z                                  } t          |           sJ t          t          dz  dt          dz  z  z   dz   t                    fdt	          d          D             }t          t          dz  dt          dz  z  z   dz   t                                                    } | |k    sJ t          |           sJ t          dt          dz  z  dz
                                            } t          |           sJ t          t          dt          dz  z  dz
                                                      dk    sJ d S )	NrL      r1   r:   rf   rK   c                 0    g | ]}t          |          S rF   r   )r5   r6   r_   s     r7   rT   z#test_issue_8285.<locals>.<listcomp>p   s!    	)	)	)1&A,,	)	)	)r9   
   )r   rE   rX   rB   r>   r?   )r&   ror_   s     @r7   test_issue_8285r~   l   sY   !AqD&1*a  adQh/::<<E%==QTAadF]Q""A	)	)	)	)a	)	)	)BA!Q$"A&&0022EB;;;;%== 1a4!&&((E%==tAaeGaK  **,,--333333r9   c                     t          t          dz  dz             t          t          dz  dz             z                                  } t          |           sJ t          t          dz  dt          dz  z  z   dz   t                                                    } t          |           sJ t          t          dz  t          z
  dz                                             } t          |           sJ t          t          dz  dt          dz  z  z   dz   t                                                    } t          |           sJ d S )Nr:   rL   rK   rI   r1   )r   rE   rX   rB   r&   s    r7   test_issue_8289r   {   s   !Q$(^^DANN*5577E%==A!Q$"A&&0022E%==AA((**E%==A!Q$"A&&0022E%==r9   c            	         t          t          dz
  dz  dz   t          dz
  dz  dz   z  t          dz
  z                                            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   fdt          d          D             } t                                                    | k    sJ t          |            d S )Nr1   r:   rL   r|   c                 0    g | ]}t          |          S rF   r{   )r5   r6   rr   s     r7   rT   z$test_issue_14291.<locals>.<listcomp>   s!    
*
*
*A6!Q<<
*
*
*r9   )r   rE   rX   r   r   r>   rB   )ansrr   s    @r7   test_issue_14291r      s    !a%!a1q51*q.11q59 
 

)++!QUAE1tAwwqy=!d1ggai-HI I I I	1r!Q$wA
*
*
*
*q
*
*
*C77#%%%%
3KKKKKr9   c                      t          t          dz  t          t                    t          z  z   t          z   t          d          } t	          |           }t          |          dk    sJ d S )NrI   EXdomain)r   r^   r   rE   r&   r?   )rh   roots_ds     r7   test_issue_13340r      sU    	adSVVAXo!1T	2	2	2BBiiGw<<1r9   c                  F   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 d S )NrL   rI          r:   ii  ii  i
  i  c              3   6   K   | ]} |          d k    V  dS r   NrF   r5   r`   rh   s     r7   r8   z#test_issue_14522.<locals>.<genexpr>   s/      ,,arr!uuz,,,,,,r9   )r   rE   r   r&   ru   )roots_eqrh   s    @r7   test_issue_14522r      s    	adQT219%%1dSUl(;;aQ>OORVVY]^_Y__ab	c	cBRyyH,,,,8,,,,,,,,,,r9   c                      t          t          t          dz  dt          dz  z  z
  t          t          z  z   dz
  t                              } | d                             t                    sJ d S )NrL   rK   r:   rI   r   )r!   r   trE   has)sols    r7   test_issue_15076r      sW    
QTAadF]QqS014a88
9
9Cq6::a==r9   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 d S )NrL   ry   r:   rI   @   i   r   )r   rE   r   r&   )rh   r   s     r7   test_issue_16589r      su    	adQtAwwYq!t^#a1f,r$q''z!Q$>aG	K	KBRyyH======r9   c                     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    r&t          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n J d S )Nr:   rI   )r   r   r   r1   r1   r1   r1   rD   r   T)trigmultiple)r      ry      rW   rK   )r    r   rE   r   r^   r   Halfr   r   r   r&   r   r   r   r   )r`   rh   s     r7   test_roots_cubicr      s`   tAadFA''9994444tAqD1QT6MAaC/!3Q7788IIIEEEE 	Q

AtAqD1Ha(())a	AF7T!WWQYq[ !	AF7T!WWQYq[ !.# # # # # tAqD2Iq))**	QVaQik!16Ad1ggIaK#789 9 9 9tAadFQq!tVOac1A5q99::1=	
!Xa^^#A%	%8Aq>>(9!(;	;< < < <
Q$1a4!A#		!B$...tB{{...
 
 
 
A488CQtBxxZ^(<(<Q(>$?$??AA
488CaRjn---a/"Q$67779HQNNJ
488CaRjn---a/"Q$67779HQNNJ3

 
 
 
 
 
 
 
r9   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  }nH|dk    rB|||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                       s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 ]bt          t                                        t                              }t          fdt%          ||          D                       sJ cd S ) NrL   r   r   r   r   rI   )rD   r   r   r   )r   rD   r   r   )r   r   rD   r   )r   r   r   rD   )r1   r   r   r   )r   r1   r   r   )r   r   r1   r   )r   r   r   r1   r:   key))r1   r:   rI   r   )rI   i	   r1   r:   rI   rL   r   )r   rJ   rI   )rJ   rf   r   )rK   irJ   ry      r   c              3   ~   K   | ]7}                     t          |                              d           dk    V  8dS )Trp   r   Nrm   rE   rQ   )r5   airh   s     r7   r8   z%test_roots_quartic.<locals>.<genexpr>   sE      BB2771b>>###..!3BBBBBBr9   r1   c              3   j   K   | ]-}t                              t          |          d           V  .dS r   r-   rm   rE   )r5   r6   rh   s     r7   r8   z%test_roots_quartic.<locals>.<genexpr>   s:      AA!"''!Q--33AAAAAAr9   rn   T)negative   rf   c              3   t   K   | ]2}t                              t          |fd ff          d          V  3dS )rD   r   Nr   )r5   r6   rh   rn   s     r7   r8   z%test_roots_quartic.<locals>.<genexpr>   sG      OOQ!"''Aq6Ar7*;"<"<a@@OOOOOOr9   c              3   F   K   | ]}t          |          t          k    V  d S N)typer   r4   s     r7   r8   z%test_roots_quartic.<locals>.<genexpr>   s-      11tAww)#111111r9   rD   )r^   rn   rW   c              3   j   K   | ]-\  }}t          |                              |z
  d           V  .dS r   )r-   rm   )r5   rS   sreps      r7   r8   z%test_roots_quartic.<locals>.<genexpr>   s@      TTda%affSkkAoq99TTTTTTr9   )r!   r   rE   r   r   r   r   ZeroOner<   hash	enumerater   ru   qr	   r^   rm   zip)lhsrhsr6   rY   r]   r[   r\   r   r   zansrepsrh   r   rn   s              @@@r7   test_roots_quarticr      s   adA''<<<7777adQTk1--..	3     adQTk1--..	3     QTAXq))
*
*C6Ad1ggIaK!DGG)A+!5qvv
FC#4   F3D$9$9$99999 % &8 &8 &8 9 9 C C<Aq!Q 66AqD1I!A$$&'AA!VV1ad8As+++a"g561Q44?@ATAadF]Qq!tV#ac)A-DQKK((BBBBcBBBBBBBBB 
acAaCi!Q$A%!Q$.!Q?	C	CB


CAAAASAAAAAAAAd###A	
A!Q$1a4	!QV*	,q	0Bb!%%DOOOOO$OOOOOOOO 
a1fq!tma!#Q	'	'B


C11S11111111r1ooHROO44r1ooHROO44r1ooB'')D  U UDq1122TTTTc#smmTTTTTTTTTU Ur9   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 d S )Nc              3   @   K   | ]}t          |t                    V  d S r   )
isinstancer   r4   s     r7   r8   z#test_issue_21287.<locals>.<genexpr>   sD       B B:a++ B B B B B Br9   rL   r:   rI   rf   rD   r1   )anyr!   r   rE   r   rF   r9   r7   test_issue_21287r      s     B B]QTAqD!ac'N"QqS"q&\1A5!;Q??6A 6A B B B B B B B B B Br9   c                  v   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 ]Pt          t                              }t          |          dk    sJ t	          fd
|D                       sJ Qd S )Nrf   r:   r1      n   rI   7   i	  i  c              3      K   | ]J}                     t          |                    d                                         d          dk    V  KdS )r|   gh㈵>rp   r   Nr   r   s     r7   r8   z%test_roots_quintic.<locals>.<genexpr>  sQ      JJq2771acc"gg&&(((55:JJJJJJr9   )rE   r"   r   r?   ru   )eqsr&   rh   s     @r7   test_roots_quinticr      s    a4!8qS1WqL1acAg;&+qD3q!t8ObAg%Q.46C  K Kd2hh''5zzQJJJJEJJJJJJJJJK Kr9   c                  N   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 d S )Nr1   Tpolysr:   rD   rI   rL   rK   rk   ry   r   )factorrf   )r#   r   rE   r   r   r   r   r   r   r   r   r   rF   r9   r7   test_roots_cyclotomicr     s*   OAq===>>1#EEEEOAq===>>2$FFFFO	1D    'A4771<hr1ooPQRVWXRYRYPYZ[P[>[\] ] ] ]OAq===>>A2q'IIIIO	1D     v$q''	!3QVaQik5IJK K K K OAq===>>	RT
Qs2a4yy[ 	RT
Qs2a4yy[ 	RA		!C8Aq>>(9$:$:"::	RA		!C8Aq>>(9$:$:"::Bx1~~3r(1a..'8#9#9!99Bx1~~3r(1a..'8#9#9!99C     OAq===>>	a
QtAwwYq[ 	a
QtAwwYq[ Q	Ad1ggIaKQ	Ad1ggIaK	C     OB>>>??	a
QqS	a
QqSQ	AaCQ	AaC	D     1D)))$8 8 8<=3? ? ? ?1D)))$8 8 8<>4@ @ @ @ OAq===dKKK
r1++rDQKK'() ) ) )OAq===dKKK
Q   OAq===dKKK
r1++RQRQT"a[[!^8KdSUWXkk8Y\`acef\g\gij\j8jkl l l l OAq===dKKK	
T"a[[$r1++&' ' ' ' ' 'r9   c            
         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 ]X\  }}}}||k    r|dk    rt          |t          |z  z  ||z  z             }	t          |	          }
|
t          |
          k    sJ Yt          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 d S )Nrf   r   rL   r   r:   rW   r|   rI   ry   a1T)nonnegativeb1r1   )r1   r:   )rD   r1   )r:   rI   rL   rf   r   rD   )r$   r   rE   r   r   rB   r   r   r   r.   r*   r&   r^   r   )Ar   r   r0r1rY   r]   r   rQ   rr   r   s              r7   test_roots_binomialr   7  s   $qsA,,''A3....$qAvq//**lll::::$qsQw**++Q/@@@@@
HQNN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D " "
1a66a1ff1a4!A#QfSkk!!!!! a1fr!Q$w&**++	!Xb!__tAwwqy{*+Q	!Q	!Xb!__tAwwqy{*+Q00 0 0 0 0 0 0r9   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 d S )"Nr:   r1   rI   E,F,J,L [r|)s2^ ry   r       83ll8rk         ]$=,y rK   r      /@:rf   r|      D!^ rL   q 
    P   y   q    id i B i߰l   ul   /1g&l   g l   FW&k r   )
rY   r^   rE   r]   r%   r   r[   r	   r   r   )r_   coeffpolyEFJLgs           r7   test_roots_preprocessingr   X  sp   	!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 U 	adUQT#a&&[ !Bq#a&&yM:::AadUSVV^Qr#a&&z222AA1a&((((((r9   c                  |5   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                                  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                                  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          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          t          z  t          z
  dz                                  t                    t          t          z  dik    sJ t          t          t          z  t          z   dz                                  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                                  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                                  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                       t          dt          dz  z  dt          z  z                                 t          dt          z  dz
            } d dD             \  }	}
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D             \  }}}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 k    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                                  }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, |D             d-         }d.d
t          d/          z  z   }|dt-          |d          z  dz  d0t-          |d          z  z   k    sJ t/          ddt          d          z  z   t          dz  z  d1dt          d          z  z
  t          dz  z  z   t          d           dz
  t          z  z   dz   t          d23          }t          |          dt          d          z   dddt          d          z  z   dt          d           dz   dik    sJ t/          d4t          dz  z  d5t          d          z  t          dz  z  z   d6t          dz  z  z
  d.t          d          z  t          dz  z  z
  d7t          dz  z  z   d8t          d          z  t          dz  z  z   d9t          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   t          d23          }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 t/          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          d23          }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          t/          t          t          d          z   dz  dz
  t          d23                    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 d S )@Nr1   r   r:   rI   rL   rD   rf   r|   rJ   rK   ry   i i  i  i  i     rk   i  r   r   F)cubicsrW   T!      c                      g | ]}t          | S rF   r   r5   r`   s     r7   rT   ztest_roots0.<locals>.<listcomp>  s,     ' ' ' l ' ' 'r9   ))r   r   )r1   r   c                      g | ]}t          | S rF   r   r   s     r7   rT   ztest_roots0.<locals>.<listcomp>  s    III!1IIIr9   ))r1   rL   )r1   ry   )rf   ry   Zfilterr   c                     | j         S r   )is_positive)r`   s    r7   <lambda>ztest_roots0.<locals>.<lambda>  s     r9   )	predicate)r  r   za, b)realRr   i  (   c                      g | ]}|j         	|S rF   r2   )r5   rxs     r7   rT   ztest_roots0.<locals>.<listcomp>*  s    ...2:....r9   r   l   i2  r   r   r   r   )            }   -            r      r   )r&   rE   r   r   expandr   r   r   rY   r]   NegativeOner   r[   r\   r   rm   rn   r^   r	   r   r   r   r   r   )r_   r1_2r1_3x0x1x2x3x4x5r13_20r1_20s2r1_4r1_8r5_8arbrrr   r   r`   	real_rootcrrh   s                          r7   test_roots0r-    si   A;;"A;;161+%%%%Aq>>afa[((((1q51q5/1q5)1133Q77QqTTE1addAqQRttUV;WWWWW1q!"a! 44444!A#'Aq!!hr1ooq%99999!A#'Aq!!hr1ooq%99999!A#'B""xA&;;;;;A1!Qq15&!aR!CCCCC!Q$(Q""q!QUAvq1"a&HHHHH1Q37Q,&&((!,,1a!0DDDDD1Q37Q,&&((!,,"a!0DDDDD1Q37Q,&&((!,,1a!0DDDDD1Q37Q,&&((!,,"a!0DDDDD1Q37Q,&&((!,,1a!0DDDDD1Q37Q,&&((!,,"a!0DDDDD1Q37Q,&&((!,,!A#q	99991Q37Q,&&((!,,!Aq	9999A!a
"Q&**q!QUA.>>>>>A!Q$"A&&15!Q]A*FFFFFA!Q$1a4'!Q$.22	
2Q<AFArDGG|Q?@ @ @ @ A1Q	Ad1ggIaKQ	Ad1ggIaK	a
QtAwwYq[ !	a
QtAwwYq[ !	q15&!QA2q"     	ad
T!Q$Yad*T!Q$Y6adBAqD	q!t8	 Ag	&A 88AaDD5!QqTT1hr1ooqQHROOQAK K K K K !a%!)Q!a%!)a-0!44!a%!)a-!a%RS)9TVW8XXXXXA1q1$a666"<<<<1q5	AA!E3 3 389!ua1q!A$$PQ6RS S S S1q51q5/1q5)1q5199;;QuMMM
A$$1Q44AaDD!QqTT1-. . . .A!Q$1$q(!,,!A$$2a4AaC0KKKKKA!Q$1$q(!D999	Aq!A#q1Q44%#$ $ $ $!Q$(QTAadF]QqS0145q::	
161qtteQ1a1a89 9 9 9 !Q$D
DHH*r/D	 B	
2aB	AB	a1B	dB
tBA1q1$a555	b4	BBq	BBq:     
A!aa1a4!A#..33AqsQw??A' '$' ' 'MFE 
aBA;;tA!BJ''''tA!BJ''''tA!BJ''''tA!BJ''''	     	
1q!tadQ"AII/GII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	AF4AaC!Q$1a4(?#@#@@@!	AF4AaC!Q$1a4(?#@#@@@!     1Qq!ta1f$qs*Q.%@@@BFFFF1Qq!ta1f$qs*Q.$???2EEEEA1S)))aeQ-BBBBBA1S)))aQB]::::!a%!a%!$$AE61(=====	
QQ&=&=? ? ?CD5!*M M M M A1S4888aeVQUOKKKKA1S4888QGCCCCV$'''FB	1beaZ!A#r"u+%)AAc"""q"r'{A&66666Aq4(((QVQVQV,DDDDDq4(((B....	1q!tadQT!AqD(1,q0A88	
3r!t99s2a4yy !	
3r(1a.. !!!C8Aq>>(9$:$::A	
3r(1a.. !!!C8Aq>>(9$:$::A	#bd))c"Q$ii	#b!Q
 
  3r(1a..'8#9#991	#b!Q
 
  3r(1a..'8#9#991     Q$(AqD  ""A88	
3r!t99s2a4yy !	
3r(1a.. !!!C8Aq>>(9$:$::A	
3r(1a.. !!!C8Aq>>(9$:$::A	#bd))c"Q$ii	#b!Q
 
  3r(1a..'8#9#991	#b!Q
 
  3r(1a..'8#9#991	
Aq!     	adRTkBA..a...q1I	qd|	B4A;;q(2d2qkk>99999	q1T!WW9}ad"b1T!WW9nad%::tAwwhlA=MMPQQST]a	b	b	bB99d1ggq"qay.!d1ggX\1MMMMM	bAg477
1a4'#ad(2Sa[A5EE1H477{1a4 "$QT'*,.tAwwJq!tO<>@ajlKqD	
 
 
B 99$q''Aq"qay.!R$q''\1aQiB477NA? ? ? ? ? 
adQq!tVmaQi1n,qay{:RTABFtAwwJ$
( 
( 
(B99DGGaBtAwwJNAr$q''zA~qQQQQQq477{Q&*Ad;;;<<
q''DAJJ$q''!)A+ 56	6
q''DAJJ$q''!)A+ 56	6
q''DAJJ		## # # # # #r9   c                     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          |                                                    ddgk    sJ t          t          |                                                    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
  |                                                    g dk    sJ dz  ddz  z  z   dz   t          t                                                              }t          d fd	|D             D                       rJ d
S )z6Just test that calculating these roots does not hang. z	a,b,c,d,xr:   r1   zzz,yy,xx,zy,zx,yx,kr   rI   ry   c              3      K   | ]}|V  d S r   rF   r4   s     r7   r8   z"test_roots_slow.<locals>.<genexpr>T  s"      GG1GGGGGGr9   c                 d    g | ],}                     |                              d           -S )Trp   )rm   rQ   )r5   rir_   rE   s     r7   rT   z#test_roots_slow.<locals>.<listcomp>T  s3    FFFbqvva}}D99FFFr9   N)r	   r=   r&   valueskeysr   )rY   r]   r[   r\   f1f2zzyyxxzyzxyxke1e2r	  r_   rE   s                   @@r7   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0b!##%%&&1a&0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!!((**++yyy8888	1qAvAU1XX]]__AGGFFFFFAFFFGGGGGGGGGGr9   c                  P   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     s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     sJ d S )Nr:   r1   Tr
  g      ?g-q=rL   g      @g       @rI   g     S@g      8@g      b@g      "@)g؋~)g)cg3!	@g
 @绽|=)r&   rE   r   absr   )R1R2r   r2r_   s        r7   test_roots_inexactrF  W  s5   	q!tax!|Q	.	.	.B	q!tax#~q4	0	0	0Bb"++ $ $B27||e#####	1s499}QT!!TDcN%:AqD$@@
499s"
#	$A 
q4	 	 	 B
.B b"++ $ $B27||e#####$ $r9   c                  6   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          |                                t          d          }g d}t	          d          }|| z  |z  ||d
z  z  z  }t          |          t          |          k    sJ t          ||          D ]:\  }	}
|	                    |          }|t          ||         |
z
            dk     sJ ;d S )Nr   r   ry   r   r   rk   r   r   rK   r:   r   r   rf   rI   r|   r   rL   r   r   r   r   r   r   Tr
  )g?|YcgOXLzGX@g'I^g@g|۰n@gdZw@g5`e@gS$Ȫ@gJm@rS   rA  )	r	   rE   r&   evalfr   r?   r   matchrB  )r   r   r   r   r_   rC  rD  rS   rr   r   rE  rI  s               r7   test_roots_preprocessedrJ  i  s   ##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;;"	qwwyy!d	+	+	+B
R 
R 
RB 	S		A	!AqAvAr77c"ggb"++ @ @B SqB%7%7%%?%?%?%?%?@ @r9   c                  ~   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	            d S )
Nr:   r1   FstrictTrK   rf   rI   c                      t          t          dz  dt          dz  z  z
  t          dz  z
  dt          z  z   dz
  d          S )NrK   r:   rf   rI   TrL  )r&   rE   rF   r9   r7   r  z#test_roots_strict.<locals>.<lambda>  s;    %1qAv10Dqs0JQ0NW[*\*\*\ r9   )r&   rE   r+   r)   rF   r9   r7   test_roots_strictrO    s    A!a...1a&8888A!a---!Q7777A!Q$A%!+a/>>>1a&HHHH
 "\"\]]]]]r9   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 |D             }d |D             }||z   }d |D             }t	          |d           }t	          |d           }||fD ]H}t          ||          D ]5\  }}|j        r||v sJ t          |          t          |          f|v sJ 6Id S )Nipi  i  r:   i
  rI   1   rL   T)ru   r
  c                 :    g | ]\  \  }}}t          ||          S rF   r   r5   rY   r]   _s       r7   rT   z$test_roots_mixed.<locals>.<listcomp>  s(    
1
1
1yv1qHQNN
1
1
1r9   c           	          g | ]]\  \  }}}t          t          |          t          |                    t          t          |          t          |                    z  ^S rF   )r   r   r   rS  s       r7   rT   z$test_roots_mixed.<locals>.<listcomp>  sd        ?fq! RUUBqEE""8BqEE2a55#9#99   r9   c                 6    g | ]}|                                 S rF   )rH  r   s     r7   rT   z$test_roots_mixed.<locals>.<listcomp>  s     ,,,a		,,,r9   c                 *    |                                  S r   sort_keyrE   s    r7   r  z"test_roots_mixed.<locals>.<lambda>      AJJLL r9   r   c                 *    |                                  S r   rX  rZ  s    r7   r  z"test_roots_mixed.<locals>.<lambda>  r[  r9   )	rE   r   r   r&   r<   r   r3   r   r   )	r_   _re_im_nroots_sroots
_intervals_rootsr6   r`   s	            r7   test_roots_mixedrc    sa   Qad"T!Q$Y.AqD8A%%%HCQiiGA%%%G
1
1C
1
1
1C   C sJ,,7,,,GW"8"8999GW"8"8999GG$ + +
F++ 	+ 	+DAqy +Avvvvv1r!uu~*****		++ +r9   c            
      X   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 d S )
Nr1   r:   rL   r  r  ry   r   rK   Q)r   r   rE   r^   r   r   rF   r9   r7   test_root_factorsrf    s   Q

##Q

|3333Q

##Q

|33331q!$$QA66661q!$$T!WWa$q''k(BBBBBAA&&	
QAq1ua!eQUAE1q5!a%@A A A A QTAXq))#666	a!eQa!eQadQh):):;< < < <!Q$AqD(1QT61AqD8!CHHH	
Aq!ta1f}r!Q$w&*+, , , , , ,r9   c                      d} t          | t          d          t          t          j        j        fd                               d          }d |D             g dk    sJ d S )	Nr   Tr   c                  2                          dd          S )NrI   rf   )rQ   maxsteps)r   )rr   s   r7   r  ztest_nroots1.<locals>.<lambda>  s    AHHq1H,E,E r9   rI   rP   c                 ,    g | ]}t          |          S rF   strr   s     r7   rT   z test_nroots1.<locals>.<listcomp>      """qCFF"""r9   )@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'   rE   r+   mpmathmpNoConvergencer   )rQ   r&   rr   s     @r7   test_nroots1rq    s    
Aa$'''A
69"$E$E$E$EFFFHHqHMME #"E"""	K 	K 	K
K 
K 
K 
K 
K 
Kr9   c                     t          t          dz  dt          z  z   dz   t                    } |                     d          }d |D             g dk    sJ |                     d          }d |D             g dk    sJ d S )	Nrf   rI   r1   rP   c                 ,    g | ]}t          |          S rF   rk  r   s     r7   rT   z test_nroots2.<locals>.<listcomp>  rm  r9   )z-0.332z-0.839 - 0.944*Iz-0.839 + 0.944*Iz1.01 - 0.937*Iz1.01 + 0.937*Ic                 ,    g | ]}t          |          S rF   rk  r   s     r7   rT   z test_nroots2.<locals>.<listcomp>  rm  r9   )z-0.33199z-0.83907 - 0.94385*Iz-0.83907 + 0.94385*Iz1.0051 - 0.93726*Iz1.0051 + 0.93726*I)r   rE   r   )rr   r&   s     r7   test_nroots2ru    s    QTAaCZ!^QAHHqHMME #"E"""4 4 44 4 4 4 HHqHMME""E""": : :: : : : : :r9   c                      t          t          t          t          dz  t          dz  t	          t
                    z  z   t          z   t
          z   t          d                              dk    sJ d S )NrI   r:   T)	composite)r?   r&   r   r^   r   rE   rF   r9   r7   test_roots_compositerx    sY    uT!Q$Ad1gg-1A5qDIIIJJKKqPPPPPPr9   c                       t          t                    dz  t          t                    z
  dz    t          t           fd           d S )NrI   r1   c                  "    t                     S r   r   rg   s   r7   r  z"test_issue_19113.<locals>.<lambda>  s    E"II r9   )r   rE   r+   r(   rg   s   @r7   test_issue_19113r{    sB    	QSVV	a	B
?----.....r9   c                  |    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 d S )Nr1   rJ   r   rL   r:   ry   r   r   Tr
  )r&   r   rF   r9   r7   test_issue_17454r}    sP    !RacA%a'"Q$.2TBBBq!fLLLLLLr9   c                     t          t          dz   t                                                    dgk    sJ t          t          dz  dz   t                                                    dt          d          dz  z   gk    sJ d S )Nl          l       rI   rL   r:   )r   rE   
real_rootsr   rF   r9   r7   test_issue_20913r    sz    --q11<<>>C]B^^^^^1q!''))q1Q446{l^;;;;;;r9   c            
      t   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 d S )Nr1   rI   rD   rf   r:   )r   rY   r&   r   rE   r   r   )rZ   r`   s     r7   test_issue_22768r    s    AA	A	1q5AaC. Aa1fAz)1--..	1	
AQ	M1a	2Q	>1a3! ! ! ! ! ! !r9   )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-   rn  	itertoolsr.   rY   r]   r[   r\   rZ   r   r   rE   r^   rn   rB   rG   rd   ri   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r-  r?  rF  rJ  rO  rc  rf  rq  ru  rx  r{  r}  r  r  rF   r9   r7   <module>r     s   H H 0 0 0 0 0 0 0 0 0 0 " " " " " " 5 5 5 5 5 5 5 5 5 5 D D D D D D D D D D 6 6 6 6 6 6 A A A A A A A A : : : : : : E E E E E E E E E E . . . . . . $ $ $ $ $ $ * * * * * * H H H H H H H H H H H H H H? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 0 0 0 0 0        ( ( ( ( ( ( - - - - - - - - 0 0 0 0 0 0         'w'<== 1aAq!Q1  ? ? ?& & &D& & &H H H4 4 4	 	 	    - - -  
  
 
 
.7U 7U 7UtB B B
K K K-' -' -'`0 0 0B9) 9) 9)xj# j# j#XH H H.$ $ $$@ @ @:^ ^ ^+ + +2, , ,  K K K*: : :"Q Q Q/ / /
M M M< < <
! ! ! ! !r9   