U
    ZÊ¹j·/  ã                   @   sÜ   d Z ddl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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 eZdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dd„ Z$dS )z4Tests for the subfield problem and allied problems. é    )ÚAlgebraicNumberÚIÚpiÚRational)ÚS)Úexp)Úsqrt)ÚMPQ)Úis_isomorphism_possibleÚfield_isomorphism_pslqÚfield_isomorphismÚprimitive_elementÚto_number_field)ÚIsomorphismFailed)ÚPoly)ÚCRootOf)Úraises)Úxc               
      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s–t‚tˆ ˆƒd ks¨t‚tˆ | ƒd ksºt‚tˆ |ƒtddƒdtddƒ dgksât‚tˆ |ƒtdd	ƒdtddƒ dtd
dƒdgk�st‚tˆˆ ƒd k�s*t‚tˆˆƒddgk�sBt‚tˆ| ƒd k�sVt‚tˆ|ƒtddƒ dtddƒdgk�s€t‚tˆ|ƒtddƒ dtddƒdtddƒ dtdd	ƒdgk�sÀt‚t| ˆ ƒd k�sÔt‚t| ˆƒd k�sèt‚t| | ƒddgk�s t‚t| |ƒd k�st‚t| |ƒtddƒdtddƒ dtddƒdtdd	ƒ dgk�sTt‚t|ˆ ƒd k�sht‚t|ˆƒd k�s|t‚t|| ƒd k�s�t‚t||ƒddgk�s¨t‚t||ƒtddƒ dtddƒdtddƒ dtdd	ƒdgk�sèt‚t|ˆ ƒd k�süt‚t|ˆƒd k�st‚t|| ƒd k�s$t‚t||ƒd k�s8t‚t||ƒddgk�sPt‚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°t‚d S )Né   c                      s
   t ˆ ˆƒS )N)r   © ©ÚaÚbr   úk/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/numberfields/tests/test_subfield.pyÚ<lambda>   ó    z-test_field_isomorphism_pslq.<locals>.<lambda>é   é   é   r   é	   éP   é;   é   é   i€  éC   i@  i)  é    i9  éG   iy  iÕ  i%  é   é   é‹   i[  iù  éûÿÿÿ)r   r   r   r   ÚNotImplementedErrorr   ÚAssertionErrorÚQ)ÚcÚdÚeÚfr   r   r   Útest_field_isomorphism_pslq   sœ    ( ÿ"ÿ
*
 ÿ   
   ÿ
 ÿ 
    
 ÿ
 ÿ   
   ÿ  ÿ.ÿr2   c                  C   s$  t dtdƒƒdgkst‚t ttdƒ ttdƒ d ƒddgksBt‚t t tdƒ ttdƒ d ƒddgksnt‚t ttdƒ t tdƒ d ƒddgksšt‚t t tdƒ t tdƒ d ƒddgksÈt‚t dt tdƒ d dt tdƒ d ƒtddƒdgk�st‚t dt tdƒ d dt tdƒ d ƒtd	dƒdgk�sDt‚t dt tdƒ d d
t tdƒ d ƒtd	dƒdgk�s‚t‚t dt tdƒ d d
t tdƒ d ƒtddƒdgk�sÀt‚t dt tdƒ d d dt tdƒ d ƒtddƒdgk�st‚t dt tdƒ d d dt tdƒ d ƒtd	dƒdgk�sDt‚t dt tdƒ d d d
t tdƒ d ƒtd	dƒdgk�s†t‚t dt tdƒ d d d
t tdƒ d ƒtddƒdgk�sÈt‚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k�spt‚t	||ƒdk�s„t‚t	||ƒdk�s˜t‚t	||ƒdk�s¬t‚t || dd�|k�sÄt‚t ||dd�|k�sÜt‚t ||dd�|k�sôt‚t ||dd�|k�st‚t || dd�|k�s$t‚t ||dd�|k�s<t‚t ||dd�|k�sTt‚t ||dd�|k�slt‚ttdƒ ƒ}t	|| ƒdk�sŽt‚t	||ƒdk�s¢t‚t	||ƒdk�s¶t‚t	||ƒdk�sÊt‚t || dd�|k�sât‚t ||dd�|k�sút‚t ||dd�|k�st‚t ||dd�|k�s*t‚t || dd�|k�sBt‚t ||dd�|k�sZt‚t ||dd�|k�srt‚t ||dd�|k�sŠt‚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k�sÞt‚t	||ƒdk�sòt‚t	||ƒdk�st‚t	||ƒdk�st‚t || dd�|k�s2t‚t ||dd�|k�sJt‚t ||dd�|k�sbt‚t ||dd�|k�szt‚t || dd�|k�s’t‚t ||dd�|k�sªt‚t ||dd�|k�sÂt‚t ||dd�|k�sÚt‚ttdƒ ƒ}t	|| ƒdk�süt‚t	||ƒdk�st‚t	||ƒdk�s$t‚t	||ƒdk�s8t‚t || dd�|k�sPt‚t ||dd�|k�sht‚t ||dd�|k�s€t‚t ||dd�|k�s˜t‚t || dd�|k�s°t‚t ||dd�|k�sÈt‚t ||dd�|k�sàt‚t ||dd�|k�søt‚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k�s`t‚t	||ƒdk�stt‚t	||ƒdk�sˆt‚t	||ƒdk�sœt‚t || dd�|k�s´t‚t ||dd�|k�sÌt‚t ||dd�|k�sät‚t ||dd�|k�süt‚t || dd�|k�	st‚t ||dd�|k�	s,t‚t ||dd�|k�	sDt‚t ||dd�|k�	s\t‚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k�	süt‚t	||ƒdk�
st‚t	||ƒdk�
s$t‚t	||ƒdk�
s8t‚t || dd�|k�
sPt‚t ||dd�|k�
sht‚t ||dd�|	k�
s€t‚t ||dd�|
k�
s˜t‚t || dd�|k�
s°t‚t ||dd�|k�
sÈt‚t ||dd�|	k�
sàt‚t ||dd�|
k�
søt‚ttdƒƒ}ttdƒƒ}ttdƒƒ}t	||ƒdk�s0t‚t	||ƒdk�sDt‚t	|| ƒdk�sXt‚t tdƒtdƒdd�d k�sxt‚t tdƒtdƒdd�d k�s˜t‚t tdƒtdƒdd�d k�s¸t‚t tdƒtdƒdd�d k�sØt‚ttdƒƒ}tdtdƒd  ƒ}t	||ƒdk�st‚t ||ƒd k�s t‚d S )Nr   r   r   éþÿÿÿr   r(   é   é#   iúÿÿÿr*   é   é÷ÿÿÿéÿÿÿÿr   T)ÚfastFiõÿÿÿr#   ißÿÿÿr'   éýÿÿÿé!   r   é1   iÏÿÿÿ)r   r   r,   r   r   r   r   ÚHalfÚZeror
   ZOne)ÚpÚqÚrÚsZ
pos_coeffsZ
neg_coeffsr   Zpos_1_coeffsZneg_5_coeffsZpos_5_coeffsZneg_1_coeffsr   r.   r   r   r   Útest_field_isomorphismM   s   *,,.>>>> ÿÿ
 ÿÿ
 ÿÿ
 ÿÿ
       rC   c               	   C   sÔ  t tdƒgtƒtd d dgfks&t‚t tdƒtdƒgtƒtd dtd   d ddgfks`t‚t tdƒgtdd�ttd d dd	�dgfks’t‚t tdƒtdƒgtdd�ttd dtd   d dd	�ddgfksØt‚t tdƒgtdd
