o
    º¥gœÄ  ã                   @   s  d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZ dd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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' ddl(m)Z) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@ ddlAmBZBmCZC ddlDmEZE e Feded¡ZGdd ZHdd ZIdd ZJdd  ZKd!d" ZLd#d$ ZMd%d& ZNd'd( ZOd)d* ZPd+d, ZQd-d. ZRd/d0 ZSd1d2 ZTd3d4 ZUd5d6 ZVd7d8 ZWd9d: ZXd;d< ZYd=d> ZZd?d@ Z[dAdB Z\dCdD Z]dEdF Z^dGdH Z_dIdJ Z`dKdL ZadMdN ZbdOdP ZcdQdR ZddSdT ZedUdV ZfdWdX ZgdYdZ Zhd[d\ Zid]d^ Zjd_d` Zkdadb Zldcdd Zmdedf Zndgdh Zodidj Zpdkdl Zqdmdn Zrdodp Zsdqdr Ztdsdt Zududv Zvdwdx Zwdydz Zxd{d| Zyd}d~ ZzdS )zPTests for classes defining properties of ground domains, e.g. ZZ, QQ, ZZ[x] ... é    )ÚGROUND_TYPES)	ÚAlgebraicNumberÚEÚFloatÚIÚIntegerÚRationalÚooÚpiÚ_illegal)ÚS)Úexp)Úsqrt)Úsin)ÚPoly)ÚxÚyÚz)ÚZZÚQQÚRRÚCCÚFFÚGFÚEXÚEXRAWÚZZ_gmpyÚ	ZZ_pythonÚQQ_gmpyÚ	QQ_python)ÚAlgebraicField)ÚZZ_IÚQQ_I)ÚPolynomialRing)Ú	RealField)Úfield_isomorphism)Úring)Úcyclotomic_poly)Úfield)ÚFiniteExtension)ÚUnificationFailedÚGeneratorsErrorÚCoercionFailedÚNotInvertibleÚDomainError)ÚraisesÚwarns_deprecated_sympy)Úproducté   é   c                 C   s
   |   |¡S ©N©Úunify)ÚK0ÚK1© r9   ú]/var/www/visachat/venv/lib/python3.10/site-packages/sympy/polys/domains/tests/test_domains.pyr6   )   s   
r6   c                      sè	  t d t dt   ksJ tt fdd tt fdd tt fdd tt fdd tt fdd tt fd	d tt fd
d tt fdd tt fdd tt fdd tkstJ tt fdd tt fdd tt fdd tt fdd ttttks€J ttttks­J ttttks¶J ttttks¿J ttttksÈJ tttt	 tt	 ksÕJ ttt 
t	¡t 
t	¡ksäJ ttttksíJ tt fdd ttttksÿJ ttttks	J ttttksJ ttttksJ ttttks'J tttt	 tt	 ks5J ttt 
t	¡t 
t	¡ksEJ ttttksOJ tt fdd ttttksbJ ttttkslJ ttttksvJ tttt ttdtd¡ksJ ttttksJ ttttksJ tttt	 tt	 ks«J tttt	 tt	 ks¹J ttt 
t	¡t 
t	¡ksÉJ ttt 
t	¡t 
t	¡ksÙJ ttttksãJ tt fdd ttttksöJ ttttks J ttttks
J tttt ttdtd¡ksJ ttttks'J ttttks1J tttt	 tt	 ks?J tttt	 tt	 ksMJ tttt	 tt	 ks[J tttt	 tt	 ksiJ ttt 
t	¡t 
t	¡ksyJ ttt 
t	¡t 
t	¡ksJ ttt 
t	¡t 
t	¡ksJ ttt 
t	¡t 
t	¡ks©J ttttks³J tt fdd ttttksÆJ ttttksÐJ ttttksÚJ ttttksäJ ttttksîJ tttt	 tt	 ksüJ ttt 
t	¡t 
t	¡ksJ ttttksJ tt	  t 
t¡¡t 
t	t¡ks)J tt fdd ttttks<J ttttksFJ ttttksPJ ttttksZJ ttttksdJ tttt	 tt	 ksrJ ttt 
t	¡t 
t	¡ksJ ttttksJ tt fdd ttt	 ttt	 ks£J ttt	 ttt	 ks±J ttt	 ttt	 ks¿J ttt	 ttt	 ksÍJ ttt	 ttt	 ksÛJ ttt	 tt	 tt	 ksëJ ttt	 t 
t	¡t 
t	¡ksýJ ttt	 ttks	J tt fdd tt 
t	¡tt 
t	¡ks"J tt 
t	¡tt 
t	¡ks2J tt 
t	¡tt 
t	¡ksBJ tt 
t	¡tt 
t	¡ksRJ tt 
t	¡tt 
t	¡ksbJ tt 
t	¡tt	 t 
t	¡kstJ tt 
t	¡t 
t	¡t 
t	¡ksJ tt 
t	¡ttksJ tt fdd ttttks§J ttttks±J ttttks»J ttttksÅJ ttttksÏJ tttt	 tksÛJ ttt 
t	¡tksèJ ttttksòJ d S )Nr3   é   c                      ó
   t  tS r4   ©r6   r   r9   ©ÚF3r9   r:   Ú<lambda>1   ó   
 z#test_Domain_unify.<locals>.<lambda>c                      r<   r4   ©r6   r   r9   r>   r9   r:   r@   2   rA   c                      r<   r4   ©r6   r!   r9   r>   r9   r:   r@   3   rA   c                      r<   r4   ©r6   r"   r9   r>   r9   r:   r@   4   rA   c                      r<   r4   )r6   ÚALGr9   r>   r9   r:   r@   5   rA   c                      r<   r4   ©r6   r   r9   r>   r9   r:   r@   6   rA   c                      r<   r4   ©r6   r   r9   r>   r9   r:   r@   7   rA   c                      s   t  tt S r4   ©r6   r   r   r9   r>   r9   r:   r@   8   ó    c                      s   t  t t¡S r4   ©r6   r   Ú
