o
    à8Va¬¡  ã                   @   sŒ  d 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mZmZ ddl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*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z; e <edƒedƒ¡Z=dd„ Z>dd„ Z?dd„ Z@dd„ ZAdd„ ZBdd„ ZCdd „ ZDd!d"„ ZEd#d$„ ZFd%d&„ ZGd'd(„ ZHd)d*„ ZId+d,„ ZJd-d.„ ZKd/d0„ ZLd1d2„ ZMd3d4„ ZNd5d6„ ZOd7d8„ ZPd9d:„ ZQd;d<„ ZRd=d>„ ZSd?d@„ ZTdAdB„ ZUdCdD„ ZVdEdF„ ZWdGdH„ ZXdIdJ„ ZYdKdL„ ZZdMdN„ Z[dOdP„ Z\dQdR„ Z]dSdT„ Z^dUdV„ Z_dWdX„ Z`dYdZ„ Zad[d\„ Zbd]d^„ Zcd_d`„ Zddadb„ Zedcdd„ ZfdeS )fzPTests for classes defining properties of ground domains, e.g. ZZ, QQ, ZZ[x] ... é    )ÚIÚSÚsqrtÚsinÚooÚPolyÚFloatÚIntegerÚRationalÚpiÚexpÚE)ÚxÚyÚz)Úcartes)Ú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)Úring)Úfield)ÚFiniteExtension)ÚUnificationFailedÚGeneratorsErrorÚCoercionFailedÚNotInvertibleÚDomainError)Úillegal)Úraisesé   é   c                 C   s
   |   |¡S ©N)Úunify)ZK0ÚK1© r3   úH/usr/lib/python3/dist-packages/sympy/polys/domains/tests/test_domains.pyr1   !   s   
r1   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 )Nr/   r.   )r   r1   r   r   ÚALGr   r   r   Ú
frac_fieldr   r    r!   Úalgebraic_fieldr   r   r   )ÚF3r3   r3   r4   Útest_Domain_unify$   sÌ    &  &     &  $      $&r9   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 r0   )r1   r   Ú	poly_ringr   r   r   r6   r   r3   r3   r3   r4   Ú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   r7   r   r1   r   r   r6   )Zsqrt5Zsqrt7Zsqrt57r3   r3   r4   Útest_Domain_unify_algebraic  s   """""""&r>   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 )Nr.   ©Údomain)r&   r   r   r   r   r   r1   r   )	ZKxZZZKxQQZKxZZyZKxQQyÚKZKzZKxÚKyZKxyr3   r3   r4   Ú!test_Domain_unify_FiniteExtension"  sR   "rC   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 r0   )r   r   r   Úunify_with_symbolsr   r3   r3   r3   r4   Ú<lambda>V  ó    z0test_Domain_unify_with_symbols.<locals>.<lambda>c                   S   s   t  t ttf ttf¡S r0   )r   rD   r   r   r   r3   r3   r3   r4   rE   W  rF   )r-   r'   r3   r3   r3   r4   Útest_Domain_unify_with_symbolsU  s   rG   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éùÿÿÿé   éÿÿÿÿr=   Fr/   r<   g      @ç…ëQ¸	@r.   é   )r   r   r   r   r   r5   r   r   r
   r   r   r   r   r3   r3   r3   r4   Útest_Domain__contains__Y  sö         &&&""""""&&&6rM   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 r0   )r5   Úget_ringr3   r3   r3   r4   rE     ó    z&test_Domain_get_ring.<locals>.<lambda>)r   Zhas_assoc_Ringr   r   r   r6   r   r   r5   rN   r-   r+   r3   r3   r3   r4   Útest_Domain_get_ringå  s4       rP   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   Zhas_assoc_Fieldr   r   r   r5   r   r   Ú	get_fieldr6   r3   r3   r3   r4   Útest_Domain_get_field  s$    $rR   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 r0   )	r   Z	get_exactr   r   r   r5   r   r   r6   r3   r3   r3   r4   Útest_Domain_get_exact  s      $rS   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)éþÿÿÿrJ   r   rL   r.   )FTFTF)TTFTTc                 S   ó   g | ]	}t  t |ƒ¡‘qS r3   )r   Úis_unit©Ú.0Únr3   r3   r4   Ú
