o
    à8VaÂM  ã                   @   sÀ  d 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 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddl m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d	d
„ Z)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd„ Z0edd„ ƒZ1dd„ Z2dd„ Z3dd „ Z4d!d"„ Z5d#d$„ Z6d%d&„ Z7d'd(„ Z8d)d*„ Z9d+d,„ Z:d-d.„ Z;d/d0„ Z<d1d2„ Z=d3d4„ Z>d5d6„ Z?d7d8„ Z@d9d:„ ZAd;d<„ ZBd=d>„ ZCd?d@„ ZDedAdB„ ƒZEdCdD„ ZFdEdF„ ZGdGS )Hz@Tests for the implementation of RootOf class and related tools. é    )ÚPoly)ÚrootofÚRootOfÚCRootOfÚRootSumÚ_pure_key_dict)ÚMultivariatePolynomialErrorÚGeneratorsNeededÚPolynomialError)ÚSÚsqrtÚIÚRationalÚFloatÚLambdaÚlogÚexpÚtanÚFunctionÚEqÚsolveÚlegendre_polyÚIntegral)ÚraisesÚslow)Ú	unchanged)ÚaÚbÚxÚyÚzÚrc                  C   s  t tdƒdks	J ‚t tdƒdksJ ‚t ttjƒdksJ ‚t td dƒdks'J ‚t td dƒdks2J ‚t td dƒdks=J ‚t td dƒdksHJ ‚t td dt  d dƒdttdƒ  ks_J ‚t td dt  d dƒdttdƒ  ksvJ ‚t td dt  d dƒdttdƒ  ksJ ‚t td dt  d dƒdttdƒ  ks¤J ‚t td dt  d ddd} t| tƒd	u s¼J ‚t td dt  d ddd} t| tƒd	u sÔJ ‚t td dt  d ddd} t| tƒd	u sìJ ‚t td dt  d ddd} t| tƒd	u sJ ‚t td td  ddddksJ ‚t td td  ddddks)J ‚t td td  ddddks;J ‚t td td  ddddksMJ ‚t td td  dd	ddks_J ‚t td td  dd	ddksqJ ‚t td td  dd	ddksƒJ ‚t td td  dd	ddks•J ‚t td td t d  dƒt td t d dƒks²J ‚t td td t d  dƒdksÆJ ‚t td td t d  dƒt td t d dƒksãJ ‚t td td t d  dƒt td t d dƒks J ‚t td td t d  dƒt td t d dƒksJ ‚t td td t d  dƒt td t d dƒks:J ‚t td td t d  d
ƒdksNJ ‚t td td t d  dƒt td t d dƒkskJ ‚t td dtd   dƒd
ks}J ‚t td dtd   dƒdksJ ‚t td dtd   dƒdks¡J ‚t td dtd   dƒdks³J ‚tt	dd„ ƒ tt	dd„ ƒ tt
dd„ ƒ tt
dd„ ƒ tt
dd„ ƒ tt
dd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ t ttt tƒdƒtksJ ‚t ttd t tƒdƒttƒ ks1J ‚t ttd t tƒdƒttƒksDJ ‚t ttd t tƒdƒttddƒ ksZJ ‚t ttd  tt  dt  tdƒdksqJ ‚ttdd„ ƒ t td t d dƒjd	u s‰J ‚d S )Nr   éÿÿÿÿé   é   é   éþÿÿÿF©ZradicalsTéýÿÿÿéüÿÿÿé   c                   S   s
   t ddƒS ©Nr   ©r   © r-   r-   úD/usr/lib/python3/dist-packages/sympy/polys/tests/test_rootoftools.pyÚ<lambda>M   ó   
 z&test_CRootOf___new__.<locals>.<lambda>c                   S   s
   t ddƒS ©Nr#   r   r,   r-   r-   r-   r.   r/   N   r0   c                   S   s   t tdtƒdƒS r+   ©r   r   r   r-   r-   r-   r.   r/   P   ó    c                   S   s   t tdtƒdƒS r1   r2   r-   r-   r-   r.   r/   Q   r3   c                   S   s   t tt dƒS r+   ©r   r   r   r-   r-   r-   r.   r/   R   ó    c                   S   s   t ttƒdƒS r+   )r   r   r   r-   r-   r-   r.   r/   T   r5   c                   S   s   t td t tdƒ dƒS ©Nr%   r$   r   )r   r   r   r-   r-   r-   r.   r/   V   ó    c                   S   s   t td t t dƒS )Nr%   r   )r   r   r   r-   r-   r-   r.   r/   W   ó    c                   S   ó   t td d dƒS )Nr$   r#   r)   ©r   r   r-   r-   r-   r.   r/   Y   ó    c                   S   r9   )Nr$   r#   r(   r:   r-   r-   r-   r.   r/   Z   r;   c                   S   s   t td d dƒS ©Nr$   r#   r:   r-   r-   r-   r.   r/   [   r;   c                   S   r9   )Nr$   r#   r%   r:   r-   r-   r-   r.   r/   \   r;   c                   S   s   t td d tƒS r<   r:   r-   r-   r-   r.   r/   ]   r;   c                   S   s   t td t dt  tdƒS r6   r4   r-   r-   r-   r.   r/   g   ó    )r   r   r   ZZeror   r   Ú
