
    \h                     2   S r SSKJr  SSKJrJrJrJrJrJ	r	  SSK
Jr  SSKJrJrJrJr  SSKJr  SSKJr  SSKJr  S	 r\\R0                  S
4/\S-  \-   S-   \R2                  S4/\S-  \S-  -   S\-  -
  S-
  \R4                  S
4\S-  S-   \R6                  S4/\S-  \S-  -   \S-  -   \-   S-   \R8                  S4\S-  S-   \R:                  S
4\S-  S-
  \R<                  S4\S-  S\-  -   S-   \R>                  S
4\S-  \-   S-   \R@                  S4/\S-  \S-  -   S\S-  -  -
  S\S-  -  -
  S\-  -   S-   \RB                  S
4\S-  S\-  -
  S-   \RD                  S
4\S-  S-   \RF                  S4\S-  S\-  -   S-   \RH                  S
4\S-  \-
  S-   \RJ                  S4/\S-  \S-  -   \S-  -   \S-  -   \S-  -   \-   S-   \	RL                  S4\S-  S-   \	R6                  S4\S-  S-   \	RN                  S4\S-  S\S-  -  -
  S-
  \	R>                  S
4\S-  S\S-  -  -   S-   \	RP                  S4\S-  S\S-  -  -
  S-   \	RR                  S4\S-  S\S-  -  -
  S-
  \	RT                  S
4\S-  S\S-  -  -
  S\S-  -  -   S\S-  -  -
  S\S-  -  -   \-   S-
  \	RV                  S4\S-  S\S-  -  -   S-
  \	RX                  S4\S-  S\S-  -  -   S-   \	RZ                  S4\S-  S\S-  -  -   S\S-  -  -   S\S-  -  -   S\S-  -  -   S\-  -   S-   \	R\                  S
4\S-  S\S-  -  -   S\S-  -  -   S\S-  -  -   S\S-  -  -   S\-  -
  S-   \	R^                  S4\S-  S\S-  -  -   S\S-  -  -   S\S-  -  -   S\-  -   S-
  \	R`                  S
4\S-  S\S-  -  -   S\S-  -  -   \S-  -   S\-  -   S-   \	Rb                  S4\S-  S \-  -   S-
  \	Rd                  S
4\S-  \-   S-   \	Rf                  S4/S!.r4S" r5S# r6S$ r7S% r8S& r9S' r:S( r;g))*z#Tests for computing Galois groups.     )x)S1TransitiveSubgroupsS2TransitiveSubgroupsS3TransitiveSubgroupsS4TransitiveSubgroupsS5TransitiveSubgroupsS6TransitiveSubgroups)QQ)tschirnhausen_transformationgalois_group"_galois_group_degree_4_root_approx_galois_group_degree_5_hybrid)field_isomorphism)Poly)raisesc                  F   [        [        S-  S-
  5      [        [        S-  [        -   S-   5      [        [        S-  S-   5      [        [        S-  [        S-  -
  [        S-  -   [        -
  S-   5      4 H  n [        U 5      u  pUR                  5       U R                  5       :X  d   eUR                  (       d   eUR
                  (       d   e[        R                  " U 5      n[        R                  " U5      n[        UR                  UR                  5      b  M   e   g )N            )
r   r   r   degreeis_monicis_irreducibler
   alg_field_from_polyr   ext)T_UKLs        h/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/numberfields/tests/test_galoisgroups.py!test_tschirnhausen_transformationr"      s    QTAXQTAX\QTAXQTAqD[1a4!#a'(	 ,A.xxzQXXZ'''zzz""1%""1% .:::    Tr   r   Fr   r                     l      
   7               i  	      )r   r   r   r   r&   r)   c                  v    [        SS5       H)  n [        U    nU H  u  p#n[        USS9X44:X  a  M   e   M+     g)z
Try all the test polys.
r   r+   Tby_nameNrangetest_polys_by_degr   )degpolysr   Galts        r!   test_galois_groupr>   Z   sC     Q{!#&IA#40QH<<<  r#   c                  j    [        [        S 5        [        [        S 5        [        [        S 5        g )Nc                  4    [        [        S[        5      5      $ )Nr   r   r   r    r#   r!   <lambda>8test_galois_group_degree_out_of_bounds.<locals>.<lambda>e       |DAJ7r#   c                  4    [        [        S[        5      5      $ )Nr   rA   rB   r#   r!   rC   rD   f   rE   r#   c                  >    [        [        [        S-  S-   5      5      $ )Nr+   r   rA   rB   r#   r!   rC   rD   g   s    |Da!,<=r#   )r   
ValueErrorrB   r#   r!   &test_galois_group_degree_out_of_boundsrI   d   s#    
:78
:78
:=>r#   c                      [        SS5       H4  n [        U    S   u  pn[        U5      u  pCXBR                  5       :X  a  M4   e   g)zj
Check at least one polynomial of each supported degree, to see that
conversion from name to group works.
r   r+   r   N)r8   r9   r   get_perm_group)r:   r   G_namer   r<   s        r!   test_galois_group_not_by_namerM   j   sG    
 Q{(-a01A))++++ r#   c                  p    [        SS5       H&  n [        U    S   u  pn[        US-  SS9X#4:X  a  M&   e   g)z?
Check that we can work with polys that are not monic over ZZ.
r   r+   r   r   Tr5   Nr7   )r:   r   r<   r=   s       r!   #test_galois_group_not_monic_over_ZZrO   u   sB     Q{%c*1-	cAaC.1(::: r#   c                  `    [         S    H!  u  pn[        [        U 5      5      X4:X  a  M!   e   g )Nr   )r9   r   r   r   r<   r=   s      r!   'test__galois_group_degree_4_root_approxrR   ~   s.    &q)	c1$q':qhFFF *r#   c                  `    [         S    H!  u  pn[        [        U 5      5      X4:X  a  M!   e   g )Nr&   )r9   r   r   rQ   s      r!   "test__galois_group_degree_5_hybridrT      s.    &q)	c,T!W5!AAA *r#   c                  D   [         R                  " [        [        S-  S-   5      5      n U R	                  SS9u  pU[
        R                  :X  d   e[         R                  " [        [        S-  S-
  5      5      n U R	                  SS9u  pU[
        R                  :X  d   eg )Nr   r   Tr5   r   )r
   r   r   r   r   r   VD4)kr<   r   s      r!    test_AlgebraicField_galois_grouprY      s    
