a
    kº”hv[  ã                   @   s2  d Z ddlmZ ddlm  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 ddlmZmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$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/m0Z0m1Z1m2Z2m3Z3 dd„ Z4dd„ Z5dd„ Z6dd„ Z7dd„ Z8dd„ Z9dd „ Z:d!d"„ Z;d#d$„ Z<e*d%d&„ ƒZ=d'd(„ Z>d)d*„ Z?d+d,„ Z@d-d.„ ZAd/d0„ ZBd1d2„ ZCd3d4„ ZDd5d6„ ZEd7d8„ ZFd9d:„ ZGd;d<„ ZHd=d>„ ZId?d@„ ZJdAdB„ ZKdCdD„ ZLdEdF„ ZMdGdH„ ZNdIdJ„ ZOdKdL„ ZPdMdN„ ZQdOdP„ ZRe*dQdR„ ƒZSdSdT„ ZTdUdV„ ZUdS )Wz@Tests for the implementation of RootOf class and related tools. é    )ÚPolyN)ÚrootofÚRootOfÚCRootOfÚRootSumÚ_pure_key_dict)ÚMultivariatePolynomialErrorÚGeneratorsNeededÚPolynomialError)ÚFunctionÚLambda)ÚFloatÚIÚRational)ÚEq)ÚS)ÚexpÚlog)Úsqrt)Útan)ÚIntegral)Úlegendre_poly)Úsolve)Ú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s8J ‚t td dƒdksNJ ‚t td dƒdksdJ ‚t td dƒdkszJ ‚t td dƒ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ttdƒ  ksìJ ‚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sLJ ‚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s8J ‚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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s4J ‚t td td t d  dƒt td t d dƒksnJ ‚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sDJ ‚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 dtd   dƒd
ksJ ‚t td dtd   dƒdks(J ‚t td dtd   dƒdksLJ ‚t td dtd   dƒdkspJ ‚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sDJ ‚t ttd t tƒdƒttƒ kslJ ‚t ttd t tƒdƒttƒks’J ‚t ttd t tƒdƒttddƒ ks¾J ‚t ttd  tt  dt  tdƒdksìJ ‚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-   úP/var/www/auris/lib/python3.9/site-packages/sympy/polys/tests/test_rootoftools.pyÚ<lambda>U   ó    z&test_CRootOf___new__.<locals>.<lambda>c                   S   s
   t ddƒS ©Nr#   r   r,   r-   r-   r-   r.   r/   V   r0   c                   S   s   t tdtƒdƒS r+   ©r   r   r   r-   r-   r-   r.   r/   X   r0   c                   S   s   t tdtƒdƒS r1   r2   r-   r-   r-   r.   r/   Y   r0   c                   S   s   t tt dƒS r+   ©r   r   r   r-   r-   r-   r.   r/   Z   r0   c                   S   s   t ttƒdƒS r+   )r   r   r   r-   r-   r-   r.   r/   \   r0   c                   S   s   t td t tdƒ dƒS ©Nr%   r$   r   )r   r   r   r-   r-   r-   r.   r/   ^   r0   c                   S   s   t td t t dƒS )Nr%   r   )r   r   r   r-   r-   r-   r.   r/   _   r0   c                   S   s   t td d dƒS )Nr$   r#   r)   ©r   r   r-   r-   r-   r.   r/   a   r0   c                   S   s   t td d dƒS )Nr$   r#   r(   r5   r-   r-   r-   r.   r/   b   r0   c                   S   s   t td d dƒS ©Nr$   r#   r5   r-   r-   r-   r.   r/   c   r0   c                   S   s   t td d dƒS )Nr$   r#   r%   r5   r-   r-   r-   r.   r/   d   r0   c                   S   s   t td d tƒS r6   r5   r-   r-   r-   r.   r/   e   r0   c                   S   s   t td t dt  tdƒS r4   r3   r-   r-   r-   r.   r/   o   r0   )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    ..00$$$$$$$$:(::::(:$$$$(&,.r=   c                  C   sB   t td t d dƒ} | js J ‚| jtƒ ks0J ‚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/   |   r0   z)test_CRootOf_attributes.<locals>.<lambda>)r   r   Z	is_numberÚfree_symbolsÚsetr   r8   r<   r-   r-   r.   Útest_CRootOf_attributest   s    
rA   c                   C   s  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 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 srJ ‚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$   r3   r-   r-   r-   r.   Útest_CRootOf___eq__   s    444466666rC   c                     st  t dƒ} td t d ‰ tˆ dƒ}tˆ dƒ}t||ƒtju s@J ‚t||ƒtju sTJ ‚tt|tƒsdJ ‚t|dƒtju sxJ ‚t|tjƒtju sŽJ ‚t|t	ƒtju s¢J ‚tt|| dƒƒs¶J ‚t
ˆ ƒ‰ˆD ]}|jrÂt||ƒtju sÂJ ‚qÂtˆ dƒ}ˆD ]}|jrðt||ƒtju sðJ ‚qðtd t d ‰ t
ˆ ƒ‰‡ ‡fdd„tdƒD ƒ d¡dksPJ ‚ttˆ dƒdtj ƒd	kspJ ‚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>£   r0   z,test_CRootOf___eval_Eq__.<locals>.<listcomp>TF)r   r   r   r   r   ÚfalseÚtruer   ÚInfinityr   r   Úis_realÚrangeÚcountZImaginaryUnit)rD   r!   Úr1Úsr-   rH   r.   Útest_CRootOf___eval_Eq__   s6    


