a
    {þdF«  ã                   @   sè  d 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 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lAmBZB ddlCmDZD e Eeded¡ZFdd ZGdd ZHdd ZIdd  ZJd!d" ZKd#d$ ZLd%d& ZMd'd( ZNd)d* ZOd+d, ZPd-d. ZQd/d0 ZRd1d2 ZSd3d4 ZTd5d6 ZUd7d8 ZVd9d: ZWd;d< ZXd=d> ZYd?d@ ZZdAdB Z[dCdD Z\dEdF Z]dGdH Z^dIdJ Z_dKdL Z`dMdN ZadOdP ZbdQdR ZcdSdT ZddUdV ZedWdX ZfdYdZ Zgd[d\ Zhd]d^ Zid_d` Zjdadb Zkdcdd Zldedf Zmdgdh Zndidj Zodkdl Zpdmdn Zqdodp Zrdqdr ZsdsS )tzPTests for classes defining properties of ground domains, e.g. ZZ, QQ, ZZ[x] ... é    )	ÚAlgebraicNumberÚEÚFloatÚIÚIntegerÚRationalÚooÚpiÚ_illegal)ÚS)Úexp)Úsqrt)Úsin)ÚPoly)ÚxÚyÚz)ÚHAS_GMPY)Ú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)Úproducté   é   c                 C   s
   |   |¡S ©N)Úunify)ZK0ÚK1© r6   úo/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/polys/domains/tests/test_domains.pyr4   )   s    r4   c                  C   sŽ	  t d} t| | | ksJ t| ttks,J t| ttks>J t| ttksPJ t| ttksbJ t| ttkstJ t| tt tt ksJ t| t t¡t t¡ks¬J t| t	t	ksŸJ 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ks0J tttt tt ksLJ ttt t¡t t¡kslJ ttt	t	ksJ 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ksøJ tttt tt ksJ ttt t¡t t¡ks4J ttt	t	ksHJ tt
