o
    *Î®cF«  ã                   @   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)ÚK0ÚK1© r7   úM/tmp/pip-target-vg8gfxp4/lib/python/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s(J ‚t| tƒtks1J ‚t| tƒtks:J ‚t| tt ƒtt ksGJ ‚t| t t¡ƒt t¡ksVJ ‚t| t	ƒt	ks_J ‚tt| ƒtkshJ ‚tttƒtksqJ ‚tttƒtkszJ ‚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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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s5J ‚tt
tƒtks?J ‚tt
tƒt ttdƒtdƒ¡ksRJ ‚tt
tƒtks\J ‚tt
tƒtksfJ ‚tt
tt ƒt
t kstJ ‚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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s3J ‚ttt t¡ƒt t¡ksCJ ‚ttt
 t¡ƒt t¡ksSJ ‚ttt t¡ƒt t¡kscJ ‚ttt t¡ƒt t¡kssJ ‚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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sJ ‚tttƒtks&J ‚tttƒtks0J ‚tttt ƒtt ks>J ‚ttt t¡ƒt t¡ksNJ ‚ttt	ƒt	ksXJ ‚ttt | ƒtt ksfJ ‚ttt tƒtt kstJ ‚ttt tƒtt ks‚J ‚ttt tƒtt ksJ ‚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 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¡tt ƒt t¡ksLJ ‚tt t¡t t¡ƒt t¡ks_J ‚tt t¡t	ƒt	kslJ ‚tt	| ƒt	ksvJ ‚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 )Nr2   r1   )r   r4   r   r   ÚALGr   r   r   Ú
