
    Qi1                         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 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)QQ)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   /var/www/development/aibuddy-work/election-extract/venv/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_pslqr4      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   r0   s                r   test_field_isomorphismrM   N   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polysr   domainexr   r"   r&   )rV   rR   c                  0    t          g t          d          S )NFrU   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 )NTrU   rX   rY   r   r   r   z(test_primitive_element.<locals>.<lambda>  s    0Q4@@@ r   r6   r7   )r!   r   r   )	r   r	   r   r   r/   r   
ValueErrorr   r
   r   s     r   test_primitive_elementr\      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   r:   c                  V    t          t          d          t          d                    S )Nr   r   )r   r	   rY   r   r   r   z&test_to_number_field.<locals>.<lambda>$  s    od1ggtAww&G&G r   )	r   r	   r   r   r@   rA   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_22561ra   '  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 )NrO   r   r   r!   r;   r+   r   )r   r   _resetr   r   r   r   r   s     r   test_issue_22736rd   -  sy    1q!tad"Q&*B//AHHJJJAaCF1HAQ""q!f,,,,,,r   c                  <   t          dt          dz  z  dt          dz  z  z
  dt          z  z   dz
  d          t          dt          dz  z  dt          dz  z  z
  dt          z  z   dz
  d          }} t          | |gd          d                                         d         dk    sJ t          | |gdd	          d                                         d         dk    sJ t	          j        |           t	          j        |          }}|                    |          }|j                                        d         dk    sJ t          t          t          |
          t          t          t          |
          z   t          dt          z  t          |
          k    sJ d S )Nr?   r   r      r!   r   TrQ   )rR   rV   rS   )	r   r   r   	primitiver   algebraic_fieldunifymodr   )r   r   f1f2f3s        r   test_issue_27798rn   4  s|   2ad7R1W$r!t+a/33WR1Wr!Q$w=NQSTUQU=UXY=Y[\5]5]qAaV40003==??BaGGGGaV4D999!<FFHHKqPPPP""B$6q$9$9B	"B6a A%%%%1R   41R#8#8#88D1aPR<S<S<SSSSSSSr   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.domainsr   sympy.polys.polyerrorsr   sympy.polys.polytoolsr   sympy.polys.rootoftoolsr   sympy.testing.pytestr   	sympy.abcr   r/   r4   rM   r\   r_   ra   rd   rn   rY   r   r   <module>r|      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 # # # # # #              # " " " " " 4 4 4 4 4 4 & & & & & & + + + + + + ' ' ' ' ' '      1O 1O 1Ohe+ e+ e+P!i !i !iH
I 
I 
I- - -- - -	T 	T 	T 	T 	Tr   