| t
ks\J tt
tt
kspJ 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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srJ 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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sHJ tttt tt ksdJ 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	ksJ tt| tks(J ttttks<J ttttksPJ ttttksdJ ttttksxJ 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| tksJ ttttks*J ttttks>J ttttksRJ ttttksfJ ttttkszJ 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 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sVJ ttt ttt ksrJ 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 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sNJ tt t¡tt t¡ksnJ 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	| t	k	sJ tt	tt	k	sJ tt	tt	k	s.J tt	tt	k	sBJ tt	tt	k	sVJ tt	tt	k	sjJ 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 )Nr2   r1   )r   r4   r   r   ÚALGr   r   r   Ú
frac_fieldr   r!   r"   Úalgebraic_fieldr   r   r   )ÚF3r6   r6   r7   Útest_Domain_unify,   sÌ      &  &     &  $      $&r<   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sZJ 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¡t t¡ksÒJ 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s8J 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s0J t t t¡tt t¡ksPJ t t t¡tt t¡kspJ 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t¡ks4J t t 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s0J t t t¡t t¡t t¡ksVJ 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sFJ t t tt¡t t¡t tt¡kspJ 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sFJ t t tt¡t tt¡t ttt¡kstJ 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sBJ t t t¡t t¡t t¡kshJ 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sdJ 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	sBJ t t tt¡t tt¡t ttt¡k	spJ 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
s2J 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sXJ 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s6J 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sPJ t t t¡t tt¡t tt¡kszJ 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sTJ 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 d S r3   )r4   r   Ú	poly_ringr   r   r   r9   r   r6   r6   r6   r7   Útest_Domain_unify_composite   sÀ    $$$$$$$$        $$$$$$$$&&&&********....&&&&********....&&&&********....&&&&********...r>   c                  C   s\  t  td¡} t  td¡}t  tdtd¡}|  |¡|ksBJ |  | ttf ¡| ttf ksdJ | ttf  | ¡| ttf ksJ |  |  tt¡¡|  tt¡ksšJ |  tt¡ | ¡|  tt¡ksÊJ |  |ttf ¡|ttf ksìJ | ttf  |¡|ttf ksJ |  | tt¡¡| tt¡ks4J |  tt¡ |¡| tt¡ksXJ d S )Né   é   )r   r:   r   r4   r   r   r9   )Zsqrt5Zsqrt7Zsqrt57r6   r6   r7   Útest_Domain_unify_algebraic  s    """""$$rA   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sJ | |¡|ksJ | |¡|ksŠJ | |¡|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s2J | tt ¡|ksJJ | tt ¡|ksbJ | t¡|ksvJ | 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sDJ | tt ¡|ks\J | tt ¡|kstJ | tttf ¡|ksJ t ttd d ttttf d}| tt ¡|ksÊJ | tttf ¡|ksæJ | tttf ¡|ksJ | 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 )Nr1   ©Údomain)r)   r   r   r   r   r   r4   r   )	ZKxZZZKxQQZKxZZyZKxQQyÚKZKzZKxÚKyZKxyr6   r6   r7   Ú!test_Domain_unify_FiniteExtension*  sR    "rF   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 r3   )r   r   r   Úunify_with_symbolsr   r6   r6   r6   r7   Ú<lambda>^  ó    z0test_Domain_unify_with_symbols.<locals>.<lambda>c                   S   s   t  t ttf ttf¡S r3   )r   rG   r   r   r   r6   r6   r6   r7   rH   _  rI   )r/   r*   r6   r6   r6   r7   Útest_Domain_unify_with_symbols]  s    rJ   c                   C   s   dt v du sJ dtv du s J dtv du s0J dtv du s@J dtv du sPJ dtv du s`J dtttf v du sxJ 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 sXJ dt v du sjJ 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 sBJ tddtv du sZJ tddtv du srJ 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 tdd	t v du sJ tdd	tv du s2J tdd	tv du sJJ tdd	tv du sbJ tdd	tv du szJ 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 sLJ d
tv du s^J d
tttf v du sxJ 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 s2J dtttf v du sLJ dtttf v du sfJ t	tv du sxJ 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 s6J t
dtv du sLJ t
dtv du sbJ t
dtv du sxJ t
dtv du sJ t
dtv du s€J t
dtttf v du sÂJ t
dtttf v du sàJ t
dtttf 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 sXJ dt
d d tv du svJ 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 sPJ tdtv du sfJ 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ttf v du sÆJ tdtttf v du säJ t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 	s6J td d tv du 	sPJ td d tv du 	sjJ 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 
s|J td td  tv du 
sJ td td  tv du 
sžJ td td  tv du 
sÖJ td td  tv du 
sôJ td td  tv du sJ td td  tt v du s4J td td  tt v du sVJ td td  tt v du sxJ 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éùÿÿÿé   éÿÿÿÿr@   Fr2   r?   g      @çëQž	@r1   é   )r   r   r   r   r   r8   r   r   r   r   r   r   r   r6   r6   r6   r7   Útest_Domain__contains__a  sö          &&&""""""&&&rP   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 sjJ tt t dt t¡v du sJ tt t tdt ¡v du sªJ d S )Nr1   r2   rO   T)r   r   r   r9   r   r6   r6   r6   r7   Útest_issue_14433í  s
    $, rQ   c                   C   s6  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 sVJ tttf jdu slJ t  t¡jdu sJ t t¡jdu sJ t  tt¡jdu sªJ t t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 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sbJ 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 r3   )r8   Úget_ringr6   r6   r6   r7   rH     rI   z&test_Domain_get_ring.<locals>.<lambda>)r   Zhas_assoc_Ringr   r   r   r9   r   r   r8   rR   r/   r.   r6   r6   r6   r7   Útest_Domain_get_ringõ  s4    """"rS   c                   C   sf  t jdu sJ tjdu sJ tjdu s*J tjdu s8J tjdu sFJ tt jdu sXJ tt jdu sjJ tttf jdu sJ tttf jdu 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sæJ 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sbJ d S )NT)
