
    g/                         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$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                  	   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 d S )N   c                  $    t                     S )N)r   abs   h/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/numberfields/tests/test_subfield.py<lambda>z-test_field_isomorphism_pslq.<locals>.<lambda>   s    (>q!(D(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 D D D DEEEQ  AQ  AQ  AQ$q'')**AQ$q'')DGG344A!!Q''Aq61111!!Q''///!!Q''///!!Q''AaGGQ1a!+DDDDD!	1 Ar((A!QxAb"IIq9: : : : "!Q''///!!Q''Aq61111!!Q''///!!Q''Qq!WWHa2q1+EEEEE!!Q''Q	3. . -Ab#JJAc3KK<Ac2JJ,C C C C C "!Q''///!!Q''///!!Q''Aq61111!!Q''///!!Q''A	3- -Qr3ZZKAc3KKQsBZZK,D D D D D "!Q''///!!Q''///!!Q''///!!Q''Aq61111!!Q''Q	3. . -Ab#JJAc3KK<Ac2JJ,C C C C C "!Q''///!!Q''///!!Q''///!!Q''///!!Q''Aq61111$q''	Ad1ggI-122A!	1 Ar((A#r

{Aqbzz1qbzzk2NO O O 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 d S )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   sN   QQ((QC////aQi4771551a@@@@aRQZ477155"a@@@@aQi!DGGA662q'AAAAaRQZ!DGGA66Aq'AAAAac$q''k!mQqSa[];;!RRS?TTTTTRT$q''\!^QqSa[];;R@P@PRS?TTTTTac$q''k!mRT$q''\!^<<"bAQAQST@UUUUURT$q''\!^RT$q''\!^<<(1b//ST@UUUUU	!DGGAAaCQKM+ +08B.DE E E E
1T!WWQQqSa[], ,08R0@0@"/EF F F F 	!DGGABqDaLN, ,08R0@0@"/EF F F F
1T!WWQRT$q''\!^- -2:1b//20FG G G G 	a477*++Aa477*++Aa477*++Aa477*++A6168B??AF;J2q//168Aq>>16BJQ  A"1a((D0000"1a((D0000"1a((D0000"1a((D0000Q---;;;;Q---;;;;Q---;;;;Q---;;;;Q...*<<<<Q...*<<<<Q...*<<<<Q...*<<<<a!!A"1a((D0000"1a((D0000"1a((D0000"1a((D0000Q---;;;;Q---;;;;Q---;;;;Q---;;;;Q...*<<<<Q...*<<<<Q...*<<<<Q...*<<<<6168C#3#3QV<J2q//168B??AFCJQ  A"1a((D0000"1a((D0000"1a((D0000"1a((D0000Q---;;;;Q---;;;;Q---;;;;Q---;;;;Q...*<<<<Q...*<<<<Q...*<<<<Q...*<<<<a!!A"1a((D0000"1a((D0000"1a((D0000"1a((D0000Q---;;;;Q---;;;;Q---;;;;Q---;;;;Q...*<<<<Q...*<<<<Q...*<<<<Q...*<<<<Aq>>168C+;+;addUCJ2q//168B??QqTTEBJ$q''	A&&A"1a((D0000"1a((D0000"1a((D0000"1a((D0000Q---;;;;Q---;;;;Q---;;;;Q---;;;;Q...*<<<<Q...*<<<<Q...*<<<<Q...*<<<<$q''	Ad1ggI-122AVQVXb!__ae<LROOQVXb!__aeDLa^^QVXc1-=-=quELROOQVXa^^QUCL"1a((D0000"1a((D0000"1a((D0000"1a((D0000Q---====Q---====Q---====Q---====Q...,>>>>Q...,>>>>Q...,>>>>Q...,>>>>Q  AQ  AQ  A"1a((D0000"1a((D0000"1a((E1111T!WWd1ggD999AAAT!WWd1ggD999AAAT!WWd1ggE:::BBBT!WWd1ggE:::BBBQ  AaddQh((A"1a((E1111Q""*****r   c            
      j
   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 d S )Nr   r    r      
   T)polysQQ)domainexr   r!   r%   )rT   rP   c                  0    t          g t          d          S )NFrS   r   r    r   r   r   z(test_primitive_element.<locals>.<lambda>  s    0Q5AAA r   c                  0    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      so   d1ggY**q!tax!o====	a$q''A #$a4"QT'>A#51v">? ? ? ? d1ggY66641qQU;V;V;VYZX[:\\\\\d	 GGt% % %)-adR1Wnq.@)N)N)NQRTUPV(WX X X X 	a	1  #$a4!8aSAq6(";< < < <d1ggtAww/t<<<	
A1a4!	aVqAwwAaGG8Q&?	
1aCQr1XXqB" &# 	$$ $ $ $ 	a	1T+ + +/3AqD1HT/J/J/JQCSTVWRXQY.Z[ [ [ [d1ggtAww/t4HHH	adR1Wnq 	.	.	.A!Aq''1qAwwh	
:Awwh1R88Q'9) 	** * * * d1ggYd333QTAX7LLLLL
:AABBB
:@@AAA T!DGG)a-   !DDGGa$8$8"8qAaAY**q!ta1f}q/@))).LLLLLd1ggq\1--!Q$(QF1CCCCCaa\1--!Q$(QF1CCCCCd1ggq\16661a4!8aVsSTUVxxY\]^_`YaYaNbdfMg:hhhhhaa\16661a4!8aVbSVWXYZS[S[]`abcd]e]eRfMg:hhhhhhhr   c            	      4   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            d S )Nr   r   r9   c                  V    t          t          d          t          d                    S )Nr   r   )r   r	   rW   r   r   r   z&test_to_number_field.<locals>.<lambda>#  s    od1ggtAww&G&G r   )	r   r	   r   r   r?   r@   r   r   r   )r   s    r   test_to_number_fieldr]     sD   477##tAww'?'?????	a$q'' .tAwwa/@AAB B B B 	Q$q'')AFAFHROOQV+TUUA477DGGd1gg$566!;;;;477ODGGd1gg4E$F$FGG1LLLL
GGHHHH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 d S )Nr   r   r*   r    r   )r   r	   r   r   s     r   test_issue_22561r_   &  ss    Qa477!233AQa477!233AQ""q!f,,,,,,r   c                     t          t          dz  t          dz  z   t          dz  z   t          z   dz   d          } |                                  t          dt          z  t
          z  dz            }t          | |          ddgk    sJ d S )NrN   r   r   r    r:   r*   r   )r   r   _resetr   r   r   r   r   s     r   test_issue_22736rb   ,  sy    1q!tad"Q&*B//AHHJJJ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 A A A A A A A A A A " " " " " " 6 6 6 6 6 6 9 9 9 9 9 9 # # # # # #              5 4 4 4 4 4 & & & & & & + + + + + + ' ' ' ' ' '      1O 1O 1Ohe+ e+ e+P!i !i !iH
I 
I 
I- - -- - - - -r   