o
    à8VaZŠ  ã                   @   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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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( dd	l)m*Z* dd
l+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z: eZ;dd„ Z<d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/„ ZKd0d1„ ZLed2d3„ ƒZMd4d5„ ZNd6d7„ ZOd8d9„ ZPd:d;„ ZQd<d=„ ZRd>d?„ ZSd@S )Az7Tests for computational algebraic number field theory. é    )ÚSÚRationalÚSymbolÚPolyÚsqrtÚIÚooÚTupleÚexpandÚpiÚcosÚsinÚtanÚexpÚGoldenRatioÚTribonacciConstantÚcbrt)Únonlinsolve)ÚCircleÚintersection)ÚraisesÚslow)Ú	FiniteSet)ÚPoint2D)
Úminimal_polynomialÚprimitive_elementÚis_isomorphism_possibleÚfield_isomorphism_pslqÚfield_isomorphismÚto_number_fieldÚAlgebraicNumberÚisolateÚIntervalPrinterÚ_choose_factor)Úapart)ÚIsomorphismFailedÚNotAlgebraicÚGeneratorsError)ÚDMP)ÚQQ)Úrootof)Údegree)ÚxÚyÚzc            	   
   C   s|  t dtƒtd ksJ ‚t dtƒtd ksJ ‚t dtƒtksJ ‚t dtƒtd ks*J ‚t dtƒtd ks5J ‚t tdƒtƒtd d ksDJ ‚t tdƒtƒtd d ksSJ ‚t tdƒtƒtd d ksbJ ‚t dtdƒ tƒtd d	 kssJ ‚t d
tdƒ tƒtd d ks„J ‚t dtdƒ tƒtd d ks•J ‚t dtdƒ d
 tƒtd dt  d ks¬J ‚t d
tdƒ d tƒtd dt  d ksÃJ ‚t dtdƒ d tƒtd dt  d ksÚJ ‚t dtdƒ d
 tƒtd dt  d ksñJ ‚t d
tdƒ d tƒtd dt  d ks	J ‚t dtdƒ d tƒtd dt  d ks!J ‚t tdtdƒ ƒtƒtd dtd   d ks;J ‚t tttdƒ ƒtƒtd	 dtd   d ksUJ ‚t dt tdt ƒ tƒtd dtd   d	t  d ksuJ ‚t tdƒtd
ƒ tƒtd dtd   d ksJ ‚t tdƒtd
ƒ tdƒ tƒtd dtd   dt  d ks±J ‚ddtdƒ  dtd
ƒ  } t d|  tƒdtd  dtd
   dtd   dt  d ksáJ ‚t dt| ƒ tƒdtd	  dtd   dtd   dtd   d ksJ ‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ t tdƒƒ td d ¡s,J ‚t tdƒtƒtd d ks<J ‚t tdƒdd ttd d ƒksOJ ‚t tdƒtdd ttd d d!d"kseJ ‚t tdƒtdd#d$ttd d d!d"ks|J ‚ttdƒƒ} ttd
ƒƒ}t | tƒtd d ks–J ‚t |tƒtd d
 ks¤J ‚t | tdd ttd d d!d"ks¸J ‚t |tdd ttd d
 d!d"ksÌJ ‚t t| d d% ƒtƒdtd  d&td   d' ksèJ ‚t t|d d% ƒtƒdtd  d(td   d) ksJ ‚tdƒd
 d ttdƒd
 d ƒ} }d*td	  d+td   d,td   d-td   d.td
   d/td   d0t  d1 }t t| ƒtt| ƒƒ tƒ|ksSJ ‚t t|ƒtt|ƒƒ tƒ|kseJ ‚t | t	d
dƒ tƒd2td  d3td   d4 ks€J ‚t
d5ƒ}t |tƒd6td  d ks”J ‚tdƒttƒ dtdd7t  ƒ  d8tdƒ tt	ddƒ dd7t  t	d
dƒ    d9tdƒ tt	d:dƒ dd7t  t	d
dƒ    dt tdtd7  ƒ  }t |tƒ}|d8td  d;td   d< ksúJ ‚dtdƒ td
ƒ }t |tƒ}|td dtd
   dtd   d=t  d	 ks$J ‚ddtdƒ td
ƒ  }t |tƒ}|d	td  d=td
   dtd   dt  d ksRJ ‚tdtdƒ dtd
ƒ  tdƒ d
 ƒtdd
ƒ }t |tƒ}|td	 d	td   d>td   d?td   d@td   dAtd
   dBtd   dCt  dD ks£J ‚tdtdƒ dtd
ƒ  tdƒ d
 ƒ}t |tƒ}|td	 dEtd   dFtd   dGtd   dHtd   dItd
   dJtd   dKt  dL ksïJ ‚t t
dMƒtƒtd ksýJ ‚dtdƒ } t | tdƒ |  d
 tƒtd dNt  d ksJ ‚ddtdƒ td
ƒ  }t |td#dOd	td  d=td
   dtd   dt  d ksKJ ‚ddtdƒ td