frac_fieldr   r9   r>   r9   r:   r@   9   ó    c                      r<   r4   ©r6   r   r9   r>   r9   r:   r@   :   rA   c                      s
   t  S r4   r5   r9   ©r?   ÚF5r9   r:   r@   =   rA   c                      s   t  t S r4   )r6   r   r9   rN   r9   r:   r@   >   rI   c                      s   t   t¡S r4   )r6   rK   r   r9   rN   r9   r:   r@   ?   rL   c                      ó
   t t S r4   r=   r9   r>   r9   r:   r@   A   rA   c                      rP   r4   rB   r9   r>   r9   r:   r@   K   rA   c                      rP   r4   rC   r9   r>   r9   r:   r@   U   rA   r2   c                      rP   r4   rD   r9   r>   r9   r:   r@   b   rA   c                      rP   r4   rF   r9   r>   r9   r:   r@   s   rA   c                      rP   r4   rG   r9   r>   r9   r:   r@   ~   rA   c                      s   t tt  S r4   rH   r9   r>   r9   r:   r@      rI   c                      s   t t t¡ S r4   rJ   r9   r>   r9   r:   r@      rL   c                      rP   r4   rM   r9   r>   r9   r:   r@      rA   )r   r6   r/   r*   r   r   rE   r   r   r   rK   r   r!   r"   Úalgebraic_fieldr   r   r   r9   r9   rN   r:   Útest_Domain_unify,   sÚ    &  &     &  $     $&rR   c                   C   sŠ  t t t¡tt t¡ksJ t t t¡tt t¡ksJ t t t¡tt t¡ks-J t t t¡tt t¡ks<J t tt t¡t t¡ksKJ t tt t¡t t¡ksZJ t tt t¡t t¡ksiJ t tt t¡t t¡ksxJ t t tt¡tt tt¡ksJ t t tt¡tt tt¡ksJ t t tt¡tt tt¡ks«J t t tt¡tt tt¡ksŒJ t tt tt¡t tt¡ksÍJ t tt tt¡t tt¡ksÞJ t tt tt¡t tt¡ksïJ t tt tt¡t tt¡ksJ t t t¡tt t¡ksJ t t t¡tt t¡ks!J t t t¡tt t¡ks1J t t t¡tt t¡ksAJ t tt t¡t t¡ksQJ t tt t¡t t¡ksaJ t tt t¡t t¡ksqJ t tt t¡t t¡ksJ t t tt¡tt tt¡ksJ t t tt¡tt tt¡ks¥J t t tt¡tt tt¡ks·J t t tt¡tt tt¡ksÉJ t tt tt¡t tt¡ksÛJ t tt tt¡t tt¡ksíJ t tt tt¡t tt¡ksÿJ t tt tt¡t tt¡ksJ t t t¡t t¡t t¡ks$J t t t¡t t¡t t¡ks7J t t t¡t t¡t t¡ksJJ t t t¡t t¡t t¡ks]J t t tt¡t t¡t tt¡ksrJ t t tt¡t t¡t tt¡ksJ t t tt¡t t¡t tt¡ksJ t t tt¡t t¡t tt¡ks±J t t t¡t tt¡t tt¡ksÆJ t t t¡t tt¡t tt¡ksÛJ t t t¡t tt¡t tt¡ksðJ t t t¡t tt¡t tt¡ksJ t t tt¡t tt¡t ttt¡ksJ t t tt¡t tt¡t ttt¡ks3J t t tt¡t tt¡t ttt¡ksJJ t t tt¡t tt¡t ttt¡ksaJ t t t¡t t¡t t¡kstJ t t t¡t t¡t t¡ksJ t t t¡t t¡t t¡ksJ t t t¡t t¡t t¡ks­J t t tt¡t t¡t tt¡ksÂJ t t tt¡t t¡t tt¡ks×J t t tt¡t t¡t tt¡ksìJ t t tt¡t t¡t tt¡ksJ t t t¡t tt¡t tt¡ksJ t t t¡t tt¡t tt¡ks+J t t t¡t tt¡t tt¡ks@J t t t¡t tt¡t tt¡ksUJ t t tt¡t tt¡t ttt¡kslJ t t tt¡t tt¡t ttt¡ksJ t t tt¡t tt¡t ttt¡ksJ t t tt¡t tt¡t ttt¡ks±J t t t¡t t¡t t¡ksÄJ t t t¡t t¡t t¡ks×J t t t¡t t¡t t¡ksêJ t t t¡t t¡t t¡ksýJ t t tt¡t t¡t tt¡ksJ t t tt¡t t¡t tt¡ks'J t t tt¡t t¡t tt¡ks<J t t tt¡t t¡t tt¡ksQJ t t t¡t tt¡t tt¡ksfJ t t t¡t tt¡t tt¡ks{J t t t¡t tt¡t tt¡ksJ t t t¡t tt¡t tt¡ks¥J t t tt¡t tt¡t ttt¡ksŒJ t t tt¡t tt¡t ttt¡ksÓJ t t tt¡t tt¡t ttt¡ksêJ t t tt¡t tt¡t ttt¡ksJ t t t¡t t¡t t¡ksJ t t t¡t t¡t t¡ks'J t t t¡t t¡t t¡ks:J t t t¡t t¡t t¡ksMJ t t tt¡t t¡t tt¡ksbJ t t tt¡t t¡t tt¡kswJ t t tt¡t t¡t tt¡ksJ t t tt¡t t¡t tt¡ks¡J t t t¡t tt¡t tt¡ks¶J t t t¡t tt¡t tt¡ksËJ t t t¡t tt¡t tt¡ksàJ t t t¡t tt¡t tt¡ksõJ t t tt¡t tt¡t ttt¡ksJ t t tt¡t tt¡t ttt¡ks#J t t tt¡t tt¡t ttt¡ks:J t t tt¡t tt¡t ttt¡ksQJ d S r4   )r6   r   Ú	poly_ringr   r   r   rK   r   r9   r9   r9   r:   Útest_Domain_unify_compositeŠ   sÀ   """""""$        $$$$$$$$&&&&********....&&&&********....&&&&********....&&&&********...2rT   c                  C   sV  t  td¡} t  td¡}t  tdtd¡}|  |¡|ks!J |  | ttf ¡| ttf ks2J | ttf  | ¡| ttf ksCJ |  |  tt¡¡|  tt¡ksTJ |  tt¡ | ¡|  tt¡kseJ |  |ttf ¡|ttf ksvJ | ttf  |¡|ttf ksJ |  | tt¡¡| tt¡ksJ |  tt¡ |¡| tt¡ks©J d S )Nr;   é   )r   rQ   r   r6   r   r   rK   )Úsqrt5Úsqrt7Úsqrt57r9   r9   r:   Útest_Domain_unify_algebraic  s   """""""&rY   c            	      C   sš  t ttd d ttd} t ttd d ttd}t ttd d ttt d}t ttd d ttt d}|  | ¡| ksAJ | |¡|ksJJ | |¡|ksSJ | |¡|ks\J |  t¡| kseJ |  t¡|ksnJ | t¡|kswJ | t¡|ksJ |  tt ¡|ksJ |  tt ¡|ksJ | tt ¡|ks¡J | tt ¡|ks¬J | t¡|ksµJ | t¡|ksŸJ | t¡|ksÇJ | t¡|ksÐJ | tt ¡|ksÛJ | tt ¡|ksæJ | tt ¡|ksñJ | tt ¡|ksüJ t ttd d ttt d}| t¡|ksJ | tt ¡|ks!J | tt ¡|ks-J | tttf ¡|ks;J t ttd d ttttf d}| tt ¡|ksXJ | tttf ¡|ksfJ | tttf ¡|kstJ | ttttf ¡|ksJ t ttd d ttd}t ttd d ttd}t ttd d t|d}| |¡|ksŽJ | |¡|ksŸJ | |¡|ksÈJ | |¡|ksÒJ d S )Nr2   ©Údomain)r)   r   r   r   r   r   r6   r   )	ÚKxZZÚKxQQÚKxZZyÚKxQQyÚKÚKzÚKxÚKyÚKxyr9   r9   r:   Ú!test_Domain_unify_FiniteExtension2  sR   "re   c                   C   s    t tdd  t tdd  d S )Nc                   S   s   t ttf  t ttf¡S r4   )r   r   r   Úunify_with_symbolsr   r9   r9   r9   r:   r@   f  ó    z0test_Domain_unify_with_symbols.<locals>.<lambda>c                   S   s   t  t ttf ttf¡S r4   )r   rf   r   r   r   r9   r9   r9   r:   r@   g  rg   )r/   r*   r9   r9   r9   r:   Útest_Domain_unify_with_symbolse  s   rh   c                   C   s  dt v du sJ dtv du sJ dtv du sJ dtv du s J dtv du s(J dtv du s0J dtttf v du s<J dtttf v du sHJ dtttf v du sTJ dt v du s\J dtv du sdJ dtv du slJ dtv du stJ dtv du s|J dtv du sJ dtttf v du sJ dtttf v du sJ dtttf v du sšJ dt v du s°J dtv du sžJ dtv du sÀJ dtv du sÈJ dtv du sÐJ dtv du sØJ dtttf v du säJ dtttf v du sðJ dtttf v du süJ tddt v du sJ tddtv du sJ tddtv du s J tddtv du s,J tddtv du s8J tddtv du sDJ tddtttf v du sTJ tddtttf v du sdJ tddtttf v du stJ tdd	t v du sJ tdd	tv du sJ tdd	tv du sJ tdd	tv du s€J tdd	tv du s°J tdd	tv du sŒJ tdd	tttf v du sÌJ tdd	tttf v du sÜJ tdd	tttf v du sìJ d
t v du sõJ d
tv du sþJ d
tv du sJ d
tv du sJ d
tv du sJ d
tv du s"J d
tttf v du s/J d
tttf v du s<J d
tttf v du sIJ dt v du sRJ dtv du s[J dtv du sdJ dtv du smJ dtv du svJ dtv du sJ dtttf v du sJ dtttf v du sJ dtttf v du sŠJ t	tv du s¯J t	tttf v du sŒJ t	tttf v du sÉJ t	 tv du sÓJ t	 tv du sÝJ t	 tv du sçJ t	 tttf v du sõJ t	 tttf v du sJ t
dt v du sJ t
dtv du sJ t
dtv du s$J t
dtv du s/J t
dtv du s:J t
dtv du sEJ t
dtttf v du sTJ t
dtttf v du scJ t
dtttf v du srJ dt
d d t v du sJ dt
d d tv du sJ dt
d d tv du sJ dt
d d tv du s®J dt
d d tv du sœJ dt
d d tv du sÌJ dt
d d tttf v du sßJ dt
d d tttf v du sòJ dt
d d tttf v du sJ tdt v du sJ tdtv du sJ tdtv du s&J tdtv du s1J tdtv du s<J tdtv du sGJ tdtttf v du sVJ tdtttf v du seJ tdtttf v du stJ td d t v du sJ td d tv du sJ td d tv du sJ td d tv du sšJ td d tv du sµJ td d tv du sÂJ td d tt v du sÑJ td d tt v du sàJ td d tt v du sïJ td d tttf v du s J td d tttf v du sJ td d tttf v du s"J td td  t v du s1J td td  tv du s@J td td  tv du sOJ td td  tv du s^J td td  tv du smJ td td  tv du s|J td td  tt v du sJ td td  tt v du sJ td td  tt v du s¯J td td  tttf v du sÂJ td td  tttf v du sÕJ td td  tttf v du sèJ tddt td  t ttttf v du sJ d S )Nr   Téùÿÿÿé   éÿÿÿÿrU   Fr3   r;   g      @çëQž	@r2   é   )r   r   r   r   r   rE   r   r   r   r	   r   r   r   r9   r9   r9   r:   Útest_Domain__contains__i  sö         &&&""""""&&&6rn   c                   C   s®   t ddt t dt ¡v du sJ dt t t¡v du sJ td td  t dt dt ¡v du s5J tt t dt t¡v du sEJ tt t tdt ¡v du sUJ d S )Nr2   r3   rm   T)r   r   r   rK   r   r9   r9   r9   r:   Útest_issue_14433õ  s
   $, $ro   c                   C   s"  t jdu sJ tjdu sJ t t jdu sJ tt jdu s J t ttf jdu s+J tttf jdu s6J t  t¡jdu s@J t t¡jdu sJJ t  tt¡jdu sUJ t tt¡jdu s`J tjdu sgJ tjdu snJ tjdu suJ t  	¡ t ks}J t 	¡ t ksJ t t  	¡ t t ksJ tt  	¡ tt ksJ t ttf  	¡ t ttf ks­J tttf  	¡ tttf ksœJ t  t¡ 	¡ t t ksÊJ t t¡ 	¡ tt ks×J t  tt¡ 	¡ t ttf ksçJ t tt¡ 	¡ tttf ks÷J t 	¡ tksÿJ t 	¡ tksJ t
tdd  d S )NTFc                   S   s   t  ¡ S r4   )rE   Úget_ringr9   r9   r9   r:   r@     ó    z&test_Domain_get_ring.<locals>.<lambda>)r   Úhas_assoc_Ringr   r   r   rK   r   r   rE   rp   r/   r.   r9   r9   r9   r:   Útest_Domain_get_ringý  s4       rs   c                   C   s^  t jdu sJ tjdu sJ tjdu sJ tjdu sJ tjdu s#J tt jdu s,J tt jdu s5J tttf jdu s@J tttf jdu sKJ t  ¡ t ksSJ t ¡ tks[J t ¡ tkscJ t ¡ tkskJ t ¡ tkssJ tt  ¡ t 	t¡ksJ tt  ¡ t 	t¡ksJ tttf  ¡ t 	tt¡ksJ tttf  ¡ t 	tt¡ks­J d S )NT)
r   Úhas_assoc_Fieldr   r   r   rE   r   r   Ú	get_fieldrK   r9   r9   r9   r:   Útest_Domain_get_field  s$    $rv   c                  C   sH  t dtttttttt tt tt tt tt g} | D ]}| D ]}|t  	|¡|t ks/J |tt
f  	|¡|tt
f ks@J | t¡ 	|¡| t¡ksOJ | tt
¡ 	|¡| tt
¡ks`J | t¡ 	|¡| t¡ksoJ | tt
¡ 	|¡| tt
¡ksJ | t¡ 	|¡| t¡ksJ | tt
¡ 	|¡| tt
¡ks J q qd S )Nr;   )r   r   r   rE   r   r   r   r   r   Ú
set_domainr   rK   Úold_poly_ringÚold_frac_field)ÚdomsÚD1ÚD2r9   r9   r:   Útest_Domain_set_domain5  s   4"""$øÿr}   c                  C   s|   t dttttg} ttg}| | D ]*}||t | t¡| 	t¡| 
t¡fD ]}|| v r3|jdu s2J q%|jdu s:J q%qd S )Nr;   TF)r   r   r   rE   r   r   r   r   rK   rx   ry   Úis_Exact)ÚexactÚinexactÚDÚRr9   r9   r:   Útest_Domain_is_ExactC  s   (üÿr   c                   C   s8  t  ¡ t ksJ t ¡ tksJ t ¡ tksJ t ¡ tks J t ¡ tks(J t ¡ tks0J tt  ¡ tt ks<J tt  ¡ tt ksHJ tt  ¡ tt ksTJ tt  ¡ tt ks`J ttt	f  ¡ ttt	f kspJ ttt	f  ¡ ttt	f ksJ ttt	f  ¡ ttt	f ksJ ttt	f  ¡ ttt	f ks J t 
t¡ ¡ t 
t¡ks®J t 
t¡ ¡ t 
t¡ksŒJ t 
t¡ ¡ t 
t¡ksÊJ t 
t¡ ¡ t 
t¡ksØJ t 
tt	¡ ¡ t 
tt	¡ksèJ t 
tt	¡ ¡ t 
tt	¡ksøJ t 
tt	¡ ¡ t 
tt	¡ks	J t 
tt	¡ ¡ t 
tt	¡ksJ t t¡ ¡ t t¡ks)J t t¡ ¡ t t¡ks8J t t¡ ¡ t t¡ksGJ t t¡ ¡ t t¡ksVJ t tt	¡ ¡ t tt	¡ksgJ t tt	¡ ¡ t tt	¡ksxJ t tt	¡ ¡ t tt	¡ksJ t tt	¡ ¡ t tt	¡ksJ t t¡ ¡ t t¡ks©J t t¡ ¡ t t¡ksžJ t t¡ ¡ t t¡ksÇJ t t¡ ¡ t t¡ksÖJ t tt	¡ ¡ t tt	¡ksçJ t tt	¡ ¡ t tt	¡ksøJ t tt	¡ ¡ t tt	¡ks	J t tt	¡ ¡ t tt	¡ksJ d S r4   )r   Ú	get_exactr   r   r   r   r"   rE   r   r   rK   rx   ry   r9   r9   r9   r:   Útest_Domain_get_exactN  sL         """""""""&r   c                  C   sÔ   t ddft ddft ddffD ](\} }| | t |  t¡|  t¡|  t¡fD ]}|jdu s0J | ¡ |ks8J q'qttt	t
tfD ]&}||t | t¡| t¡| t¡fD ]}|jdu s^J | ¡ dksfJ qUqAd S )Nr3   r;   rU   FTr   )r   r   rK   rx   ry   Úhas_CharacteristicZeroÚcharacteristicr   r   r!   r"   rE   )ÚFÚcr   r   r9   r9   r:   Útest_Domain_characteristicw  s   *(þ(þÿr   c                     sö   g d¢} g d¢}g d¢}t t tt t t¡ dd | D |ks&J dd | D |ks1J fdd| D |ks>J  fdd| D |ksKJ fd	d| D |ksXJ  t¡d
u scJ    t¡d
u snJ  t¡du syJ d S )N)éþÿÿÿrk   r   rm   r2   )FTFTF)TTFTTc                 S   ó   g | ]	}t  t |¡qS r9   )r   Úis_unit©Ú.0Únr9   r9   r:   Ú
<listcomp>  ó    z'test_Domain_is_unit.<locals>.<listcomp>c                 S   r   r9   )r   r   r   r9   r9   r:   r     r   c                    ó   g | ]	}    |¡qS r9   ©r   r   )ÚZZxr9   r:   r     r   c                    r   r9   r   r   )ÚQQxr9   r:   r     r   c                    r   r9   r   r   )ÚQQxfr9   r:   r     r   FT)r   r   r   rK   r   )ÚnumsÚinvringÚinvfieldr9   )r   r   r   r:   Útest_Domain_is_unit  s   r   c                     sN  dd   fdd} dd }t  td¡}t  td¡}tt ||ttttg}t|D ] \}}||d  D ]}||D ]}||D ]}	| ||	 q@q:q4q*t  	d	¡t d
dksWJ t
dt\}
}t 	|| ¡dksiJ t 	|| |
 ¡ ¡dkswJ t 	tdd¡tddksJ t 	tdd¡tddksJ t  tdt¡t ddks€J t t ddt ¡tdks³J t tddt¡tt ddt ddksÉJ t tt ddt ddt¡tddksßJ t  t¡}t t¡}t t }tt }	||||	g}t||D ]\}}| | t¡|¡| t¡ksJ qü| t ddt ¡|t ddks%J d S )Nc                 S   sH   t | t |u sJ d| ||||f | |ks"J d| ||||f d S )Nz%s, %s: %s %s -> %s)Útype)Úe1Úe2r8   ÚK2ÚK3r9   r9   r:   Úcheck_element  s   &"z*test_Domain_convert.<locals>.check_elementc                    s~   |   |¡} | | j| ¡|j| ||  | |j|¡|j| ||  | | j| ¡|j| ||  | |j|¡|j| || d S r4   )r6   Úconvert_fromÚoneÚzero)r8   r   r    ©r¡   r9   r:   Úcheck_domains  s
   
 z*test_Domain_convert.<locals>.check_domainsc              
   S   s:   | | t  | t | t tf |  t ¡|  t¡|  t t¡g}|S r4   )r   r   rK   )r`   Údomainsr9   r9   r:   Úcomposite_domains  s
   ýz.test_Domain_convert.<locals>.composite_domainsr2   r3   gLoûñW5l   Ó$7ûq/ l                                r   r   rm   g      à?g      è?é   )r   rQ   r   r   r"   r!   r   r   Ú	enumerateÚconvertr&   Ú	to_domainr¢   rK   r   r1   Ú
from_sympy)rŠ   rš   ÚQQ2ÚQQ3rz   Úir8   r   r    ÚK4r   ÚxrÚKsÚKaÚKbr9   r¥   r:   Útest_Domain_convert  s@   
ÿÿÿ,,