r   Zhas_assoc_Fieldr   r   r   r8   r   r   Ú	get_fieldr9   r6   r6   r6   r7   Útest_Domain_get_field  s$    "rU   c                   C   s@  t  ¡ t ksJ t ¡ tks J t ¡ tks0J t ¡ tks@J t ¡ tksPJ tt  ¡ tt kshJ 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¡ksJ t tt¡ ¡ t tt¡ks<J d S r3   )	r   Z	get_exactr   r   r   r8   r   r   r9   r6   r6   r6   r7   Útest_Domain_get_exact-  s      "rV   c                     sö   g d¢} g d¢}g d¢}t t tt t t¡   dd | D |ksLJ dd | D |ksbJ fdd| D |ks|J  fdd| D |ksJ fd	d| D |ks°J  t¡d
u sÆJ    t¡d
u sÜJ  t¡du sòJ d S )N)éþÿÿÿrM   r   rO   r1   )FTFTF)TTFTTc                 S   s   g | ]}t  t |¡qS r6   )r   Úis_unit©Ú.0Únr6   r6   r7   Ú
<listcomp>B  rI   z'test_Domain_is_unit.<locals>.<listcomp>c                 S   s   g | ]}t  t |¡qS r6   )r   rX   rY   r6   r6   r7   r\   C  rI   c                    s   g | ]}    |¡qS r6   ©rX   rY   )ÚZZxr6   r7   r\   D  rI   c                    s   g | ]}    |¡qS r6   r]   rY   )ÚQQxr6   r7   r\   E  rI   c                    s   g | ]}    |¡qS r6   r]   rY   )ÚQQxfr6   r7   r\   F  rI   FT)r   r   r   r9   rX   )ÚnumsZinvringZinvfieldr6   )r_   r`   r^   r7   Útest_Domain_is_unit=  s    rb   c                     sÀ  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qtqhqTt  	d	¡t d
dks®J t
dt\}
}t 	|| ¡dksÒJ t 	|| |
 ¡ ¡dksîJ t 	tdd¡tddksJ t 	tdd¡tddks.J t  t¡}t t¡}t t }tt }	||||	g}t||D ],\}}| | t¡|¡| t¡kshJ qh| t ddt ¡|t ddksŒJ d S )Nc                 S   sH   t | t |u s&J d| ||||f | |ksDJ d| ||||f d S )Nz%s, %s: %s %s -> %s)Útype)Úe1Úe2r5   ÚK2ÚK3r6   r6   r7   Úcheck_elementN  s    &z*test_Domain_convert.<locals>.check_elementc                    s~   |   |¡} | | j| ¡|j| ||  | |j|¡|j| ||  | | j| ¡|j| ||  | |j|¡|j| || d S r3   )r4   Úconvert_fromÚoneÚzero)r5   rf   rg   ©rh   r6   r7   Úcheck_domainsR  s
    
z*test_Domain_convert.<locals>.check_domainsc              
   S   s:   | | t  | t | t tf |  t ¡|  t¡|  t t¡g}|S r3   )r   r   r9   )rD   Údomainsr6   r6   r7   Úcomposite_domainsY  s
    ýz.test_Domain_convert.<locals>.composite_domainsr1   r2   gLoûñW5l   Ó$7ûq/ l                                r   r   rO   )r   r:   r   r   r"   r!   r   r   Ú	enumerateÚconvertr&   Ú	to_domainr9   r   r0   ri   Ú
from_sympy)rm   ro   ZQQ2ZQQ3ZdomsÚir5   rf   rg   ZK4ÚRZxrZKsZKaZKbr6   rl   r7   Útest_Domain_convertL  s2    
  