ƒ  }t |td#dOtd dtd
   dtd   dt  d kswJ ‚t dtdƒt  td#dOtd dt  d
 ks‘J ‚t ddtdƒ  d td#dOtd d ks©J ‚t tdƒt tdtdƒ   td#dOtd dPtd   d ksËJ ‚t ttt t¡d"tt ksÜJ ‚t ttdƒd  ¡}t tt|d"tt ksõJ ‚t tttd"td d ksJ ‚t ttdQd"td d ksJ ‚t ttƒtd t d ks%J ‚t td
 tƒtd
 dtd   dRt  dS ks?J ‚t ttt tdƒ¡d"dt tdƒ d ksXJ ‚t ttt tdTd
tdUƒ  ƒ¡d"dt dTdTd
tdUƒ  tdd
ƒ   d
tdUƒ dTd
tdUƒ  tdd
ƒ   d=dTd
tdUƒ  tdd
ƒ   d= ks¤J ‚tt
jjddVdWdX}t |tƒtd t d k d S )YNiùÿÿÿé   éÿÿÿÿé   r   é   é   é   é   é   é-   é   é`   é   é	   é   é/   é
   é1   é%   é   é0   é   iˆ  éÐ  id  c                   S   s
   t ttƒS ©N)r   r   r,   © rF   rF   úE/usr/lib/python3/dist-packages/sympy/polys/tests/test_numberfields.pyÚ<lambda>N   ó   
 z)test_minimal_polynomial.<locals>.<lambda>c                   S   s   t dt tƒS ©Nr2   )r   r-   r,   rF   rF   rF   rG   rH   O   ó    c                   S   s   t tdƒtƒS )Nr1   )r   r   r,   rF   rF   rF   rG   rH   P   rK   T©Úpolysr)   ©ÚdomainF)rM   Úcomposeé   éD   iA  éˆ   i  éQ   iÜ  i¸  itX  iðö  ix{  iÐä i.( iÙ  i¼ igö
ú”
        -1/(800*sqrt(-1/240 + 1/(18000*(-1/17280000 +
        sqrt(15)*I/28800000)**(1/3)) + 2*(-1/17280000 +
        sqrt(15)*I/28800000)**(1/3)))é@  é}   é   i5  é   iˆ  i Ð é   é8   éÀ  éà  éÀ  éÀ  é   éÀ  i   iÀÍ i Ûi ø•&l    @ä4 l     Ïzl l     xyl     x, z(-sqrt(5)/2 - 1/2 + (-sqrt(5)/2 - 1/2)**2éÆ   ©rP   é   zQQ(y)é    é"   é   é!   )ÚfuncÚphi©Úalias)r   r,   r   r   r   r&   Zdummy_eqr   r    ÚQr   r
   r   r)   Úalgebraic_fieldr   r   r   )	ÚaÚbÚfÚeqÚexÚmpÚpÚKrj   rF   rF   rG   Útest_minimal_polynomial'   sø   """....0044@4ÿ
ÿÿ.
ÿÿ2
ÿ  &,.((88&:
ÿÿÿ$$ÿ
ÿ ".ÿ.þý
&
6
:2
f(
f4D@40ÿ
ÿ"   4
ÿ"Jÿÿ
ÿrw   c               	   C   sÚ   ddt dƒ t tdƒd dt dƒ d  ƒ dt tdƒd dt dƒ d  ƒ   dd	t dƒ t tdƒd dt dƒ d  ƒ d
t tdƒd dt dƒ d  ƒ    } dtd  dtd   d }t| tƒ|kskJ ‚d S )Nlßÿÿÿo©yDÛCG,-eŒ`ö`eCÕ2#<´»N¡>Á}ÿL{ù/Í,rN”EØLªA»üCðÃQ,l‘}Y lâÿÿÿ   HÄA¸;NjCxQ] dvñ>ÂAå‡i}|¿¸9æÖ4Þ4¾)$âR{Q·qµU¹e_}l   A>¸Ý l   ²(r[+iYûÉià|tl      @_ƒCIc6',fkô,S?€	`@×54=?“y.W¾6„+˜ué*eXpg½Mó$ãYPõ±`5@ l   S>ÙBB±nc&¦Kv~ÜU»;«Nü	Åw#©œA ûÝ
9œÜGpS4y<MG lèÿÿÿ   pA¶Pô.Zs;Ÿ>ýN'ªCûGòÒHEK=3BS 4dpU=…<l     @F®xŒ6öVTxVŽ9_ø6²-I­"[!<mE“ežxxîP¡[30lQ             € Me3œc“xiÎL>T£´#©B!,Å(^;ƒü3&Z	Ú†VjcÐSÜp![.ˆÿ Œ%·4š@']Y°NE%$•%88qbr|im+8;Ü>W$;$„f.33$[Sv!7w‡x*Ö)ì*‘L’ê5Y7ÀFpIºXÔ
Ój¢ØL­jZwlhx| r8   lb        6š
 B]FÃqœ16+I;6W´!Äg’í[	O"ÜOÛv]Ó)zsnrô©e©);.æsŸH… ?OçPX:„LSO3I^Ý&'”PkDDnÁ"H+›
QSiV†n?Öv>A"¢TÏ#Ô¼.\G–gKL}Wcu~frQ[!Š.K<èñ€8Ô`=èJž+?kxy,âyÜh”Z9rþ-½‹*Ÿr2   ld   >ŒCÚ=åcÂðJ#mí5#P<!ÞVE7|o¶>jkoQ&M ;‚ 1 [òaewâ'ª r¸B_³nõJŒ\xI¾wýz7)5MZ1Í=—A=ž0™3ð&ÎaÆCW>íi½&XHK2oÈa¼#yA59&J˜5Ë	];u_þojœ²#ØFð[Fy;Cþ	ÔVJ>.:®'‡E3dòyZod[t>wo H„$@F y›#g·X×3òV:3Å )r   r   r,   r   )ÚexprZpolyrF   rF   rG   Ú#test_minimal_polynomial_issue_19732²   s*   ÿÿþÿÿþü