$*r¶   c                  C   sÄ   t t dfttddfttddfttddfttdfttddfttdfttdftt 	t
d¡fg	} | D ]'\}}ttfD ]}| 	| |¡¡}| ||¡|ksTJ | ||¡|ks^J q@q8d S )Nr3   rm   r2   )r   r   r!   r"   r   r   r   r   rE   r­   r   Úto_sympyr¢   )Úelementsr   ÚeÚEEÚelemr9   r9   r:   Útest_EX_convertË  s"   



÷ýÿrŒ   c                  C   sŸ   t  t¡} t t }|  t¡|  | t¡|¡ksJ | t¡| |  t¡| ¡ks)J t  tt¡} t t }|  t¡|  | t¡|¡ksCJ t tt¡} t t }|  t¡|  | t¡|¡ks]J d S r4   )r   rx   r   r«   r   r   )r8   r   r9   r9   r:   Ú!test_GlobalPolynomialRing_convertà  s   
   $rœ   c                  C   ó$   t dt\} t ¡ |  ¡ ksJ d S ©NÚ )r&   r   rS   r¬   )r   r9   r9   r:   Útest_PolynomialRing__initñ  ó   rÁ   c                  C   rŸ   r¿   )r(   r   rK   r¬   )r   r9   r9   r:   Útest_FractionField__initö  rÂ   rÃ   c                  C   s`   t  t¡} |  t ddt ¡|  tdd¡ksJ t  t¡} |  tdt¡|  td¡ks.J d S )Nr2   r3   )r   rK   r   r«   r­   r   r   r   ©r`   r9   r9   r:   Útest_FractionField_convertû  s   