tAqD1H~.A>>$>'DA%'''''
tAqD1H~.A>>$>'DA%(((((r#   N)<__doc__	sympy.abcr   sympy.combinatorics.galoisr   r   r   r   r   r	   !sympy.polys.domains.rationalfieldr
   %sympy.polys.numberfields.galoisgroupsr   r   r   r   !sympy.polys.numberfields.subfieldr   sympy.polys.polytoolsr   sympy.testing.pytestr   r"   S1S2A3S3C4rV   rW   A4S4C5D5M20A5S5C6D6G18A4xC2S4pS4mG36mS4xC2PSL2F5PGL2F5G36pG72A6S6r9   r>   rI   rM   rO   rR   rT   rY   rB   r#   r!   <module>r|      s   )   1  @ & ';* 
!$$d+
 
AA,//7
 
A1qs	Q	 5 8 8$?	
A(++U3 
A1q!t	a	!	#%:%=%=uE	
A(**D1	
A(++U3	
A!b/22D9	
AA,//7 
A1qAv	!Q$	&1	,q	02G2J2JDQ	
A!b/22D9	
A(,,e4	
A1r	033T:	
AA,//7 
A1q!t	ad	"QT	)A	-	13H3K3KUS	
A*--u5	
A(++U3	
A!Q$	144d;	
A!Q$	155u=	
A!Q$	177?	
A!Q$	155t<	
A!Q$1a4	!AqD&	(1QT6	1A	5	9;P;T;TV[\	
A!Q$	166>	
A!Q$	177?	
A1a4"QT'	!C1H	,s1a4x	7#a%	?"	DF[FbFbdhi	
A1a4"QT'	!C1H	,s1a4x	7$q&	@2	EG\GcGcejk	
A!Q$1a4	!AqD&	(1Q3	.	24I4N4NPTU	
A!Q$1a4	!Q$	&1	,q	02G2K2KUS	
A1r	033T:	
AA,//7!?1 h=?,;G
B
)r#   