ÿþry   c                  C   sV   dt ddt dƒ  dt dƒ  tddƒd  ƒ } t| tƒ}| td ¡d	ks)J ‚d S )
Nr1   r;   r2   r/   r6   r>   é   r4   läÿÿÿ    \!b1")XQ+z³>ˆpùÀH¬.‚gÕ>¨tJü4"*v ~ùb]—ìßfit )r   r   r   r,   Zcoeff)ru   rt   rF   rF   rG   Útest_minimal_polynomial_hi_precÂ   s   2
r{   c                  C   sX  ddl m} m} |ddtdƒ  dtdƒ  d ƒ}t|tddƒ tƒ}|td dtd   dtd   d	t  d
 ks>J ‚|dtdƒ dtdƒ  tdƒ d ƒ}t|tddƒ tƒ}|td dtd   dtd   dtd   dtd   dtd   dtd   dt  d ksŽJ ‚| dd„ tddƒD ƒŽ }t|tƒ}| tdi¡dksªJ ‚d S )Nr   )ÚAddÚexpand_multinomialr1   r3   r2   r6   r8   év   éô   i)  r/   r5   r[   r4   r\   r]   r^   r_   r`   ra   c                 S   s   g | ]}t |ƒ‘qS rF   )r   )Ú.0ÚirF   rF   rG   Ú
<listcomp>Ñ   s    z.test_minimal_polynomial_sq.<locals>.<listcomp>r:   lûÿÿÿ   >/&Î5> )	Úsympyr|   r}   r   r   r   r,   ÚrangeÚsubs)r|   r}   ru   rt   rF   rF   rG   Útest_minimal_polynomial_sqÉ   s   $4(d
r†   c                     sZ
  t dƒ} t| d tƒ}|dtd  dt  d ksJ ‚tttt d ƒtƒtd d ks.J ‚tttd	 ƒtdƒ tƒ}|d
td  dtd   dtd   dtd   dtd   dtd   d kseJ ‚tttd	 ƒtdƒ tƒ}|dtd  dtd   dtd   dtd   dtd   dt  d ksšJ ‚tttt d	 ƒtdƒ tƒ}|td dtd   dtd   dtd   dtd   d td	   d!td   d"td   d#td   d$td   d%td   d&t  d' ksóJ ‚tttd	 ƒtdƒ tƒ}|d
td  dtd   dtd   dtd   dtd   dtd   d ks+J ‚tttd	 ƒtdƒ tƒ}|dtd  dtd   dtd   dtd   dtd   dt  d ksaJ ‚tttt d	 ƒtdƒ tƒ}|td dtd   dtd   dtd   dtd   d td	   d!td   d"td   d#td   d$td   d%td   d&t  d' ks»J ‚tttt t	dd	ƒ ƒtƒ}|td td  td  td  td  t d ksæJ ‚tttt t	dd(ƒ ƒtƒ}|td td	  td  td  td  t d ksJ ‚tttt	dd	ƒ ƒtƒ}|dtd  dtd   dt  d ks4J ‚tttt	dd	ƒ ƒtƒ}dttt	dd	ƒ ƒ d	 dttd	 ƒ dttt	dd	ƒ ƒ   ‰ tˆ tƒ}|td dtd   t d ksxJ ‚td)dttd	 ƒ  tƒtd dtd   t d ks–J ‚tttt	dd(ƒ ƒtƒd*td  d+td   d,td   d-td   d ks¿J ‚tttt	dd.ƒ ƒtƒdtd  dtd   dt  d ksàJ ‚tttd( ƒtƒdtd  dtd   dtd   dt  d ksJ ‚t
td td  d d/ƒ‰ tˆ tƒ}|td dt  d ks%J ‚tˆ d tƒ}|td dtd   d	t  d ksAJ ‚tttt d ƒtƒtd t d ksWJ ‚tttt d ƒtƒtd d kskJ ‚tttt d ƒtƒtd td  d ksƒJ ‚tttt d ƒtƒtd td  d ks›J ‚tttt d ƒtƒtd td  td  td  d ks»J ‚tttd ƒtƒdtd  d0td   d1td   d ksÛJ ‚tttd ƒtƒd2td  d3td   d3td   d4td   d5td   d ksJ ‚dt	ddƒ tt	ddƒt t ƒ ‰ tˆ tƒtd d ks'J ‚ttd6d7„ ƒ ttd8d7„ ƒ ttd9d7„ ƒ dd:d;tdƒ  dtdƒ ttdƒd ƒ d<tdƒ ttdƒ d ƒ  d   d ‰ tt‡ fd=d7„ƒ tddt	ddƒ  ƒtddt	ddƒ  ƒ tdƒ ‰ tˆ tƒ}t|ƒd>kr | td/i¡d?ks¢J ‚ttd d@dA‰ tˆ tƒ}|td dtd   d ksÀJ ‚| tttd ƒ¡jsÎJ ‚ttd d@dA‰ tˆ tƒ}|dtd  d ksèJ ‚| tttd ƒ¡jsöJ ‚ttd d@dA‰ tˆ tƒ}|dtd  dtd   d ksJ ‚| tttd ƒ¡js$J ‚ttdBd7„ ƒ d S )CNrU   r6   rV   r2   i€»  i? r5   r1   r/   i   r:   i ø  r>   i ] i€œ r4   i`Ã r8   i i‘o  é@   r3   i°  i0  iÈ  éè   éï   rY   r;   rZ   é+   éF   éa   é~   éÓ   éÔ   r@   éŽ   é   é   r0   é   r\   éà   re   r<   r   r9   é$   i   i   rD   éÜ   c                   S   ó   t tttdƒ ƒtƒS rJ   )r   r   r   r   r,   rF   rF   rF   rG   rH     ó    z&test_minpoly_compose.<locals>.<lambda>c                   S   r—   rJ   )r   r   r   r   r,   rF   rF   rF   rG   rH     r˜   c                   S   s   t ttt tdƒ ƒtƒS rJ   )r   r   r   r   r   r,   rF   rF   rF   rG   rH     s    i`sÿÿi   é   c                      s
   t ˆ tƒS rE   )r   r,   rF   ©rs   rF   rG   rH     rI   rB   lýÿÿÿÀ{> F)Zevaluatec                   S   r—   rJ   )r   r   r   r   r,   rF   rF   rF   rG   rH   1  r˜   )r   r   r,   r   r   r   r   r   r   r   r*   r   r&   ÚZeroDivisionErrorr+   r…   r   Zis_zero)rr   rt   rF   rš   rG   Útest_minpoly_composeÖ   sÊ    &0
ÿ
ÿ
ÿ<ÿ
ÿ”0
ÿ
ÿÿ<ÿÿ–::.@
&<2
ÿBH
*,(00@@&
ÿ
ÿ
ÿÿ$*ÿÿÿ4
&
"

&rœ   c                  C   s>   ddl m}  | tdd}t|tƒ}|dtd  d ksJ ‚d S )Nr   )Ú	nsimplifyg•Ö&è.>)Z	tolerancel   oDà!ò|S0o6é0"– ém   l                    8¯6éù9V_jp©)ïA‹+üDGZ  )Zsympy.simplify.simplifyr   r   r   r,   )r   Úrrt   rF   rF   rG   Útest_minpoly_issue_71134  s   
ÿr    c                  C   s8   dt ddƒ  dt ddƒ  } t| tƒtd ksJ ‚d S )Nr0   r1   r6   r2   )r   r   r,   rš   rF   rF   rG   Útest_minpoly_issue_7574=  s   r¡   c                      s2   t td tƒt td tƒg‰ tt‡ fdd„ƒ d S )Nr2   c                      s   t ˆ ttdƒƒS )Nr6   )r#   r,   r   rF   ©Zbad_factorsrF   rG   rH   E  s    z$test_choose_factor.<locals>.<lambda>)r   r,   r   ÚNotImplementedErrorrF   rF   r¢   rG   Útest_choose_factorB  s   r¤   c               	   C   sè  t tdƒgtƒtd d dgfksJ ‚t tdƒtdƒgtƒtd dtd   d ddgfks0J ‚t tdƒgtddttd d dd	dgfksIJ ‚t tdƒtdƒgtddttd dtd   d dd	ddgfkslJ ‚t tdƒgtdd
td d dgddggfks…J ‚t tdƒtdƒgtdd
td dtd   d ddgtddƒdtddƒ dgtddƒ dtddƒdggfks½J ‚t tdƒgtdddttd d dd	dgddggfksÛJ ‚t tdƒtdƒgtdddttd dtd   d dd	ddgtddƒdtddƒ dgtddƒ dtddƒdggfksJ ‚t tdƒgddttd d ƒdgfks0J ‚ttdd„ ƒ ttdd„ ƒ ttdtdƒ d ƒ ttdtdƒ d ƒ } }t | |tgtƒtd dtd   d g d¢fksrJ ‚d S )Nr2   r1   r6   r8   r>   TrL   r)   rN   rš   r   r;   rY   )rs   rM   c                   S   ó   t g tddS )NFrš   ©r   r,   rF   rF   rF   rG   rH   _  rK   z(test_primitive_element.<locals>.<lambda>c                   S   r¥   )NTrš   r¦   rF   rF   rF   rG   rH   `  rK   éþÿÿÿr4   )r1   r   r   )r   r   r,   r   rm   r   Ú
ValueErrorr   ©ro   rp   rF   rF   rG   Útest_primitive_elementH  sZ   &ÿÿ2ÿÿÿ&ÿÿÿ4ÿÿÿÿ ÿ8ÿÿ
ÿ.2:rª   c               
      s¢  t tƒ‰ t ttdƒ ƒ‰tt‡ ‡fdd„ƒ t tdƒƒ‰ t tdƒƒ‰t tdƒƒ} t tdƒtdƒ ƒ}t tdƒtdƒ tdƒ ƒ}tˆ ˆ ƒddgksKJ ‚tˆ ˆƒd u sTJ ‚tˆ | ƒd u s]J ‚tˆ |ƒtddƒdtddƒ dgksqJ ‚tˆ |ƒtdd	ƒdtddƒ dtd