&
&rÅ   c                   C   sx   t  ttt¡t tttf ksJ t t  tt¡t tttf ks!J t  t¡ tt¡t  ttt¡ks3J ttdd  d S )Nc                   S   s   t t  t¡S r4   )r   r   Úinjectr9   r9   r9   r:   r@     rI   ztest_inject.<locals>.<lambda>)r   rÆ   r   r   r   rK   r/   r+   r9   r9   r9   r:   Útest_inject  s    "$rÇ   c                     s\  t  t¡t ks	J t t  t¡t ksJ t ttf  t¡t t ks#J t  t¡ t¡t ks/J t  tt¡ t¡t  t¡ks?J t t t  t¡t t ksNJ t t t  t¡t t ks]J t  t¡t  t¡t t ksmJ t  t¡t  t¡t  t¡ks~J tttd d tt t d tttd d tt d}   t¡| ks£J tt fdd d S )Nr2   rm   rZ   c                      ó
      t¡S r4   )Údropr   r9   ©rc   r9   r:   r@     rA   ztest_drop.<locals>.<lambda>)	r   rÉ   r   r   rK   r)   r   r/   r+   rÄ   r9   rÊ   r:   Ú	test_drop	  s     "rË   c                  C   s^   t  g d¢¡} tdd | D sJ t  g d¢g¡} tdd | d D r+t| dks-J d S )N)rm   r2   r3   r©   c                 s   ó    | ]}t  |¡V  qd S r4   ©r   Úof_type©r   Úeltr9   r9   r:   Ú	<genexpr>  ó    z"test_Domain_map.<locals>.<genexpr>c                 s   rÌ   r4   rÍ   rÏ   r9   r9   r:   rÑ      rÒ   r   rm   )r   ÚmapÚallÚlen)Úseqr9   r9   r:   Útest_Domain_map  s   *r×   c                   C   s  t ttf t ttf kdu sJ tttf tttf kdu s J t ttf tttf kdu s0J tttf t ttf kdu s@J t  tt¡t  tt¡kdu sPJ t tt¡t tt¡kdu s`J t  tt¡t tt¡kdu spJ t tt¡t  tt¡kdu sJ t t tt ksJ d S )NTF)r   r   r   r   rK   r$   r   r9   r9   r9   r:   Útest_Domain___eq__#  s           rØ   c                  C   sž   t  td¡} | jjttd d ksJ | jtksJ t td¡} | jjttd d ks1J | jtks8J |  td¡} | jjttd dtd   d ksSJ | jtksZJ d S ©Nr2   r3   r©   é
   rm   )	r   rQ   r   ÚextÚminpolyr   r   Údomr   )Úalgr9   r9   r:   Útest_Domain__algebraic_field3  s   (rß   c                  C   sž   t td d } t td d }t td dtd   d }t | ¡}|jj| ks+J |jtks2J t | ¡}|jj| ks?J |jtksFJ | |¡}|jj|ksSJ |jtksZJ d S rÙ   )r   r   r   Úalg_field_from_polyrÛ   rÜ   rÝ   r   )ÚfÚgÚhrÞ   r9   r9   r:   Útest_Domain_alg_field_from_polyA  s   


rä   c                  C   s   t  d¡} | jjttdksJ | jtksJ t d¡}|jjttdks)J |jtks0J | d¡}t|j| jd us@J |jtksGJ d S )Né   r3   r©   )	r   Úcyclotomic_fieldrÛ   rÜ   r   r'   rÝ   r   r%   )r`   r   r   r9   r9   r:   Útest_Domain_cyclotomic_fieldS  s   


