o
    GZŽhè1  ã                   @   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 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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)ÚQQ)Ú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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 )Né   c                      s
   t ˆ ˆƒS )N)r   © ©ÚaÚbr   ú[/var/www/auris/lib/python3.10/site-packages/sympy/polys/numberfields/tests/test_subfield.pyÚ<lambda>   s   
 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   ÚQ)ÚcÚdÚeÚfr   r   r   Útest_field_isomorphism_pslq   sn   (ÿ"ÿ(
ÿ"
ÿ
ÿ$ÿ
ÿ"ÿ ÿ.ÿr1   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 ‚ttdƒƒ}tdtdƒd  ƒ}t||ƒdu sJ ‚t ||ƒd u sJ ‚d S )Nr   r   r   éþÿÿÿr   r(   é   é#   iúÿÿÿr*   é   é÷ÿÿÿéÿÿÿÿr   T)ÚfastFiõÿÿÿr#   ißÿÿÿr'   éýÿÿÿé!   r   é1   iÏÿÿÿ)
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_isomorphismN   s  *,,.<<<<(ÿÿ(ÿ
ÿ(ÿ
ÿ(ÿ
ÿ       rB   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 ‚t tdƒdgtƒtd d ddgfksˆJ ‚t dtdƒgtƒtd d ddgfksžJ ‚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ÁJ ‚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äJ ‚d S )Nr   r   r   é   é
   T©Úpolysr   ©Údomain©Úexr   r   r#   )rJ   rF   c                   S   ó   t g tddS )NFrI   ©r   r   r   r   r   r   r     ó    z(test_primitive_element.<locals>.<lambda>c                   S   rK   )NTrI   rL   r   r   r   r   r     rM   r2   r3   )r   r   r   )	r   r   r   r   r,   r   Ú
ValueErrorr   r	   r   r   r   r   Útest_primitive_elementö   sb   &ÿÿ2ÿÿÿ&ÿÿÿ4ÿÿÿÿ ÿ8ÿÿ
ÿ.26,,FJrO   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 )Nr   r   r6   c                   S   s   t tdƒtdƒƒS )Nr   r   )r   r   r   r   r   r   r   $  s    z&test_to_number_field.<locals>.<lambda>)	r   r   r   r   r<   r=   r   r   r   )r   r   r   r   Útest_to_number_field  s   ÿÿ*"&rP   c                  C   sN   t tdƒtdƒtdƒ ƒ} t tdƒtdƒtdƒ ƒ}t| |ƒddgks%J ‚d S )Nr   r   r(   r   r   )r   r   r   r   r   r   r   Útest_issue_22561'  s   rQ   c                  C   s\   t td td  td  t d dƒ} |  ¡  tdt t d ƒ}t| |ƒddgks,J ‚d S )NrC   r   r   r   r7   r(   r   )r   r   Ú_resetr   r   r   r   r   r   r   r   Útest_issue_22736-  s   &rS   c                  C   s  t dtd  dtd   dt  d dƒt dtd  dtd   dt  d dƒ} }t| |gddd  ¡ d dks=J ‚t| |gddd	d  ¡ d dksPJ ‚t | ¡t |¡}}| |¡}|j ¡ d dkskJ ‚ttt|d
ttt|d
 tdt t|d
ks„J ‚d S )Nr;   r   r   é   r   r   TrE   )rF   rJ   rG   )	r   r   r   Z	primitiver   Zalgebraic_fieldZunifyÚmodr   )r   r   Úf1Úf2Zf3r   r   r   Útest_issue_277984  s   V$&
6rX   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.domainsr   Zsympy.polys.polyerrorsr   Zsympy.polys.polytoolsr   Zsympy.polys.rootoftoolsr   Zsympy.testing.pytestr   Z	sympy.abcr   r,   r1   rB   rO   rP   rQ   rS   rX   r   r   r   r   Ú<module>   s,    4 )$