dƒdgksŠJ ‚tˆˆ ƒd u s“J ‚tˆˆƒddgksžJ ‚tˆ| ƒd u s§J ‚tˆ|ƒtddƒ dtddƒdgks»J ‚tˆ|ƒtddƒ dtddƒdtddƒ dtdd	ƒdgksÚJ ‚t| ˆ ƒd u sãJ ‚t| ˆƒd u sìJ ‚t| | ƒddgks÷J ‚t| |ƒd u sJ ‚t| |ƒtddƒdtddƒ dtddƒdtdd	ƒ dgks!J ‚t|ˆ ƒd u s+J ‚t|ˆƒd u s5J ‚t|| ƒd u s?J ‚t||ƒddgksKJ ‚t||ƒtddƒ dtddƒdtddƒ dtdd	ƒdgkskJ ‚t|ˆ ƒd u suJ ‚t|ˆƒd u sJ ‚t|| ƒd u s‰J ‚t||ƒd u s“J ‚t||ƒddgksŸJ ‚t dtdƒ dtdƒ  d ƒ}t||ƒtdd	ƒdtdd	ƒ dtddƒdtddƒ dgksÏJ ‚d S )Nr6   c                      s
   t ˆ ˆƒS rE   )r   rF   r©   rF   rG   rH   j  rI   z-test_field_isomorphism_pslq.<locals>.<lambda>r2   r/   r1   r   r;   éP   é;   é   rY   i€  éC   i@  i)  é    i9  éG   iy  iÕ  i%  r5   r3   é‹   i[  iù  éûÿÿÿ)r    r   r   r   r£   r   rm   )ÚcÚdÚerq   rF   r©   rG   Útest_field_isomorphism_pslqf  sn   (ÿ"ÿ(
ÿ"
ÿ
ÿ$ÿ
ÿ"ÿ ÿ.ÿr¶   c                  C   sÒ  t dtdƒƒdgksJ ‚t ttdƒ ttdƒ d ƒddgks!J ‚t t tdƒ ttdƒ d ƒddgks7J ‚t ttdƒ t tdƒ d ƒddgksMJ ‚t t tdƒ t tdƒ d ƒddgksdJ ‚t dt tdƒ d dt tdƒ d ƒtddƒdgks‚J ‚t dt tdƒ d dt tdƒ d ƒtd	dƒdgks J ‚t dt tdƒ d d
t tdƒ d ƒtd	dƒdgks¾J ‚t dt tdƒ d d
t tdƒ d ƒtddƒdgksÜJ ‚t dt tdƒ d d dt tdƒ d ƒtddƒdgksüJ ‚t dt tdƒ d d dt tdƒ d ƒtd	dƒdgksJ ‚t dt tdƒ d d d
t tdƒ d ƒtd	dƒdgks>J ‚t dt tdƒ d d d
t tdƒ d ƒtddƒdgks_J ‚ttdƒtdƒ ƒ} ttdƒ tdƒ ƒ}ttdƒtdƒ ƒ}ttdƒ tdƒ ƒ}tjtjtddƒtjg}tddƒtjtddƒtjg}ttdƒƒ}t|| ƒdu s³J ‚t||ƒdu s½J ‚t||ƒdu sÇJ ‚t||ƒdu 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sJ ‚t ||dd|ksJ ‚t ||dd|ks%J ‚t ||dd|ks1J ‚ttdƒ ƒ}t|| ƒdu sBJ ‚t||ƒdu sLJ ‚t||ƒdu sVJ ‚t||ƒdu s`J ‚t || dd|kslJ ‚t ||dd|ksxJ ‚t ||dd|ks„J ‚t ||dd|ksJ ‚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jtjtddƒtjg}tddƒtjtddƒtjg}ttdƒƒ}t|| ƒdu sêJ ‚t||ƒdu sôJ ‚t||ƒdu sþJ ‚t||ƒdu sJ ‚t || dd|ksJ ‚t ||dd|ks J ‚t ||dd|ks,J ‚t ||dd|ks8J ‚t || dd|ksDJ ‚t ||dd|ksPJ ‚t ||dd|ks\J ‚t ||dd|kshJ ‚ttdƒ ƒ}t|| ƒdu syJ ‚t||ƒdu sƒJ ‚t||ƒdu sJ ‚t||ƒdu 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sÓJ ‚t ||dd|ksßJ ‚t ||dd|ksëJ ‚t ||dd|ks÷J ‚tddƒtjtddƒtdƒ g}tddƒtjtddƒtdƒ g}tdtdƒ d ƒ}t|| ƒdu s+J ‚t||ƒdu s5J ‚t||ƒdu s?J ‚t||ƒdu sIJ ‚t || dd|ksUJ ‚t ||dd|ksaJ ‚t ||dd|ksmJ ‚t ||dd|ksyJ ‚t || dd|ks…J ‚t ||dd|ks‘J ‚t ||dd|ksJ ‚t ||dd|ks©J ‚tdtdƒ dtdƒ  d ƒ}tjtjtd
dƒtj	g}td
dƒtjtddƒtj	g}tddƒtjtddƒtj	g}	tddƒtjtddƒtj	g}
t|| ƒdu sùJ ‚t||ƒdu sJ ‚t||ƒdu sJ ‚t||ƒdu sJ ‚t || dd|ks#J ‚t ||dd|ks/J ‚t ||dd|	ks;J ‚t ||dd|
ksGJ ‚t || dd|ksSJ ‚t ||dd|ks_J ‚t ||dd|	kskJ ‚t ||dd|
kswJ ‚ttdƒƒ}ttdƒƒ}ttdƒƒ}t||ƒdu s“J ‚t||ƒdu sJ ‚t|| ƒdu s§J ‚t tdƒtdƒddd u s·J ‚t tdƒtdƒddd u sÇJ ‚t tdƒtdƒddd u s×J ‚t tdƒtdƒddd u sçJ ‚d S )Nr6   r2   r   r§   r/   r3   r4   é#   iúÿÿÿr²   é   é÷ÿÿÿr0   r;   T)ZfastFiõÿÿÿrY   ißÿÿÿr5   éýÿÿÿrh   r1   r?   iÏÿÿÿ)
r   r   r   r   r    r   ÚHalfÚZeror   ÚOne)ru   ÚqrŸ   ÚsZ
pos_coeffsZ
neg_coeffsro   Zpos_1_coeffsZneg_5_coeffsZpos_5_coeffsZneg_1_coeffsrp   r³   rF   rF   rG   Útest_field_isomorphismš  s  *,,.<<<<(ÿÿ(ÿ
ÿ(ÿ
ÿ(ÿ
ÿ      $rÀ   c                  C   sÌ   t tdƒƒttdƒƒksJ ‚t tdƒtdƒgƒttdƒtdƒ ƒks$J ‚ttdƒtdƒ tjtjtddƒtjgƒ} t tdƒtdƒtdƒ ƒ| ksJJ ‚t tdƒttdƒtdƒ ƒƒ| ks]J ‚ttdd„ ƒ d S )Nr2   r6   r¹   c                   S   s   t tdƒtdƒƒS )Nr2   r6   )r   r   rF   rF   rF   rG   rH   F  ó    z&test_to_number_field.<locals>.<lambda>)	r   r   r    r   r»   r¼   r   r   r%   ©ro   rF   rF   rG   Útest_to_number_field<  s   ÿÿ*"&rÃ   c                  C   s0  t d d tdƒ} }t|t d}|jttdƒtdƒgtƒks!J ‚|j|ks(J ‚|jd u s/J ‚|j| ks6J ‚|j	s;J ‚|j
du sBJ ‚| ¡ tjtjgksNJ ‚| ¡ tdƒtdƒgks\J ‚t|t dd}|jttdƒtdƒgtƒkssJ ‚|j|kszJ ‚|jtdƒksƒJ ‚|j| ksŠJ ‚|j	sJ ‚|j
du s–J ‚t|t tdƒd}|jttdƒtdƒgtƒks¯J ‚|j|ks¶J ‚|jtdƒks¿J ‚|j| ksÆJ ‚|j	sËJ ‚|j
du sÒJ ‚ttdƒg ƒjtg tƒksáJ ‚ttdƒd	ƒjtg tƒksðJ ‚ttdƒd
ƒjtg tƒksÿJ ‚ttdƒdgƒjttdƒgtƒksJ ‚ttdƒtddƒgƒjttddƒgtƒks+J ‚ttdƒddgƒjttdƒtdƒgtƒksCJ ‚ttdƒtddƒtddƒgƒjttddƒtddƒgtƒkscJ ‚ttdƒg d¢ƒjttdƒtdƒgtƒks{J ‚tt|t dddgƒ}|jttdƒtdƒgtƒks—J ‚|j|ksŸJ ‚|jd u s§J ‚|j| ks¯J ‚|j	sµJ ‚|j
du s½J ‚| ¡ tjtdƒgksËJ ‚| ¡ tdƒtdƒgksÚJ ‚t| |fddgƒ}|jttdƒtdƒgtƒksôJ ‚|j|ksüJ ‚|jd u sJ ‚|j| ksJ ‚|j	sJ ‚|j
du sJ ‚tt| ƒ|fddgƒ}|jttdƒtdƒgtƒks6J ‚|j|ks>J ‚|jd u sFJ ‚|j| ksNJ ‚|j	sTJ ‚|j
du s\J ‚ttdƒƒjttdƒtdƒgtƒksqJ ‚ttdƒ ƒjttdƒtdƒgtƒks‡J ‚ttdƒƒ}ttdƒƒ}||ksšJ ‚ttdƒt d}||ks©J ‚||ks°J ‚ttdƒddgƒ}ttdƒddgƒ}||krÐ|tdƒd ksÒJ ‚|t kdu rà|t kdu sâJ ‚ttdƒddgƒ}ttdƒddgtd}| t ¡tt ddksJ ‚| ¡ ttddksJ ‚| ¡ tdƒksJ ‚| t ¡t ks&J ‚| ¡ tdƒks1J ‚| t ¡t ks;J ‚ttdƒddgƒ}ttdƒddgtd}| ¡ }|td|j d ƒksaJ ‚| t ¡tdt  d ddkssJ ‚| ¡ tdt d ddks„J ‚| ¡ dtdƒ d ks“J ‚| t ¡dt  d ks¡J ‚| ¡ dtdƒ d ks°J ‚| t ¡dt  d ks¾J ‚ttdƒƒ}ttdƒƒ}|j|j  kràtdƒtddƒfksãJ ‚ J ‚ttdƒdd}|jtdƒtddƒtdƒfksýJ ‚ttdƒg d¢ƒ}|jtdƒtdddƒfksJ ‚d S )Nr2   ©Úgenr1   r   Fr-   )rÅ   rl   TrF   )r   r   r5   r6   r/   r;   )r1   r2   r6   r3   rk   r)   rN   Zalpha)r,   r   r    Úrepr(   r)   Úrootrl   ÚminpolyZ	is_numberZ
is_aliasedZcoeffsr   r½   r¼   Znative_coeffsr   r   r   r-   Zas_polyZas_exprrÅ   r   Úargsr	   )rÈ   rÇ   ro   rp   r³   ru   rF   rF   rG   Útest_AlgebraicNumberI  sÀ    
 
 
(00ÿ
ÿ0"""*,  $"2$$rÊ   c                  C   sš  t tdƒtd ¡ } | jtd d ksJ ‚| jtdƒksJ ‚| jttdƒtdƒgtƒks.J ‚t dtdƒ td ¡ } | jtd d ksEJ ‚| jdtdƒ ksPJ ‚| jttdƒtdƒgtƒks`J ‚t tdƒd td ¡ } | jtd d kswJ ‚| jdtdƒ ks‚J ‚| jttdƒtdƒgtƒks’J ‚t tdƒd t	ddƒdgtd ¡ } | jtd d ks¯J ‚| jdtdƒ ksºJ ‚| jttddƒtdƒgtƒksËJ ‚d S )	Nr6   rÄ   r2   r1   r   r:   r/   rg   )
r    r   r,   Zto_algebraic_integerrÈ   rÇ   rÆ   r(   r)   r   rÂ   rF   rF   rG   Útest_to_algebraic_integerÓ  s       $&rË   c                  C   s<   t ƒ } |  ttddƒ ¡dksJ ‚|  ttƒ¡dksJ ‚d S )Nr1   r6   zx**(mpi('1/3'))zx**(mpi('1/2')))r"   Zdoprintr,   rm   r   )ZiprF   rF   rG   Útest_IntervalPrinterì  s   rÌ   c                   C   sÄ   t dƒdksJ ‚t tjƒtjtjfksJ ‚t tdƒƒdksJ ‚t tdƒ ƒdks*J ‚t tdƒtddƒdtdd	ƒtd	d
ƒfksAJ ‚t tdƒ tddƒdtdd
ƒtdd	ƒfksYJ ‚ttdd„ ƒ d S )Nr1   )r1   r1   r2   )r1   r2   )r§   r0   éd   )Zepsr™   rQ   r:   iïÿÿÿièÿÿÿc                   S   s   t tƒS rE   )r!   r   rF   rF   rF   rG   rH   ü  s    ztest_isolate.<locals>.<lambda>)r!   r   r»   r   r   r   r£   rF   rF   rF   rG   Útest_isolateò  s   .0rÎ   c                  C   sÄ  t dt tƒt t d ksJ ‚t dtd  tƒtd t d ks#J ‚t ttƒtƒtd t ks2J ‚t ttd ƒtƒtd t d ksEJ ‚t ttƒt tƒttd  d ksXJ ‚t tdƒttƒ tƒtd dt  ksmJ ‚t tdƒttƒ tƒtd dt d td   td  dt  d ks’J ‚t ttddƒ tƒtd t ks¤J ‚t ttddƒ ttƒ tƒtd dt td   dt td   dtd  td   dtd  t  td  td  ksâJ ‚t ttƒt tƒtd td  t ks÷J ‚t ttƒtd  tƒtd dt  d td  t ksJ ‚t dt tddtt t d td	d
ks-J ‚t dtd  tddttd t d td	d
ksHJ ‚t ttƒtddttd t td	d
ks_J ‚t ttƒt tddttd td  t tdd
ks|J ‚ttƒtdtd  ƒ ttd d ƒt  dttddƒ dtd  tddƒ    dttddƒ dtd  tddƒ    } t | tƒtksÄJ ‚ttdd„ ƒ tt	dd„ ƒ tt	dd„ ƒ tt
dd„ ƒ d S )Nr1   r2   r8   r§   r6   r4   TrL   zZZ(x)rN   zZZ(x, z)rº   r3   rY   c                   S   s   t ttƒtƒS rE   )r   r   r,   r-   rF   rF   rF   rG   rH     rK   z-test_minpoly_fraction_field.<locals>.<lambda>c                   S   s   t ttƒtƒS rE   )r   r   r,   rF   rF   rF   rG   rH     rK   c                   S   s   t ttƒt tƒS rE   ©r   r   r,   r-   rF   rF   rF   rG   rH     rÁ   c                   S   s   t ttƒtddS )NFrc   rÏ   rF   rF   rF   rG   rH      rÁ   )r   r,   r-   r   r   r.   r   r   r&   r'   r£   rÂ   rF   rF   rG   Útest_minpoly_fraction_fieldþ  sB    &&&*.ÿ$Zÿ*<0
ÿ.
ÿ8ÿ&ÿrÐ   c                	   C   sH   t t tttddƒ d ƒtƒ ttttddƒ d ƒ¡tƒtks"J ‚d S )Nr1   r3   )r   r   r,   r   r-   r…   r.   rF   rF   rF   rG   Ú test_minpoly_fraction_field_slow"  s   ÿÿÿrÑ   c                   C   s¤   t tdƒtt tdƒ¡dttdƒ ksJ ‚t tdƒtt tdƒ¡dtdtdƒ  ks.J ‚t ttddƒƒtt tdƒ¡ddtd  d ksIJ ‚ttdd„ ƒ d S )Nr2   rN   r5   r6   c                   S   s   t tttdS )NrN   )r   r-   r,   r)   rF   rF   rF   rG   rH   /  rK   z%test_minpoly_domain.<locals>.<lambda>)r   r   r,   r)   rn   r   r   r&   rF   rF   rF   rG   Útest_minpoly_domain'  s   
ÿÿÿÿrÒ   c                  C   s    dt dƒ t dt dƒ d ƒ } t| tƒtd dt  d ks!J ‚dt dt dƒ d ƒ dt dƒ  d dt dƒ t dt dƒ d ƒ  }t|tƒtksNJ ‚d S )Nr§   r2   r:   rQ   rZ   r5   rº   )r   r   r,   )ro   rµ   rF   rF   rG   Útest_issue_148312  s    ""ÿÿrÓ   c                   C   s°   t ttd  tdƒd  ttd  ddtdƒ   gttƒttdƒd tdƒd ftdƒd tdƒ d tdƒt d  ftdƒd tdƒ d tdƒt d  fƒksVJ ‚d S )Nr6   r2   r4   r8   r;   )r   r,   r-   r   r   r   rF   rF   rF   rG   Útest_issue_18248:  s
   :@(ÿÿrÔ   c               	   C   sN  t tdtdƒƒdƒ} t tdtdƒƒdƒ}t| |ƒtdtdƒ tdƒ dtdƒ d d	tdƒ d  td