rç   c            	      C   s€  t dt\} }}tdt\}}}|d |d  |d  }|d |d  d }|d |d  }| ¡  ||  ¡ ¡d u s<J | ¡  ||  ¡ ¡|d d |d d  ksTJ | ¡  ||  ¡ ¡|d |d  kshJ t dt\} }}tdt\}}}|d |d  |d  }|d |d  d }|d |d  }| ¡  ||  ¡ ¡d u s€J | ¡  ||  ¡ ¡|d d |d d  ksŒJ | ¡  ||  ¡ ¡|d |d  ksÐJ d S )Núx,yr2   rm   r©   )r(   r   r&   r¬   Úfrom_FractionFieldr   )	r   r   r   r   ÚXÚYrá   râ   rã   r9   r9   r:   Ú&test_PolynomialRing_from_FractionFielda  s    0(0,rì   c                  C   sž   t dt\} }}tdt\}}}d|d  d|d   }|d d |d d  }| ¡  ||  ¡ ¡d|d  d|d   ks@J | ¡  ||  ¡ ¡d|d  d|d   d ksZJ d S )Nrè   r3   r2   r;   é   )r&   r   r(   r   r¬   Úfrom_PolynomialRing)r   r   r   r   rê   rë   rá   râ   r9   r9   r:   Ú&test_FractionField_from_PolynomialRingy  s   08rï   c                   C   s@   t d t dd¡du sJ t d t dd¡du sJ d S )Nr3   rm   Tr;   )r   rÎ   r9   r9   r9   r:   Útest_FF_of_type  s   "rð   c                   C   s0   t t tt kr
J t  t¡t t¡krJ d S r4   )r   r   r   rK   r9   r9   r9   r:   Útest___eq__  s   rñ   c                   C   s   t  tj¡t  d¡ksJ t  td¡t  d¡ksJ t  tj¡t  d¡ks(J t  td¡t  d¡ks6J t  td¡t  td ¡ ¡ksHJ d S )Nr   g        rm   g      ð?)r   r«   r   ÚZeroÚdtypeÚOner   Úevalfr9   r9   r9   r:   Útest_RealField_from_sympy  s
   (rö   c                     s   t ttg dd td d D  } tttttfD ]$ | D ]tkr( tkr(q vs2J  ftt	 fdd qqd S )Nc                 S   s   g | ]}t |qS r9   )Úfloat)r   r°   r9   r9   r:   r     s    ÿz*test_not_in_any_domain.<locals>.<listcomp>r3   c                      s
      ¡S r4   )r«   r9   ©rÝ   r°   r9   r:   r@      rA   z(test_not_in_any_domain.<locals>.<lambda>)
