a
    <bJe                  
   @   s\  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/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z: ddl;Z;ddl<m=Z= e
d\
Z>Z?Z@ZAZBZCZDZEZFZGdd ZHdd ZIdd ZJdd ZKdd  ZLd!d" ZMd#d$ ZNd%d& ZOd'd( ZPd)d* ZQd+d, ZRd-d. ZSd/d0 ZTd1d2 ZUd3d4 ZVd5d6 ZWd7d8 ZXd9d: ZYd;d< ZZd=d> Z[d?d@ Z\dAdB Z]dCdD Z^dEdF Z_e8dGdH Z`dIdJ ZadKdL ZbdMdN ZcdOdP ZddQdR ZedS )SzBTests 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_cyclotomicroots_binomialpreprocess_rootsroots)legendre_poly)PolynomialError)_nsort)raisesslow)verify_numericallyN)productza,b,c,d,e,q,t,x,y,zc                 C   s   t dd | D }tt| d | t| d | ks:J t|t| dD ]6}| |d  | | ksJ| |d  t| | ksJ dS qJdS )Nc                 S   s   g | ]}|j rd ndqS )   r   is_real.0i r2   p/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/polys/tests/test_polyroots.py
<listcomp>'       z_check.<locals>.<listcomp>   r,   FT)sumlistsortedrangelenr	   )r$   Znrealixr2   r2   r3   _check#   s    (r=   c                   C   s*   t tdt d ttddgks&J d S )Nr6   r,   )r   r   xr   r2   r2   r2   r3   test_roots_linear1   s    r@   c                  C   s  t tdtd  tddgks"J t tdtd  dt  ttdddgksRJ t tdtd  d tt td d ttd d gksJ t tdtd  dt  d tdttd d  dttd d  gksJ ttdtd  dt  d t  td dt t	 dt
 t	  tt
  t  tt tt	d   t
t	d   tt
   } t t| tt	 tt
  tt
  ttt t
t  tt  tt
  dt t
 t	d   tt
   t	 tt
  tt
  ttt t
t  tt  tt
  dt t
 t	d   tt
   gksJ tttd  dt  dt  t} t | tdtd  d  t dt  tdtd  d t dt  gksJ ttd td  d t  td  d t} t | dtd d gksJ ttdtd  d t} t | }|t|ks
J td	td  d
t  d } dd | jddD dd | jddD ksXJ tdddD ]B\}}}t|td  |t  | } t | }|t|ksdJ qdd S )Nr6   r            r>   r,   i   i  c                 S   s   g | ]}| d qS r6   nr0   wr2   r2   r3   r4   O   r5   z(test_roots_quadratic.<locals>.<listcomp>T)Zradicalsc                 S   s   g | ]}| d qS rF   rG   rI   r2   r2   r3   r4   P   r5   F)r6   )r   r>   )r   r   r?   r   r   r   r=   	all_rootsaecdbyr'   r+   )frZ_a_bZ_cr$   r2   r2   r3   test_roots_quadratic5   s<    "0@N&TTT
"@
,