isinstancer   r   r	   r
   ÚNotImplementedErrorÚ
IndexErrorÚ
ValueErrorr   r   r   Úis_commutative©r!   r-   r-   r.   Útest_CRootOf___new__   sv   ....$$$$$$$$:(::::(:$$$$(&,.&rD   c                  C   sB   t td t d dƒ} | jsJ ‚| jtƒ ksJ ‚ttdd„ ƒ d S )Nr%   r   c                   S   s    t ttd tt  d tƒdƒS ©Nr%   r#   r   )r   r   r   r   r-   r-   r-   r.   r/   t   s     z)test_CRootOf_attributes.<locals>.<lambda>)r   r   Z	is_numberÚfree_symbolsÚsetr   r?   rC   r-   r-   r.   Útest_CRootOf_attributesl   s   
rH   c                   C   s  t td t d dƒt td t d dƒkdu sJ ‚t td t d dƒt td t d dƒkdu s4J ‚t td t d dƒt td t d dƒkdu sNJ ‚t td t d dƒt td t d dƒkdu shJ ‚t td t d dƒt td t d dƒkdu s‚J ‚t td t d dƒt td t d dƒkdu sœJ ‚t td t d dƒt td t d dƒkdu s¶J ‚t td t d dƒt td t d dƒkdu sÐJ ‚t td t d dƒt td t d dƒkdu sêJ ‚t td t d dƒt td t d dƒkdu sJ ‚d S ©Nr%   r   Tr#   Fr$   r4   r-   r-   r-   r.   Útest_CRootOf___eq__x   s   444444444:rJ   c                     sn  t dƒ} td t d ‰ tˆ dƒ}tˆ dƒ}t||ƒtju s J ‚t||ƒtju s*J ‚tt|tƒs2J ‚t|dƒtju s<J ‚t|tjƒtju sGJ ‚t|t	ƒtju sQJ ‚tt|| dƒƒs[J ‚t
ˆ ƒ‰ˆD ]}|jrpt||ƒtju spJ ‚qatˆ dƒ}ˆD ]}|jr‡t||ƒtju s‡J ‚qxtd t d ‰ t
ˆ ƒ‰‡ ‡fdd„tdƒD ƒg d¢ks¦J ‚ttˆ dƒdtj ƒd	ksµJ ‚d S )
NÚfr%   r$   r#   r   c                    s&   g | ]}ˆD ]
}t tˆ |ƒ|ƒ‘qqS r-   )r   r   )Ú.0ÚiÚj©ÚeqZsolr-   r.   Ú
<listcomp>œ   ó   & z,test_CRootOf___eval_Eq__.<locals>.<listcomp>)	FFTFTFTFFF)r   r   r   r   r   ZfalseÚtruer   ZInfinityr   r   Úis_realÚrangeZImaginaryUnit)rK   r!   Úr1Úsr-   rO   r.   Útest_CRootOf___eval_Eq__†   s2   