ÿÿ
rS   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 s`J ‚d S rB   )r   r   rN   r-   r-   r-   r.   Útest_CRootOf_is_real¨   s      rT   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    rU   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 s`J ‚d S )Nr%   r   Tr#   r$   )r   r   Zis_algebraicr-   r-   r-   r.   Útest_CRootOf_is_algebraic²   s      rV   c                   C   s<   t td t d dƒ tt¡t td t d dƒks8J ‚d S r>   )r   r   Úsubsr   r-   r-   r-   r.   Útest_CRootOf_subs¸   s    rX   c                   C   sL   t td t d dƒ t¡dks$J ‚t td t d dƒ t¡dksHJ ‚d S r>   )r   r   Údiffr   r-   r-   r-   r.   Útest_CRootOf_diff¼   s    $rZ   c                  C   sÔ  t td t d dƒjdd} |  tdƒ¡s0J ‚t td t d dƒjdd ¡ \}}| tdƒ¡shJ ‚| tdƒ ¡s|J ‚t td t d d	ƒjdd ¡ \}}| tdƒ¡s´J ‚| tdƒ¡sÆJ ‚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ƒ¡sjJ ‚| 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ƒ¡stJ ‚tt td d	td
   td  d dƒ 	d¡ƒdks®J ‚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spJ ‚||	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
¡td1d
ƒt
 ksJ ‚| 	d
¡td2d
ƒt
 ks&J ‚tt d
td  d3td   dtd	   d$ dƒ 	d¡ƒd4kshJ ‚td5td&  d6td
   d7td	   d dƒ}| d	¡s¦J ‚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 sRJ ‚dCd„ tdƒD ƒ}
|
d  ¡  |
D ]Z}| ¡ }| 	d	¡ || ¡ ksœJ ‚| ¡  || ¡ ks¶J ‚||j|jŽ kstJ ‚qtd S )DNr%   r   é   ©Únz-1.2134116627622296341r#   z0.60670583138111481707z1.45061224918844152650r$   r*   T©Úpolysc                 S   s   g | ]}t | d ¡ƒ‘qS ©é   ©Ústrr]   ©rE   r!   r-   r-   r.   rJ   Ñ   r0   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   ©rE   rF   r-   r-   r.   rJ     r0   )r   r   ÚevalfÚ
epsilon_eqr   Zas_real_imagr   Ú
real_rootsrc   r]   r   r   Z_eval_evalfr   ÚabsrO   Ú_resetÚ_get_intervalÚfuncÚargs)ÚrealÚreZimÚpÚrootsrI   r   r   ÚcÚdr!   Úr0rQ   ÚrirF   r-   r-   r.   Útest_CRootOf_evalfÀ   s¨    &&"****:.
ÿ
ÿ
ÿ
ÿ
þ
þþþ B..
ÿ
ÿ
ÿ
ÿþþþþ
2
r…   c                  C   sN   t d  d } t| dƒ}|j ¡ t d d ks2J ‚| ¡  |jtjv sJJ ‚d S )Nr$   r   )r   r   ÚpolyZas_exprr]   ÚrootoftoolsÚ_reals_cache©rD   r!   r-   r-   r.   Útest_issue_24978  s
    