rV   c                  C   s   t td t td  t t} t| ttd tdt d  dttd t d td  dttd tdt d   dttd t d td   diksJ d S )NrD   r6      r,   )r   r?   r   r$   r   eqr2   r2   r3   test_issue_7724W   s     rZ   c                     s   t dtddgt  tt  tt} tddtd d  fdd| D }t|ttt  ttkstJ t	 fdd	|D sJ d S )
Nr,   rK   rB   r6      c                    s   g | ]}| t qS r2   )subsrR   r0   rT   )zr2   r3   r4   d   r5   z#test_issue_8438.<locals>.<listcomp>c                 3   s.   | ]&}  tt|ijd dddkV  qdS )r6   TZchopr   N)r\   rR   r?   rH   r/   pr^   r2   r3   	<genexpr>h   r5   z"test_issue_8438.<locals>.<genexpr>)
r   rR   r?   Zas_exprr   r   r   setr\   all)r$   postr2   r`   r3   test_issue_8438`   s    rf   c                     s   t dtd  d tt td d   } t| s6J t td dtd   d t  fddtdD }t td dtd   d t } | |ksJ t| sJ t dtd  d  } t| sJ tt dtd	  d  d	ksJ d S )
NrD      r,   r6   rW   rC   c                    s   g | ]}t  |qS r2   r   r/   rS   r2   r3   r4   o   r5   z#test_issue_8285.<locals>.<listcomp>
   )r   r?   rL   r=   r:   r;   )r$   ror2   ri   r3   test_issue_8285k   s    *"rl   c                  C   s   t td d t td d   } t| s0J t td dtd   d t } t| s^J t td t d  } t| sJ t td dtd   d t } t| sJ d S )Nr6   rD   rC   rA   r,   )r   r?   rL   r=   r$   r2   r2   r3   test_issue_8289z   s    $""rn   c                     s   t td d d td d d  td   ddt dt dtdt  dtdt  gksbJ td dtd   d   fddtdD } t   | ksJ t|  d S )Nr,   r6   rD   rj   c                    s   g | ]}t  |qS r2   rh   r/   ra   r2   r3   r4      r5   z$test_issue_14291.<locals>.<listcomp>)r   r?   rL   r   r   r:   r=   )ansr2   ro   r3   test_issue_14291   s    .,rq   c                  C   s>   t td ttt  t tdd} t| }t|dks:J d S )NrA   EXdomain)r   rR   r   r?   r$   r;   )rY   Zroots_dr2   r2   r3   test_issue_13340   s    "ru   c                     sx   t td td ddt    td ddt    tdd	t    d
 dt  t t } t fdd| D stJ d S )NrD   rA          r6   ii  ii  i
  i  c                 3   s   | ]} |d kV  qdS r   Nr2   r]   rX   r2   r3   rb      r5   z#test_issue_14522.<locals>.<genexpr>)r   r?   r   r$   rd   )roots_eqr2   rX   r3   test_issue_14522   s    Rrz   c                  C   s@   t ttd dtd   tt  d t} | d ts<J d S )NrD   rC   r6   rA   r   )r    r   tr?   Zhas)solr2   r2   r3   test_issue_15076   s    *r}   c                  C   sb   t td dtd td   dtd   dtd td   dt  t} t| }d|v s^J d S )NrD   rg   r6   rA   @   i   r   )r   r?   r   r$   )rY   ry   r2   r2   r3   test_issue_16589   s    Jr   c               	   C   sl  t tdtd  tg dks"J t ttd dtd   dt  d tg dksXJ ttd} t ttd t t| | tj tdt d   | tj tdt d   gksJ t ttd d tdtjttd d  tjttd d  gksJ t tdtd  dtd   dt  d td tjdt	dd d  dt	dd d  ks`J td  dtd   dt  d }t
|ddd	t t|tdd
  krbt	dddtd ttdtd d d  d  dtd ttdtd d  d td   d t	dd dtd ttdtd d  d td   d t	dd gkshn J d S )Nr6   rA   )r   r   r   r,   r,   r,   r,   r>   r   T)trigmultiple)r      rg      rK   rC   )r   r   r?   r   rR   r   Halfr   r   r   r$   r   r   r   r   )rT   rY   r2   r2   r3   test_roots_cubic   s,    "6

