§
    OŠtj¬  ã                   ó  — 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        ún/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/numberfields/tests/test_galoisgroups.pyÚ!test_tschirnhausen_transformationr"      s  € å�Q�‰T�A‰X‰ŒÝ�Q�‰T•A‰X˜‰\ÑÔÝ�Q�‰T�A‰X‰ŒÝ�Q�‰T•A�q‘D‰[�1˜a™4Ñ¥!Ñ# aÑ'Ñ(Ô(ð	ð ;ð ;ˆõ ,¨AÑ.Ô.‰ˆˆ1Ø�xŠx‰zŒz˜QŸXšX™ZœZÒ'Ð'Ð'Ð'ØŒzÐÐˆ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˜‰{Œ{ð =ð =ˆÝ! #Ô&ˆØð 	=ð 	=‰IˆAˆq�#Ý ¨4Ð0Ñ0Ô0°Q¸°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°µA©J¬JÑ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‰ˆˆ6�1Ý˜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Ô-‰	ˆˆ1ˆcÝ˜A˜a™C¨Ð.Ñ.Ô.°1°c°(Ò:Ð:Ð:Ð:Ð:ð;ð ;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‰	ˆˆ1ˆcÝ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‰	ˆˆ1ˆcÝ,­T°!©W¬WÑ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œ   € Ý
Ô�t¥A q¡D¨1¡H™~œ~Ñ.Ô.€AØ�>Š> $ˆ>Ñ'Ô'�D€A€qØÕ%Ô'Ò'Ð'Ð'Ð'å
Ô�t¥A q¡D¨1¡H™~œ~Ñ.Ô.€AØ�>Š> $ˆ>Ñ'Ô'�D€A€qØÕ%Ô(Ò(Ð(Ð(Ð(Ð(Ð(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‰Ð/Ô2°DÐ9Ø	
ˆA‰�‰�A‰Ð,Ô/°Ð7ðð 
ˆA‰��1‘‰�q˜˜A™‘vÑ	  ! Q¡$¡Ñ	&¨¨1©Ñ	,¨qÑ	0Ð2GÔ2JÈDÐQØ	
ˆA‰��!‘‰�b‰Ð/Ô2°DÐ9Ø	
ˆA‰�‰Ð(Ô,¨eÐ4Ø	
ˆA‰��1‘‰�rÑ	Ð0Ô3°TÐ:Ø	
ˆA‰�‰�A‰Ð,Ô/°Ð7ðð 
ˆA‰��1‘‰�q˜!‘tÑ	˜a ™dÑ	" Q¨¡TÑ	)¨AÑ	-°Ñ	1Ð3HÔ3KÈUÐSØ	
ˆA‰�‰Ð*Ô-¨uÐ5Ø	
ˆA‰�‰Ð(Ô+¨UÐ3Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1Ô4°dÐ;Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1Ô5°uÐ=Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1Ô7¸Ð?Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1Ô5°tÐ<Ø	
ˆA‰��!�Q‘$‘‰˜˜1˜a™4™Ñ	 ! A q¡D¡&Ñ	(¨1¨Q°©T©6Ñ	1°AÑ	5¸Ñ	9Ð;PÔ;TÐV[Ð\Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1Ô6¸Ð>Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1Ô7¸Ð?Ø	
ˆA‰��1�a‘4‘‰˜"˜Q ™T™'Ñ	! C¨¨1©¡HÑ	,¨s°1°a±4©xÑ	7¸#¸a¹%Ñ	?À"Ñ	DÐF[ÔFbÐdhÐiØ	
ˆA‰��1�a‘4‘‰˜"˜Q ™T™'Ñ	! C¨¨1©¡HÑ	,¨s°1°a±4©xÑ	7¸$¸q¹&Ñ	@À2Ñ	EÐG\ÔGcÐejÐkØ	
ˆA‰��!�Q‘$‘‰˜˜1˜a™4™Ñ	 ! A q¡D¡&Ñ	(¨1¨Q©3Ñ	.°Ñ	2Ð4IÔ4NÐPTÐUØ	
ˆA‰��!�Q‘$‘‰˜˜1˜a™4™Ñ	 ! Q¡$Ñ	&¨¨1©Ñ	,¨qÑ	0Ð2GÔ2KÈUÐSØ	
ˆA‰��1‘‰�rÑ	Ð0Ô3°TÐ:Ø	
ˆA‰�‰�A‰Ð,Ô/°Ð7ð!ð?1ð 1Ð ðh=ð =ð =ð?ð ?ð ?ð,ð ,ð ,ð;ð ;ð ;ðGð Gð Gð
Bð Bð Bð
)ð )ð )ð )ð )r#   