U
    ˜9%eT  ã                   @   s"  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;e*d#d$„ ƒZ<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„ ZPe*dMdN„ ƒZQdOdP„ ZRdQdR„ ZSdS )Sz@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t‚t tdƒdks$t‚t ttjƒdks8t‚t td dƒdksNt‚t td dƒdksdt‚t td dƒdkszt‚t td dƒdkst‚t td dt  d dƒdttdƒ  ks¾t‚t td dt  d dƒdttdƒ  ksìt‚t td dt  d dƒdttdƒ  kst‚t td dt  d dƒdttdƒ  ksLt‚t td dt  d ddd} t| tƒd	ks~t‚t td dt  d ddd} t| tƒd	ks°t‚t td dt  d ddd} t| tƒd	ksât‚t td dt  d ddd} t| tƒd	kst‚t td td  ddddks8t‚t td td  ddddks\t‚t td td  ddddks€t‚t td td  ddddks¤t‚t td td  dd	ddksÈt‚t td td  dd	ddksìt‚t td td  dd	ddkst‚t td td  dd	ddks4t‚t td td t d  dƒt td t d dƒksnt‚t td td t d  dƒdks–t‚t td td t d  dƒt td t d dƒksÐt‚t td td t d  dƒt td t d dƒks
t‚t td td t d  dƒt td t d dƒksDt‚t td td t d  dƒt td t d dƒks~t‚t td td t d  d
ƒdks¦t‚t td td t d  dƒt td t d dƒksàt‚t td dtd   dƒd
kst‚t td dtd   dƒdks(t‚t td dtd   dƒdksLt‚t td dtd   dƒdkspt‚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sDt‚t ttd t tƒdƒttƒ kslt‚t ttd t tƒdƒttƒks’t‚t ttd t tƒdƒttddƒ ks¾t‚t ttd  tt  dt  tdƒdksìt‚t	tdd„ ƒ t td t d dƒjd	kst‚d S )Nr   éÿÿÿÿé   é   é   éþÿÿÿF©ZradicalsTéýÿÿÿéüÿÿÿé   c                   S   s
   t ddƒS ©Nr   ©r   © r-   r-   úa/var/www/html/Darija-Ai-API/env/lib/python3.8/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   ÚAssertionErrorr   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 t‚| jtƒ ks0t‚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_numberr7   Úfree_symbolsÚsetr   r9   r=   r-   r-   r.   Útest_CRootOf_attributest   s    
rB   c                   C   s  t td t d dƒt td t d dƒkdks4t‚t td t d dƒt td t d dƒkdksht‚t td t d dƒt td t d dƒkdksœt‚t td t d dƒt td t d dƒkdksÐt‚t td t d dƒt td t d dƒkdkst‚t td t d dƒt td t d dƒkdks<t‚t td t d dƒt td t d dƒkdksrt‚t td t d dƒt td t d dƒkdks¨t‚t td t d dƒt td t d dƒkdksÞt‚t td t d dƒt td t d dƒkdkst‚d S ©Nr%   r   Tr#   Fr$   )r   r   r7   r   r-   r-   r-   r.   Útest_CRootOf___eq__   s    444466666rD   c                     st  t dƒ} td t d ‰ tˆ dƒ}tˆ dƒ}t||ƒtjks@t‚t||ƒtjksTt‚tt|tƒsdt‚t|dƒtjksxt‚t|tj	ƒtjksŽt‚t|t
ƒtjks¢t‚tt|| dƒƒs¶t‚tˆ ƒ‰ˆD ]}|jrÂt||ƒtjksÂt‚qÂtˆ dƒ}ˆD ]}|jrðt||ƒtjksðt‚qðtd t d ‰ tˆ ƒ‰‡ ‡fdd„tdƒD ƒ d¡dksPt‚ttˆ dƒdtj ƒd	kspt‚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>£   s       z,test_CRootOf___eval_Eq__.<locals>.<listcomp>TF)r   r   r   r   r   Úfalser7   Útruer   ÚInfinityr   r   Úis_realÚrangeÚcountZImaginaryUnit)rE   r!   Úr1Úsr-   rI   r.   Útest_CRootOf___eval_Eq__   s6    