<listcomp>2  ó    z'test_Domain_is_unit.<locals>.<listcomp>c                 S   rU   r3   )r   rV   rW   r3   r3   r4   rZ   3  r[   c                    ó   g | ]	}ˆ   ˆ |ƒ¡‘qS r3   ©rV   rW   )ÚZZxr3   r4   rZ   4  r[   c                    r\   r3   r]   rW   )ÚQQxr3   r4   rZ   5  r[   c                    r\   r3   r]   rW   )ÚQQxfr3   r4   rZ   6  r[   FT)r   r   r   r6   rV   )ZnumsZinvringZinvfieldr3   )r_   r`   r^   r4   Útest_Domain_is_unit-  s   ra   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)Ze1Ze2r2   ÚK2ÚK3r3   r3   r4   Úcheck_element>  s   &"z*test_Domain_convert.<locals>.check_elementc                    s~   |   |¡}ˆ | | j| ¡|j| ||ƒ ˆ | |j|¡|j| ||ƒ ˆ | | j| ¡|j| ||ƒ ˆ | |j|¡|j| ||ƒ d S r0   )r1   Úconvert_fromÚoneÚzero)r2   rc   rd   ©re   r3   r4   Úcheck_domainsB  s
   
 z*test_Domain_convert.<locals>.check_domainsc              
   S   s:   | | t  | t | t tf |  t ¡|  t¡|  t t¡g}|S r0   )r   r   r6   )rA   Údomainsr3   r3   r4   Úcomposite_domainsI  s
   ýz.test_Domain_convert.<locals>.composite_domainsr.   r/   gL“oûñW5l   Ó$ˆ7ûq/ l                                r   r   rL   )r   r7   r   r   r!   r    r   r   Ú	enumerateÚconvertr$   Ú	to_domainr6   r   r   rf   Ú
from_sympy)rj   rl   ZQQ2ZQQ3ZdomsÚir2   rc   rd   ZK4ÚRZxrZKsZKaZKbr3   ri   r4   Útest_Domain_convert<  s8   
ÿÿÿ

"(rs   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 r0   )r   Zold_poly_ringr   rn   r   r   )r2   rc   r3   r3   r4   Ú!test_GlobalPolynomialRing_convertq  s   
   $rt   c                  C   ó$   t dtƒ\} t ¡ |  ¡ ksJ ‚d S ©NÚ )r$   r   r:   ro   )rr   r3   r3   r4   Útest_PolynomialRing__init‚  ó   rx   c                  C   ru   rv   )r%   r   r6   ro   )ÚFr3   r3   r4   Útest_FractionField__init‡  ry   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 )Nr.   r/   )r   r6   r   rn   rp   r
   r   r	   ©rA   r3   r3   r4   Ú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 r0   )r   r   Úinjectr3   r3   r3   r4   rE   —  s    ztest_inject.<locals>.<lambda>)r   r~   r   r   r   r6   r-   r(   r3   r3   r3   r4   Ú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 )Nr.   rL   r?   c                      ó
   ˆ   t¡S r0   )Údropr   r3   ©rB   r3   r4   rE   §  ó   
 ztest_drop.<locals>.<lambda>)	r   r   r   r   r6   r&   r   r-   r(   r|   r3   r‚   r4   Ú	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)rL   r.   r/   é   c                 s   ó    | ]}t  |¡V  qd S r0   ©r   Úof_type©rX   Úeltr3   r3   r4   Ú	<genexpr>­  ó   € z"test_Domain_map.<locals>.<genexpr>c                 s   r†   r0   r‡   r‰   r3   r3   r4   r‹   ±  rŒ   r   rL   )r   ÚmapÚallÚlen)Úseqr3   r3   r4   Ú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   r6   r#   r   r3   r3   r3   r4   Ú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 )Nr.   r/   r…   é
   rL   )	r   r7   r   ÚextZminpolyr   r   Údomr   )Zalgr3   r3   r4   Útest_Domain__algebraic_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,yr.   rL   r…   )r%   r   r$   ro   Zfrom_FractionFieldr   )	rz   r   r   rr   ÚXÚYÚfÚgÚhr3   r3   r4   Ú&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—   r/   r.   r<   é   )r$   r   r%   r   ro   Zfrom_PolynomialRing)rr   r   r   rz   r˜   r™   rš   r›   r3   r3   r4   Ú&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 )Nr/   rL   Tr<   r=   F)r   rˆ   r3   r3   r3   r4   Ú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 r0   )r   r   r   r6   r3   r3   r3   r4   Ú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        rL   g      ð?)r   rn   r   ÚZeroÚdtypeÚOner   Zevalfr3   r3   r3   r4   Útest_RealField_from_sympyþ  s
   (r¥   c                     st   t tg dd„ t D ƒ } tttttfD ]$‰ | D ]‰ˆtkr"ˆ tkr"qˆˆ vs,J ˆˆ fƒ‚tt‡ ‡fdd„ƒ qqd S )Nc                 S   s   g | ]}|t jkrt|ƒ‘qS r3   )r   ZComplexInfinityÚfloat)rX   rq   r3   r3   r4   rZ     s
    
