U
    ZÊ¹j³h  ã                
   @   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/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d„ ZJdd„ ZKdd„ ZLdd„ ZMdd „ ZNd!d"„ ZOd#d$„ ZPd%d&„ ZQd'd(„ ZRd)d*„ ZSd+d,„ ZTd-d.„ ZUd/d0„ ZVd1d2„ ZWd3d4„ ZXd5d6„ ZYd7d8„ ZZd9d:„ Z[d;d<„ Z\d=d>„ Z]d?d@„ Z^dAdB„ Z_dCdD„ Z`dEdF„ ZadGdH„ ZbdIdJ„ Zce:dKdL„ ƒZddMdN„ ZedOdP„ ZfdQdR„ ZgdSdT„ ZhdUdV„ ZidWdX„ ZjdS )YzBTests 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                 C   s‚   t dd„ | D ƒƒ}t| d |… ƒt| d |… ƒks6t‚t|t| ƒdƒD ]6}| |d  | | ksF| |d  t| | ƒksF dS qFdS )Nc                 s   s   | ]}|j rd ndV  qdS )é   r   N©Úis_real©Ú.0Úi© r4   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/tests/test_polyroots.pyÚ	<genexpr>(   s     z_check.<locals>.<genexpr>é   r.   FT)ÚsumÚsortedÚlistÚAssertionErrorÚrangeÚlenr	   )r%   ZnrealZixr4   r4   r5   Ú_check$   s    $ÿþr>   c                   C   s*   t tdt d tƒƒtddƒgks&t‚d S )Nr7   r.   éÿÿÿÿ)r   r   Úxr   r;   r4   r4   r4   r5   Útest_roots_linear2   s    rA   c                  C   s¬  t tdtd  tƒƒddgks"t‚t tdtd  dt  tƒƒtddƒdgksRt‚t tdtd  d tƒƒt tdƒ d ttdƒ d gks’t‚t tdtd  dt  d tƒƒdttdƒ d  dttdƒ d  gksàt‚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t‚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�sŒt‚ttd td  d t  td  d tƒ} t | ƒdtd d gk�sÖt‚ttdƒtd  d tƒ} t | ƒ}|t|ƒk�s