Úlistr   r   r   r   r   r   r   r/   r,   )Úcheckr9   rø   r:   Útest_not_in_any_domain  s   
ÿüÿrû   c               
      sª  t d} | d}|  |¡r|dksJ | d}|  |¡r |dks"J | d}|  |¡r/|dks1J | d}|  |¡r>|dks@J | d}|  |¡rM|dksOJ | | d}|  |¡r^|dks`J | | d}|  |¡ro|dksqJ | | d}|  |¡r|dksJ | | d}|  |¡r|dksJ | | d}|  |¡r¢|dks€J | d }|  |¡r²|dksŽJ | d }|  |¡rÂ|dksÄJ d| d }|  |¡rÓ|dksÕJ | dd }|  |¡rä|dksæJ | d| d }|  |¡r÷|dksùJ | d| d }|  |¡r|dksJ d| d }|  |¡r|dks!J | dd }|  |¡r2|dks4J | d| d }|  |¡rG|dksIJ | d| d }|  |¡r\|dks^J d| d }|  |¡ro|dksqJ | dd }|  |¡r|dksJ | d| d }|  |¡r|dksJ | d| d }|  |¡r¬|dks®J d| d }|  |¡r¿|dksÁJ | dd }|  |¡rÒ|dksÔJ | d| d }|  |¡rç|dkséJ | d| d }|  |¡rü|dksþJ | dd }|  |¡r|dksJ | dd }|  |¡r"|dks$J | dd }|  |¡r5|dks7J t d}|dd }| |¡rL|dksNJ |dd }| |¡r_|dksaJ t| dd	u slJ t| dd
u swJ t d  dd }  |¡r|dksJ  dd }  |¡r|dks¡J  dd }  |¡r²|dksŽJ  dd }  |¡rÅ|dksÇJ tdkrÞtt fdd tt fdd ttdd  ttdd  tdD ]ÊtdD ]Âtdkrt    k k u sJ W d    n	1 sw   Y  t    kku s3J W d    n	1 s>w   Y  t    kku sVJ W d    n	1 saw   Y  t    kku syJ W d    n	1 sw   Y  qött	 fdd tt	 fdd tt	 fdd tt	 fdd qöqðt
td ksÆJ  td dksÓJ d S )Nr3   r   rm   r2   r©   rU   l    hí] lýÿÿÿ hí] FTr;   rk   Úflintc                      ó    dd S )Nr   rk   r9   r9   ©rO   r9   r:   r@     ó    z%test_ModularInteger.<locals>.<lambda>c                      rý   )Nr;   rk   r9   r9   rþ   r9   r:   r@     rÿ   c                   S   ó   t dS ©Nr   ©r   r9   r9   r9   r:   r@     rq   c                   S   r   )NgÍÌÌÌÌÌ @r  r9   r9   r9   r:   r@     rq   c                      s     k S r4   r9   r9   ©rO   Ún1Ún2r9   r:   r@     rL   c                      s     kS r4   r9   r9   r  r9   r:   r@     rL   c                      s     kS r4   r9   r9   r  r9   r:   r@     rL   c                      s     kS r4   r9   r9   r  r9   r:   r@     rL   )r   rÎ   Úboolr   r/   r-   Ú
ValueErrorÚranger0   Ú	TypeErrorr   r   )r?   ÚaÚF7r9   r  r:   Útest_ModularInteger£  sÖ   



 ÿ ÿ ÿ ÿòr  c                   C   s<   t tdd dd dksJ t tdd ddksJ d S )Nr2   iÐ  r3   iâ  ió éd   l   UUª*UUª*UUª*U)Úintr   r9   r9   r9   r:   Útest_QQ_int  s   r  c                   C   sd   t ddksJ t ddksJ t ddksJ t ddks J t ddks(J t ddks0J d S )Nrl   çžÔJzî5çvIhÂ%<=ç+¡=çVç¯Ò<ç#B¡Ç;çWw'&l¡7)r   r9   r9   r9   r:   Útest_RR_double$  s   r  c                  C   s   t d} t d}| jdksJ |jdksJ t| d dks J t|d dk s*J t|jd}|| d dks:J ||d dksDJ d S )Nz1.01z1.0000000000000000000001é5   éP   rm   r  )Úprec)r   Ú_precr   r$   )Úf1Úf2ÚRR2r9   r9   r:   Útest_RR_Float-  s   r  c                   C   sÜ   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 t djdks6J t djdks?J t d	jdksHJ t d
