
    sg/                         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 Zd Z d Z!d Z"d Z#d Z$y)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                  X   t        t              t        t        t        d      z        t        t        fd       t        t        d            t        t        d            t        t        d            } t        t        d      t        d      z         }t        t        d      t        d      z   t        d      z         }t              ddgk(  sJ t              J t        |       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gk(  sJ t              J t              ddgk(  sJ t        |       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        |       J t        |       J t        | |       ddgk(  sJ t        | |      J t        | |      t        dd      dt        dd       dt        dd      dt        dd       dgk(  sJ t        |      J t        |      J t        ||       J t        ||      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        |      J t        |      J t        ||       J t        ||      J t        ||      ddgk(  sJ t        dt        d      z  dt        d      z  z   dz
        }t        ||      t        dd      dt        dd       dt        dd
      dt        dd
       dgk(  sJ y )N   c                      t               S )N)r   abs   _/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/numberfields/tests/test_subfield.py<lambda>z-test_field_isomorphism_pslq.<locals>.<lambda>   s    (>q!(D              r   	   P   ;         i  C   i@  i)     i9  G   iy  i  i%           i[  i  )r   r   r	   r   NotImplementedErrorr   Q)cdefr   r   s       @@r   test_field_isomorphism_pslqr3      s%   A$q'	"A
 DEQ AQ AQ AQ$q')*AQ$q')DG34A!!Q'Aq6111!!Q'///!!Q'///!!Q'AaGQ1a!+DDDD!	1Ar(A!QxAb"Iq9: : : "!Q'///!!Q'Aq6111!!Q'///!!Q'Qq!WHa2q1+EEEE!!Q'Q	3. -Ab#JAc3K<Ac2J,C C C C "!Q'///!!Q'///!!Q'Aq6111!!Q'///!!Q'A	3-Qr3ZKAc3KQsBZK,D D D D "!Q'///!!Q'///!!Q'///!!Q'Aq6111!!Q'Q	3. -Ab#JAc3K<Ac2J,C C C C "!Q'///!!Q'///!!Q'///!!Q'///!!Q'Aq6111$q'	Ad1gI-12A!	1Ar(A#r
{Aqbz1qbzk2NO O Or   c                     t        dt        d            dgk(  sJ t        t        t        d      z  t        t        d      z  dz        ddgk(  sJ t        t         t        d      z  t        t        d      z  dz        ddgk(  sJ t        t        t        d      z  t         t        d      z  dz        ddgk(  sJ t        t         t        d      z  t         t        d      z  dz        ddgk(  sJ t        dt        z  t        d      z  dz  dt        z  t        d      z  dz        t        dd      dgk(  sJ t        dt        z  t        d      z  dz  dt        z  t        d      z  dz        t        d	d      dgk(  sJ t        dt        z  t        d      z  dz  d
t        z  t        d      z  dz        t        d	d      dgk(  sJ t        dt        z  t        d      z  dz  d
t        z  t        d      z  dz        t        dd      dgk(  sJ t        dt        z  t        d      z  dz  dz   dt        z  t        d      z  dz        t        dd      dgk(  sJ t        dt        z  t        d      z  dz  dz   dt        z  t        d      z  dz        t        d	d      dgk(  sJ t        dt        z  t        d      z  dz  dz   d
t        z  t        d      z  dz        t        d	d      dgk(  sJ t        dt        z  t        d      z  dz  dz   d
t        z  t        d      z  dz        t        dd      dgk(  sJ t	        t        d      t        d      z         } t	        t        d       t        d      z         }t	        t        d      t        d      z
        }t	        t        d       t        d      z
        }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      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        || d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ 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      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        || d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||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      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        || d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ 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      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        || d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||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      z  dz
        }t        ||       du sJ t        ||      du sJ t        ||      du sJ t        ||      du sJ t        || d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        || d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t        ||d      |k(  sJ t	        dt        d      z  dt        d      z  z   dz         }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      |k(  sJ t        ||d      |k(  sJ t        ||d      |	k(  sJ t        ||d      |
k(  sJ t        || d      |k(  sJ t        ||d      |k(  sJ t        ||d      |	k(  sJ t        ||d      |
k(  sJ t	        t        d            }t	        t        d            }t	        t        d            }t        ||      du sJ t        ||      du sJ t        ||       du sJ t        t        d      t        d      d      J t        t        d      t        d      d      J t        t        d      t        d      d      J t        t        d      t        d      d      J t	        t        d            }t	        dt        d      dz  z        }t        ||      du sJ t        ||      J y )Nr   r   r   r   r*      #   ir,      r!   T)fastFir%   ir)   !   r    1   i)
r   r	   r   r   r   r   HalfZeror   One)pqrs
pos_coeffs
neg_coeffsr   pos_1_coeffsneg_5_coeffspos_5_coeffsneg_1_coeffsr   r/   s                r   test_field_isomorphismrL   M   s   QQ(QC///aQi47151a@@@aRQZ4715"a@@@aQi!DGA62q'AAAaRQZ!DGA6Aq'AAAac$q'k!mQqSa[];!RRS?TTTTRT$q'\!^QqSa[];R@PRS?TTTTac$q'k!mRT$q'\!^<"bAQST@UUUURT$q'\!^RT$q'\!^<(1b/ST@UUUU	!DGAAaCQKM+08B.DE E E
1T!WQQqSa[],08R0@"/EF F F 	!DGABqDaLN,08R0@"/EF F F
1T!WQRT$q'\!^-2:1b/20FG G G 	a47*+Aa47*+Aa47*+Aa47*+A661668B?AFF;J2q/1668Aq>166BJQ A"1a(D000"1a(D000"1a(D000"1a(D000Q-;;;Q-;;;Q-;;;Q-;;;Q.*<<<Q.*<<<Q.*<<<Q.*<<<a!A"1a(D000"1a(D000"1a(D000"1a(D000Q-;;;Q-;;;Q-;;;Q-;;;Q.*<<<Q.*<<<Q.*<<<Q.*<<<661668C#3QVV<J2q/1668B?AFFCJQ A"1a(D000"1a(D000"1a(D000"1a(D000Q-;;;Q-;;;Q-;;;Q-;;;Q.*<<<Q.*<<<Q.*<<<Q.*<<<a!A"1a(D000"1a(D000"1a(D000"1a(D000Q-;;;Q-;;;Q-;;;Q-;;;Q.*<<<Q.*<<<Q.*<<<Q.*<<<Aq>1668C+;adUCJ2q/1668B?QqTEBJ$q'	A&A"1a(D000"1a(D000"1a(D000"1a(D000Q-;;;Q-;;;Q-;;;Q-;;;Q.*<<<Q.*<<<Q.*<<<Q.*<<<$q'	Ad1gI-12AVVQVVXb!_aee<LROQVVXb!_aeeDLa^QVVXc1-=quuELROQVVXa^QUUCL"1a(D000"1a(D000"1a(D000"1a(D000Q-===Q-===Q-===Q-===Q.,>>>Q.,>>>Q.,>>>Q.,>>>Q AQ AQ A"1a(D000"1a(D000"1a(E111T!Wd1gD9AAAT!Wd1gD9AAAT!Wd1gE:BBBT!Wd1gE:BBBQ AadQh(A"1a(E111Q"***r   c            
      R   t        t        d      gt              t        dz  dz
  dgfk(  sJ t        t        d      t        d      gt              t        dz  dt        dz  z  z
  dz   ddgfk(  sJ t        t        d      gt        d      t        t        dz  dz
  d	      dgfk(  sJ t        t        d      t        d      gt        d      t        t        dz  dt        dz  z  z
  dz   d	      ddgfk(  sJ t        t        d      gt        d
      t        dz  dz
  dgddggfk(  sJ t        t        d      t        d      gt        d
      t        dz  dt        dz  z  z
  dz   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      t        t        dz  dz
  d	      dgddggfk(  sJ t        t        d      t        d      gt        dd      t        t        dz  dt        dz  z  z
  dz   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      t        t        dz  dz
        dgfk(  sJ t        t        d        t        t        d        t        t        dt        d      z  dz         z  t        t        dt        d      z  dz         z  }} t        | |t        gt              t        dz  dt        dz  z  z   dz   g dfk(  sJ t        t        d      dgt              t        dz  dz
  ddgfk(  sJ t        dt        d      gt              t        dz  dz
  ddgfk(  sJ t        t        d      dgt        d
      t        dz  dz
  ddgt        dd      t        dd      gg gfk(  sJ t        dt        d      gt        d
      t        dz  dz
  ddgg t        dd      t        dd      ggfk(  sJ y )Nr   r    r      
   T)polysQQ)domainexr   r!   r%   )rT   rP   c                  &    t        g t        d      S )NFrS   r   r    r   r   r   z(test_primitive_element.<locals>.<lambda>  s    0Q5A r   c                  &    t        g t        d      S )NTrS   rV   rW   r   r   r   z(test_primitive_element.<locals>.<lambda>  s    0Q4@ r   r5   r6   )r    r   r   )	r   r	   r   r   r.   r   
ValueErrorr   r
   r   s     r   test_primitive_elementrZ      sd   d1gY*q!tax!o===	a$q'A#$a4"QT'>A#51v">? ? ? d1gY641qQU;VYZX[:\\\\d	Gt%)-adR1Wnq.@)NQRTUPV(WX X X 	a	1#$a4!8aSAq6(";< < <d1gtAw/t<	
A1a4!	aVqAwAaG8Q&?	
1aCQr1XqB" &# 	$$ $ $ 	a	1T+/3AqD1HT/JQCSTVWRXQY.Z[ [ [d1gtAw/t4H	adR1Wnq 	.A!Aq'1qAwh	
:Awh1R8Q'9) 	** * * d1gYd3QTAX7LLLL
:AB
:@A T!DG)a-  !DDGa$8"8qAaAY*q!ta1f}q/@).LLLLd1gq\1-!Q$(QF1CCCCaa\1-!Q$(QF1CCCCd1gq\161a4!8aVsSTUVxY\]^_`YaNbdfMg:hhhhaa\161a4!8aVbSVWXYZS[]`abcd]eRfMg:hhhhr   c            	         t        t        d            t        t        d            k(  sJ t        t        d      t        d      g      t        t        d      t        d      z         k(  sJ t        t        d      t        d      z   t        j                  t        j
                  t        dd      t        j
                  g      } t        t        d      t        d      t        d      z         | k(  sJ t        t        d      t        t        d      t        d      z               | k(  sJ t        t        d        y )Nr   r   r9   c                  >    t        t        d      t        d            S )Nr   r   )r   r	   rW   r   r   r   z&test_to_number_field.<locals>.<lambda>#  s    od1gtAw&G r   )	r   r	   r   r   r?   r@   r   r   r   )r   s    r   test_to_number_fieldr]     s    47#tAw'????	a$q'.tAwa/@AB B B 	Q$q')AFFAFFHROQVV+TUA47DGd1g$56!;;;47ODGd1g4E$FG1LLL
GHr   c                      t        t        d      t        d      t        d      z         } t        t        d      t        d      t        d      z         }t        | |      ddgk(  sJ y )Nr   r   r*   r    r   )r   r	   r   r   s     r   test_issue_22561r_   &  sU    Qa47!23AQa47!23AQ"q!f,,,r   c                      t        t        dz  t        dz  z   t        dz  z   t        z   dz   d      } | j                          t        dt        z  t
        z  dz        }t        | |      ddgk(  sJ y )NrN   r   r   r    r:   r*   r   )r   r   _resetr   r   r   r   r   s     r   test_issue_22736rb   ,  sd    1q!tad"Q&*B/AHHJAaCF1HAQ"q!f,,,r   N)%__doc__sympy.core.numbersr   r   r   r   sympy.core.singletonr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr	   sympy.external.gmpyr
   !sympy.polys.numberfields.subfieldr   r   r   r   r   sympy.polys.polyerrorsr   sympy.polys.polytoolsr   sympy.polys.rootoftoolsr   sympy.testing.pytestr   	sympy.abcr   r.   r3   rL   rZ   r]   r_   rb   rW   r   r   <module>ro      s_    : A A " 6 9 #  5 & + ' 1Ohe+P!iH
I--r   