ÿÿz*test_not_in_any_domain.<locals>.<listcomp>c                      s
   ˆ   ˆ¡S r0   )rn   r3   ©r•   rq   r3   r4   rE     rƒ   z(test_not_in_any_domain.<locals>.<lambda>)	r,   r   r   r   r   r   r   r-   r)   )Úcheckr3   r§   r4   Útest_not_in_any_domain  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 )Nr/   r   rL   r.   r…   r=   l    hí] lýÿÿÿ hí] FTr<   rJ   c                      ó   ˆ dƒd S )Nr   rJ   r3   r3   ©ZF5r3   r4   rE   ¢  ó    z%test_ModularInteger.<locals>.<lambda>c                      rª   )Nr<   rJ   r3   r3   r«   r3   r4   rE   £  r¬   c                   S   ó   t dƒS ©Nr   ©r   r3   r3   r3   r4   rE   ¥  rO   c                   S   r­   )NgÍÌÌÌÌÌ @r¯   r3   r3   r3   r4   rE   ¦  rO   )r   Ú
isinstancer£   r   Úboolr-   r*   Ú
ValueError)r8   ÚaZF7r3   r«   r4   Ú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 )Nr.   iÐ  r/   iâ  ió éd   l   UUª*UUª*UUª*U)Úintr   r3   r3   r3   r4   Ú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 )NrK   ç¸ÔJzî5ç‚vIhÂ%<=ç›+¡†›„=çVçž¯Ò<ç#B’¡œÇ;çœWw'&l¡7)r   r3   r3   r3   r4   Ú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   rL   r¸   )Zprec)r   Z_precr   r#   )Úf1Úf2ZRR2r3   r3   r4   Ú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 )NrK   r¸   r¹   rº   r»   r¼   r½   y        …ëQ¸	@y        ‚vIhÂ%<=y        ›+¡†›„=y        Vçž¯Ò<y        #B’¡œÇ;y        œWw'&l¡7)r   ÚrealÚimagr3   r3   r3   r4   Útest_CC_doubleÁ  s   rÆ   c                     s¸	  t j} dd„ dd|  d|  dfD ƒ\}}}}t ||¡|k t ||¡|k t ||¡|k t ||¡|k tddƒtddƒksBJ ‚tddƒdksKJ ‚tt dƒd dƒt dƒd ks\J ‚tddƒ ¡ dksgJ ‚tddƒ ¡ dksrJ ‚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 ]9‰ ˆ 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s2J ‚ J ‚dˆ ˆd   krFˆ ddƒksIJ ‚ J ‚ˆˆ ˆ ddƒksUJ ‚dˆ ˆd   kriˆ ddƒkslJ ‚ J ‚ˆd ˆ ddƒksxJ ‚ˆd ˆksJ ‚ˆ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s$J ‚tdˆƒ\}}ˆ| | ˆ ddƒks9J ‚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 r4ˆ  ¡ }t|tƒs!J ‚|jtks)J ‚|jj d | ks4J ‚ˆ ddƒˆ ddƒˆ ddƒˆ ddƒfD ]+}	ˆ  !|	¡d*u sRJ ‚ˆ  "|	¡d*u s\J ‚ˆ  #|	¡d*u sfJ ‚ˆ  $|	¡d*u spJ ‚qFt%ƒ 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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sJ ‚|ˆ ddƒksJ ‚|ˆ ddƒks'J ‚ˆ  +¡ ˆ ks0J ‚ˆ  ,¡ tks9J ‚qŸt*ˆƒd-ksCJ ‚ˆ  +¡ tksLJ ‚ˆ  ,¡ ˆ ksUJ ‚ˆd ˆ dt dƒd ƒkseJ ‚dˆ ˆ t d.ƒd t d/ƒ d ƒkszJ ‚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 r3   )r    rn   ©rX   r   r3   r3   r4   rZ   Ó  ó    z)test_gaussian_domains.<locals>.<listcomp>r<   r.   r/   r   r…   rJ   z3 + 4*I)NN)r.   r   )r   r.   )r/   r…   rL   é   é   éüÿÿÿrH   é   é	   é   i‹ÿÿÿé,   é   c                      s   ˆ d S r®   r3   r3   ©Úqr3   r4   rE     rO   z'test_gaussian_domains.<locals>.<lambda>c                      s   ˆ d S r®   r3   r3   rÒ   r3   r4   rE     rO   c                      s   ˆ d S r®   r3   r3   rÒ   r3   r4   rE     rO   c                      ó
   t ˆ dƒS r®   ©Údivmodr3   rÒ   r3   r4   rE     rƒ   c                      rÔ   r®   rÕ   r3   rÒ   r3   r4   rE     rƒ   c                      s   ˆ t  S r0   ©r   r3   rÒ   r3   r4   rE     rO   c                      s   ˆ t  S r0   r×   r3   rÒ   r3   r4   rE   	  rO   c                      s   t ˆ  S r0   r×   r3   rÒ   r3   r4   rE   
  rO   c                      s   t ˆ  S r0   r×   r3   rÒ   r3   r4   rE     rO   c                      s   ˆ t  S r0   r×   r3   rÒ   r3   r4   rE     rO   c                      s   t ˆ  S r0   r×   r3   rÒ   r3   r4   rE     rO   c                      s   ˆ t  S r0   r×   r3   rÒ   r3   r4   rE     rO   c                      s   t ˆ  S r0   r×   r3   rÒ   r3   r4   rE     rO   c                      s   ˆ t  S r0   r×   r3   rÒ   r3   r4   rE     rO   c                      s   t ˆ  S r0   r×   r3   rÒ   r3   r4   rE     rO   c                      r€   r0   )rp   r   r3   )ÚGr3   r4   rE     rƒ   Fz