t‚td	td  d
t  d ƒ} dd„ | jdd�D ƒdd„ | jdd�D ƒk�sXt‚tdddƒD ]B\}}}t|td  |t  | ƒ} t | ƒ}|t|ƒk�sdt‚�qdd S )Nr7   r   é   éýÿÿÿé   é   r?   r.   ièÿÿÿé´   i  c                 S   s   g | ]}|  d ¡‘qS ©r7   ©Ún©r2   Úwr4   r4   r5   Ú
<listcomp>P   s     z(test_roots_quadratic.<locals>.<listcomp>T)Zradicalsc                 S   s   g | ]}|  d ¡‘qS rG   rH   rJ   r4   r4   r5   rL   Q   s     F)éþÿÿÿr7   )r   r?   )r   r   r@   r;   r   r   r   r>   Ú	all_rootsÚaÚeÚcÚdÚbÚyr)   r-   )ÚfÚrZ_aÚ_bZ_cr%   r4   r4   r5   Útest_roots_quadratic6   s<    "0@N&TTTÿÿ
"@ÿ
,ÿ
ÿ
rX   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s¦t‚d S )NrE   r7   é   r.   )r   r@   r   r%   r   r;   ©Úeqr4   r4   r5   Útest_issue_7724X   s        ür\   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stt	‚t
‡ ‡fdd	„|D ƒƒs�t	‚d S )
Nr.   rM   rC   r7   é   c                    s   g | ]}|  tˆ ¡‘qS r4   )ÚsubsrT   ©r2   rV   )Úzr4   r5   rL   e   s     z#test_issue_8438.<locals>.<listcomp>c                 3   s.   | ]&}ˆ   tˆt|i¡jd dd�dkV  qdS )r7   T©Zchopr   N)r^   rT   r@   rI   r1   ©Úpr`   r4   r5   r6   i   s     z"test_issue_8438.<locals>.<genexpr>)r   rT   r@   Zas_exprr   r   r   Úsetr^   r;   Úall)r%   Úpostr4   rb   r5   Útest_issue_8438a   s    ÿrg   c                     sð   t dtd  d tƒt td d ƒ  ¡ } t| ƒs6t‚t td dtd   d tƒ‰ ‡ fdd„tdƒD ƒ}t td dtd   d tƒ ¡ } | |ks˜t‚t| ƒs¤t‚t dtd  d ƒ ¡ } t| ƒsÈt‚tt dtd	  d ƒ ¡ ƒd	ksìt‚d S )
NrE   é   r.   r7   rY   rD   c                    s   g | ]}t ˆ |ƒ‘qS r4   ©r   r1   ©rU   r4   r5   rL   p   s     z#test_issue_8285.<locals>.<listcomp>é
   )r   r@   rN   r>   r;   r<   r=   )r%   Úror4   rj   r5   Útest_issue_8285l   s    *"rm   c                  C   s´   t td d ƒt td d ƒ  ¡ } t| ƒs0t‚t td dtd   d tƒ ¡ } t| ƒs^t‚t td t d ƒ ¡ } t| ƒs‚t‚t td dtd   d tƒ ¡ } t| ƒs°t‚d S )Nr7   rE   rD   rB   r.   )r   r@   rN   r>   r;   ©r%   r4   r4   r5   Útest_issue_8289{   s    $""ro   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sbt‚td dtd   d ‰ ‡ fdd„tdƒD ƒ} t ˆ ƒ ¡ | ks¤t‚t| ƒ d S )Nr.   r7   rE   rk   c                    s   g | ]}t ˆ |ƒ‘qS r4   ri   r1   ©rc   r4   r5   rL   ‹   s     z$test_issue_14291.<locals>.<listcomp>)r   r@   rN   r   r   r;   r<   r>   )Úansr4   rp   r5   Útest_issue_14291‡   s    .,ÿrr   c                  C   s>   t td ttƒt  t tdd�} t| ƒ}t|ƒdks:t‚d S )NrB   ÚEX©Údomain)r   rT   r   r@   r%   r=   r;   )r[   Zroots_dr4   r4   r5   Útest_issue_13340�   s    "rv   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 ƒƒstt‚d S )NrE   rB   é   é    r7   iãþÿÿi‚  iøôÿÿiÀ  i
  i¥  c                 3   s   | ]}ˆ |ƒd kV  qdS ©r   Nr4   r_   rZ   r4   r5   r6   ™   s     z#test_issue_14522.<locals>.<genexpr>)r   r@   r   r%   re   r;   )Úroots_eqr4   rZ   r5   Útest_issue_14522–   s    Rr{   c                  C   s@   t ttd dtd   tt  d tƒƒ} | d  t¡s<t‚d S )NrE   rD   r7   rB   r   )r    r   Útr@   Úhasr;   )Úsolr4   r4   r5   Ú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|ks^t‚d S )NrE   rh   r7   rB   é@   i   r   )r   r@   r   r%   r;   )r[   rz   r4   r4   r5   Útest_issue_16589¡   s    Jr�   c               	   C   sr  t tdtd  tƒƒdddgks$t‚t ttd dtd   dt  d tƒƒdddgks\t‚ttdƒ} t ttd t tƒƒ| | tj tdƒt	 d   | tj tdƒt	 d   gksºt‚t ttd d tƒƒdtjt	tdƒ d  tjt	tdƒ d  gk�st‚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�sft‚td  dtd   dt  d }t|ddd�t t|tƒdd�  k�rht
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�snn t‚d S )Nr7   rB   r   r.   r?   T)ÚtrigÚmultiple)r‚   é   rh   é©   rM   rD   )r   r   r@   r;   r   rT   r   ÚHalfr   r   r   r%   r   r   r   r   )rV   r[   r4   r4   r5   Útest_roots_cubic§   s,    $8
þ
,ÿ
0(ÿ
"ÿ
4>>ýÿr‡   c                     s”  t ttd tƒƒddddgks"t‚t ttd td  tƒƒddddgddddgddddgddddgfkslt‚t ttd td  tƒƒddddgddddgddddgddddgfks¶t‚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�s t‚tdd	d
d
dddgƒD ]Ò\}\}}}}|dk�rt| |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 ƒƒ�s6t‚�q6ttt td  td  td  dtd   tddƒ tƒ‰ t ˆ ƒ}t‡ fdd„|D ƒƒ�sjt‚tddd�‰td dtd   dtd   tˆd   d ‰ t tˆ tƒƒ}	t‡ ‡fdd„|	D ƒƒ�sÒt‚tttd  td  t ˆ tƒ‰ t ˆ ƒ}tdd„ |D ƒƒ�st‚tddƒtddƒdœtddƒtddƒdœtddƒddœf}
|
D ]<‰t tˆ  ˆ¡tƒƒ}t‡fdd„t||ƒD ƒƒ�sRt‚�qRd S )NrE   r   rB   r?   r.   r7   ©Úkey)r.   r7   rB   r   )rB   éùÿÿÿi÷ÿÿÿé	   )r.   r7   rB   rE   )rŠ   rC   rB   éúÿÿÿ)rC   rY   rŒ   éüÿÿÿ)rD   éûÿÿÿiöÿÿÿrC   rh   é   rw   c                 3   s&   | ]}ˆ   t|¡jd d�dkV  qdS )Tra   r   N©r^   r@   rI   )r2   ZairZ   r4   r5   r6   à   s     z%test_roots_quartic.<locals>.<genexpr>c                 3   s    | ]}t ˆ  t|¡d ƒV  qdS ry   ©r,   r^   r@   r1   rZ   r4   r5   r6   å   s     r`   T)Únegativeé   rY   c                 3   s*   | ]"}t ˆ  t|fˆd ff¡dƒV  qdS )r?   r   Nr‘   r1   )r[   r`   r4   r5   r6   é   s     c                 s   s   | ]}t |ƒtkV  qd S ©N)Útyper   r1   r4   r4   r5   r6   î   s     )rT   r`   rM   c                 3   s&   | ]\}}t | ˆ ¡| d ƒV  qdS ry   )r,   r^   )r2   rK   Ús)Úrepr4   r5   r6   õ   s     )r    r   r@   r;   r   r†   r   r   ÚZeroÚOner9   ÚhashÚ	enumerater   re   Úqr   rT   r^   Úzip)ÚlhsÚrhsr3   rO   rS   rQ   rR   rq   r~   ZzansZrepsr4   )r[   r—   r`   r5   Útest_roots_quartic¾   s`    "



ü




ü
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 ƒƒrTt‚d S )	Nc                 s   s   | ]}t |tƒV  qd S r”   )Ú
isinstancer   r1   r4   r4   r5   r6   ù   s     z#test_issue_21287.<locals>.<genexpr>rE   r7   rB   rY   r?   r.   )Úanyr    r   r@   r   r;   r4   r4   r4   r5   Útest_issue_21287ø   s    
<ÿr£   c                     sž   t d d t d d d dt d d   d t d dt d   dt d   dt   d	 f} | D ]:‰ ttˆ ƒƒ}t|ƒdks~t‚t‡ fd
d„|D ƒƒs^t‚q^d S )NrY   r7   r.   é   én   rB   é7   i	  iÓ  c                 3   s,   | ]$}ˆ   t| d ¡¡jdd�dkV  qdS )rk   gñhãˆµøä>ra   r   Nr�   r_   rZ   r4   r5   r6     s     z%test_roots_quintic.<locals>.<genexpr>)r@   r!   r   r=   r;   re   )Zeqsr%   r4   rZ   r5   Útest_roots_quinticý   s    
"*þr§   c                   C   s  t tdtdd�ƒdgkst‚t tdtdd�ƒdgks8t‚t tdtdd�ƒtddƒttdƒ d  tddƒttdƒ d  gks‚t‚t tdtdd�ƒt tgks¢t‚t tdtdd�ƒtjttdƒ d  tjttdƒ d  gksät‚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�sÔt‚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\t‚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�sÄt‚t tdtdd�dd�dgk�sæt‚t tdtdd�dd�dgk�st‚t tdtdd�dd�tddƒ dtddƒ gk�s>t‚t tdtdd�dd�t tgk�sdt‚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�sÐt‚t tdtdd�dd�dtddƒ tddƒgk�st‚d S )Nr.   T©Zpolysr7   r?   rB   rE   rD   r]   rh   r¤   )ÚfactorrY   )r"   r   r@   r;   r   r   r   r   r†   r   r   r   r   r4   r4   r4   r5   Útest_roots_cyclotomic  sz      ÿ2ÿ   ÿ*ÿ((&&ú	üü ÿÿ
 ÿÿ
ÿ
ÿ
Nÿ
ÿrª   c               	   C   sL  t tdt tƒƒdgkst‚t tdtd  tƒƒddddgksBt‚t tdt d tƒƒtddƒgksht‚dtddƒ d } t tdtd  d tƒƒ|  | t  |  | t  | | t  | | t  gksÈt‚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�sJt‚t	|d ƒt	|d ƒk�sht‚t
ddddƒD ]X\}}}}||k�rš|dk�rš�qvt|t|  ||  ƒ}	t |	ƒ}
|
t|
ƒk�svt‚�qvt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�sHt‚d S )NrY   r   rE   r7   rM   rk   rB   rh   Úa1T)ZnonnegativeÚb1r.   )r.   r7   )r?   r.   )r7   rB   rE   rY   rw   r?   )r#   r   r@   r;   r   r   r>   r   r   r   r-   r)   r%   rT   r   )ÚAr«   r¬   Zr0Úr1rO   rS   r–   rI   rc   rq   r4   r4   r5   Útest_roots_binomial7  s8    &&.ÿ      ýr¯   c                  C   sl  t t td  t t } tt| tƒƒ\}}|dks6t‚|tt t td  t t tƒks\t‚td td  td td   tt  t  } tt| tƒƒ\}}|dt ksªt‚|ttd td  t t  tƒksÐt‚td td  td td   t  } tt| tƒƒ\}}|dt k�st‚|ttd td  t  tƒk�s<t‚td td  tt  t  } tt| tƒƒ\}}|dt k�s|t‚|ttd t t  tƒk�sœt‚td td  t  } tt| tƒƒ\}}|dt k�sÔt‚|ttd t  tƒk�sðt‚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�s”t‚|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�sþt‚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�sht‚d S )"Nr7   r.   rB   úE,F,J,Lìûÿÿÿ [r|)s2^ rh   rw   ì    …83ll8r]   é   ì   €]$=‚,y rD   r¤   ì   �/ž@ê:rY   rk   ì   öD!^ rE   é—qâ é
Ö  é�  éP   éy  é q é   idÂ i ãB iÌß°l   ”uòl   ˜/1gÔ&l   „g l   ‹FäW&k rt   )rO   rT   r@   rS   r$   r   r;   rQ   r   r   r   )rU   ZcoeffZpolyÚEÚFÚJÚLÚgr4   r4   r5   Útest_roots_preprocessingX  sh    &,&$$ "ÿ*þ*ý*ü*û.ú&ùø
"<
ÿ
ÿÿÿ0$rÃ   c                  C   s  t dtƒi kst‚t ttƒtjdiks*t‚t td tƒtjdiksFt‚t td td  td   ¡ tƒtdƒ dtdƒdtdƒdiksŠt‚t dt d tƒtddƒdiks®t‚t dt d d tƒtddƒdiksÖt‚t dt d d tƒtddƒdiksþt‚t dt d d tƒtddƒdik�s(t‚t td d tƒtdtjdtj dt dik�s\t‚t td d d tƒtdtjdtj dt dik�s”t‚t dt d d  ¡ tƒtddƒdik�sÂt‚t dt d d  ¡ tƒtd	dƒdik�sðt‚t dt d d  ¡ tƒtddƒdik�st‚t dt d d  ¡ tƒtd	dƒdik�sLt‚t dt d d  ¡ tƒtddƒdik�szt‚t dt d d  ¡ tƒtd	dƒdik�s¨t‚t t	t t
 d  ¡ tƒt
t	 dik�sÔt‚t t	t t
 d  ¡ tƒt
 t	 dik�st‚t td t	 d t  t	 tƒt	dtjdik�s6t‚t td dtd   d tƒtjdtjdik�sjt‚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�sÆt‚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�snt‚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 t‚t t	t
 t t t	t
 t t  tƒt	t
 t t t	t
 t  dik�slt‚t td td  t d tdd�i k�s˜t‚t td td  td   ¡ tdd�tdƒ dtdƒdtdƒdik�sât‚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<t‚t td dtd   dt  d tƒtdƒ ddt ddt dik�s†t‚t td dtd   dt  d tdd�dt ddt dtdƒ dik�sÔt‚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�s6t‚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�søt‚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�sÒt‚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�	sÂt‚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�
s”t‚t t	t
 t td  dtd   dt  d tdd�i k�
sÔt‚t t	t
 t td  dtd   dt  d tdd�i k�st‚t td d td!d"�tjdtj dik�sBt‚t td d td#d"�tdt dik�slt‚t td td  tƒtjdtj dik�sšt‚t td td  td$d%„ d&�tjdik�sÈt‚t td d td!dd'�tj tjgk�sôt‚t td d td#dd'�tt gk�st‚td(dd)�\}}td || d  dt ||   d }t |td*d"�d||  dik�sxt‚t td tdd+�tjtjtjgk�s t‚t d,tdd+�g k�s¸t‚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�sØt‚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�sêt‚t td d-t  d ƒ}d.d„ |D ƒd/ }d0d
td1ƒ  }|dt|dƒ d d2t|dƒ  k�sNt‚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�sÚt‚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�sÜt‚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�sxt‚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t‚d S )BNr.   r‹   r7   rB   rE   r?   rY   rk   rC   rD   rh   i øÿÿið  i  iü  i€  éà   r]   i€  r€   rŠ   F)ZcubicsrM   Té!   é   c                 S   s   g | ]}t |Ž ‘qS r4   ©r   r_   r4   r4   r5   rL   à  s   ÿztest_roots0.<locals>.<listcomp>))r„   r½   )r.   r½   c                 S   s   g | ]}t |Ž ‘qS r4   rÇ   r_   r4   r4   r5   rL   í  s     ))r.   rE   )r.   rh   )rY   rh   ÚZ©Úfilterr   c                 S   s   | j S r”   )Zis_positive)rV   r4   r4   r5   Ú<lambda>  ó    ztest_roots0.<locals>.<lambda>)Ú	predicate)rÊ   rƒ   za, b)ÚrealÚR©rƒ   iÒ  é(   c                 S   s   g | ]}|j r|‘qS r4   r/   )r2   Úrxr4   r4   r5   rL   *  s      r   él   i2  r½   rŒ   rs   rt   é)   é   é™   é¯   é}   é-   é   é   é   r�   é   r³   )r%   r@   r;   r   r˜   Úexpandr   r   r™   rO   rS   ZNegativeOner   rQ   rR   r†   r^   r`   rT   r   r   r   r   r   r   )rU   Zr1_2Zr1_3Zx0Úx1Zx2Zx3Zx4Zx5Zr13_20Zr1_20Ús2Zr1_4Zr1_8Zr5_8ÚarÚbrrc   rÂ   rV   Z	real_rootÚcrr[   r4   r4   r5   Útest_roots0”  sÆ   D$((*48......,.44,&ÿ
           û:
ÿ
ÿ
ÿ(     ÿL,ÿÿ ÿÿ
,$ÿ
J(ÿ
0(ÿ

    ý<ÿ
    ü ( ( ( ( üD 8 8 ý@@.*.  ÿÿ
,(($(0 ( (  & & ú	 ( (  & &    ù
*P<@
ÿÿ
ÿÿÿþþ þ0   ÿD
ÿ ÿB ,*  þÿrä   c                     sª  t dƒ\} }}}‰ˆd | | |  ˆ| |  |  }ˆd | |||  |    ˆ|  | | || |   | | ||   }tt|ˆƒ ¡ ƒddgksœt‚tt|ˆƒ ¡ ƒddgksºt‚t dƒ\}}}}	}
}}|| ||  ||  |	| |
  |
 |	 | }|| | | |
||  |
  |	|	 ||   }tt|| |ƒ ¡ ƒdddgk�sVt‚ˆd dˆd   d ‰ ttˆ ƒ ¡ ƒ}tdd„ ‡ ‡fd	d
„|D ƒD ƒƒ�r¦t‚dS )z6Just test that calculating these roots does not hang. z	a,b,c,d,xr7   r.   zzz,yy,xx,zy,zx,yx,krB   rh   c                 s   s   | ]
}|V  qd S r”   r4   r1   r4   r4   r5   r6   T  s     z"test_roots_slow.<locals>.<genexpr>c                    s    g | ]}ˆ   ˆ|¡jd d�‘qS )Tra   )r^   rI   )r2   Úri©rU   r@   r4   r5   rL   T  s     z#test_roots_slow.<locals>.<listcomp>N)r   r:   r%   Úvaluesr;   Úkeysr¢   )rO   rS   rQ   rR   Úf1Úf2ÚzzÚyyZxxZzyZzxZyxÚkÚe1Úe2rÏ   r4   ræ   r5   Útest_roots_slow@  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>t‚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 s¾t‚q¾d S )Nr7   r.   TrÐ   g      ð?gê-�™—q=rE   g      @g       @rB   g     €S@g      8@g      b@g      "@)gØ‹ì~��)Àg)cÇÍÀg3!	Ž˜@g¨
¢ ¡Ø@ç»½×Ùß|Û=)r%   r@   r�   Úabsr;   r   )ÚR1ÚR2r®   Úr2rU   r4   r4   r5   Útest_roots_inexactW  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�s„t‚t| ¡ tdd�}ddddddd d!g}td"ƒ}||  | ||d
   }t|ƒt|ƒk�sàt‚t||ƒD ]8\}	}