rŠ   c                  C   sd   t td dt  d dƒ} |  ¡  |  ¡ }t td dt  d dƒ} |  ¡  |  ¡ }||ks`J ‚d S )Nrf   rg   r#   )r   r   r]   rz   )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s8J ‚t td t d ƒjddttd td  d dƒgkstJ ‚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sÜJ ‚t td tdƒtd   d tdd ¡ ttd dtd	   dtd   d dƒgks8J ‚t td tdƒtd   d tdd ¡ ttd
 dtd   dtd   d dƒgks”J ‚ttd td  d dƒ}t td |t  d tdd ¡ ttd dtd   td  d
td   dtd   d
td
   dtd   dtd   td  d dƒgksBJ ‚t td ttdƒ d  tdd ¡ tdƒtdƒtdƒgks„J ‚d S )Nrf   r#   r%   r$   r   Fr'   r(   r*   ri   rg   rm   ZZZ)Údomainr"   T©Ú	extensioné   r[   ra   é   rl   )r   r   rw   r   r   r   r   r   )r   r!   r-   r-   r.   Útest_CRootOf_real_roots2  sB    8ÿ:.((ÿ((ÿ 4
ÿ
ÿ
ÿÿÿÿÿÿ
$ÿÿr‘   c                	   C   sŒ  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s˜J ‚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s6J ‚t td tdƒtd   d td	d
 ¡ ttd dtd   dtd   d dƒttd dtd   dtd   d dƒttd dtd   dtd   d dƒgksâJ ‚t td ttdƒ d  tt  tt  td	d
 ¡ tdƒtdƒtdƒt tgks:J ‚t td td  td	d
 ¡ tdƒd td  tdƒ d td  gksˆJ ‚d S )Nrf   r#   r%   r$   r   r"   Fr'   Tr   rm   r*   )r   r   Ú	all_rootsr   r   r   r   r   r-   r-   r-   r.   Útest_CRootOf_all_rootsO  s:    û
û	((((ýÿ
4ÿÿ
þÿr“   c                  C   sZ   t dtdd} dd„ |  ¡ D ƒ}|D ]}t|tƒs$J ‚q$dd„ |D ƒ}|g d¢ksVJ ‚d S )Nr*   Tr^   c                 S   s   g | ]}|j d d‘qS )é   r\   ©Zeval_rationalrd   r-   r-   r.   rJ   w  r0   z.test_CRootOf_eval_rational.<locals>.<listcomp>c                 S   s   g | ]}t | d ¡ƒ‘qS r`   rb   )rE   Úrootr-   r-   r.   rJ   z  r0   re   )r   r   rw   r7   r   )r   r€   r–   r-   r-   r.   Útest_CRootOf_eval_rationalu  s    r—   c                  C   sX  t td dt  d ƒ} t ¡  t| dƒ}|jtjvs:J ‚|jtjvsJJ ‚| ¡  |jtjv sbJ ‚|jtjvsrJ ‚t ¡  t| dƒ}|jtjvs”J ‚|jtjvs¤J ‚| ¡  |jtjv s¼J ‚|jtjv sÌJ ‚t td d td d  ƒ} t ¡  t| dƒ}|jtjv sJ ‚|jtjvsJ ‚t ¡  t| dƒ}|jtjv sBJ ‚|jtjv sTJ ‚d S )Nr%   r$   r   r#   )	r   r   r   Úclear_cacher†   r‡   rˆ   Z_complexes_cacheru   r‰   r-   r-   r.   Útest_CRootOf_lazyƒ  s0    



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s’J ‚ttt d | d  |ƒƒttdt  ƒdt| |ƒ  ƒksÎJ ‚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s2J ‚tt| dd	tƒdu sNJ ‚t| ƒd
ks`J ‚t| tt t ƒƒd
kszJ ‚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slJ ‚tt d t tt dt d  ƒt ƒdt ksœJ ‚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s J ‚tt d d tt t
t ƒƒddt
dƒt
dƒ ks6J ‚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$   rl   c                   S   s   t td t t ƒS ©Nr%   )r   r   r   r-   r-   r-   r.   r/   ½  r0   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/   ¾  r0   z8test_RootSum___new__.<locals>.<lambda>.<locals>.<lambda>)r   r   r-   r-   r-   r.   r/   ¾  r0   F)Úautor   r&   r#   rm   rh   )Z	quadraticr"   )r   r   r!   r   r   r7   Úhashr   r   r:   r   r;   r   r   r    r   r   )rD   ÚgrR   r-   r-   r.   Útest_RootSum___new__¯  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sJ ‚d S rš   )	r   r   r   r!   r   r?   r@   r   r   r-   r-   r-   r.   Útest_RootSum_free_symbolsà  s    ,0 ÿÿr    c                  C   sâ   t tttƒƒ} ttd t d | ƒttd t d | ƒkdu sBJ ‚ttd t d | ƒttd t d | ƒkdu svJ ‚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 ‚d S )Nr%   r#   Tr$   F)r   r   r   r   r   ©rD   r-   r-   r.   Útest_RootSum___eq__ç  s
    444r¢   c                  C   s–   t td d tƒ} t| t ƒdu s$J ‚|  ¡ tt ƒttƒ ksBJ ‚t td t ttƒ} t| t ƒdu shJ ‚|  ¡ ttt ƒ ƒttt ƒƒ ks’J ‚d S )Nr$   r#   T)r   r   r   r7   Zdoitr   r   r   ©Ú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ƒ¡sJJ ‚t td t ttƒ} |  ¡ | ksnJ ‚d S )	Nr$   r#   r[   T)r]   Zchopz1.0806046117362794348r   z1.08060461173628)r   r   r   ru   rv   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sVJ ‚d S rš   )r   r   r!   r   r   rY   )rD   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sdJ ‚t| |ƒ t t¡t||ƒks„J ‚d S )Nr%   r#   )r   r   r!   r   r   r   rW   )rD   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sDJ ‚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s J ‚d S )Nrf   r#   r*   é¡   r%   és   r$   é   iËòÿÿi5  iq  é}   rm   rl   )r   r    r   r   r   r   r   rY   )rD   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s’J ‚d S )	Nr%   r$   r*   rf   rl   ri   r   é~   )r   r   r   r   r   r   Zas_ordered_terms)rD   rž   r§   rƒ   rQ   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 )Nrm   r#   c                 S   s"   g | ]}t td  t d |ƒ‘qS )rm   r#   r5   rt   r-   r-   r.   rJ   6  r0   z#test_issue_7876.<locals>.<listcomp>)r   r   r’   rO   Ú	frozenset)Úl1Úl2r-   r-   r.   Útest_issue_78764  s    r¶   c                  C   sT   t dtd  d ƒ} t|  ¡ ƒdks(J ‚t dtd  d ƒ} t|  ¡ ƒdksPJ ‚d S )Nrl   rk   rj   ri   )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sXJ ‚| tdgd	 d
g tƒƒdkszJ ‚| ttd	 d ƒƒdks–J ‚| ttd d ƒƒdks²J ‚| ttd d ƒƒdksÎJ ‚| ttd d ƒƒdksêJ ‚| ttd d ƒƒdksJ ‚| tg d¢tƒƒdks$J ‚| ttd	 t d ƒƒdksFJ ‚| ttd t d ƒƒdkshJ ‚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                 3   s   | ]\}}ˆ |ƒ| V  qd S r›   r-   )rE   rD   Úmr¹   r-   r.   Ú	<genexpr>D  r0   z7test__imag_count.<locals>.imag_count.<locals>.<genexpr>r#   )ÚsumZfactor_list©r   r¹   r-   r.   Ú
imag_countC  s    
ÿz$test__imag_count.<locals>.imag_countrm   ri   r$   r#   r%   r"   r*   )r#   r$   r%   c                 S   s"   t t|  t|   tt| ¡tƒS r›   )r   r   rW   )rQ   Zr2r   r-   r-   r.   ÚqQ  s    ztest__imag_count.<locals>.qr&   )Úsympy.polys.rootoftoolsrº   r   r   )r¿   rÀ   r-   r¹   r.   Útest__imag_countA  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   rz   Zis_imaginaryÚaxÚbx)r!   rF   r-   r-   r.   Útest_RootOf_is_imaginary[  s    rÅ   c                  C   sP   t d dt   d } t| dƒ ¡ }t| dƒ ¡ }| |¡s>J ‚| |¡sLJ ‚d S )Nr%   rf   r#   r   )r   r   rz   Zis_disjoint)rI   ZirÚiir-   r-   r.   Útest_is_disjointa  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 sFJ ‚ˆt dksVJ ‚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/   q  r0   z$test_pure_key_dict.<locals>.<lambda>c                    s   dˆ | < d S )Nr$   r-   )Úkr¾   r-   r.   Údontr  s    z test_pure_key_dict.<locals>.dontc                      s   ˆ dƒS rÈ   r-   r-   )rÊ   r-   r.   r/   t  r0   )ÚDr   r   r   ÚKeyErrorr:   r-   r-   )rÊ   r   r.   Útest_pure_key_dicti  s    rÍ   c                      sÒ  t  ¡  dd„ tdƒD ƒ‰dd„ ˆD ƒtddƒtddƒtd	 d  tddƒtd	 d  gks`J ‚ˆd
  ¡  dd„ ˆD ƒtddƒtddƒtd d  tddƒ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d d  tddƒ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d d  tddƒtd d  gksnJ ‚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 sFJ ‚ˆd
  ¡  dd„ ˆD ƒtddƒtd d!ƒtd" d!  td d!ƒ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 sFJ ‚t