jdksQJ t djdksZJ t djdkscJ t djdkslJ d S )Nrl   r  r  r  r  r  r  y        ëQž	@y        vIhÂ%<=y        +¡=y        Vç¯Ò<y        #B¡Ç;y        Ww'&l¡7)r   ÚrealÚimagr9   r9   r9   r:   Útest_CC_double:  s   r!  c                     sâ	  t j} dd dd|  d|  dd|   fD \}}}}t ||¡|ks$J t ||¡|ks.J t ||¡|ks8J t ||¡|ksBJ tddtddksNJ tdddksWJ tt dd dt dd kshJ tdd ¡ dkssJ tdd ¡ dks~J t tdd¡ttddtdksJ t tddt¡ttddtdks§J ttfD ]B  ddt	d	ks»J  
¡  ksÃJ  t¡d
ksÌJ  d¡dksÕJ  d|  ¡dksàJ ttdksêJ  dd ddksöJ  dd ddksJ  dd dksJ   ddksJ   ddks'J d  d   kr< ddks?J  J d d   krS ddksVJ  J   ddksbJ d d   krv ddksyJ  J d  ddksJ d ksJ d    kr¢ ddks¥J  J d     kr» ddksŸJ  J d d   krÛtt dd t d d ksÞJ  J d tddksêJ d tt dd dksúJ d tdt dd ks
J d tt dd t d d ksJ td\}}d| | ks1J td\}}| |  ddksFJ ttfdd ttfdd ttfdd ttfdd ttfdd ttfdd ttfd d ttfd!d ttfd"d ttfd#d ttfd$d ttfd%d ttfd&d ttfd'd ttfd(d   t d¡ ddksÜJ    dd¡t dksëJ tt fd)d   t¡}t|tsJ |j ks	J t|jdkr|jd  ¡ tksJ  tu rA  ¡ }t|ts.J |jtks6J |jj d | ksAJ  dd dd dd ddfD ]+}	  !|	¡d*u s_J   "|	¡d*u siJ   #|	¡d*u ssJ   $|	¡d*u s}J qSt%ttt| g}
|
t& t' g7 }
t(d+kr|
t) t* g7 }
|
D ]"}  |d¡ ddks¯J   |d|¡ ddks¿J qttfD ]$}  |dd¡ ddks×J   |dd|¡ ddksèJ qÅ tkrOt+d,ksøJ d  ddksJ d  dd-ksJ d  ddksJ d  ddks(J | ddks2J | ddks<J   ,¡  ksEJ   -¡ tksNJ q«t+d.ksXJ   ,¡ tksaJ   -¡  ksjJ d  dt dd kszJ d  t d/d t d0 d ksJ d  ddksJ d  ddks§J | t dd t d d ksŸJ  |f| ddksÈJ  t dd t dd }  .|¡tdd1ksâJ   /|¡tdksîJ q«d S )2Nc                 S   ó   g | ]}t  |¡qS r9   )r!   r«   ©r   r   r9   r9   r:   r   L  ó    z)test_gaussian_domains.<locals>.<listcomp>r;   r2   r3   r©   r   rk   z3 + 4*I)NN)r2   r   )r   r2   )r3   r©   rm   é   é   éüÿÿÿri   é   é	   rå   iÿÿÿé,   é   c                      s    d S r  r9   r9   ©Úqr9   r:   r@   |  rq   z'test_gaussian_domains.<locals>.<lambda>c                      s    d S r  r9   r9   r,  r9   r:   r@   }  rq   c                      s    d S r  r9   r9   r,  r9   r:   r@   ~  rq   c                      ó
   t  dS r  ©Údivmodr9   r,  r9   r:   r@     rA   c                      r.  r  r/  r9   r,  r9   r:   r@     rA   c                      s    t  S r4   ©r   r9   r,  r9   r:   r@     rq   c                      s    t  S r4   r1  r9   r,  r9   r:   r@     rq   c                      s   t   S r4   r1  r9   r,  r9   r:   r@     rq   c                      s   t   S r4   r1  r9   r,  r9   r:   r@     rq   c                      s    t  S r4   r1  r9   r,  r9   r:   r@     rq   c                      s   t   S r4   r1  r9   r,  r9   r:   r@     rq   c                      s    t  S r4   r1  r9   r,  r9   r:   r@     rq   c                      s   t   S r4   r1  r9   r,  r9   r:   r@     rq   c                      s    t  S r4   r1  r9   r,  r9   r:   r@     rq   c                      s   t   S r4   r1  r9   r,  r9   r:   r@     rq   c                      rÈ   r4   )r­   r
   r9   )ÚGr9   r:   r@     rA   FÚgmpyz
ZZ_I(3, 4)r   z
QQ_I(3, 4)é$   é0   rÚ   )0r   ÚImaginaryUnitr!   ÚgcdÚlcmr"   Úquadrantr«   r   ÚstrÚparentÚ_get_xyr
   Úhashr0  r/   ÚZeroDivisionErrorr	  r­   r·   r,   rÆ   r   Ú
isinstancer#   r[   rÕ   ÚgensÚas_exprÚas_AlgebraicFieldr    rÛ   ÚargsÚis_negativeÚis_positiveÚis_nonnegativeÚis_nonpositiver   r   r   r   r   r   Úreprrp   ru   ÚnumerÚdenom)r   r
  Úbr   Údr°   ÚrÚPRÚAFÚqir§   r`   Úq2r9   )r2  r-  r:   Útest_gaussian_domainsJ  sØ   ."(*
0...2@  *
(
(
$ &
 *.rR  c                   C   s  t jtju sJ t jtju sJ tdt d¡ksJ tdjtju s%J t dtju s.J dtt	t
t	  t	  tddt
    krQdt	t
t	  t	  ksTJ  J dt t	t
t	  t	  dt	t
t	  t	    krsdt
 ksvJ  J t  tdt¡t ju sJ t t dt ¡tjksJ t  tj¡tju sJ t  t j¡tju sŠJ ttdd  t  ¡ t ksµJ t  t¡t ksŸJ t t ¡t ksÇJ d S )Nrm   r2   c                   S   s
   t  g ¡S r4   )r   r­   r9   r9   r9   r:   r@   Ý  rA   ztest_EX_EXRAW.<locals>.<lambda>)r   r€   r   rò   r£   rô   r   Ú
ExpressionÚexr   r   r¢   r­   r·   r/   r,   ru   r6   r9   r9   r9   r:   Útest_EX_EXRAWÌ  s   LDrU  c                  C   s<   t dt tt dg} t| t dt dt tgksJ d S )Nrm   r3   )r   r   Úsorted)rž   r9   r9   r:   Útest_EX_orderingå  s   &rW  c                  C   s  t ttfD ]} |  | d¡| dksJ |  | d¡| dks!J qttfD ]>} |  t¡}|  | d¡| dks:J |  | d| ¡| ksHJ |  | d ¡| dksVJ |  | d | ¡|ksdJ q&t t } |  | td ¡| dksxJ |  | t d ¡| dksJ tt } |  |  tt ¡¡tddksJ t 	tt
¡} |  t¡}|| | jks±J | j| || j  | ksÀJ d S )Nr2   rm   r   rk   r   )r   r   r   Úcanonical_unitr!   r"   r­   r   r   rK   r   r£   )r`   r°   r9   r9   r:   Útest_canonical_unitê  s$   
 "