&rv   c                  C   sŸ   t  t¡} t t }|  t¡|  | t¡|¡ks2J | t¡| |  t¡| ¡ksRJ t  tt¡} t t }|  t¡|  | t¡|¡ksJ t tt¡} t t }|  t¡|  | t¡|¡ksºJ d S r3   )r   Zold_poly_ringr   rq   r   r   )r5   rf   r6   r6   r7   Ú!test_GlobalPolynomialRing_convert  s    
   rw   c                  C   s$   t dt\} t ¡ |  ¡ ks J d S ©NÚ )r&   r   r=   rr   )ru   r6   r6   r7   Útest_PolynomialRing__init  s    rz   c                  C   s$   t dt\} t ¡ |  ¡ ks J d S rx   )r(   r   r9   rr   )ÚFr6   r6   r7   Útest_FractionField__init  s    r|   c                  C   s`   t  t¡} |  t ddt ¡|  tdd¡ks0J t  t¡} |  tdt¡|  td¡ks\J d S )Nr1   r2   )r   r9   r   rq   rs   r   r   r   ©rD   r6   r6   r7   Ú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sBJ t  t¡ tt¡t  ttt¡ksfJ ttdd  d S )Nc                   S   s   t t  t¡S r3   )r   r   Úinjectr6   r6   r6   r7   rH   §  rI   ztest_inject.<locals>.<lambda>)r   r   r   r   r   r9   r/   r+   r6   r6   r6   r7   Ú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sFJ 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¡ksüJ tttd d tt t d tttd d tt d}   t¡| ksHJ tt fdd d S )Nr1   rO   rB   c                      s
      t¡S r3   )Údropr   r6   ©rE   r6   r7   rH   ·  rI   ztest_drop.<locals>.<lambda>)	r   r   r   r   r9   r)   r   r/   r+   r}   r6   r   r7   Ú	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 rVt| dksZJ d S )N)rO   r1   r2   é   c                 s   s   | ]}t  |¡V  qd S r3   ©r   Úof_type©rZ   Úeltr6   r6   r7   Ú	<genexpr>œ  rI   z"test_Domain_map.<locals>.<genexpr>c                 s   s   | ]}t  |¡V  qd S r3   r   r   r6   r6   r7   r   Á  rI   r   rO   )r   ÚmapÚallÚlen)Úseqr6   r6   r7   Ú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 s`J tttf t ttf kdu sJ t  tt¡t  tt¡kdu s J t tt¡t tt¡kdu sÀJ t  tt¡t tt¡kdu sàJ 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   r9   r$   r   r6   r6   r6   r7   Útest_Domain___eq__Ä  s           "r   c                  C   sž   t  td¡} | jjttd d ks*J | jtks8J t td¡} | jjttd d ksbJ | jtkspJ |  td¡} | jjttd dtd   d ksŠJ | jtksŽJ d S ©Nr1   r2   r   é
   rO   )	r   r:   r   ÚextÚminpolyr   r   Údomr   )Úalgr6   r6   r7   Útest_Domain__algebraic_fieldÔ  s    (r   c                  C   sž   t td d } t td d }t td dtd   d }t | ¡}|jj| ksVJ |jtksdJ t | ¡}|jj| ks~J |jtksJ | |¡}|jj|ksŠJ |jtksŽJ d S r   )r   r   r   Zalg_field_from_polyr   r   r   r   )ÚfÚgÚhr   r6   r6   r7   Útest_Domain_alg_field_from_polyâ  s    


r   c                  C   s   t  d¡} | jjttdks"J | jtks0J t d¡}|jjttdksRJ |jtks`J | d¡}t|j| jd usJ |jtksJ d S )Né   r2   r   )	r   Zcyclotomic_fieldr   r   r   r'   r   r   r%   )rD   r{   r   r6   r6   r7   Útest_Domain_cyclotomic_fieldô  s    