tˆd  ¡ j	ƒˆd  ƒ ¡ d#k srJ ‚ˆd
  ¡  d$d„ ˆD ƒ‰ d%d„ ˆ D ƒg d&¢ks¨J ‚t‡ ‡fd'd(„ttˆ ƒƒD ƒƒsÎJ ‚d S ))Nc                 S   s&   g | ]}t td  dt  d |ƒ‘qS )r%   ri   r#   )r   r   rt   r-   r-   r.   rJ   z  r0   z-test_eval_approx_relative.<locals>.<listcomp>r%   c                 S   s   g | ]}|  d ¡‘qS )çš™™™™™¹?r•   rt   r-   r-   r.   rJ   {  r0   iëÿÿÿéÜ   r   é   i%  r   c                 S   s   g | ]}|  d d¡‘qS )rÎ   ç-Cëâ6?r•   rt   r-   r-   r.   rJ     r0   iË  i   iµS i   rÎ   r#   rÑ   r$   c                 S   s   g | ]}|  d d ¡‘qS )rÑ   r•   rt   r-   r-   r.   rJ   ˆ  r0   i/øÿÿi4N  i‘  c                 S   s   g | ]}|j d d‘qS )r$   r\   r•   rt   r-   r-   r.   rJ   “  r0   i'êüÿiVâ i3™ i    i;e ç{®Gáz„?c                 S   s   g | ]}|j d d‘qS )r%   r\   r•   rt   r-   r-   r.   rJ   œ  r0   i“ i   i'±Sgü©ñÒMbP?c                 S   s   g | ]}|  d ¡‘qS )r$   )Zeval_approxrt   r-   r-   r.   rJ   ¦  r0   c                 S   s   g | ]}t |ƒ‘qS r-   )rc   rt   r-   r-   r.   rJ   §  r0   )z-0.10z0.05 - 3.2*Iz0.05 + 3.2*Ic                 3   s2   | ]*}t ˆ | ˆ|  ˆ|   ¡ ƒd k V  qdS )rÒ   N)rx   r]   rt   ©r   Útr-   r.   r¼   ©  r0   z,test_eval_approx_relative.<locals>.<genexpr>)r   r˜   rO   r   r   ry   r   rz   ZdxZdyrx   r]   Úallr·   r-   r-   rÓ   r.   Útest_eval_approx_relativew  sd    þ
