Ë
    7^(h¬  ã                   ó2  — 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j0                  d
fgedz  ez   dz   ej2                  dfgedz  edz  z   dez  z
  dz
  ej4                  d
fedz  dz   ej6                  dfgedz  edz  z   edz  z   ez   dz   ej8                  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jB                  d
fedz  dez  z
  dz   ejD                  d
fedz  dz   ejF                  dfedz  dez  z   dz   ejH                  d
fedz  ez
  dz   ejJ                  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	jL                  dfedz  dz   e	j6                  dfedz  dz   e	jN                  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	jP                  dfedz  dedz  z  z
  dz   e	jR                  dfedz  dedz  z  z
  dz
  e	jT                  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	jV                  dfedz  dedz  z  z   dz
  e	jX                  dfedz  dedz  z  z   dz   e	jZ                  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	j`                  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	jb                  dfedz  d ez  z   dz
  e	jd                  d
fedz  ez   dz   e	jf                  dfgd!œZ4d"„ Z5d#„ Z6d$„ Z7d%„ Z8d&„ Z9d'„ Z:d(„ Z;y))*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                  ó(  — 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        | «      \  }}|j                  «       | j                  «       k(  sJ ‚|j                  sJ ‚|j
                  sJ ‚t        j                  | «      }t        j                  |«      }t        |j                  |j                  «      �Œ›J ‚ y )Né   é   é   é   )
r   r   r   ÚdegreeÚis_monicÚis_irreducibler
   Úalg_field_from_polyr   Úext)ÚTÚ_ÚUÚKÚLs        ún/var/www/skyplay_api_hub/venv/lib/python3.12/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˜QŸX™X›ZÒ'Ð'Ð'Ø�zŠzÐˆzØ×ÒÐÐÜ×"Ñ" 1Ó%ˆÜ×"Ñ" 1Ó%ˆÜ  §¡¨¯©Ó.Ñ:Ð:Ð:ñ;ó    Tr   r   Fr   r   é   é   é   é   é   é   él   é   é
   é7   éŒ   é¯   éª   é   iË  é	   é   )r   r   r   r   r&   r)   c                  óv   — t        dd«      D ]*  } t        |    }|D ]  \  }}}t        |d¬«      ||fk(  rŒJ ‚ Œ, y)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   sQ   € ô �Q˜‹{ò =ˆÜ! #Ñ&ˆØò 	=‰IˆAˆq�#Ü ¨4Ô0°Q¸°HÓ<Ð<Ð<ñ	=ñ=r#   c                  ój   — t        t        d„ «       t        t        d„ «       t        t        d„ «       y )Nc                  ó4   — 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Ó7€ r#   c                  ó4   — t        t        dt        «      «      S )Nr   rA   rB   r#   r!   rC   z8test_galois_group_degree_out_of_bounds.<locals>.<lambda>f   rD   r#   c                  ó>   — 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   s#   € Ü
Œ:Ñ7Ô8Ü
Œ:Ñ7Ô8Ü
Œ:Ñ=Õ>r#   c                  óŒ   — t        dd«      D ]5  } t        |    d   \  }}}t        |«      \  }}||j                  «       k(  rŒ5J ‚ y)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   sR   € ô
 �Q˜‹{ò ,ˆÜ(¨Ñ-¨aÑ0‰ˆˆ6�1Ü˜A‹‰ˆˆ1Ø�F×)Ñ)Ó+Ó+Ð+Ð+ñ,r#   c                  ót   — t        dd«      D ])  } t        |    d   \  }}}t        |dz  d¬«      ||fk(  rŒ)J ‚ y)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   sK   € ô �Q˜‹{ò ;ˆÜ% cÑ*¨1Ñ-‰	ˆˆ1ˆcÜ˜A˜a™C¨Ô.°1°c°(Ó:Ð:Ð:ñ;r#   c                  ó^   — t         d   D ]!  \  } }}t        t        | «      «      ||fk(  rŒ!J ‚ y )Nr   )r9   r   r   ©r   r<   r=   s      r!   Ú'test__galois_group_degree_4_root_approxrQ   ~   s9   € Ü& qÑ)ò G‰	ˆˆ1ˆcÜ1´$°q³'Ó:¸qÀ#¸hÓFÐFÐFñGr#   c                  ó^   — t         d   D ]!  \  } }}t        t        | «      «      ||fk(  rŒ!J ‚ y )Nr&   )r9   r   r   rP   s      r!   Ú"test__galois_group_degree_5_hybridrS   ƒ   s9   € Ü& qÑ)ò B‰	ˆˆ1ˆcÜ,¬T°!«WÓ5¸!¸S¸ÓAÐAÐAñBr#   c                  óL  — t        j                  t        t        dz  dz   «      «      } | j	                  d¬«      \  }}|t
        j                  k(  sJ ‚t        j                  t        t        dz  dz
  «      «      } | j	                  d¬«      \  }}|t
        j                  k(  sJ ‚y )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{      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Ñ2°DÐ9Ø	
ˆA‰�‰�A‰Ð,×/Ñ/°Ð7ðð 
ˆA‰��1‘‰�q˜˜A™‘vÑ	  ! Q¡$¡Ñ	&¨¨1©Ñ	,¨qÑ	0Ð2G×2JÑ2JÈDÐQØ	
ˆA‰��!‘‰�b‰Ð/×2Ñ2°DÐ9Ø	
ˆA‰�‰Ð(×,Ñ,¨eÐ4Ø	
ˆA‰��1‘‰�rÑ	Ð0×3Ñ3°TÐ:Ø	
ˆA‰�‰�A‰Ð,×/Ñ/°Ð7ðð 
ˆA‰��1‘‰�q˜!‘tÑ	˜a ™dÑ	" Q¨¡TÑ	)¨AÑ	-°Ñ	1Ð3H×3KÑ3KÈUÐSØ	
ˆA‰�‰Ð*×-Ñ-¨uÐ5Ø	
ˆA‰�‰Ð(×+Ñ+¨UÐ3Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1×4Ñ4°dÐ;Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1×5Ñ5°uÐ=Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1×7Ñ7¸Ð?Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1×5Ñ5°tÐ<Ø	
ˆA‰��!�Q‘$‘‰˜˜1˜a™4™Ñ	 ! A q¡D¡&Ñ	(¨1¨Q°©T©6Ñ	1°AÑ	5¸Ñ	9Ð;P×;TÑ;TÐV[Ð\Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1×6Ñ6¸Ð>Ø	
ˆA‰��!�Q‘$‘‰˜Ñ	Ð1×7Ñ7¸Ð?Ø	
ˆA‰��1�a‘4‘‰˜"˜Q ™T™'Ñ	! C¨¨1©¡HÑ	,¨s°1°a±4©xÑ	7¸#¸a¹%Ñ	?À"Ñ	DÐF[×FbÑFbÐdhÐiØ	
ˆA‰��1�a‘4‘‰˜"˜Q ™T™'Ñ	! C¨¨1©¡HÑ	,¨s°1°a±4©xÑ	7¸$¸q¹&Ñ	@À2Ñ	EÐG\×GcÑGcÐejÐkØ	
ˆA‰��!�Q‘$‘‰˜˜1˜a™4™Ñ	 ! A q¡D¡&Ñ	(¨1¨Q©3Ñ	.°Ñ	2Ð4I×4NÑ4NÐPTÐUØ	
ˆA‰��!�Q‘$‘‰˜˜1˜a™4™Ñ	 ! Q¡$Ñ	&¨¨1©Ñ	,¨qÑ	0Ð2G×2KÑ2KÈUÐSØ	
ˆA‰��1‘‰�rÑ	Ð0×3Ñ3°TÐ:Ø	
ˆA‰�‰�A‰Ð,×/Ñ/°Ð7ð!ñ?1Ð òh=ò?ò,ò;òGò
Bó
)r#   