tdƒ d ƒd    dtdƒ d d	tdƒ d  td
tdƒ d ƒd  ƒtdtdƒ tdƒ td
tdƒ d ƒ d dtdƒ d  d	tdƒ d    td
tdƒ d ƒ d dtdƒ d  d	tdƒ d  ƒgks¥J ‚d S )Nr6   r3   r8   r/   r4   r0   r§   é   r;   éÄ   r·   i•  r2   )r   r   r   r   )Zc1Zc2rF   rF   rG   Útest_issue_13230@  s.   *ÿÿÿÿ ÿÿÿÿ8ÿþr×   c                  C   s”   dt dt dƒ ƒt dƒt dt dƒ ƒ   d } td dtd   dtd   d }dD ]}tt| |dƒ}|tƒ|ksGJ d||tƒ|f ƒ‚q,d S )Nr1   r2   r8   r6   )TFrc   z3minimal_polynomial(e, compose=%s) = %s; %s expected)r   r,   r   r   )rµ   Zmp_expectedÚcomprt   rF   rF   rG   Útest_issue_19760H  s   0$$þrÙ   c                   C   sØ   t dtd d  tdƒtgdtdƒt dt tdƒ t  d tdƒt dt tdƒ t  d  tdƒt dt tdƒ t  d  tdƒt dt tdƒ t  d  ttt  d  ttt  d  ksjJ ‚d S )Nr1   r4   r6   )Ú	extensionr2   )r$   r,   r   r   rF   rF   rF   rG   Útest_issue_20163Q  s   ""ÿ"þ"ýüüÿrÛ   N)TÚ__doc__rƒ   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Zsympy.solvers.solvesetr   Zsympy.geometryr   r   Zsympy.testing.pytestr   r   Zsympy.sets.setsr   r   Zsympy.polys.numberfieldsr   r   r   r   r   r   r    r!   r"   r#   Zsympy.polys.partfracr$   Zsympy.polys.polyerrorsr%   r&   r'   Zsympy.polys.polyclassesr(   Zsympy.polys.domainsr)   Zsympy.polys.rootoftoolsr*   Zsympy.polys.polytoolsr+   Z	sympy.abcr,   r-   r.   rm   rw   ry   r{   r†   rœ   r    r¡   r¤   rª   r¶   rÀ   rÃ   rÊ   rË   rÌ   rÎ   rÐ   rÑ   rÒ   rÓ   rÔ   r×   rÙ   rÛ   rF   rF   rF   rG   Ú<module>   sX    L0 ^	4 # $
	