,0(
"
4>>r   c                     sj  t ttd tg dksJ t ttd td  tg dg dg dg dfv sXJ t ttd td  tg dg d	g d
g dfv sJ t ttd t t} tjttd d  tjttd d  tjtj g}t	| t
dt	|t
dksJ tg dD ]\}\}}}}|dkrD| |d td |td   }n<|dkr|||d tdd |td   |td   }td |td   |td   |t  |  t t t}t fdd|D sJ qttt td  td  td  dtd   tdd t t  }t fdd|D s:J tdddtd dtd   dtd   td   d  t t t}	t fdd|	D sJ tttd  td  t  t t  }tdd |D sJ ttddtdddttddtdddttddd df}
|
D ]<t t t}tfd!dt||D s(J q(d S )"NrD   r   r   r   r   rA   )r>   r   r   r   )r   r>   r   r   )r   r   r>   r   )r   r   r   r>   )r,   r   r   r   )r   r,   r   r   )r   r   r,   r   )r   r   r   r,   r6   key))r,   r6   rA   r   )rA   i	   r,   r6   rA   rD   r   )r   rB   rA   )rB   rW   r   )rC   irB   rg      rv   c                 3   s&   | ]}  t|jd ddkV  qdS )Tr_   r   N)r\   r?   rH   )r0   ZairX   r2   r3   rb      r5   z%test_roots_quartic.<locals>.<genexpr>r,   c                 3   s    | ]}t  t|d V  qdS rx   r*   r\   r?   r/   rX   r2   r3   rb      r5   r^   T)negative   rW   c                    s(   g | ] }t  t|fd ffdqS )r>   r   r   r/   )rY   r^   r2   r3   r4      r5   z&test_roots_quartic.<locals>.<listcomp>c                 s   s   | ]}t |tkV  qd S N)typer   r/   r2   r2   r3   rb      r5   r>   )rR   r^   rK   c                    s$   g | ]\}}t | | d qS )r   )r*   r\   )r0   rJ   s)repr2   r3   r4      r5   )r    r   r?   r   r   r   r   ZeroOner9   hash	enumerater   rd   qr   rR   dictr\   zip)lhsrhsr1   rM   rQ   rO   rP   rp   r|   ZzansZrepsr2   )rY   r   r^   r3   test_roots_quartic   sR    

6
$
2, <0"r   c                	   C   sX   t dd tttd td ddt    dt dt   d dt  tD rTJ d S )	Nc                 s   s   | ]}t |tV  qd S r   )
isinstancer   r/   r2   r2   r3   rb      r5   z#test_issue_21287.<locals>.<genexpr>rD   r6   rA   rW   r>   r,   )anyr    r   r?   r   r2   r2   r2   r3   test_issue_21287   s    
<r   c                   C   s  t tdtdddgksJ t tdtdddgks8J t tdtddtddttd d  tddttd d  gksJ t tdtddt tgksJ t tdtddtjttd d  tjttd d  gksJ t td	tddtt	d	  tt
t	d	   tt	d	  tt
t	d	   tt	tdd	  tt
t	tdd	   tt	tdd	  tt
t	tdd	   tt	tdd	 tt
t	tdd	   tt	tdd	 tt
t	tdd	   gksJ t td
tddtd d ttd d  td d ttd d  tdd ttd d  tdd ttd d  gks\J t tdtddtd d td  td d td  tdd td  tdd td  gksJ t tdtdddddgksJ t tdtdddddgksJ t tdtddddtdd dtdd gks>J t tdtddddt tgksdJ t tdtddddtdd tddd  tddd dtddd  tdd tddd  gksJ t tdtdddddtdd tddgksJ d S )Nr,   TZpolysr6   r>   rA   rD   rC   r[   rg      )ZfactorrW   )r!   r   r?   r   r   r   r   r   r   r   r   r   r2   r2   r2   r3   test_roots_cyclotomic   sn    2 *((&&	



N
r   c               	   C   sH  t tdt tdgksJ t tdtd  tg dks>J t tdt d ttddgksdJ dtdd d } t tdtd  d t|  | t  |  | t  | | t  | | t  gksJ tt ttd	 d  td
dd}tddd}tt|td  | t}t t|td  | t}t|d t|d ksFJ t|d t|d ksdJ t	ddddD ]X\}}}}||kr|dkrqrt|t|  ||  }	t |	}
|
t
|
ksrJ qrttdtd  dtd   tdt tddtdt d   ddt ddt tddtdt d   diksDJ d S )NrW   r   rD   r   r6   rK   rj   rA   rg   a1T)Znonnegativeb1r,   )r,   r6   )r>   r,   )r6   rA   rD   rW   rv   r>   )r"   r   r?   r   r   r=   r   r   r   r+   r'   r$   rR   r   )Ar   r   Zr0r1rM   rQ   r   rH   ra   rp   r2   r2   r3   test_roots_binomial,  s2    "&. ""r   c                  C   sl  t t td  t t } tt| t\}}|dks6J |tt t td  t t tks\J td td  td td   tt  t  } tt| t\}}|dt ksJ |ttd td  t t  tksJ td td  td td   t  } tt| t\}}|dt ksJ |ttd td  t  tks<J td td  tt  t  } tt| t\}}|dt ks|J |ttd t t  tksJ td td  t  } tt| t\}}|dt ksJ |ttd t  tksJ td\}}}}d|d  |d  |d  d| t |d	  |d	  |d
   d|d  |d  |d  td  |d   d|d  |d  |d  td  |d   d|d  |d  |d  td  |d   d|d  |d  |d  td  |d   d|d  |d  |d  td  d|d    d| | |d	  td	  d|d    d|d  td  d  } tt| t\}}|d| | ||d   ksJ |dtd  dtd	   dtd   dtd   dtd   dtd   dtd   dt  d  ksJ ttd  td tt  tt	tttf d!} ttd  tt tt	tt d!}t| t|fkshJ d S )"Nr6   r,   rA   E,F,J,L [r|)s2^ rg   rv       83ll8r[         ]$=,y rC   r      /@:rW   rj      D!^ rD   q 
    P   y   q    id i B i߰l   ul   /1g&l   g l   FW&k rs   )