ZZ_I(3, 4)rT   z
QQ_I(3, 4)é$   é0   r“   )/r   ÚImaginaryUnitr    ZgcdZlcmr!   Zquadrantrn   r   ÚstrÚparentZ_get_xyr   ÚhashrÖ   r-   ÚZeroDivisionErrorÚ	TypeErrorrp   Úto_sympyr)   r~   r   r°   r"   r@   r   ZgensZas_exprZas_AlgebraicFieldr   r”   ÚargsÚis_negativeÚis_positiveÚis_nonnegativeÚis_nonpositiver   r   r   r   r   ÚreprrN   rQ   ZnumerZdenom)r   r³   ÚbÚcÚdrq   ÚrZPRZAFZqirk   rA   Zq2r3   )rØ   rÓ   r4   Ú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 )NrL   r.   c                   S   s
   t  g ¡S r0   )r   rp   r3   r3   r3   r4   rE   ^  rƒ   ztest_EX_EXRAW.<locals>.<lambda>)r   rh   r   r¢   rg   r¤   r   Z
ExpressionÚexr   r   rf   rp   rá   r-   r)   rQ   r1   r3   r3   r3   r4   Útest_EX_EXRAWM  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 )Nr.   rL   rT   rJ   r   )r   r   r   Zcanonical_unitr    r!   rp   r   r   r6   r   rg   )rA   rq   r3   r3   r4   Útest_canonical_unitf  s$   
 "
"rï   c                   C   s4   t tdƒ ¡ ƒdksJ ‚t tdƒ ¡ ƒdksJ ‚d S )Nr.   r   r   )rÜ   r   rÝ   r   r3   r3   r3   r4   Ú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Ç   r3   ©r   rn   rÈ   r3   r3   r4   rZ   ‡  rÉ   z+test_Domain_is_negative.<locals>.<listcomp>r.   r<   F)r   rÛ   r   rã   ©r   r³   rè   r3   r3   r4   Útest_Domain_is_negative…  ó   rô   c                  C   rñ   )Nc                 S   rÇ   r3   rò   rÈ   r3   r3   r4   rZ   Ž  rÉ   z+test_Domain_is_positive.<locals>.<listcomp>r.   r<   F)r   rÛ   r   rä   ró   r3   r3   r4   Útest_Domain_is_positiveŒ  rõ   rö   c                  C   rñ   )Nc                 S   rÇ   r3   rò   rÈ   r3   r3   r4   rZ   •  rÉ   z.test_Domain_is_nonnegative.<locals>.<listcomp>r.   r<   F)r   rÛ   r   rå   ró   r3   r3   r4   Útest_Domain_is_nonnegative“  rõ   r÷   c                  C   rñ   )Nc                 S   rÇ   r3   rò   rÈ   r3   r3   r4   rZ   œ  rÉ   z.test_Domain_is_nonpositive.<locals>.<listcomp>r.   r<   F)r   rÛ   r   ræ   ró   r3   r3   r4   Útest_Domain_is_nonpositiveš  rõ   rø   c                  C   sJ   t t } |  t¡}|  tdƒ¡|d ksJ ‚|  tdƒ¡|d ks#J ‚d S )Nr/   )r   r   rp   r   rn   )rA   ZeKr3   r3   r4   Útest_exponential_domain¡  s   
rù   N)gÚ__doc__Zsympyr   r   r   r   r   r   r   r	   r
   r   r   r   Z	sympy.abcr   r   r   Zsympy.utilities.iterablesr   Zsympy.core.compatibilityr   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.ringsr$   Zsympy.polys.fieldsr%   Zsympy.polys.agca.extensionsr&   Zsympy.polys.polyerrorsr'   r(   r)   r*   r+   Zsympy.polys.polyutilsr,   Zsympy.testing.pytestr-   r7   r5   r1   r9   r;   r>   rC   rG   rM   rP   rR   rS   ra   rs   rt   rx   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   r3   r3   r4   Ú<module>   sx    88ry3 "5

 |