frac_fieldr   r!   r"   Úalgebraic_fieldr   r   r   )ÚF3r7   r7   r8   Ú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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sJ ‚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sJ ‚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 r3   )r4   r   Ú	poly_ringr   r   r   r:   r   r7   r7   r7   r8   Útest_Domain_unify_compositež   sÀ   """""""$        $$$$$$$$&&&&********....&&&&********....&&&&********....&&&&********...2r?   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 )Né   é   )r   r;   r   r4   r   r   r:   )Úsqrt5Úsqrt7Úsqrt57r7   r7   r8   Útest_Domain_unify_algebraic  s   """""""&rE   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 )Nr1   ©Údomain)r)   r   r   r   r   r   r4   r   )	ÚKxZZÚKxQQÚKxZZyÚKxQQyÚKÚKzÚKxÚKyÚKxyr7   r7   r8   Ú!test_Domain_unify_FiniteExtension*  sR   "rQ   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   r7   r7   r7   r8   Ú<lambda>^  ó    z0test_Domain_unify_with_symbols.<locals>.<lambda>c                   S   s   t  t ttf ttf¡S r3   )r   rR   r   r   r   r7   r7   r7   r8   rS   _  rT   )r/   r*   r7   r7   r7   r8   Útest_Domain_unify_with_symbols]  s   rU   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 sJ ‚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 sJ ‚dt
dƒ d tv du sJ ‚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 sJ ‚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 sJ ‚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éùÿÿÿé   éÿÿÿÿrA   Fr2   r@   g      @ç…ëQ¸	@r1   é   )r   r   r   r   r   r9   r   r   r   r   r   r   r   r7   r7   r7   r8   Útest_Domain__contains__a  sö         &&&""""""&&&6r[   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 )Nr1   r2   rZ   T)r   r   r   r:   r   r7   r7   r7   r8   Útest_issue_14433í  s
   $, $r\   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sJ ‚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 r3   )r9   Úget_ringr7   r7   r7   r8   rS     ó    z&test_Domain_get_ring.<locals>.<lambda>)r   Úhas_assoc_Ringr   r   r   r:   r   r   r9   r]   r/   r.   r7   r7   r7   r8   Útest_Domain_get_ringõ  s4       r`   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sJ ‚tttf  ¡ t 	tt¡ksJ ‚tttf  ¡ t 	tt¡ks­J ‚d S )NT)
r   Úhas_assoc_Fieldr   r   r   r9   r   r   Ú	get_fieldr:   r7   r7   r7   r8   Útest_Domain_get_field  s$    $rc   c                   C   s<  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s4J ‚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 t¡ksnJ ‚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   Ú	get_exactr   r   r   r9   r   r   r:   r7   r7   r7   r8   Útest_Domain_get_exact-  s      $re   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)éþÿÿÿrX   r   rZ   r1   )FTFTF)TTFTTc                 S   ó   g | ]	}t  t |ƒ¡‘qS r7   )r   Úis_unit©Ú.0Únr7   r7   r8   Ú
<listcomp>B  ó    z'test_Domain_is_unit.<locals>.<listcomp>c                 S   rg   r7   )r   rh   ri   r7   r7   r8   rl   C  rm   c                    ó   g | ]	}ˆ   ˆ |ƒ¡‘qS r7   ©rh   ri   )ÚZZxr7   r8   rl   D  rm   c                    rn   r7   ro   ri   )ÚQQxr7   r8   rl   E  rm   c                    rn   r7   ro   ri   )ÚQQxfr7   r8   rl   F  rm   FT)r   r   r   r:   rh   )ÚnumsÚinvringÚinvfieldr7   )rq   rr   rp   r8   Útest_Domain_is_unit=  s   rv   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@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¡}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Úe2r6   ÚK2ÚK3r7   r7   r8   Ú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)r6   rz   r{   ©r|   r7   r8   Ú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   r:   )rL   Údomainsr7   r7   r8   Úcomposite_domainsY  s
   ýz.test_Domain_convert.<locals>.composite_domainsr1   r2   gL“oûñW5l   Ó$ˆ7ûq/ l                                r   r   rZ   )r   r;   r   r   r"   r!   r   r   Ú	enumerateÚconvertr&   Ú	to_domainr:   r   r0   r}   Ú
from_sympy)r   rƒ   ÚQQ2ÚQQ3ÚdomsÚir6   rz   r{   ÚK4ÚRÚxrÚKsÚKaÚKbr7   r€   r8   Útest_Domain_convertL  s8   
ÿÿÿ

"(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 r3   )r   Úold_poly_ringr   r…   r   r   )r6   rz   r7   r7   r8   Ú!test_GlobalPolynomialRing_convert  s   
   $r”   c                  C   ó$   t dtƒ\} t ¡ |  ¡ ksJ ‚d S ©NÚ )r&   r   r>   r†   )r   r7   r7   r8   Útest_PolynomialRing__init’  ó   r˜   c                  C   r•   r–   )r(   r   r:   r†   )ÚFr7   r7   r8   Ú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 )Nr1   r2   )r   r:   r   r…   r‡   r   r   r   ©rL   r7   r7   r8   Ú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 r3   )r   r   Úinjectr7   r7   r7   r8   rS   §  s    ztest_inject.<locals>.<lambda>)r   rž   r   r   r   r:   r/   r+   r7   r7   r7   r8   Ú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 )Nr1   rZ   rF   c                      ó
   ˆ   t¡S r3   )Údropr   r7   ©rO   r7   r8   rS   ·  ó   
 ztest_drop.<locals>.<lambda>)	r   r¡   r   r   r:   r)   r   r/   r+   rœ   r7   r¢   r8   Ú	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)rZ   r1   r2   é   c                 s   ó    | ]}t  |¡V  qd S r3   ©r   Úof_type©rj   Úeltr7   r7   r8   Ú	<genexpr>½  ó   € z"test_Domain_map.<locals>.<genexpr>c                 s   r¦   r3   r§   r©   r7   r7   r8   r«   Á  r¬   r   rZ   )r   ÚmapÚallÚlen)Úseqr7   r7   r8   Ú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   r:   r$   r   r7   r7   r7   r8   Ú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 ©Nr1   r2   r¥   é
   rZ   )	r   r;   r   ÚextÚminpolyr   r   Údomr   )Úalgr7   r7   r8   Ú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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¸   r7   r7   r8   Útest_Domain_alg_field_from_polyâ  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é   r2   r¥   )	r   Úcyclotomic_fieldrµ   r¶   r   r'   r·   r   r%   )rL   rš   r   r7   r7   r8   Ú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 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,yr1   rZ   r¥   )r(   r   r&   r†   Úfrom_FractionFieldr   )	rš   r   r   r   ÚXÚYr»   r¼   r½   r7   r7   r8   Ú&test_PolynomialRing_from_FractionField  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Â   r2   r1   r@   é   )r&   r   r(   r   r†   Úfrom_PolynomialRing)r   r   r   rš   rÄ   rÅ   r»   r¼   r7   r7   r8   Ú&test_FractionField_from_PolynomialRing  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 ‚t dƒ t dƒdƒ¡du s-J ‚d S )Nr2   rZ   Tr@   rA   F)r   r¨   r7   r7   r7   r8   Ú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   r:   r7   r7   r7   r8   Ú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        rZ   g      ð?)r   r…   r   ÚZeroÚdtypeÚOner   Úevalfr7   r7   r7   r8   Ú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 r7   )Úfloat)rj   r‹   r7   r7   r8   rl   7  s    ÿz*test_not_in_any_domain.<locals>.<listcomp>r2   c                      s
   ˆ   ˆ¡S r3   )r…   r7   ©r·   r‹   r7   r8   rS   >  r£   z(test_not_in_any_domain.<locals>.<lambda>)
Úlistr
   r   r   r   r   r   r   r/   r,   )Úcheckr7   rÒ   r8   Útest_not_in_any_domain6  s   
ÿüÿrÕ   c                     sô	  t dƒ} | dƒ}t|| jƒr|dksJ ‚| dƒ}t|| jƒr"|dks$J ‚| dƒ}t|| jƒr2|dks4J ‚| dƒ}t|| jƒrB|dksDJ ‚| dƒ}t|| jƒrR|dksTJ ‚| | dƒƒ}t|| jƒrd|dksfJ ‚| | dƒƒ}t|| jƒrv|dksxJ ‚| | 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| 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ƒr2|dks4J ‚| dƒd }t|| jƒrF|dksHJ ‚| dƒ| dƒ }t|| jƒr\|dks^J ‚| dƒ| dƒ }t|| jƒrr|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ƒ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ƒrB|dksDJ ‚| dƒ| dƒ }t|| jƒrX|dksZJ ‚| dƒ| dƒ }t|| jƒrn|dkspJ ‚| 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 ‚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ƒr|dksJ ‚ˆ dƒd }t|ˆ jƒr.|dks0J ‚ˆ dƒd }t|ˆ jƒrB|dksDJ ‚ˆ dƒd }t|ˆ jƒrV|dksXJ ‚ˆ dƒˆ dƒk d
u seJ ‚ˆ dƒˆ dƒkd
u srJ ‚ˆ 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 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 s3J ‚ˆ dƒdkd
u s>J ‚ˆ dƒdkd	u sIJ ‚ˆ dƒdkd	u sTJ ‚ˆ dƒdk d	u s_J ‚ˆ dƒdkd	u sjJ ‚ˆ dƒdkd
u suJ ‚ˆ 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 sØJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ ttdd„ ƒ ttdd„ ƒ d S )Nr2   r   rZ   r1   r¥   rA   l    hí] lýÿÿÿ hí] FTr@   rX   c                      ó   ˆ dƒd S )Nr   rX   r7   r7   ©ÚF5r7   r8   rS   Ò  ó    z%test_ModularInteger.<locals>.<lambda>c                      rÖ   )Nr@   rX   r7   r7   r×   r7   r8   rS   Ó  rÙ   c                   S   ó   t dƒS ©Nr   ©r   r7   r7   r7   r8   rS   Õ  r^   c                   S   rÚ   )NgÍÌÌÌÌÌ @rÜ   r7   r7   r7   r8   rS   Ö  r^   )r   Ú
isinstancerÍ   r   Úboolr/   r-   Ú
ValueError)r<   ÚaÚF7r7   r×   r8   Útest_ModularIntegerA  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 )Nr1   iÐ  r2   iâ  ió éd   l   UUª*UUª*UUª*U)Úintr   r7   r7   r7   r8   Ú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 )NrY   ç¸ÔJzî5ç‚vIhÂ%<=ç›+¡†›„=çVçž¯Ò<ç#B’¡œÇ;çœWw'&l¡7)r   r7   r7   r7   r8   Ú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   rZ   ræ   )Úprec)r   Ú_precr   r$   )Úf1Úf2ÚRR2r7   r7   r8   Ú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 )NrY   ræ   rç   rè   ré   rê   rë   y        …ëQ¸	@y        ‚vIhÂ%<=y        ›+¡†›„=y        Vçž¯Ò<y        #B’¡œÇ;y        œWw'&l¡7)r   ÚrealÚimagr7   r7   r7   r8   Ú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 ]:‰ ˆ 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'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rGt*ˆƒ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s*J ‚|ˆ ddƒks4J ‚ˆ  +¡ ˆ ks=J ‚ˆ  ,¡ tksFJ ‚q«t*ˆƒd-ksPJ ‚ˆ  +¡ tksYJ ‚ˆ  ,¡ ˆ ksbJ ‚ˆd ˆ dt dƒd ƒksrJ ‚dˆ ˆ t d.ƒd t d/ƒ 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d0ƒksÚJ ‚ˆ  .|¡tdƒksæJ ‚q«d S )1Nc                 S   ó   g | ]}t  |¡‘qS r7   )r!   r…   ©rj   r   r7   r7   r8   rl     ó    z)test_gaussian_domains.<locals>.<listcomp>r@   r1   r2   r¥   r   rX   z3 + 4*I)NN)r1   r   )r   r1   )r2   r¥   rZ   é   é   éüÿÿÿrV   é   é	   r¿   i‹ÿÿÿé,   é   c                      s   ˆ d S rÛ   r7   r7   ©Úqr7   r8   rS   3  r^   z'test_gaussian_domains.<locals>.<lambda>c                      s   ˆ d S rÛ   r7   r7   r  r7   r8   rS   4  r^   c                      s   ˆ d S rÛ   r7   r7   r  r7   r8   rS   5  r^   c                      ó
   t ˆ dƒS rÛ   ©Údivmodr7   r  r7   r8   rS   6  r£   c                      r  rÛ   r  r7   r  r7   r8   rS   7  r£   c                      s   ˆ t  S r3   ©r   r7   r  r7   r8   rS   8  r^   c                      s   ˆ t  S r3   r  r7   r  r7   r8   rS   9  r^   c                      s   t ˆ  S r3   r  r7   r  r7   r8   rS   :  r^   c                      s   t ˆ  S r3   r  r7   r  r7   r8   rS   ;  r^   c                      s   ˆ t  S r3   r  r7   r  r7   r8   rS   <  r^   c                      s   t ˆ  S r3   r  r7   r  r7   r8   rS   =  r^   c                      s   ˆ t  S r3   r  r7   r  r7   r8   rS   >  r^   c                      s   t ˆ  S r3   r  r7   r  r7   r8   rS   ?  r^   c                      s   ˆ t  S r3   r  r7   r  r7   r8   rS   @  r^   c                      s   t ˆ  S r3   r  r7   r  r7   r8   rS   A  r^   c                      r    r3   )r‡   r	   r7   )ÚGr7   r8   rS   E  r£   Fz
ZZ_I(3, 4)rf   z
QQ_I(3, 4)é$   é0   r´   )/r   ÚImaginaryUnitr!   ÚgcdÚlcmr"   Úquadrantr…   r   ÚstrÚparentÚ_get_xyr	   Úhashr  r/   ÚZeroDivisionErrorÚ	TypeErrorr‡   Úto_sympyr,   rž   r   rÝ   r#   rG   r¯   ÚgensÚas_exprÚas_AlgebraicFieldr    rµ   ÚargsÚis_negativeÚis_positiveÚis_nonnegativeÚis_nonpositiver   r   r   r   r   Úreprr]   rb   ÚnumerÚdenom)r   rà   ÚbÚcÚdr‹   ÚrÚPRÚAFÚqir‚   rL   Úq2r7   )r  r  r8   Útest_gaussian_domains  sÖ   ."(*
0...2@  *
(
($ &
 *.—r)  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sJ ‚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 )NrZ   r1   c                   S   s
   t  g ¡S r3   )r   r‡   r7   r7   r7   r8   rS   Ž  r£   ztest_EX_EXRAW.<locals>.<lambda>)r   r   r   rÌ   r~   rÎ   r   Ú
ExpressionÚexr   r   r}   r‡   r  r/   r,   rb   r4   r7   r7   r7   r8   Útest_EX_EXRAW}  s   LDr,  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sJ ‚t 	tt
¡} |  t¡}|| | jks±J ‚| j| || j  | ksÀJ ‚d S )Nr1   rZ   rf   rX   r   )r   r   r   Úcanonical_unitr!   r"   r‡   r   r   r:   r   r~   )rL   r‹   r7   r7   r8   Útest_canonical_unit–  s$   
 "
"r.  c                   C   s4   t tdƒ ¡ ƒdksJ ‚t tdƒ ¡ ƒdksJ ‚d S )Nr1   r   r   )r  r   r  r   r7   r7   r7   r8   Útest_issue_18278°  s   r/  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ø   r7   ©r   r…   rù   r7   r7   r8   rl   ·  rú   z+test_Domain_is_negative.<locals>.<listcomp>r1   r@   F)r   r  r   r  ©r   rà   r!  r7   r7   r8   Útest_Domain_is_negativeµ  ó   r3  c                  C   r0  )Nc                 S   rø   r7   r1  rù   r7   r7   r8   rl   ¾  rú   z+test_Domain_is_positive.<locals>.<listcomp>r1   r@   F)r   r  r   r  r2  r7   r7   r8   Útest_Domain_is_positive¼  r4  r5  c                  C   r0  )Nc                 S   rø   r7   r1  rù   r7   r7   r8   rl   Å  rú   z.test_Domain_is_nonnegative.<locals>.<listcomp>r1   r@   F)r   r  r   r  r2  r7   r7   r8   Útest_Domain_is_nonnegativeÃ  r4  r6  c                  C   r0  )Nc                 S   rø   r7   r1  rù   r7   r7   r8   rl   Ì  rú   z.test_Domain_is_nonpositive.<locals>.<listcomp>r1   r@   F)r   r  r   r  r2  r7   r7   r8   Útest_Domain_is_nonpositiveÊ  r4  r7  c                  C   sJ   t t } |  t¡}|  tdƒ¡|d ksJ ‚|  tdƒ¡|d ks#J ‚d S )Nr2   )r   r   r‡   r   r…   )rL   ÚeKr7   r7   r8   Útest_exponential_domainÑ  s   
r9  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 )Nr1   Úalpha)ÚaliasÚthetar2   )rZ   r1   r2   )r   r;   r   rµ   r;  r   ÚnameÚ
to_alg_num)Úkr:  Úbetar7   r7   r8   Útest_AlgebraicField_aliasØ  s    

rA  N)tÚ__doc__Ú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.external.gmpyr   Ú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/   Ú	itertoolsr0   r;   r9   r4   r=   r?   rE   rQ   rU   r[   r\   r`   rc   re   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/  r3  r5  r6  r7  r9  rA  r7   r7   r7   r8   Ú<module>   sŒ    ,8ry3 "5

 |