rM   rR   r?   rQ   r#   r   rO   r   r   r   )rS   ZcoeffZpolyEFJLgr2   r2   r3   test_roots_preprocessingM  sh    &,&$$ "****.&
"<

0$r   c                  C   s  t dti ksJ t tttjdiks*J t td ttjdiksFJ t td td  td   ttd dtddtddiksJ t dt d ttdddiksJ t dt d d ttdddiksJ t dt d d ttdddiksJ t dt d d ttdddiks(J t td d ttdtjdtj dt diks\J t td d d ttdtjdtj dt diksJ t dt d d  ttdddiksJ t dt d d  ttd	ddiksJ t dt d d  ttdddiksJ t dt d d  ttd	ddiksLJ t dt d d  ttdddikszJ t dt d d  ttd	ddiksJ t tt t	 d  tt	t diksJ t tt t	 d  tt	 t diksJ t td t d t  t ttdtjdiks6J t td dtd   d ttjdtj
diksjJ t td
 dtd   dtd   td  ttjddtd dtjddtd diksJ t td d ttdd ttd d  dtdd ttd d  dtd d ttd d  dtd d ttd d  dtjdtj dtdt diksnJ dtd  dtd   dtd   dtd   dtd
   dtd   dtd   dtd   } 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	 t t tt	 t t  ttt	 t t tt	 t  dikslJ t td td  t d tddi ksJ t td td  td   tddtd dtddtddiksJ t td td  td  td   tddtd dtddtddtddiks<J t td dtd   dt  d ttd ddt ddt diksJ t td dtd   dt  d tdddt ddt dtd diksJ t td t td dtd   dt  d  ttjdtjdtd ddt ddt diks6J tjtdd }}dtd d | }d| d }|d }tdt d }|| }| | }t td td  t d tdd| | | d| | ||  | d| | ||  | diksJ td dt  d tdtd  dt  tdt d } dd dD \}	}
td}t | t|	|
tddt |    d|	|
tddt |    d|	|
tddt |    d|	|
tddt |    diksJ td td  td  t d } dd d D \}}}t | t| |d|   t||d|   |   d| |d|   t||d|   |   d| |d|   t||d|   |   d| |d|   t||d|   |   dik	sJ td dt td   ddt  dtd   t  t dtd   } t | ttjdtjtjt  tjtddt  td  dtd     dtjtjt  tjtddt  td  dtd     dik
sJ t tt	 t td  dtd   dt  d tddi k
sJ t tt	 t td  dtd   dt  d tddi ksJ t td d td!d"tjdtj diksBJ t td d td#d"tdt dikslJ t td td  ttjdtj diksJ t td td  td$d% d&tjdiksJ t td d td!dd'tj tjgksJ t td d td#dd'tt gksJ td(dd)\}}td || d  dt ||   d }t |td*d"d||  diksxJ t td tdd+tjtjtjgksJ t d,tdd+g ksJ td
 td  td  td  td  t d } t | t ttd  ttd  dt tttdd  tttdd  dt tttdd  tttdd  dtttd  ttd  dttttdd  tttdd  dttttdd  tttdd  diksJ td d | d   }t |t ttd  ttd  dt tttdd  tttdd  dt tttdd  tttdd  dtttd  ttd  dttttdd  tttdd  dttttdd  tttdd  dt dtdiksJ t td d-t  d }d.d |D d/ }d0d