ÿÿ
rT   c                   C   sd   t td t d dƒjdks t‚t td t d dƒjdks@t‚t td t d dƒjdks`t‚d S rC   )r   r   rO   r7   r-   r-   r-   r.   Útest_CRootOf_is_real¨   s      rU   c                   C   s$   t td t d dƒjdks t‚d S )Nr%   r   T)r   r   Z
is_complexr7   r-   r-   r-   r.   Útest_CRootOf_is_complex®   s    rV   c                   C   s<   t td t d dƒ tt¡t td t d dƒks8t‚d S r?   )r   r   Úsubsr   r7   r-   r-   r-   r.   Útest_CRootOf_subs²   s    rX   c                   C   sL   t td t d dƒ t¡dks$t‚t td t d dƒ t¡dksHt‚d S r?   )r   r   Údiffr7   r   r-   r-   r-   r.   Útest_CRootOf_diff¶   s    $rZ   c                  C   sØ  t td t d dƒjdd} |  tdƒ¡s0t‚t td t d dƒjdd ¡ \}}| tdƒ¡sht‚| tdƒ ¡s|t‚t td t d d	ƒjdd ¡ \}}| tdƒ¡s´t‚| tdƒ¡sÆt‚td
tdd}dd„ | ¡ D ƒ}|ddddgksút‚t td dt  d dƒjdd}| tdƒ¡s0t‚t td dt  d dƒjdd ¡ \}}| tdƒ¡snt‚| tdƒ¡s‚t‚t td dt  d d	ƒjdd ¡ \}}| tdƒ¡sÀt‚| tdƒ¡sÔt‚t td dt  d dƒjdd ¡ \}}| tdƒ¡st‚| tdƒ¡s&t‚t td dt  d d
ƒjdd ¡ \}}| tdƒ¡sdt‚| tdƒ¡sxt‚t	t td d	td
   td  d dƒ 
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
   d,td   d-td	   d.t  d/ }t |dƒ 
d	¡ ¡ \}}t |d	ƒ 
d	¡ ¡ \}}	||kstt‚||	k s‚t‚||	 ks’t‚t td0tƒd'ƒ}
|
 
d	¡|
 
d1¡ 
d	¡ksÂt‚t td	 d dd2d3}t td	 d dd2d3}| 
d
¡td4d
ƒt kst‚| 
d
¡td5d
ƒt ks*t‚t	t d
td  d6td   dtd	   d' dƒ 
d¡ƒd7kslt‚td8td)  d9td
   d:td	   d dƒ}| d	¡sªt‚t	ttd6 d;td<   d=td   d>td!   d?td%   d@td)   dAtd
   dBtd	   dC d!ƒ 
d	¡ƒdDks$t‚tttd
 d!td	   d dƒ 
d	¡ƒdEk sVt‚dFd„ tdƒD ƒ}
|
d  ¡  |
D ]Z}| ¡ }| 
d	¡ || ¡ ks t‚| ¡  || ¡ ksºt‚||j|jŽ ksxt‚qxd S )GNr%   r   é   ©Únz-1.2134116627622296341r#   z0.60670583138111481707z1.45061224918844152650r$   r*   T©Úpolysc                 S   s   g | ]}t | d ¡ƒ‘qS ©é   ©Ústrr]   ©rF   r!   r-   r-   r.   rK   Ì   s     z&test_CRootOf_evalf.<locals>.<listcomp>ú-0.86113631159405258ú-0.33998104358485626ú0.33998104358485626ú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   ©rF   rG   r-   r-   r.   rK     s     )r   r   ÚevalfÚ
epsilon_eqr   r7   Zas_real_imagr   Ú
real_rootsrc   r]   r   r   Z_eval_evalfr   ÚabsrP   Ú_resetÚ_get_intervalÚfuncÚargs)ÚrealÚreZimÚpÚrootsrJ   r   r   ÚcÚdr!   Úr0rR   ÚrirG   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s`t‚d S )Nri   rj   r#   )r   r   r]   r}   r7   )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s8t‚t td t d ƒjddttd td  d dƒgkstt‚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Üt‚d S )Nri   r#   r%   r$   r   Fr'   r(   r*   rl   rj   rp   ZZZ)Údomainr"   )r   r   rz   r   r7   r   r   ©r‚   r-   r-   r.   Útest_CRootOf_real_roots!  s    8 ÿ: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˜t‚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s6t‚d S )	Nri   r#   r%   r$   r   r"   Fr'   )r   r   Ú	all_rootsr   r   r   r   r7   r-   r-   r-   r.   Útest_CRootOf_all_roots+  s    û
ûrŽ   c                  C   s^   t dtdd} dd„ |  ¡ D ƒ}|D ]}t|tƒs$t‚q$dd„ |D ƒ}|ddd	d
gksZt‚d S )Nr*   Tr^   c                 S   s   g | ]}|j d d‘qS )é   r\   ©Zeval_rationalrd   r-   r-   r.   rK   ?  s     z.test_CRootOf_eval_rational.<locals>.<listcomp>c                 S   s   g | ]}t | d ¡ƒ‘qS r`   rb   )rF   Úrootr-   r-   r.   rK   B  s     re   rf   rg   rh   )r   r   rz   r8   r   r7   )r‚   rƒ   r‘   r-   r-   r.   Útest_CRootOf_eval_rational=  s    ür’   c                  C   sX  t td dt  d ƒ} t ¡  t| dƒ}|jtjks:t‚|jtjksJt‚| 	¡  |jtjksbt‚|jtjksrt‚t ¡  t| dƒ}|jtjks”t‚|jtjks¤t‚| 	¡  |jtjks¼t‚|jtjksÌt‚t td d td d  ƒ} t ¡  t| dƒ}|jtjkst‚|jtjkst‚t ¡  t| dƒ}|jtjksBt‚|jtjksTt‚d S )Nr%   r$   r   r#   )
r   r   r   Úclear_cacheZpolyÚrootoftoolsZ_reals_cacher7   Z_complexes_cacherx   )rE   r!   r-   r-   r.   Útest_CRootOf_lazyK  s0    



r•   c                  C   sÒ  t d t  d } ttttt  ƒƒ}t| |ƒ}t|tƒdks>t‚t| d |ƒdt| |ƒ ks^t‚tt d | d  |ƒtdt  ƒdt| |ƒ  ks’t‚ttt d | d  |ƒƒttdt  ƒdt| |ƒ  ƒksÎt‚tt	dd„ ƒ tt
dd„ ƒ t| tƒt| tt tt ƒƒƒkst‚t| tƒt| tt tt ƒƒƒks2t‚tt| dd	tƒdksNt‚t| ƒd
ks`t‚t| tt t ƒƒd
kszt‚t| tt t d ƒƒdks˜t‚t| tt dƒƒdks²t‚t| tt dƒƒdksÌt‚t| dd	jdksät‚t| tt dt t d   ƒƒtddƒkst‚t| tt tt t d   ƒƒtddƒt ks@t‚tt d d tt dt d  ƒt ƒdkslt‚tt d t tt dt d  ƒt ƒdt ksœt‚tt d d tt tt d  ƒt ƒdt ksÌt‚tt d t tt tt d  ƒt ƒdt t ks t‚tt d d tt tt ƒƒddtdƒtdƒ ks6t‚tt d tt   td  tt ƒtt d t  d tt ttt  ƒƒƒks€t‚ttd t d  tt   d tt ƒtt d t  d tt tt t ƒƒƒksÎt‚d S )Nr%   Tr$   ro   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#   rp   rk   )Z	quadraticr"   )r   r   r!   r   r   r8   r7   Úhashr   r   r;   r   r<   r   r   r    r   r   )rE   ÚgrS   r-   r-   r.   Útest_RootSum___new__w  sJ    
 4<$$,0,004
  ÿÿ