|	 |¡}|d k	�rt	|| |
 ƒd#k �sêt‚�qêd S )$Nr°   r±   rh   rw   r²   r]   r³   r´   rD   r7   r¤   rµ   rY   rB   rk   r¶   rE   r·   r¸   r¹   rº   r»   r¼   TrÐ   g?|Y÷ˆc”ÀgOXLýzGX@gö„í'I^g@gíá|Û°n@gËÀdZw@g5Ä`e¼ˆ@gS$·Èªä“@gJúómèœ@rK   rñ   )
r   r@   r%   r;   Úevalfr   r=   r�   Úmatchrò   )r¾   r¿   rÀ   rÁ   rU   ró   rô   rK   rc   r®   rõ   rø   r4   r4   r5   Útest_roots_preprocessedi  s@    "ÿ*þ*ý*ü*û.ú&ùø
   ÿ
rù   c                   C   sž   t td dt  d dd�ddiks(t‚t td dt  d dd�ddiksPt‚t td dtd   td  dt  d dd�ddiksŒt‚ttd	d
„ ƒ d S )Nr7   r.   F©ÚstrictTrD   rY   rB   c                   S   s0   t td dtd   td  dt  d dd�S )NrD   r7   rY   rB   Trú   )r%   r@   r4   r4   r4   r5   rË   ‹  rÌ   z#test_roots_strict.<locals>.<lambda>)r%   r@   r;   r*   r(   r4   r4   r4   r5   Útest_roots_strict†  s    ((<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Ø||ksðt‚q¼t|ƒt	|ƒf|ks¼t‚q¼q®d S )NipøÿÿiÀ  i¨  r7   i�
  rB   é1   rE   T)re   rÐ   c                 S   s   g | ]\\}}}t ||ƒ‘qS r4   r   ©r2   rO   rS   Ú_r4   r4   r5   rL   •  s    
 z$test_roots_mixed.<locals>.<listcomp>c                 S   s8   g | ]0\\}}}t t|ƒt|ƒƒt t|ƒt|ƒƒ ‘qS r4   )r   r   r
   rþ   r4   r4   r5   rL   –  s    ÿc                 S   s   g | ]}|  ¡ ‘qS r4   )r÷   r_   r4   r4   r5   rL   š  s     c                 S   s   |   ¡ S r”   ©Úsort_key©r@   r4   r4   r5   rË   œ  rÌ   z"test_roots_mixed.<locals>.<lambda>rˆ   c                 S   s   |   ¡ S r”   r   r  r4   r4   r5   rË   �  rÌ   )