"rY  c                   C   s4   t td ¡ dksJ t td ¡ dksJ d S )Nr2   r   r   )r:  r   r;  r   r9   r9   r9   r:   Útest_issue_18278  s   rZ  c                  C   óH   t j} dd d|  dfD \}}t |¡dksJ t |¡dks"J d S )Nc                 S   r"  r9   ©r   r«   r#  r9   r9   r:   r     r$  z+test_Domain_is_negative.<locals>.<listcomp>r2   r;   F)r   r6  r   rD  ©r   r
  rK  r9   r9   r:   Útest_Domain_is_negative	  ó   r^  c                  C   r[  )Nc                 S   r"  r9   r\  r#  r9   r9   r:   r     r$  z+test_Domain_is_positive.<locals>.<listcomp>r2   r;   F)r   r6  r   rE  r]  r9   r9   r:   Útest_Domain_is_positive  r_  r`  c                  C   r[  )Nc                 S   r"  r9   r\  r#  r9   r9   r:   r     r$  z.test_Domain_is_nonnegative.<locals>.<listcomp>r2   r;   F)r   r6  r   rF  r]  r9   r9   r:   Útest_Domain_is_nonnegative  r_  ra  c                  C   r[  )Nc                 S   r"  r9   r\  r#  r9   r9   r:   r      r$  z.test_Domain_is_nonpositive.<locals>.<listcomp>r2   r;   F)r   r6  r   rG  r]  r9   r9   r:   Útest_Domain_is_nonpositive  r_  rb  c                  C   sJ   t t } |  t¡}|  td¡|d ksJ |  td¡|d ks#J d S )Nr3   )r   r   r­   r   r«   )r`   ÚeKr9   r9   r:   Útest_exponential_domain%  s   
rd  c                  C   s  t  td¡} | jjd u sJ ttddd}t  |¡} | jjjdks%J t j|dd} | jjjdks5J t  tdtd¡} | jjd u sGJ t  |td¡} | jjd u sWJ t jtdtddd} | jjjdkslJ t  |¡} |  | g d¢¡}|j|ju sJ d S )Nr2   Úalpha)ÚaliasÚthetar3   )rm   r2   r3   )r   rQ   r   rÛ   rf  r   ÚnameÚ
to_alg_num)Úkre  Úbetar9   r9   r:   Útest_AlgebraicField_alias,  s    

rl  c                  C   sT  t  t d¡du sJ t  t d¡t dksJ t  t d¡du s#J t  t d¡d u s.J t  t d¡du s9J t  t d¡t dksFJ t  t d¡du sQJ t  t d¡d u s\J t tdd¡du shJ t tdd¡td	dkswJ t td
d¡du sJ t td
d¡td	dksJ t tdd¡du sJ t tdd¡td	dks­J t tdd¡du s¹J t tdd¡d u sÅJ t tdd¡du sÑJ t tdd¡d u sÝJ t td¡du sèJ t td¡tdksõJ t td¡du sJ t td¡tdksJ t tdd¡du sJ t tdd¡d u s)J t td¡du s5J t td¡tdksCJ t td¡du sOJ tjt td¡tdddsaJ t td¡du smJ t td¡tdks{J t td¡du sJ t td¡d u sJ t td¡du sJ tjt td¡tddds±J t td¡du sœJ t td¡tdksËJ t td¡du s×J t td¡tddksæJ t tdd¡du sóJ t tdd¡tddksJ t tdd¡du sJ t tdd¡tddks J td} |  | d¡du s0J |  | d¡| dks>J |  | d¡du sJJ |  | d¡| dksXJ td}| |d¡du shJ | |d¡|d	ksvJ | |d	¡du sJ | |d	¡d u sJ | |d¡du sJ | |d¡|dksšJ d S )Nr©   Tr2   é*   Fr   rk   r)  r3   é   r&  i÷ÿÿÿr'  é   r;   iðÿÿÿg      @g      @gÍ;f ö?r  )Ú	tolerancerm   éýÿÿÿr   rU   )r   Ú	is_squareÚexsqrtr   r   Úalmosteqr   r   )ÚF2r  r9   r9   r:   Útest_exsqrtM  sl   $$   rv  N){Ú__doc__Úsympy.external.gmpyr   Úsympy.core.numbersr   r   r   r   r   r   r	   r
   r   Úsympy.core.singletonr   Ú&sympy.functions.elementary.exponentialr   Ú(sympy.functions.elementary.miscellaneousr   Ú(sympy.functions.elementary.trigonometricr   Úsympy.polys.polytoolsr   Ú	sympy.abcr   r   r   Úsympy.polys.domainsr   r   r   r   r   r   r   r   r   r   r   r   Ú"sympy.polys.domains.algebraicfieldr    Ú#sympy.polys.domains.gaussiandomainsr!   r"   Ú"sympy.polys.domains.polynomialringr#   Úsympy.polys.domains.realfieldr$   Ú!sympy.polys.numberfields.subfieldr%   Úsympy.polys.ringsr&   Úsympy.polys.specialpolysr'   Úsympy.polys.fieldsr(   Úsympy.polys.agca.extensionsr)   Úsympy.polys.polyerrorsr*   r+   r,   r-   r.   Úsympy.testing.pytestr/   r0   Ú	itertoolsr1   rQ   rE   r6   rR   rT   rY   re   rh   rn   ro   rs   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û   r  r  r  r  r!  rR  rU  rW  rY  rZ  r^  r`  ra  rb  rd  rl  rv  r9   r9   r9   r:   Ú<module>   s    ,8zy3 "):
|	 !