"ÿ
""ÿr›   c                   C   s”   t td t d ttttƒƒƒjtƒ ks,t‚t td t d ttttt ƒƒƒjthks\t‚t td t t	 ttttt ƒƒtƒjtt	hkst‚d S r–   )
r   r   r   r!   r   r@   rA   r7   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ksBt‚ttd t d | ƒttd t d | ƒkdksvt‚ttd t d | ƒttd t d | ƒkdksªt‚ttd t d | ƒttd t d | ƒkdksÞt‚d S )Nr%   r#   Tr$   F)r   r   r   r   r7   r   ©rE   r-   r-   r.   Útest_RootSum___eq__¯  s
    444rž   c                  C   s–   t td d tƒ} t| t ƒdks$t‚|  ¡ tt ƒttƒ ksBt‚t td t ttƒ} t| t ƒdksht‚|  ¡ ttt ƒ ƒttt ƒƒ ks’t‚d S )Nr$   r#   T)	r   r   r   r8   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.t‚| jddd tdƒ¡sJt‚t td t ttƒ} |  ¡ | ksnt‚d S )	Nr$   r#   r[   T)r]   Zchopz1.0806046117362794348é   z1.08060461173628)r   r   r   rx   ry   r   r7   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sVt‚d S r–   )r   r   r!   r   r   rY   r7   )rE   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sdt‚t| |ƒ t t¡t||ƒks„t‚d S )Nr%   r#   )r   r   r!   r   r   r   rW   r7   )rE   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sDt‚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 t‚d S )Nri   r#   r*   é¡   r%   és   r$   é   iËòÿÿi5  iq  é}   rp   ro   )	r   r    r   r   r7   r   r   r   rY   )rE   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’t‚d S )	Nr%   r$   r*   ri   ro   rl   r¢   é~   )r   r   r   r   r   r   Zas_ordered_termsr7   )rE   rš   r¤   r†   rR   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@t‚d S )Nrp   r#   c                 S   s"   g | ]}t td  t d |ƒ‘qS )rp   r#   r5   rw   r-   r-   r.   rK   þ  s     z#test_issue_7876.<locals>.<listcomp>)r   r   r   rP   Ú	frozensetr7   )Úl1Úl2r-   r-   r.   Útest_issue_7876ü  s    r³   c                  C   sT   t dtd  d ƒ} t|  ¡ ƒdks(t‚t dtd  d ƒ} t|  ¡ ƒdksPt‚d S )Nro   rn   rm   rl   )r   r   Úlenr   r7   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@t‚| ttd ƒƒdksXt‚| tdgd	 d