r   c            	      C   sª  t dt\} }}tdt\}}}|d |d  |d  }|d |d  d }|d |d  }| ¡  ||  ¡ ¡d u sxJ | ¡  ||  ¡ ¡|d d |d d  ksšJ | ¡  ||  ¡ ¡|d |d  ksÐJ t dt\} }}tdt\}}}|d |d  |d  }|d |d  d }|d |d  }| ¡  ||  ¡ ¡d u sJJ | ¡  ||  ¡ ¡|d d |d d  ks|J | ¡  ||  ¡ ¡|d |d  ksŠJ d S )Núx,yr1   rO   r   )r(   r   r&   rr   Zfrom_FractionFieldr   )	r{   r   r   ru   ÚXÚYr   r   r   r6   r6   r7   Ú&test_PolynomialRing_from_FractionField  s     0(2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sŽJ d S )Nr   r2   r1   r?   é   )r&   r   r(   r   rr   Zfrom_PolynomialRing)ru   r   r   r{   r   r   r   r   r6   r6   r7   Ú&test_FractionField_from_PolynomialRing  s    0r¢   c                   C   s^   t d t dd¡du sJ t d t dd¡du s<J t d t dd¡du sZJ d S )Nr2   rO   Tr?   r@   F)r   r   r6   r6   r6   r7   Ú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 r3   )r   r   r   r9   r6   r6   r6   r7   Útest___eq__)  s    r€   c                   C   s   t  tj¡t  d¡ksJ t  td¡t  d¡ks6J t  tj¡t  d¡ksPJ t  td¡t  d¡kslJ t  td¡t  td ¡ ¡ksJ d S )Nr   g        rO   g      ð?)r   rq   r   ÚZeroÚdtypeÚOner   Zevalfr6   r6   r6   r7   Ú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 ]H | D ]>tkrP tkrPq: vsdJ  ftt	 fdd q:q2d S )Nc                 S   s   g | ]}t |qS r6   )Úfloat)rZ   rt   r6   r6   r7   r\   7  s   z*test_not_in_any_domain.<locals>.<listcomp>r2   c                      s
      ¡S r3   )rq   r6   ©r   rt   r6   r7   rH   >  rI   z(test_not_in_any_domain.<locals>.<lambda>)
Úlistr
   r   r   r   r   r   r   r/   r,   )Úcheckr6   rª   r7   Útest_not_in_any_domain6  s    
ÿr­   c                     s
  t d} | d}t|| jr$|dks(J | d}t|| jrD|dksHJ | d}t|| jrd|dkshJ | d}t|| jr|dksJ | d}t|| jr€|dksšJ | | d}t|| jrÈ|dksÌJ | | d}t|| jrì|dksðJ | | d}t|| jr|dksJ | | d}t|| jr<|dks@J | | d}t|| jrd|dkshJ | d }t|| jr|dksJ | d }t|| jr°|dksŽJ d| d }t|| jrØ|dksÜJ | dd }t|| jr |dksJ | d| d }t|| jr,|dks0J | d| d }t|| jrX|dks\J d| d }t|| jr|dksJ | dd }t|| jrš|dks¬J | d| d }t|| jrÔ|dksØJ | d| d }t|| jr |dksJ d| d }t|| jr(|dks,J | dd }t|| jrP|dksTJ | d| d }t|| jr||dksJ | d| d }t|| jrš|dks¬J d| d }t|| jrÐ|dksÔJ | dd }t|| jrø|dksüJ | d| d }t|| jr$|dks(J | d| d }t|| jrP|dksTJ d| d }t|| jrx|dks|J | dd }t|| jr |dks€J | d| d }t|| jrÌ|dksÐJ | d| d }t|| jrø|dksüJ | dd }t|| jr |dks$J | dd }t|| jrH|dksLJ | dd }t|| jrp|dkstJ t d}|dd }t||jr |dks€J |dd }t||jrÈ|dksÌJ |dtd }t||jrô|dksøJ t| dd	u sJ t| dd
u s$J t d  dd }t| jrP|dksTJ  dd }t| jrx|dks|J  dd }t| jr |dks€J  dd }t| jrÈ|dksÌJ  d dk d
u sæJ  d dkd
u s J  d dkd	u sJ  d dkd	u s4J  d dk d	u sNJ  d dkd	u shJ  d dkd
u sJ  d dkd
u sJ  d dk d
u s¶J  d dkd
u sÐJ  d dkd	u sêJ  d dkd	u sJ  d dk d	u sJ  d dkd	u s8J  d dkd
u sRJ  d dkd
u slJ  ddk d
u sJ  ddkd
u sJ  ddkd	u s®J  ddkd	u sÄJ  ddk d	u sÚJ  ddkd	u sðJ  ddkd
u 	sJ  ddkd
u 	sJ  ddk d
u 	s2J  ddkd
u 	sHJ  ddkd	u 	s^J  ddkd	u 	stJ  ddk d	u 	sJ  ddkd	u 	s J  ddkd
u 	s¶J  ddkd
u 	sÌJ tt fdd tt fdd ttdd  ttdd  d S )Nr2   r   rO   r1   r   r@   l    hí] lýÿÿÿ hí] FTr?   rM   c                      s    dd S )Nr   rM   r6   r6   ©ZF5r6   r7   rH   Ò  rI   z%test_ModularInteger.<locals>.<lambda>c                      s    dd S )Nr?   rM   r6   r6   r®   r6   r7   rH   Ó  rI   c                   S   s   t dS ©Nr   ©r   r6   r6   r6   r7   rH   Õ  rI   c                   S   s   t dS )NgÍÌÌÌÌÌ @r°   r6   r6   r6   r7   rH   Ö  rI   )r   Ú
isinstancerŠ   r   Úboolr/   r-   Ú
ValueError)r;   ÚaZF7r6   r®   r7   Útest_ModularIntegerA  sú    