€
€$"rX   c                   C   sd   t td t d dƒjdu sJ ‚t td t d dƒjdu s J ‚t td t d dƒjdu s0J ‚d S rI   )r   r   rT   r-   r-   r-   r.   Útest_CRootOf_is_real¡   s     $rY   c                   C   s$   t td t d dƒjdu sJ ‚d S )Nr%   r   T)r   r   Z
is_complexr-   r-   r-   r.   Útest_CRootOf_is_complex§   s   $rZ   c                   C   s<   t td t d dƒ tt¡t td t d dƒksJ ‚d S rE   )r   r   Úsubsr   r-   r-   r-   r.   Útest_CRootOf_subs«   s   <r\   c                   C   sL   t td t d dƒ t¡dksJ ‚t td t d dƒ t¡dks$J ‚d S rE   )r   r   Údiffr   r-   r-   r-   r.   Útest_CRootOf_diff¯   s   $(r^   c                  C   s¾  t td t d dƒjdd} |  tdƒ¡sJ ‚t td t d dƒjdd ¡ \}}| tdƒ¡s4J ‚| tdƒ ¡s>J ‚t td t d d	ƒjdd ¡ \}}| tdƒ¡sZJ ‚| tdƒ¡scJ ‚td
tdd}dd„ | ¡ D ƒ}|g d¢ks{J ‚t td dt  d dƒjdd}| tdƒ¡s•J ‚t td dt  d dƒjdd ¡ \}}| tdƒ¡s³J ‚| tdƒ¡s¼J ‚t td dt  d d	ƒjdd ¡ \}}| tdƒ¡sÚJ ‚| tdƒ¡sãJ ‚t td dt  d dƒjdd ¡ \}}| tdƒ¡sJ ‚| tdƒ¡sJ ‚t td dt  d d
ƒjdd ¡ \}}| tdƒ¡s+J ‚| tdƒ¡s5J ‚tt td d	td
   td  d dƒ 	d¡ƒdksRJ ‚dtd  dtd   dtd    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 |dƒ 	d	¡ ¡ \}}t |d	ƒ 	d	¡ ¡ \}}	||ks³J ‚||	k sºJ ‚||	 ksÂJ ‚t td-tƒd$ƒ}
|
 	d	¡|
 	d.¡ 	d	¡ksÚJ ‚t td	 d dd/d0}t td	 d dd/d0}| 	d
¡d1t
 ksüJ ‚| 	d
¡d2t
 ksJ ‚tt d
td  d3td   dtd	   d$ dƒ 	d¡ƒd4ks)J ‚td5td&  d6td
   d7td	   d dƒ}| d	¡sHJ ‚tttd3 d8td9   d:td   d;td   d<td"   d=td&   d>td
   d?td	   d@ dƒ 	d	¡ƒdAks…J ‚tttd
 dtd	   d dƒ 	d	¡ƒdBk sžJ ‚dCd„ tdƒD ƒ}
|
d  ¡  |
D ]-}| ¡ }| 	d	¡ || ¡ ksÃJ ‚| ¡  || ¡ ksÐJ ‚||j|jŽ ksÛJ ‚q¯d S )DNr%   r   é   ©Únz-1.2134116627622296341r#   z0.60670583138111481707z1.45061224918844152650r$   r*   T©Zpolysc                 S   ó   g | ]	}t | d ¡ƒ‘qS ©é   ©Ústrra   ©rL   r!   r-   r-   r.   rQ   Å   r7   z&test_CRootOf_evalf.<locals>.<listcomp>©z-0.86113631159405258z-0.33998104358485626z0.33998104358485626z0.86113631159405258é   é   z-1.84208596619025438271z-0.351854240827371999559z-1.709561043370328882010z+1.709561043370328882010z+1.272897223922499190910z-0.719798681483861386681z+0.719798681483861386681l       @ z147.iñ é   iÌÝ: é
   iµÑ é	   izgñé   i`jHé   i lšé   i èêi@äB i <¶ i ü i - i   é@   éd   Fr'   g      ð¿g      ð?é   z-0.976i`b iÀ  éT   é    é   iü  i@  iVš  i  i\‡ i€ã i‘e z-3.4*Igš™™™™™Ù?c                 S   s"   g | ]}t td  t d  |ƒ‘qS )r%   )r   r   ©rL   rM   r-   r-   r.   rQ     ó   " )r   r   ÚevalfÚ