�td d dgddggfk�st‚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~t‚t tdƒgtddd�ttd d dd	�dgddggfk�s¼t‚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�s8t‚t tdƒgdd�ttd d ƒdgfk�sft‚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 dddgfk�sìt‚t tdƒdgtƒtd d ddgfk�st‚t dtdƒgtƒtd d ddgfk�sDt‚t tdƒdgtdd
�td d ddgt	ddƒt	ddƒgg gfk�sŠt‚t dtdƒgtdd
�td d ddgg t	ddƒt	ddƒggfk�sÐt‚d S )Nr   r   r   é   é
   T)ÚpolysZQQ)Údomain©Úexr   r   r#   )rI   rF   c                   S   s   t g tdd�S )NFrH   ©r   r   r   r   r   r   r     r   z(test_primitive_element.<locals>.<lambda>c                   S   s   t g tdd�S )NTrH   rJ   r   r   r   r   r     r   r3   r4   )
r   r   r   r,   r   r-   r   Ú
ValueErrorr   r	   r   r   r   r   Útest_primitive_elementõ   st    & ÿÿ2ÿÿ ÿ&ÿ  ÿÿ
4ÿ  ÿÿ
   ÿ ÿ
8ÿÿÿ
.28,,FrL   c                  C   sÌ   t tdƒƒttdƒƒkst‚t tdƒtdƒgƒttdƒtdƒ ƒksHt‚ttdƒtdƒ tjtjtddƒtjgƒ} t tdƒtdƒtdƒ ƒ| ks”t‚t tdƒttdƒtdƒ ƒƒ| ksºt‚tt	dd„ ƒ d S )Nr   r   r7   c                   S   s   t tdƒtdƒƒS )Nr   r   )r   r   r   r   r   r   r   #  r   z&test_to_number_field.<locals>.<lambda>)
r   r   r   r,   r   r=   r>   r   r   r   )r   r   r   r   Útest_to_number_field  s    ÿÿ*"&rM   c                  C   sN   t tdƒtdƒtdƒ ƒ} t tdƒtdƒtdƒ ƒ}t| |ƒddgksJt‚d S )Nr   r   r(   r   r   )r   r   r   r,   r   r   r   r   Útest_issue_22561&  s    rN   c                  C   s\   t td td  td  t d dƒ} |  ¡  tdt t d ƒ}t| |ƒddgksXt‚d S )NrD   r   r   r   r8   r(   r   )r   r   Ú_resetr   r   r   r   r,   r   r   r   r   Útest_issue_22736,  s    &rP   N)%Ú__doc__Zsympy.core.numbersr   r   r   r   Zsympy.core.singletonr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Zsympy.external.gmpyr	   Z!sympy.polys.numberfields.subfieldr
   r   r   r   r   Zsympy.polys.polyerrorsr   Zsympy.polys.polytoolsr   Zsympy.polys.rootoftoolsr   Zsympy.testing.pytestr   Z	sympy.abcr   r-   r2   rC   rL   rM   rN   rP   r   r   r   r   Ú<module>   s&   4 )$