rµ   c                   C   s<   t tdd dd dksJ t tdd ddks8J d S )Nr1   iÐ  r2   iâ  ió éd   l   UUª*UUª*UUª*U)Úintr   r6   r6   r6   r7   Útest_QQ_intØ  s    rž   c                   C   sd   t ddksJ t ddks J t ddks0J t ddks@J t ddksPJ t ddks`J d S )NrN   çžÔJzî5çvIhÂ%<=ç+¡=çVç¯Ò<ç#B¡Ç;çWw'&l¡7)r   r6   r6   r6   r7   Ú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 sTJ t|jd}|| d dkstJ ||d dksJ d S )Nz1.01z1.0000000000000000000001é5   éP   rO   r¹   )Úprec)r   Z_precr   r$   )Úf1Úf2ZRR2r6   r6   r7   Ú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s6J t djdksHJ t djdksZJ t djdkslJ 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sØJ d S )NrN   r¹   rº   r»   rŒ   rœ   rŸ   y        ëQž	@y        vIhÂ%<=y        +¡=y        Vç¯Ò<y        #B¡Ç;y        Ww'&l¡7)r   ÚrealÚimagr6   r6   r6   r7   Útest_CC_doubleñ  s    rÈ   c                     sÜ	  t j} dd dd|  d|  dd|   fD \}}}}t ||¡|ksHJ t ||¡|ks\J t ||¡|kspJ t ||¡|ksJ tddtddksJ tdddks®J tt dd dt dd ksÐJ tdd ¡ dksæJ 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sRJ ttfD ]z  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s0J   ddksHJ   ddks`J d  d   kr ddksn J d d   krŽ ddksºn J   ddksÒJ d d   krø ddksþn J d  ddksJ d ks(J d    krN ddksTn J d     kr~ ddksn J d d   krŒtt dd t d d ksÂn 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sDJ td\}}d| | kshJ td\}}| |  dd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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 r  ¡ }t|tsbJ |jtksrJ |jj d | ksJ  dd dd dd ddfD ]V}	  !|	¡d*u sÄJ   "|	¡d*u sØJ   #|	¡d*u sìJ   $|	¡d*u s¬J q¬t% t& tt| g}
t'r.|
t( t) g7 }
|
D ]D}  |d¡ ddksTJ   |d|¡ ddks2J q2ttfD ]H}  |dd¡ ddks€J   |dd|¡ ddksJ q tkrt*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sFJ | ddksZJ | ddksnJ   +¡  ksJ   ,¡ tk	sÔJ qZt*d-ksšJ   +¡ tksºJ   ,¡  ksÌJ d  dt dd ksìJ d  t d.d t d/ d k	sJ d  ddk	s.J d  ddk	sFJ | t dd t d d k	stJ  |f| ddk	sJ  t dd t dd }  -|¡tdd0k	sŒJ   .|¡tdksZJ qZd S )1Nc                 S   s   g | ]}t  |¡qS r6   )r!   rq   ©rZ   r   r6   r6   r7   r\     rI   z)test_gaussian_domains.<locals>.<listcomp>r?   r1   r2   r   r   rM   z3 + 4*I)NN)r1   r   )r   r1   )r2   r   rO   é   é   éüÿÿÿrK   é   é	   r   iÿÿÿé,   é   c                      s    d S r¯   r6   r6   ©Úqr6   r7   rH   3  rI   z'test_gaussian_domains.<locals>.<lambda>c                      s    d S r¯   r6   r6   rÑ   r6   r7   rH   4  rI   c                      s    d S r¯   r6   r6   rÑ   r6   r7   rH   5  rI   c                      s
   t  dS r¯   ©Údivmodr6   rÑ   r6   r7   rH   6  rI   c                      s
   t  dS r¯   rÓ   r6   rÑ   r6   r7   rH   7  rI   c                      s    t  S r3   ©r   r6   rÑ   r6   r7   rH   8  rI   c                      s    t  S r3   rÕ   r6   rÑ   r6   r7   rH   9  rI   c                      s   t   S r3   rÕ   r6   rÑ   r6   r7   rH   :  rI   c                      s   t   S r3   rÕ   r6   rÑ   r6   r7   rH   ;  rI   c                      s    t  S r3   rÕ   r6   rÑ   r6   r7   rH   <  rI   c                      s   t   S r3   rÕ   r6   rÑ   r6   r7   rH   =  rI   c                      s    t  S r3   rÕ   r6   rÑ   r6   r7   rH   >  rI   c                      s   t   S r3   rÕ   r6   rÑ   r6   r7   rH   ?  rI   c                      s    t  S r3   rÕ   r6   rÑ   r6   r7   rH   @  rI   c                      s   t   S r3   rÕ   r6   rÑ   r6   r7   rH   A  rI   c                      s
      t¡S r3   )rs   r	   r6   )ÚGr6   r7   rH   E  rI   Fz
