
    g                        d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
m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	 Zeej        d
fgedz  ez   dz   ej        dfgedz  edz  z   dez  z
  dz
  ej        d
fedz  dz   ej        dfgedz  edz  z   edz  z   ez   dz   ej        dfedz  dz   ej        d
fedz  dz
  ej        dfedz  dez  z   dz   ej        d
fedz  ez   dz   ej         dfgedz  edz  z   dedz  z  z
  dedz  z  z
  dez  z   dz   ej!        d
fedz  dez  z
  dz   ej"        d
fedz  dz   ej#        dfedz  dez  z   dz   ej$        d
fedz  ez
  dz   ej%        dfgedz  edz  z   edz  z   edz  z   edz  z   ez   dz   e	j&        dfedz  dz   e	j        dfedz  dz   e	j'        dfedz  dedz  z  z
  dz
  e	j        d
fedz  dedz  z  z   dz   e	j(        dfedz  dedz  z  z
  dz   e	j)        dfedz  dedz  z  z
  dz
  e	j*        d
fedz  dedz  z  z
  dedz  z  z   dedz  z  z
  dedz  z  z   ez   dz
  e	j+        dfedz  dedz  z  z   dz
  e	j,        dfedz  dedz  z  z   dz   e	j-        dfedz  dedz  z  z   dedz  z  z   dedz  z  z   dedz  z  z   dez  z   dz   e	j.        d
fedz  dedz  z  z   dedz  z  z   dedz  z  z   dedz  z  z   dez  z
  dz   e	j/        dfedz  dedz  z  z   dedz  z  z   dedz  z  z   dez  z   dz
  e	j0        d
fedz  dedz  z  z   dedz  z  z   edz  z   dez  z   dz   e	j1        dfedz  d ez  z   dz
  e	j2        d
fedz  ez   dz   e	j3        dfgd!Z4d" Z5d# Z6d$ Z7d% Z8d& Z9d' Z:d( Z;d)S )*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                  L   t          t          dz  dz
            t          t          dz  t          z   dz             t          t          dz  dz             t          t          dz  t          dz  z
  t          dz  z   t          z
  dz             fD ]} t          |           \  }}|                                |                                 k    sJ |j        sJ |j        sJ t          j        |           }t          j        |          }t          |j	        |j	                  J d S )N            )
r   r   r   degreeis_monicis_irreducibler
   alg_field_from_polyr   ext)T_UKLs        l/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/numberfields/tests/test_galoisgroups.py!test_tschirnhausen_transformationr"      s   QTAXQTAX\QTAXQTAqD[1a4!#a'((	 ; ; ,A..1xxzzQXXZZ''''z"1%%"1%% ..::::; ;    Tr   r   Fr   r                     l      
   7               i  	      )r   r   r   r   r&   r)   c                      t          dd          D ]1} t          |          }|D ]\  }}}t          |d          ||fk    sJ  2dS )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   sn     Q{{ = =!#& 	= 	=IAq#4000QH<<<<<	== =r#   c                      t          t          d            t          t          d            t          t          d            d S )Nc                  F    t          t          dt                              S )Nr   r   r   r    r#   r!   <lambda>z8test_galois_group_degree_out_of_bounds.<locals>.<lambda>e       |DAJJ77 r#   c                  F    t          t          dt                              S )Nr   rA   rB   r#   r!   rC   z8test_galois_group_degree_out_of_bounds.<locals>.<lambda>f   rD   r#   c                  P    t          t          t          dz  dz                       S )Nr+   r   rA   rB   r#   r!   rC   z8test_galois_group_degree_out_of_bounds.<locals>.<lambda>g   s    |Da!,<,<== r#   )r   
ValueErrorrB   r#   r!   &test_galois_group_degree_out_of_boundsrH   d   sD    
:77888
:77888
:==>>>>>r#   c                      t          dd          D ]E} t          |          d         \  }}}t          |          \  }}||                                k    sJ FdS )zv
    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_namerL   j   si    
 Q{{ , ,(-a061A1F))+++++++, ,r#   c                      t          dd          D ]5} t          |          d         \  }}}t          |dz  d          ||fk    sJ 6dS )zG
    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_ZZrN   u   sc     Q{{ ; ;%c*1-	1cAaC...1c(:::::; ;r#   c                  v    t           d         D ]*\  } }}t          t          |                     ||fk    sJ +d S )Nr   )r9   r   r   r   r<   r=   s      r!   'test__galois_group_degree_4_root_approxrQ   ~   sP    &q) G G	1c1$q''::q#hFFFFFG Gr#   c                  v    t           d         D ]*\  } }}t          t          |                     ||fk    sJ +d S )Nr&   )r9   r   r   rP   s      r!   "test__galois_group_degree_5_hybridrS      sP    &q) B B	1c,T!WW55!SAAAAAB Br#   c                  b   t          j        t          t          dz  dz                       } |                     d          \  }}|t
          j        k    sJ t          j        t          t          dz  dz
                      } |                     d          \  }}|t
          j        k    sJ d S )Nr   r   Tr5   r   )r
   r   r   r   r   r   VD4)kr<   r   s      r!    test_AlgebraicField_galois_grouprX      s    
tAqD1H~~..A>>$>''DAq%'''''
tAqD1H~~..A>>$>''DAq%(((((((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C4rU   rV   A4S4C5D5M20A5S5C6D6G18A4xC2S4pS4mG36mS4xC2PSL2F5PGL2F5G36pG72A6S6r9   r>   rH   rL   rN   rQ   rS   rX   rB   r#   r!   <module>r{      sS   ) )                      1 0 0 0 0 0            @ ? ? ? ? ? & & & & & & ' ' ' ' ' '; ; ;* 
!$d+
 
AA,/7
 
A1qs	Q	 5 8$?	
A(+U3 
A1q!t	a	!	#%:%=uE	
A(*D1	
A(+U3	
A!b/2D9	
AA,/7 
A1qAv	!Q$	&1	,q	02G2JDQ	
A!b/2D9	
A(,e4	
A1r	03T:	
AA,/7 
A1q!t	ad	"QT	)A	-	13H3KUS	
A*-u5	
A(+U3	
A!Q$	14d;	
A!Q$	15u=	
A!Q$	17?	
A!Q$	15t<	
A!Q$1a4	!AqD&	(1QT6	1A	5	9;P;TV[\	
A!Q$	16>	
A!Q$	17?	
A1a4"QT'	!C1H	,s1a4x	7#a%	?"	DF[Fbdhi	
A1a4"QT'	!C1H	,s1a4x	7$q&	@2	EG\Gcejk	
A!Q$1a4	!AqD&	(1Q3	.	24I4NPTU	
A!Q$1a4	!Q$	&1	,q	02G2KUS	
A1r	03T:	
AA,/7!?1 1 h= = =? ? ?, , ,; ; ;G G G
B B B
) ) ) ) )r#   