td1  }|dt|d d d2t|d  ksNJ tddtd  td  d3dtd  td   td d t  d td4d5}t |dtd dddtd  dtd d diksJ td6td  d7td td   d8td   d0td td   d9td   d:td td   d;td   d<td td   d=td t  d=t  d> td4d5}t |td d dddtd  ddtd dd?dtd  dd	dtd  diksJ ttd dtd   d
td td   dtd t  d@t  dA dAtd  td4d5}t |dtd d ddtd d ddtd d diksxJ t tttd d d td4d5td tddtj tdt d    dtd tddtj tdt d    dtd tdd diksJ d S )BNr,   r   r6   rA   rD   r>   rW   rj   rB   rC   rg   i i  i  i  i     r[   i  r~   r   F)ZcubicsrK   T!      c                 S   s   g | ]}t | qS r2   r   r]   r2   r2   r3   r4     s   ztest_roots0.<locals>.<listcomp>))r   r   )r,   r   c                 S   s   g | ]}t | qS r2   r   r]   r2   r2   r3   r4     r5   ))r,   rD   )r,   rg   )rW   rg   Zfilterr   c                 S   s   | j S r   )Zis_positive)rT   r2   r2   r3   <lambda>  r5   ztest_roots0.<locals>.<lambda>)	predicate)r   r   za, b)realRr   i  (   c                 S   s   g | ]}|j r|qS r2   r-   )r0   rxr2   r2   r3   r4     r5   r   l   i2  r   r   rr   rs   )            }   -            r      r   )r$   r?   r   r   expandr   r   r   rM   rQ   ZNegativeOner   rO   rP   r   r\   r^   rR   r   r   r   r   r   r   )rS   Zr1_2Zr1_3Zx0x1Zx2Zx3Zx4Zx5Zr13_20Zr1_20s2Zr1_4Zr1_8Zr5_8arbrra   r   rT   Z	real_rootZcrrY   r2   r2   r3   test_roots0  sX   D$((*48......,.44,&
:


(L,
,$
J(
0(

 <
 ****D::@@.*.
,(($(0**((	**((

*P<@

0 D
B ,,r   c                     s  t d\} }}}d | | |  | |  |  }d | |||  |    |  | | || |   | | ||   }tt| ddgksJ tt| ddgksJ t d\}}}}	}
}}|| ||  ||  |	| |
  |
 |	 | }|| | | |
||  |
  |	|	 ||   }tt|| | g dksTJ d dd   d  tt  }tdd	  fd
d|D D rJ dS )z6Just test that calculating these roots does not hang. z	a,b,c,d,xr6   r,   zzz,yy,xx,zy,zx,yx,kr   rA   rg   c                 s   s   | ]
}|V  qd S r   r2   r/   r2   r2   r3   rb   I  r5   z"test_roots_slow.<locals>.<genexpr>c                    s    g | ]}  |jd dqS )Tr_   )r\   rH   )r0   rirS   r?   r2   r3   r4   I  r5   z#test_roots_slow.<locals>.<listcomp>N)r   r8   r$   valueskeysr   )rM   rQ   rO   rP   f1f2zzyyxxZzyZzxZyxke1e2r   r2   r   r3   test_roots_slow5  s    $H00$r   c                  C   s   t td t d tdd} t td t d tdd}t| |D ]\}}t|| dk s>J q>td dtd	 td
   ddtd  td   ddtd d   }t |dd} d}t| |D ]\}}t|| dk sJ qd S )Nr6   r,   Tr   g      ?g-q=rD   g      @g       @rA   g     S@g      8@g      b@g      "@)g؋~)g)cg3!	@g
 @绽|=)r$   r?   r   absr   )R1R2r   r2rS   r2   r2   r3   test_roots_inexactL  s    2r   c                  C   s  t d\} }}}d| d  |d  |d  d| t | d  |d  |d   d| d	  |d
  |d	  td
  |d   d| d  |d  |d  td  |d   d| d  |d  |d  td  |d   d| d  |d  |d  td  |d	   d| d
  |d	  |d
  td	  d|d    d|  | |d  td  d|d
    d|d  td  d  }t|ti ksJ t| tdd}g d}td}||  | ||d
   }t|t|ksJ t||D ]8\}	}
|	|}|d urt|| |
 dk sJ qd S )Nr   r   rg   rv   r   r[   r   r   rC   r6   r   r   rW   rA   rj   r   rD   r   r   r   r   r   r   Tr   )g?|YcgOXLzGX@g'I^g@g|۰n@gdZw@g5`e@gS$Ȫ@gJm@rJ   r   )	r   r?   r$   evalfr   r;   r   matchr   )r   r   r   r   rS   r   r   rJ   ra   r   r   r   r2   r2   r3   test_roots_preprocessed^  s6    "****.&