r@   r   r   r%   r9   r�   r0   r;   r   r
   )	rU   Ú_reZ_imZ_nrootsZ_srootsZ
_intervalsZ_rootsr3   rV   r4   r4   r5   Útest_roots_mixedŽ  s"    0ÿr  c                
   C   s’  t tdtƒƒtdtƒgkst‚t tttƒƒtttƒgks<t‚t td d tƒtd td gksbt‚t td t tƒtttƒ tttƒ gks�t‚t td d d ƒtd td td td tt tt tt tt gksÜt‚t ttd d tƒdd�ttd tƒttd tƒttd d tƒgk�s(t‚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�sŽt‚d S )
Nr.   r7   rE   rÈ   rÉ   rh   r¤   rD   ÚQ)r   r   r@   r;   rT   r   r   r4   r4   r4   r5   Útest_root_factors§  s    &.2ÿ*ÿ
4(ÿr  c               A      sÎ   d} t | tdd�‰ ttjj‡ fdd„ƒ ˆ jdd�}dd	„ |D ƒd
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIg@ksÊt‚d S )JNr€   Tr¨   c                      s   ˆ j ddd�S )NrB   rY   )rI   Zmaxsteps)r   r4   rp   r4   r5   rË   ¼  rÌ   ztest_nroots1.<locals>.<lambda>rB   rH   c                 S   s   g | ]}t |ƒ‘qS r4   ©Ústrr_   r4   r4   r5   rL   Á  s     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   r;   )rI   r%   r4   rp   r5   Útest_nroots1·  s„                                                     ÷ÿr  c                  C   sv   t td dt  d tƒ} | jdd�}dd„ |D ƒddd	d
dgksFt‚| jdd�}dd„ |D ƒdddddgksrt‚d S )NrY   rB   r.   rH   c                 S   s   g | ]}t |ƒ‘qS r4   r  r_   r4   r4   r5   rL   Ô  s     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 r4   r  r_   r4   r4   r5   rL   Ù  s     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   r;   )rc   r%   r4   r4   r5   Útest_nroots2Í  s     ÿÿ ÿÿr  c                   C   s>   t tttd td ttƒ  t t tdd�ƒƒdks:t‚d S )NrB   r7   T)Z	composite)r=   r%   r   rT   r   r@   r;   r4   r4   r4   r5   Útest_roots_compositeÞ  s    r  c                      s.   t tƒd t tƒ d ‰ tt‡ fdd„ƒ d S )NrB   r.   c                      s   t ˆ ƒS r”   rn   r4   rZ   r4   r5   rË   ä  rÌ   z"test_issue_19113.<locals>.<lambda>)r   r@   r*   r'   r4   r4   rZ   r5   Ú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:t‚d S )Nr.   rC   r�   rE   r7   rh   r¤   r   TrÐ   )r%   r   r;   r4   r4   r4   r5   Útest_issue_17454ç  s    r  c                   C   sN   t td tƒ ¡ dgkst‚t td d tƒ ¡ dtdƒd   gksJt‚d S )Nl   Ô       lúÿÿÿÔ       rB   rE   r7   )r   r@   Z
real_rootsr;   r   r4   r4   r4   r5   Útest_issue_20913ë  s    r  c               	   C   sŠ   t ddƒ} dt |  td d|    }ttttd  td d  tƒƒ|d| dtdƒt   d d|dtdƒt   d diks†t‚d S )Nr.   rB   r?   rY   r7   )r   rO   r%   r   r@   r   r   r;   )rP   rV   r4   r4   r5   Útest_issue_22768ð  s    
    ýr  )kÚ__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$   r%   Zsympy.polys.orthopolysr&   Zsympy.polys.polyerrorsr'   r(   Zsympy.polys.polyutilsr)   Zsympy.testing.pytestr*   r+   Zsympy.core.randomr,   r	  Ú	itertoolsr-   rO   rS   rQ   rR   rP   rœ   r|   r@   rT   r`   r>   rA   rX   r\   rg   rm   ro   rr   rv   r{   r   r�   r‡   r    r£   r§   rª   r¯   rÃ   rä   rð   rö   rù   rü   r  r  r  r  r  r  r  r  r  r4   r4   r4   r5   Ú<module>   sp   0"		:
0!< -