epsilon_eqr   Zas_real_imagr   Ú
real_rootsrg   ra   r   r   Z_eval_evalfr   ÚabsrU   Ú_resetÚ_get_intervalÚfuncÚargs)ÚrealÚreZimÚpÚrootsrP   r   r   ÚcÚdr!   Úr0rV   ZrirM   r-   r-   r.   Útest_CRootOf_evalf´   sª   &&"****:.
ÿ
ÿ
ÿ
ÿ
þ
þþþ B..
ÿ
ÿ
ÿ
ÿþþþ
þ2
úr‰   c                  C   sd   t td dt  d dƒ} |  ¡  |  ¡ }t td dt  d dƒ} |  ¡  |  ¡ }||ks0J ‚d S )Nrj   rk   r#   )r   r   ra   r   )r!   r   r   r-   r-   r.   Útest_CRootOf_evalf_caching_bug  s   rŠ   c                  C   sà   t td t d ƒ ¡ ttd td  d dƒgksJ ‚t td t d ƒjddttd td  d dƒgks:J ‚t dtd	  d
td   dtd   dt  d tdd} t | ¡tdƒtdƒtdƒtdƒd gksnJ ‚d S )Nrj   r#   r%   r$   r   Fr'   r(   r*   rm   rk   rq   ZZZ)Údomainr"   )r   r   r|   r   r   r   ©r„   r-   r-   r.   Útest_CRootOf_real_roots  s   8ÿ:2r   c                	   C   s8  t td t d ƒ ¡ ttd td  d dƒtddƒtdƒt d  tddƒtdƒt d  ttd td  d dƒttd td  d dƒgksLJ ‚t td t d ƒjddttd td  d dƒttd t d dddttd t d dddttd td  d dƒttd td  d dƒgksšJ ‚d S )	Nrj   r#   r%   r$   r   r"   Fr'   )r   r   Ú	all_rootsr   r   r   r   r-   r-   r-   r.   Útest_CRootOf_all_roots$  s   
ûûr   c                  C   sZ   t dtdd} dd„ |  ¡ D ƒ}|D ]	}t|tƒsJ ‚qdd„ |D ƒ}|g d¢ks+J ‚d S )Nr*   Trb   c                 S   ó   g | ]}|j d d‘qS )é   r`   ©Zeval_rationalrh   r-   r-   r.   rQ   8  ó    z.test_CRootOf_eval_rational.<locals>.<listcomp>c                 S   rc   rd   rf   )rL   Úrootr-   r-   r.   rQ   ;  r7   ri   )r   r   r|   r>   r   )r„   r…   r”   r-   r-   r.   Útest_CRootOf_eval_rational6  s   r•   c                  C   s¾  t d t  d } ttttt  ƒƒ}t| |ƒ}t|tƒdu sJ ‚t| d |ƒdt| |ƒ ks/J ‚tt d | d  |ƒtdt  ƒdt| |ƒ  ksIJ ‚ttt d | d  |ƒƒttdt  ƒdt| |ƒ  ƒksgJ ‚ttdd„ ƒ tt	dd„ ƒ t| t
ƒt| tt t
t ƒƒƒks†J ‚t| tƒt| tt tt ƒƒƒks—J ‚tt| dd	tƒdu s¤J ‚t| ƒd
ks¬J ‚t| tt t ƒƒd
ks¸J ‚t| tt t d ƒƒdksÆJ ‚t| tt dƒƒdksÒJ ‚t| tt dƒƒdksÞJ ‚t| dd	jdu séJ ‚t| tt dt t d   ƒƒtddƒksþJ ‚t| tt tt t d   ƒƒtddƒt ksJ ‚tt d d tt dt d  ƒt ƒdks,J ‚tt d t tt dt d  ƒt ƒdt ksDJ ‚tt d d tt tt d  ƒt ƒdt ks\J ‚tt d t tt tt d  ƒt ƒdt t ksvJ ‚tt d d tt t
t ƒƒddt
dƒt
dƒ ks‘J ‚tt d tt   td  tt ƒtt d t  d tt ttt  ƒƒƒks¶J ‚ttd t d  tt   d tt ƒtt d t  d tt tt t ƒƒƒksÝJ ‚d S )Nr%   Tr$   rp   c                   S   s   t td t t ƒS ©Nr%   )r   r   r   r-   r-   r-   r.   r/   R  ó    z&test_RootSum___new__.<locals>.<lambda>c                   S   s   t td d dd„ ƒS )Nr$   r%   c                 S   s   | S ©Nr-   )r   r-   r-   r.   r/   S  s    z8test_RootSum___new__.<locals>.<lambda>.<locals>.<lambda>)r   r   r-   r-   r-   r.   r/   S  r8   F)Úautor   r&   r#   rq   rl   )Z	quadraticr"   )r   r   r!   r   r   r>   Úhashr   r   rA   r   rB   r   r   r    r   r   )rK   ÚgrW   r-   r-   r.   Útest_RootSum___new__D  sF   
 4<""*0,004ÿ
ÿ"
ÿ""ÿrœ   c                   C   s”   t td t d ttttƒƒƒjtƒ ksJ ‚t td t d ttttt ƒƒƒjthks.J ‚t td t t ttttt ƒƒtƒjtthksHJ ‚d S r–   )	r   r   r   r!   r   rF   rG   r   r   r-   r-   r-   r.   Útest_RootSum_free_symbolsu  s   ,0 ÿÿr   c                  C   sâ   t tttƒƒ} ttd t d | ƒttd t d | ƒkdu s!J ‚ttd t d | ƒttd t d | ƒkdu s;J ‚ttd t d | ƒttd t d | ƒkdu sUJ ‚ttd t d | ƒttd t d | ƒkdu soJ ‚d S )Nr%   r#   Tr$   F)r   r   r   r   r   ©rK   r-   r-   r.   Útest_RootSum___eq__|  s
   4448rŸ   c                  C   s–   t td d tƒ} t| t ƒdu sJ ‚|  ¡ tt ƒttƒ ks!J ‚t td t ttƒ} t| t ƒdu s4J ‚|  ¡ ttt ƒ ƒttt ƒƒ ksIJ ‚d S )Nr$   r#   T)r   r   r   r>   Zdoitr   r   r   ©Zrsr-   r-   r.   Útest_RootSum_doit†  s   .r¡   c                  C   sr   t td d tƒ} | jddd tdƒ¡sJ ‚| jddd tdƒ¡s%J ‚t td t ttƒ} |  ¡ | ks7J ‚d S )	Nr$   r#   r_   T)ra   Zchopz1.0806046117362794348é   z1.08060461173628)r   r   r   rz   r{   r   r   r    r-   r-   r.   Útest_RootSum_evalf’  s
   r£   c                  C   sZ   t d t  d } ttttt  ƒƒ}tttttt  ƒ ƒ}t| |ƒ t ¡t| |ƒks+J ‚d S r–   )r   r   r!   r   r   r]   )rK   r›   Úhr-   r-   r.   Útest_RootSum_diff  s   "r¥   c                  C   sˆ   t d t  d } ttttt  ƒƒ}td t d }ttttt ƒƒ}t| |ƒ td¡t| |ƒks2J ‚t| |ƒ t t¡t||ƒksBJ ‚d S )Nr%   r#   )r   r   r!   r   r   r   r[   )rK   r›   ÚFÚGr-   r-   r.   Útest_RootSum_subs¦  s    $r¨   c               	   C   s"  t td t d ttttt  ƒƒdt d td t d  ks"J ‚dtd  dtd   dt  d } ttttd	td  d d
td  d  dtd  d  ttddƒ  d ttƒ ƒ ƒ}t | |ƒ t¡dtdt ƒ dttƒ  d ttƒ tdt ƒtdt ƒ d   d ksJ ‚d S )Nrj   r#   r*   é¡   r%   és   r$   é   iËòÿÿi5  iq  é}   rq   rp   )r   r    r   r   r   r   r   r]   )rK   r›   r-   r-   r.   Útest_RootSum_rational±  s   ÿÿ$HÿBÿÿr­   c                  C   s–   t d t d t d t d  } tt dtt ƒ d ƒ}tt tt ƒƒ}tt d t |t ƒ}tt d t |t ƒ}t| |t ƒ ¡ d| d| dgksIJ ‚d S )	Nr%   r$   r*   rj   rp   rm   r¢   é~   )r   r   r   r   r   r   Zas_ordered_terms)rK   r›   r¤   rˆ   rV   r-   r-   r.   Útest_RootSum_independent½  s    *r¯   c                  C   sD   t td t d tƒ ¡ } dd„ tdƒD ƒ}t| ƒt|ƒks J ‚d S )Nrq   r#   c                 S   s"   g | ]}t td  t d |ƒ‘qS )rq   r#   r:   rx   r-   r-   r.   rQ   Ë  ry   z#test_issue_7876.<locals>.<listcomp>)r   r   rŽ   rU   Ú	frozenset)Úl1Úl2r-   r-   r.   Útest_issue_7876É  s   r³   c                  C   sT   t dtd  d ƒ} t|  ¡ ƒdksJ ‚t dtd  d ƒ} t|  ¡ ƒdks(J ‚d S )Nrp   ro   rn   rm   )r   r   ÚlenrŽ   rž   r-   r-   r.   Útest_issue_8316Ï  s   rµ   c                     sü  ddl m‰  ‡ fdd„} | ttd dtd   d ƒƒdks J ‚| ttd ƒƒdks,J ‚| tdgd	 d
g tƒƒdks=J ‚| ttd	 d ƒƒdksKJ ‚| ttd d ƒƒdksYJ ‚| ttd d ƒƒdksgJ ‚| ttd d ƒƒdksuJ ‚| ttd d ƒƒdksƒJ ‚| tg d¢tƒƒdksJ ‚| ttd	 t d ƒƒdks J ‚| ttd t d ƒƒdks°J ‚dd„ }| |d
ddƒƒdksÀJ ‚| |d
ddƒƒdksÌJ ‚| |dddƒƒdksØJ ‚| |dddƒƒdksäJ ‚| |d
ddƒƒdksðJ ‚| |d
ddƒƒdksüJ ‚d S )Nr   ©Ú_imag_count_of_factorc                    s   t ‡ fdd„|  ¡ d D ƒƒS )Nc                    s   g | ]
\}}ˆ |ƒ| ‘qS r-   r-   )rL   rK   Úmr¶   r-   r.   rQ   Ù  r=   z8test__imag_count.<locals>.imag_count.<locals>.<listcomp>r#   )ÚsumZfactor_listrŒ   r¶   r-   r.   Ú
imag_countØ  s   
ÿz$test__imag_count.<locals>.imag_countrq   rm   r$   r#   r%   r"   r*   )r#   r$   r%   c                 S   s"   t t|  t|   tt| ¡tƒS r˜   )r   r   r[   )rV   Zr2r„   r-   r-   r.   Úqæ  s   "ztest__imag_count.<locals>.qr&   )Úsympy.polys.rootoftoolsr·   r   r   )rº   r»   r-   r¶   r.   Útest__imag_countÖ  s(   ("  r½   c                  C   sD   t td dtd   d dƒ} |  ¡ }| jr|j|j dks J ‚d S )Nr*   r$   r#   r   )r   r   r   Zis_imaginaryZaxZbx)r!   rM   r-   r-   r.   Útest_RootOf_is_imaginaryð  s   r¾   c                  C   sP   t d dt   d } t| dƒ ¡ }t| dƒ ¡ }| |¡sJ ‚| |¡s&J ‚d S )Nr%   rj   r#   r   )r   r   r   Zis_disjoint)rP   ZirÚiir-   r-   r.   Útest_is_disjointö  s
   rÀ   c                      sŠ   t ƒ ‰tˆv du sJ ‚dˆv du sJ ‚dˆt< tˆv sJ ‚tˆv s#J ‚ˆt dks+J ‚tt‡fdd„ƒ ‡fdd„‰ tt‡ fdd„ƒ d S )NFr#   c                      s   ˆ d S ©Nr#   r-   r-   rŒ   r-   r.   r/     ó    z$test_pure_key_dict.<locals>.<lambda>c                    s   dˆ | < d S )Nr$   r-   )ÚkrŒ   r-   r.   Údont  s   z test_pure_key_dict.<locals>.dontc                      s   ˆ dƒS rÁ   r-   r-   )rÄ   r-   r.   r/   	  rÂ   )ÚDr   r   r   ÚKeyErrorrA   r-   r-   )rÄ   r„   r.   Útest_pure_key_dictþ  s   rÇ   c                      sÖ  t  ¡  dd„ tdƒD ƒ‰dd„ ˆD ƒtddƒtddƒttd	dƒ  tddƒttd	dƒ  gks2J ‚ˆd
  ¡  dd„ ˆD ƒtddƒtddƒttddƒ  tddƒttddƒ  gks]J ‚tˆd
  ¡ jƒdk sjJ ‚tˆd  ¡ jƒdk swJ ‚tˆd  ¡ j	ƒdk s„J ‚tˆd  ¡ jƒdk s‘J ‚tˆd  ¡ j	ƒdk sžJ ‚ˆd
  ¡  dd„ ˆD ƒtddƒtddƒttddƒ  tddƒttddƒ  gksÉJ ‚tˆd
  ¡ jƒdk sÖJ ‚tˆd  ¡ jƒdk sãJ ‚tˆd  ¡ j	ƒdk sðJ ‚tˆd  ¡ jƒdk sýJ ‚tˆd  ¡ j	ƒdk sJ ‚ˆd
  ¡  dd„ ˆD ƒtddƒtddƒttddƒ  tddƒttddƒ  gks7J ‚t
tˆd
  ¡ jƒˆd
  ƒdk sKJ ‚t
tˆd  ¡ jƒˆd  ƒ ¡ dk saJ ‚t
tˆd  ¡ j	ƒˆd  ƒ ¡ dk swJ ‚t
tˆd  ¡ jƒˆd  ƒ ¡ dk sJ ‚t
tˆd  ¡ j	ƒˆd  ƒ ¡ dk s£J ‚ˆd
  ¡  dd„ ˆD ƒtddƒtd d!ƒttd"d!ƒ  td d!ƒttd"d!ƒ  gksÏJ ‚t
tˆd
  ¡ jƒˆd
  ƒd#k sãJ ‚t
tˆd  ¡ jƒˆd  ƒ ¡ d#k sùJ ‚t
tˆd  ¡ j	ƒˆd  ƒ ¡ d#k sJ ‚t
tˆd  ¡ jƒˆd  ƒ ¡ d#k s%J ‚t
tˆd  ¡ j	ƒˆd  ƒ ¡ d#k s;J ‚ˆd
  ¡  d$d„ ˆD ƒ‰ d%d„ ˆ D ƒg d&¢ksVJ ‚t‡ ‡fd'd(„ttˆ ƒƒD ƒƒsiJ ‚d S ))Nc                 S   s&   g | ]}t td  dt  d |ƒ‘qS )r%   rm   r#   )r   r   rx   r-   r-   r.   rQ     rR   z-test_eval_approx_relative.<locals>.<listcomp>r%   c                 S   ó   g | ]}|  d ¡‘qS )çš™™™™™¹?r’   rx   r-   r-   r.   rQ     r8   iëÿÿÿéÜ   r¢   é   i%  r   c                 S   s   g | ]}|  d d¡‘qS )rÉ   ç-Cëâ6?r’   rx   r-   r-   r.   rQ     r“   iË  i   iµS i   rÉ   r#   rÌ   r$   c                 S   s   g | ]}|  d d ¡‘qS )rÌ   r’   rx   r-   r-   r.   rQ     r“   i/øÿÿi4N  i‘  c                 S   r   )r$   r`   r’   rx   r-   r-   r.   rQ   (  r“   i'êüÿiVâ i3™ i    i;e ç{®Gáz„?c                 S   r   )r%   r`   r’   rx   r-   r-   r.   rQ   1  r“   i“ i   i'±Sgü©ñÒMbP?c                 S   rÈ   )r$   )Zeval_approxrx   r-   r-   r.   rQ   ;  r8   c                 S   s   g | ]}t |ƒ‘qS r-   )rg   rx   r-   r-   r.   rQ   <  r—   )z-0.10z0.05 - 3.2*Iz0.05 + 3.2*Ic                 3   s4    | ]}t ˆ | ˆ|  ˆ|   ¡ ƒd k V  qdS )rÍ   N)r}   ra   rx   ©r   Útr-   r.   Ú	<genexpr>>  s   €2 z,test_eval_approx_relative.<locals>.<genexpr>)r   Zclear_cacherU   r   r   r~   r   r   ZdxZdyr}   ra   Úallr´   r-   r-   rÎ   r.   Útest_eval_approx_relative  sd   
þ
þ
þþ(,,,,þ(,,,,*rÒ   c                  C   s:   t td t d dƒ} tttdtfƒ}tt| |ƒsJ ‚d S )Nrj   r#   r   )r   r   r   r   r   r   )r!   r„   r-   r-   r.   Útest_issue_15920A  s   rÓ   c                  C   st   t d t  d } tt| ƒ ¡ ƒdksJ ‚tt|  t tt ƒ¡ƒ ¡ ƒdks&J ‚tt|  t ttƒ¡ƒ ¡ ƒdks8J ‚d S )Nr%   r#   z[CRootOf(x**3 - x + 1, 0)])r   rg   r   r|   r[   r   r   )rP   r-   r-   r.   Útest_issue_19113G  s   ÿÿrÔ   N)HÚ__doc__Zsympy.polys.polytoolsr   r¼   r   r   r   r   r   rÅ   Zsympy.polys.polyerrorsr   r	   r
   Zsympyr   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   Zsympy.core.exprr   Z	sympy.abcr   r   r   r   r    r!   rD   rH   rJ   rX   rY   rZ   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.   Ú<module>   sR    @ T
[

1
	
4