r   c            	      C   s   ddt   dt d   dt d   dt d   } t| d	d
\}}t| }t| d	d}dd |D }dd |D }|| }dd |D }t|dd d}t|dd d}||fD ]D}t||D ]4\}}|jr||v sJ qt|t|f|v sJ qqd S )Nipi  i  r6   i
  rA   1   rD   T)rd   r   c                 S   s   g | ]\\}}}t ||qS r2   r   r0   rM   rQ   _r2   r2   r3   r4     r5   z$test_roots_mixed.<locals>.<listcomp>c                 S   s8   g | ]0\\}}}t t|t|t t|t| qS r2   )r   r   r
   r   r2   r2   r3   r4     s   c                 S   s   g | ]}|  qS r2   )r   r]   r2   r2   r3   r4     r5   c                 S   s   |   S r   sort_keyr?   r2   r2   r3   r     r5   z"test_roots_mixed.<locals>.<lambda>r   c                 S   s   |   S r   r   r   r2   r2   r3   r     r5   )	r?   r   r   r$   r9   r   r.   r   r
   )	rS   _reZ_imZ_nrootsZ_srootsZ
_intervalsZ_rootsr1   rT   r2   r2   r3   test_roots_mixed{  s"    0r   c                
   C   s  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 d ttd td gksbJ t td t tttt ttt gksJ t td d d td td td td tt tt tt tt gksJ t ttd d tddttd tttd tttd d tgks(J t dtd  dtd   dtd   td  td	dtttd dtd   dtd   d gksJ d S )
Nr,   r6   rD   r   r   rg   r   rC   Q)r   r   r?   rR   r   r   r2   r2   r2   r3   test_root_factors  s    &.2*
4(r   c                     sR   d} t | tdd ttjj fdd  jdd}dd	 |D g d
ksNJ d S )Nr~   Tr   c                      s    j dddS )NrA   rW   )rH   Zmaxsteps)r   r2   ro   r2   r3   r     r5   ztest_nroots1.<locals>.<lambda>rA   rG   c                 S   s   g | ]}t |qS r2   strr]   r2   r2   r3   r4     r5   z test_nroots1.<locals>.<listcomp>)@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%   r?   r(   mpmathmpZNoConvergencer   )rH   r$   r2   ro   r3   test_nroots1  s    r  c                  C   sj   t td dt  d t} | jdd}dd |D g dks@J | jdd}dd |D g d	ksfJ d S )
NrW   rA   r,   rG   c                 S   s   g | ]}t |qS r2   r   r]   r2   r2   r3   r4     r5   z test_nroots2.<locals>.<listcomp>)z-0.332z-0.839 - 0.944*Iz-0.839 + 0.944*Iz1.01 - 0.937*Iz1.01 + 0.937*Ic                 S   s   g | ]}t |qS r2   r   r]   r2   r2   r3   r4     r5   )z-0.33199z-0.83907 - 0.94385*Iz-0.83907 + 0.94385*Iz1.0051 - 0.93726*Iz1.0051 + 0.93726*I)r   r?   r   )ra   r$   r2   r2   r3   test_nroots2  s    r  c                   C   s>   t tttd td tt  t t tdddks:J d S )NrA   r6   T)Z	composite)r;   r$   r   rR   r   r?   r2   r2   r2   r3   test_roots_composite  s    r  c                      s.   t td t t d  tt fdd d S )NrA   r,   c                      s   t  S r   rm   r2   rX   r2   r3   r     r5   z"test_issue_19113.<locals>.<lambda>)r   r?   r(   r&   r2   r2   rX   r3   test_issue_19113  s    r  c                   C   s>   t ddddt  d  d dt  dgd	d
ddgks:J d S )Nr,   rB   r   rD   r6   rg   r   r   Tr   )r$   r   r2   r2   r2   r3   test_issue_17454  s    r  c                   C   sN   t td t dgksJ t td d t dtdd   gksJJ d S )Nl          l       rA   rD   r6   )r   r?   Z
real_rootsr   r2   r2   r2   r3   test_issue_20913  s    r	  )f__doc__Zsympy.core.numbersr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   r   Z$sympy.functions.elementary.complexesr	   r
   r   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   r   Z$sympy.functions.elementary.piecewiser   Z(sympy.functions.elementary.trigonometricr   r   r   Zsympy.polys.domains.integerringr   Zsympy.sets.setsr   Zsympy.simplify.powsimpr   Zsympy.polysr   r   r   r   r   Zsympy.polys.polyrootsr   r   r   r   r    r!   r"   r#   r$   Zsympy.polys.orthopolysr%   Zsympy.polys.polyerrorsr&   Zsympy.polys.polyutilsr'   Zsympy.testing.pytestr(   r)   Zsympy.core.randomr*   r  	itertoolsr+   rM   rQ   rO   rP   rN   r   r{   r?   rR   r^   r=   r@   rV   rZ   rf   rl   rn   rq   ru   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r	  r2   r2   r2   r3   <module>   sj   ,"		:0!< -