ZZ_I(3, 4)rW   z
QQ_I(3, 4)é$   é0   r   )/r   ÚImaginaryUnitr!   ÚgcdÚlcmr"   Zquadrantrq   r   ÚstrÚparentZ_get_xyr	   ÚhashrÔ   r/   ÚZeroDivisionErrorÚ	TypeErrorrs   Úto_sympyr,   r   r   r±   r#   rC   r   ZgensZas_exprZas_AlgebraicFieldr    r   ÚargsÚis_negativeÚis_positiveÚis_nonnegativeÚis_nonpositiver   r   r   r   r   ÚreprrR   rT   ZnumerZdenom)r   rŽ   ÚbÚcÚdrt   ÚrZPRZAFZqirn   rD   Zq2r6   )rÖ   rÒ   r7   Útest_gaussian_domains  sÔ    ."*,
.,,,0>  *
(
($ &
 *.rì   c                   C   s  t jtju sJ t jtju s J tdt d¡ks6J tdjtju sJJ t dtju s\J dtt	t
t	  t	  tddt
    kr dt	t
t	  t	  ksŠn J dt t	t
t	  t	  dt	t
t	  t	    krâdt
 ksèn 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 s8J t  t j¡tju sPJ ttdd  t  ¡ t kspJ t  t¡t ksJ t t ¡t ksJ d S )NrO   r1   c                   S   s
   t  g ¡S r3   )r   rs   r6   r6   r6   r7   rH     rI   ztest_EX_EXRAW.<locals>.<lambda>)r   rk   r   r¥   rj   r§   r   Ú