g tƒƒdkszt‚| ttd	 d ƒƒdks–t‚| ttd d ƒƒdks²t‚| ttd d ƒƒdksÎt‚| ttd d ƒƒdksêt‚| ttd d ƒƒdkst‚| tddd	gtƒƒdks&t‚| ttd	 t d ƒƒdksHt‚| ttd t d ƒƒdksjt‚dd„ }| |d
ddƒƒdksŒt‚| |d
ddƒƒdks¦t‚| |dddƒƒdksÀt‚| |dddƒƒdksÚt‚| |d
ddƒƒdksôt‚| |d
ddƒƒdkst‚d S )Nr   ©Ú_imag_count_of_factorc                    s   t ‡ fdd„|  ¡ d D ƒƒS )Nc                    s   g | ]\}}ˆ |ƒ| ‘qS r-   r-   )rF   rE   Úmr¶   r-   r.   rK     s     z8test__imag_count.<locals>.imag_count.<locals>.<listcomp>r#   )ÚsumZfactor_listr‹   r¶   r-   r.   Ú
imag_count  s    
ÿz$test__imag_count.<locals>.imag_countrp   rl   r$   r#   r%   r"   r*   c                 S   s"   t t|  t|   tt| ¡tƒS r—   )r   r   rW   )rR   Úr2r‚   r-   r-   r.   Úq  s    ztest__imag_count.<locals>.qr&   )Úsympy.polys.rootoftoolsr·   r   r   r7   )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@t‚d S )Nr*   r$   r#   r   )r   r   r}   Zis_imaginaryZaxZbxr7   )r!   rG   r-   r-   r.   Útest_RootOf_is_imaginary#  s    r¿   c                  C   sP   t d dt   d } t| dƒ ¡ }t| dƒ ¡ }| |¡s>t‚| |¡sLt‚d S )Nr%   ri   r#   r   )r   r   r}   Zis_disjointr7   )rJ   ZirÚiir-   r-   r.   Útest_is_disjoint)  s
    rÁ   c                      sŠ   t ƒ ‰tˆkdkst‚dˆkdks&t‚dˆt< tˆks:t‚tˆksFt‚ˆt dksVt‚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/   9  r0   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/   <  r0   )ÚDr   r7   r   r   ÚKeyErrorr;   r-   r-   )rÄ   r‚   r.   Útest_pure_key_dict1  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`t‚ˆd
  ¡  dd„ ˆD ƒtddƒtddƒtd d  tddƒtd d  gks²t‚tˆd
  ¡ j	ƒdk sÌt‚tˆd  ¡ j	ƒdk sæt‚tˆd  ¡ j
ƒdk st‚tˆd  ¡ j	ƒdk st‚tˆd  ¡ j
ƒdk s:t‚ˆd
  ¡  dd„ ˆD ƒtddƒtddƒtd d  tddƒtd d  gksŽt‚tˆd
  ¡ j	ƒdk sªt‚tˆd  ¡ j	ƒdk sÆt‚tˆd  ¡ j
ƒdk sât‚tˆd  ¡ j	ƒdk sþt‚tˆd  ¡ j
ƒdk st‚ˆd
  ¡  dd„ ˆD ƒtddƒtddƒtd d  tddƒtd d  gksnt‚ttˆd
  ¡ j	ƒˆd
  ƒdk s–t‚ttˆd  ¡ j	ƒˆd  ƒ ¡ dk sÂt‚ttˆd  ¡ j
ƒˆd  ƒ ¡ dk sît‚ttˆd  ¡ j	ƒˆd  ƒ ¡ dk st‚ttˆd  ¡ j
ƒˆd  ƒ ¡ dk sFt‚ˆd
  ¡  dd„ ˆD ƒtddƒtd d!ƒtd" d!  td d!ƒtd" d!  gksšt‚ttˆd
  ¡ j	ƒˆd
  ƒd#k sÂt‚ttˆd  ¡ j	ƒˆd  ƒ ¡ d#k sît‚ttˆd  ¡ j
ƒˆd  ƒ ¡ d#k st‚ttˆd  ¡ j	ƒˆd  ƒ ¡ d#k sFt‚ttˆd  ¡ j
ƒˆd  ƒ ¡ d#k srt‚ˆd
  ¡  d$d„ ˆD ƒ‰ d%d„ ˆ D ƒd&d'd(gksªt‚t‡ ‡fd)d*„ttˆ ƒƒD ƒƒsÐt‚d S )+Nc                 S   s&   g | ]}t td  dt  d |ƒ‘qS )r%   rl   r#   )r   r   rw   r-   r-   r.   rK   B  s     z-test_eval_approx_relative.<locals>.<listcomp>r%   c                 S   s   g | ]}|  d ¡‘qS )çš™™™™™¹?r   rw   r-   r-   r.   rK   C  s     iëÿÿÿéÜ   r¢   é   i%  r   c                 S   s   g | ]}|  d d¡‘qS )rÈ   ç-Cëâ6?r   rw   r-   r-   r.   rK   G  s     iË  i   iµS i   rÈ   r#   rË   r$   c                 S   s   g | ]}|  d d ¡‘qS )rË   r   rw   r-   r-   r.   rK   P  s     i/øÿÿi4N  i‘  c                 S   s   g | ]}|j d d‘qS )r$   r\   r   rw   r-   r-   r.   rK   [  s     i'êüÿiVâ i3™ i    i;e ç{®Gáz„?c                 S   s   g | ]}|j d d‘qS )r%   r\   r   rw   r-   r-   r.   rK   d  s     i“ i   i'±Sgü©ñÒMbP?c                 S   s   g | ]}|  d ¡‘qS )r$   )Zeval_approxrw   r-   r-   r.   rK   n  s     c                 S   s   g | ]}t |ƒ‘qS r-   )rc   rw   r-   r-   r.   rK   o  s     z-0.10z0.05 - 3.2*Iz0.05 + 3.2*Ic                 3   s2   | ]*}t ˆ | ˆ|  ˆ|   ¡ ƒd k V  qdS )rÌ   N)r{   r]   rw   ©r   Útr-   r.   Ú	<genexpr>q  s     z,test_eval_approx_relative.<locals>.<genexpr>)r   r“   rP   r   r   r7   r|   r   r}   ZdxZdyr{   r]   Úallr´   r-   r-   rÍ   r.   Útest_eval_approx_relative?  sv     þ
 þ
 þ þ(,,,, þ(,,,,  ÿrÑ   c                  C   s:   t td t d dƒ} tttdtfƒ}tt| |ƒs6t‚d S )Nri   r#   r   )r   r   r   r   r   r   r7   )r!   r‚   r-   r-   r.   Útest_issue_15920t  s    rÒ   c                  C   st   t d t  d } tt| ƒ ¡ ƒdks(t‚tt|  t tt ƒ¡ƒ ¡ ƒdksLt‚tt|  t ttƒ¡ƒ ¡ ƒdkspt‚d S )Nr%   r#   z[CRootOf(x**3 - x + 1, 0)])r   rc   r   rz   r7   rW   r   r   )rJ   r-   r-   r.   Útest_issue_19113z  s    ÿÿrÓ   )TÚ__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>   rB   rD   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.   Ú<module>   sf    T
[

,1
	
4