þ
þþ(,,,,þ(,,,,rÖ   c                  C   s:   t td t d dƒ} tttdtfƒ}tt| |ƒs6J ‚d S )Nrf   r#   r   )r   r   r   r   r   r   )r!   r   r-   r-   r.   Útest_issue_15920¬  s    r×   c                  C   st   t d t  d } tt| ƒ ¡ ƒdks(J ‚tt|  t tt ƒ¡ƒ ¡ ƒdksLJ ‚tt|  t ttƒ¡ƒ ¡ ƒdkspJ ‚d S )Nr%   r#   z[CRootOf(x**3 - x + 1, 0)])r   rc   r   rw   rW   r   r   )rI   r-   r-   r.   Útest_issue_19113²  s    ÿÿrØ   )VÚ__doc__Zsympy.polys.polytoolsr   rÁ   r_   r‡   r   r   r   r   r   rË   Zsympy.polys.polyerrorsr   r	   r
   Zsympy.core.functionr   r   Zsympy.core.numbersr   r   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Zsympy.integrals.integralsr   Zsympy.polys.orthopolysr   Zsympy.solvers.solversr   Zsympy.testing.pytestr   r   Zsympy.core.exprr   Z	sympy.abcr   r   r   r   r    r!   r=   rA   rC   rS   rT   rU   rV   rX   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>   sj    T
[
&,1
	
4