ExpressionÚexr   r   ri   rs   rá   r/   r,   rT   r4   r6   r6   r6   r7   Útest_EX_EXRAW}  s    JBrï   c                  C   s  t ttfD ]8} |  | d¡| dks(J |  | d¡| dks
J q
ttfD ]|} |  t¡}|  | d¡| dkstJ |  | d| ¡| ksJ |  | d ¡| dks¬J |  | d | ¡|ksLJ qLt t } |  | td ¡| dksðJ |  | t d ¡| dksJ tt } |  |  tt ¡¡tddks>J t 	tt
¡} |  t¡}|| | jkshJ | j| || j  | ksJ d S )Nr1   rO   rW   rM   r   )r   r   r   Zcanonical_unitr!   r"   rs   r   r   r9   r   rj   )rD   rt   r6   r6   r7   Útest_canonical_unit  s$    
"$
rð   c                   C   s4   t td ¡ dksJ t td ¡ dks0J d S )Nr1   r   r   )rÜ   r   rÝ   r   r6   r6   r6   r7   Útest_issue_18278°  s    rñ   c                  C   sH   t j} dd d|  dfD \}}t |¡dks2J t |¡dksDJ d S )Nc                 S   s   g | ]}t  |¡qS r6   ©r   rq   rÉ   r6   r6   r7   r\   ·  rI   z+test_Domain_is_negative.<locals>.<listcomp>r1   r?   F)r   rÙ   r   rã   ©r   rŽ   rè   r6   r6   r7   Útest_Domain_is_negativeµ  s    rô   c                  C   sH   t j} dd d|  dfD \}}t |¡dks2J t |¡dksDJ d S )Nc                 S   s   g | ]}t  |¡qS r6   rò   rÉ   r6   r6   r7   r\   Ÿ  rI   z+test_Domain_is_positive.<locals>.<listcomp>r1   r?   F)r   rÙ   r   rä   ró   r6   r6   r7   Útest_Domain_is_positiveŒ  s    rõ   c                  C   sH   t j} dd d|  dfD \}}t |¡dks2J t |¡dksDJ d S )Nc                 S   s   g | ]}t  |¡qS r6   rò   rÉ   r6   r6   r7   r\   Å  rI   z.test_Domain_is_nonnegative.<locals>.<listcomp>r1   r?   F)r   rÙ   r   rå   ró   r6   r6   r7   Útest_Domain_is_nonnegativeÃ  s    rö   c                  C   sH   t j} dd d|  dfD \}}t |¡dks2J t |¡dksDJ d S )Nc                 S   s   g | ]}t  |¡qS r6   rò   rÉ   r6   r6   r7   r\   Ì  rI   z.test_Domain_is_nonpositive.<locals>.<listcomp>r1   r?   F)r   rÙ   r   ræ   ró   r6   r6   r7   Útest_Domain_is_nonpositiveÊ  s    r÷   c                  C   sJ   t t } |  t¡}|  td¡|d ks,J |  td¡|d ksFJ d S )Nr2   )r   r   rs   r   rq   )rD   ZeKr6   r6   r7   Útest_exponential_domainÑ  s    
rø   c                  C   s
  t  td¡} | jjd u sJ ttddd}t  |¡} | jjjdksJJ t j|dd} | jjjdksjJ t  tdtd¡} | jjd u sJ t  |td¡} | jjd u s®J t jtdtddd} | jjjdksØJ t  |¡} |  | g d¢¡}|j|ju sJ d S )Nr1   Úalpha)ÚaliasÚthetar2   )rO   r1   r2   )r   r:   r   r   rú   r   ÚnameZ
to_alg_num)Úkrù   Úbetar6   r6   r7   Útest_AlgebraicField_aliasØ  s     

rÿ   N)tÚ__doc__Zsympy.core.numbersr   r   r   r   r   r   r   r	   r
   Zsympy.core.singletonr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Zsympy.polys.polytoolsr   Z	sympy.abcr   r   r   Zsympy.external.gmpyr   Zsympy.polys.domainsr   r   r   r   r   r   r   r   r   r   r   r   Z"sympy.polys.domains.algebraicfieldr    Z#sympy.polys.domains.gaussiandomainsr!   r"   Z"sympy.polys.domains.polynomialringr#   Zsympy.polys.domains.realfieldr$   Z!sympy.polys.numberfields.subfieldr%   Zsympy.polys.ringsr&   Zsympy.polys.specialpolysr'   Zsympy.polys.fieldsr(   Zsympy.polys.agca.extensionsr)   Zsympy.polys.polyerrorsr*   r+   r,   r-   r.   Zsympy.testing.pytestr/   Ú	itertoolsr0   r:   r8   r4   r<   r>   rA   rF   rJ   rP   rQ   rS   rU   rV   rb   rv   rw   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ø   rÿ   r6   r6   r6   r7   Ú<module>   s   ,8ry3 "5

 |