Ë
    7^(hŽY  ã                   óð  — d dl mZmZ d dlmZmZ d dlmZmZm	Z	 d dl
mZmZ d dlmZmZmZ d dlmZmZmZmZ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
„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d „ Z7d!„ Z8d"„ Z9d#„ Z:d$„ Z;d%„ Z<d&„ Z=d'„ Z>d(„ Z?d)„ Z@d*„ ZAd+„ ZBd,„ ZCd-„ ZDd.„ ZEd/„ ZFd0„ ZGd1„ ZHd2„ ZId3„ ZJd4„ ZKd5„ ZLd6„ ZMd7„ ZNd8„ ZOd9„ ZPd:„ ZQd;„ ZRd<„ ZSd=„ ZTd>„ ZUd?„ ZVy@)Aé    )ÚxÚzeta)ÚPolyÚcyclotomic_poly)ÚFFÚQQÚZZ)ÚDomainMatrixÚDM)ÚClosureFailureÚMissingUnityErrorÚStructureError)	ÚModuleÚModuleElementÚModuleEndomorphismÚ
PowerBasisÚPowerBasisElementÚfind_min_polyÚis_sq_maxrank_HNFÚmake_mod_eltÚto_col©Úis_int)ÚUnificationFailed)Úraisesc                  óž   — g d¢} t        | «      }|j                  j                  sJ ‚|j                  dk(  sJ ‚|j	                  «       | k(  sJ ‚y )N©é   é   é   é   )r!   r   )r   ÚdomainÚis_ZZÚshapeÚflat)ÚcÚms     úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/polys/numberfields/tests/test_modules.pyÚtest_to_colr)      sD   € Ú€AÜˆq‹	€AØ�8‰8�>Š>Ðˆ>Ø�7‰7�fÒÐÐØ�6‰6‹8�qŠ=Ð‰=ó    c                  óØ   ‡ — t        «       Š t        t        ˆ fd„«       t        t        ˆ fd„«       t        t        ˆ fd„«       t        t        ˆ fd„«       t        t        ˆ fd„«       y )Nc                  ó   •— ‰ j                   S ©N)Ún©ÚMs   €r(   ú<lambda>z,test_Module_NotImplemented.<locals>.<lambda>   s   ø€ ¨¯©€ r*   c                  ó$   •— ‰ j                  «       S r-   )Úmult_tabr/   s   €r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s   ø€ ¨¯
©
«€ r*   c                  ó&   •— ‰ j                  d «      S r-   ©Ú	representr/   s   €r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   ó   ø€ ¨¯©°DÓ(9€ r*   c                  ó$   •— ‰ j                  «       S r-   )Ústarts_with_unityr/   s   €r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s   ø€ ¨×(;Ñ(;Ó(=€ r*   c                  ó:   •— ‰ j                  t        dd«      «      S )Nr   r    )Úelement_from_rationalr   r/   s   €r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s   ø€ ¨×(?Ñ(?ÄÀ1ÀaÃÓ(I€ r*   )r   r   ÚNotImplementedErrorr/   s   @r(   Útest_Module_NotImplementedr=      sE   ø€ Ü‹€AÜ
Ô£Ô,Ü
ÔÓ 4Ô5Ü
ÔÓ 9Ô:Ü
ÔÓ =Ô>Ü
ÔÓ IÕJr*   c                  óJ  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  «      }|j                  d¬«      |||gk(  sJ ‚|j                  d¬«      |||gk(  sJ ‚|j                  «       |k(  sJ ‚|j                  |«      |k(  sJ ‚t        «       }|j                  «       �J ‚y )Né   r   r!   r    T)Úinclude_self)r   r   r   r   Úsubmodule_from_matrixr
   Úeyer	   Ú	ancestorsÚpower_basis_ancestorÚnearest_common_ancestorr   )ÚTÚAÚBÚCÚDr0   s         r(   Útest_Module_ancestorsrK   "   s  € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ�;‰; Dˆ;Ó)¨a°°A¨YÒ6Ð6Ð6Ø�;‰; Dˆ;Ó)¨a°°A¨YÒ6Ð6Ð6Ø×!Ñ!Ó# qÒ(Ð(Ð(Ø×$Ñ$ QÓ'¨1Ò,Ð,Ð,Ü‹€AØ×!Ñ!Ó#Ð+Ð+Ñ+r*   c                  ó<  — t        t        dt        «      «      } t        | «      }t	        g d¢«      }|j                  «       }|j                  |«      du sJ ‚|j                  |«      du sJ ‚|j                  d«      du sJ ‚|j                  t        j                  dt        «      d d …df   «      du sJ ‚|j                  t        j                  dt        «      d d …df   «      du sJ ‚|j                  t        j                  dt        «      d d …df   «      du sJ ‚y )	Nr?   r   TFr   r    r   r!   )r   r   r   r   r   Ú	transposeÚis_compat_colr
   rB   r	   r   )rF   rG   ÚcolÚrows       r(   Útest_Module_compat_colrQ   0   sý   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ
’Ó
€CØ
�-‰-‹/€CØ�?‰?˜3Ó 4Ñ'Ð'Ð'Ø�?‰?˜3Ó 5Ñ(Ð(Ð(Ø�?‰?˜1Ó Ñ&Ð&Ð&Ø�?‰?œ<×+Ñ+¨A¬rÓ2²1°a°4Ñ8Ó9¸UÑBÐBÐBØ�?‰?œ<×+Ñ+¨A¬rÓ2²1°a°4Ñ8Ó9¸UÑBÐBÐBØ�?‰?œ<×+Ñ+¨A¬rÓ2²1°a°4Ñ8Ó9¸TÑAÐAÑAr*   c                  ó€  ‡— t        t        dt        «      «      } t        | «      Š ‰d«      j                  j                  «       g d¢k(  sJ ‚ ‰d«      j                  j                  «       g d¢k(  sJ ‚t        j                  dt        «      d d …df   } ‰|«      j                  |k(  sJ ‚t        t        ˆfd„«       y )	Nr?   r   ©r   r   r   r   r   ©r   r   r   r   r!   r   c                  ó   •—  ‰ d«      S )Néÿÿÿÿ© ©rH   s   €r(   r1   z"test_Module_call.<locals>.<lambda>D   s   ø€ ™q ›u€ r*   )r   r   r   r   rO   r%   r
   rB   r	   r   Ú
ValueError)rF   rO   rH   s     @r(   Útest_Module_callrZ   =   s�   ø€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙˆQ‹4�8‰8�=‰=‹?šlÒ*Ð*Ð*ÙˆQ‹4�8‰8�=‰=‹?šlÒ*Ð*Ð*Ü
×
Ñ
˜1œbÓ
!¢! Q $Ñ
'€CÙˆS‹6�:‰:˜ÒÐÐÜ
Œ:“}Õ%r*   c                  óô   — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j                  «       du sJ ‚|j                  «       du sJ ‚y )Nr?   r   r!   TF)	r   r   r   r   rA   r
   rB   r	   r9   ©rF   rG   rH   s      r(   Útest_Module_starts_with_unityr]   G   sl   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ×ÑÓ  DÑ(Ð(Ð(Ø×ÑÓ  EÑ)Ð)Ñ)r*   c                  óà  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j                  «       }|j                  «       }t        t        ||«      «      D ]f  \  }\  }}dgdz  }|j                  |k(  sJ ‚|j                  |k(  sJ ‚d||<   | |t        |«      «      k(  sJ ‚d||<   | |t        |«      «      k(  rŒfJ ‚ y )Nr?   r   r!   r   r   )r   r   r   r   rA   r
   rB   r	   Úbasis_elementsÚbasis_element_pullbacksÚ	enumerateÚzipÚmoduler   )	rF   rG   rH   ÚbasisÚbpÚiÚeÚpr&   s	            r(   Útest_Module_basis_elementsri   O   så   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ×ÑÓ€EØ	
×	"Ñ	"Ó	$€BÜœs 5¨"›~Ó.ò !‰	ˆ‰6ˆAˆqØˆC�!‰GˆØ�x‰x˜1Š}Ðˆ}Ø�x‰x˜1Š}Ðˆ}Øˆˆ!‰Ø‘A”f˜Q“i“LÒ Ð Ð Øˆˆ!‰Ø‘A”f˜Q“i“LÓ Ð Ð ñ!r*   c                  óÜ  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j                  «       j                  j                  «       g d¢k(  sJ ‚|j                  «       j                  |k(  sJ ‚|j                  «       j                  j                  «       g d¢k(  sJ ‚|j                  «       j                  |k(  sJ ‚y )Nr?   r   r!   ©r   r   r   r   )r   r   r   r   rA   r
   rB   r	   ÚzerorO   r%   rc   r\   s      r(   Útest_Module_zerorm   _   s°   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ�6‰6‹8�<‰<×ÑÓ¢,Ò.Ð.Ð.Ø�6‰6‹8�?‰?˜aÒÐÐØ�6‰6‹8�<‰<×ÑÓ¢,Ò.Ð.Ð.Ø�6‰6‹8�?‰?˜aÒÐÑr*   c                  óÜ  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j                  «       j                  j                  «       g d¢k(  sJ ‚|j                  «       j                  |k(  sJ ‚|j                  «       j                  j                  «       g d¢k(  sJ ‚|j                  «       j                  |k(  sJ ‚y )Nr?   r   r!   rS   )r   r   r   r   rA   r
   rB   r	   ÚonerO   r%   rc   r\   s      r(   Útest_Module_onerp   i   s°   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ�5‰5‹7�;‰;×ÑÓ¢Ò-Ð-Ð-Ø�5‰5‹7�>‰>˜QÒÐÐØ�5‰5‹7�;‰;×ÑÓ¢Ò-Ð-Ð-Ø�5‰5‹7�>‰>˜QÒÐÑr*   c                  óä  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j                  t        dd«      «      }|j                  t        dd«      «      }|j                  g d¢k(  sJ ‚|j                  dk(  sJ ‚|j                  |k(  sJ ‚|j                  g d¢k(  sJ ‚|j                  dk(  sJ ‚|j                  |k(  sJ ‚y )Nr?   r   r!   é   é   )rr   r   r   r   )r   r   r   r   rA   r
   rB   r	   r;   r   ÚcoeffsÚdenomrc   )rF   rG   rH   ÚrAÚrBs        r(   Ú!test_Module_element_from_rationalrx   s   sÎ   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	
×	 Ñ	 ¤ B¨£Ó	+€BØ	
×	 Ñ	 ¤ B¨£Ó	+€BØ�9‰9šÒ%Ð%Ð%Ø�8‰8�qŠ=Ðˆ=Ø�9‰9˜Š>Ðˆ>Ø�9‰9šÒ%Ð%Ð%Ø�8‰8�qŠ=Ðˆ=Ø�9‰9˜Š>Ð‰>r*   c                  óœ  ‡‡— t        t        dt        «      «      } t        | «      Šd ‰d«      z  d ‰d«      z  d ‰d«      z  d ‰d«      z  g}‰j	                  |«      Š|d   j                  «       j                  |d   j                  «       «      }‰j                  |k(  sJ ‚t        t        ˆfd„«       t        t        ˆˆfd„«       y )Nr?   r   r   r   é   c                  ó&   •— ‰ j                  g «      S r-   ©Úsubmodule_from_gens©rG   s   €r(   r1   z1test_Module_submodule_from_gens.<locals>.<lambda>‹   s   ø€ ˜q×4Ñ4°RÓ8€ r*   c                  óH   •— ‰ j                  d ‰ d«      z   ‰d«      g«      S )Nr    r   r|   )rG   rH   s   €€r(   r1   z1test_Module_submodule_from_gens.<locals>.<lambda>�   s"   ø€ ˜q×4Ñ4°a¹¸!»±f¹aÀ»d°^ÓD€ r*   )
r   r   r   r   r}   ÚcolumnÚhstackÚmatrixr   rY   )rF   Úgensr0   rG   rH   s      @@r(   Útest_Module_submodule_from_gensr„   �   s©   ù€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ‰a�‹d‰F�A‘a˜“d‘F˜A™a ›d™F A¡a¨£d¡FÐ+€DØ	×Ñ˜dÓ#€Að 	ˆQ‰�‰Ó×Ñ  Q¡§¡Ó 0Ó1€AØ�8‰8�qŠ=Ðˆ=ä
Œ:Ó8Ô9ä
Œ:ÔDÕEr*   c                  óz  ‡— t        t        dt        «      «      } t        | «      Š‰j	                  dt        j                  dt        «      z  «      } |t        g d¢«      «      }|j                  «       }|j                  j                  «       g d¢k(  sJ ‚t        t        ˆfd„«       t        t        ˆfd„«       y )Nr?   r   r!   r   ©r   r!   rz   é   c                  óV   •— ‰ j                  t        j                  dt        «      «      S )Nr!   )rA   r
   rB   r   r~   s   €r(   r1   z3test_Module_submodule_from_matrix.<locals>.<lambda>˜   s   ø€ ˜q×6Ñ6´|×7GÑ7GÈÌ2Ó7NÓO€ r*   c                  ó\   •— ‰ j                  dt        j                  dt        «      z  «      S )Nr   r?   )rA   r
   rB   r	   r~   s   €r(   r1   z3test_Module_submodule_from_matrix.<locals>.<lambda>š   s$   ø€ ˜q×6Ñ6°q¼<×;KÑ;KÈAÌrÓ;RÑ7RÓS€ r*   )r   r   r   r   rA   r
   rB   r	   r   Ú	to_parentrO   r%   r   rY   )rF   rH   rg   ÚfrG   s       @r(   Ú!test_Module_submodule_from_matrixrŒ   �   s‡   ø€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙ	Œ&’Ó
Ó€AØ	�‰‹€AØ�5‰5�:‰:‹<š<Ò'Ð'Ð'ä
Œ:ÓOÔPä
Œ:ÓSÕTr*   c                  ób  — t        t        dt        «      «      } t        | «      }|j	                  «       } |t        g d¢«      «      }|j                  «       }|j                  j                  «       g d¢k(  sJ ‚ |d«       |d«       |d«       |d«      f\  }}}}||z  |k(  sJ ‚|dz  |k(  sJ ‚y )Nr?   r   r   r   r   r    )	r   r   r   r   Úwhole_submoduler   rŠ   rO   r%   )	rF   rG   rH   rg   r‹   Úe0Úe1Úe2Úe3s	            r(   Útest_Module_whole_submoduler“   �   s¢   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×ÑÓ€AÙ	Œ&’Ó
Ó€AØ	�‰‹€AØ�5‰5�:‰:‹<š<Ò'Ð'Ð'Ù�q“T™1˜Q›4¡ 1£¡q¨£tÐ+�N€BˆˆB�Ø�‰7�bŠ=Ðˆ=Ø�‰7�bŠ=Ð‰=r*   c                  ól   — t        t        dt        «      «      } t        | «      }t	        |«      dk(  sJ ‚y )Nr?   z&PowerBasis(x**4 + x**3 + x**2 + x + 1))r   r   r   r   Úrepr)rF   rG   s     r(   Útest_PowerBasis_reprr–   ©   s/   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ�‹7Ð>Ò>Ð>Ñ>r*   c                  óp   — t        t        dt        «      «      } t        | «      }t        | «      }||k(  sJ ‚y ©Nr?   )r   r   r   r   r\   s      r(   Útest_PowerBasis_eqr™   ¯   s0   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ�1‹€AØ�Š6€M‰6r*   c                  óú   ‡— t        t        dt        «      «      } t        | «      }|j	                  «       Šg d¢g d¢g d¢g d¢dœg d¢g d¢g d¢dœg d¢g d¢d	œd
g d¢idœ}‰|k(  sJ ‚t        ˆfd„‰D «       «      sJ ‚y )Nr?   rS   rT   ©r   r   r   r   ©r   r   r   r   )r   r   r   r    ©rV   rV   rV   rV   )r   r   r    )r   r    r    c              3   ób   •K  — | ]&  }‰|   D ]  }‰|   |   D ]  }t        |«      –— Œ Œ Œ( y ­wr-   r   )Ú.0ÚuÚvr&   r0   s       €r(   ú	<genexpr>z+test_PowerBasis_mult_tab.<locals>.<genexpr>Á   s9   øè ø€ ÒC˜Q¨Q¨q©TÒC¨¸1¸Q¹4À¹7ÒC°aŒv�a�yÐCˆyÐCˆyÑCùs   ƒ,/)r   r   r   r   r3   Úall)rF   rG   Úexpr0   s      @r(   Útest_PowerBasis_mult_tabr¥   ¶   sw   ø€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	�
‰
‹€AÚ¢<²LÂ\ÑRÚ¢<Ò4DÑEÚ"¢|Ñ4Ø’,Ðñ!€Cð
 �Š8€Oˆ8äÓC !ÔCÔCÐCÑCr*   c                  óâ   ‡‡— t        t        dt        «      «      } t        | «      Št	        g d¢«      } ‰|«      }‰j                  |«      |k(  sJ ‚ ‰|d¬«      Št        t        ˆˆfd„«       y )Nr?   r   r   ©ru   c                  ó&   •— ‰ j                  ‰«      S r-   r5   )rG   Úbs   €€r(   r1   z+test_PowerBasis_represent.<locals>.<lambda>Ë   s   ø€  1§;¡;¨q£>€ r*   )r   r   r   r   r   r6   r   r   )rF   rO   ÚarG   r©   s      @@r(   Útest_PowerBasis_representr«   Ä   s\   ù€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ
’Ó
€CÙ	ˆ#‹€AØ�;‰;�q‹>˜SÒ Ð Ð Ù	ˆ#�QŒ€AÜ
Œ>Ô1Õ2r*   c                  ó†  — t        t        dt        «      «      } t        | «      }t        ddt        z  z   «      }t        t        dz  «      }t        dt        «      }|j	                  |«      j
                  g d¢k(  sJ ‚|j	                  |«      j
                  g d¢k(  sJ ‚|j	                  |«      j
                  g d¢k(  sJ ‚y )	Nr?   r   r   r!   r   )r   r   r   r   r�   rk   )r   r   r   r   Úelement_from_polyrt   )rF   rG   r‹   ÚgÚhs        r(   Ú!test_PowerBasis_element_from_polyr°   Î   s£   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜˆQ�”1‘‰W‹€AÜŒQ�‰T‹
€AÜˆQ”‹
€AØ×Ñ˜qÓ!×(Ñ(ªLÒ8Ð8Ð8Ø×Ñ˜qÓ!×(Ñ(Ò,<Ò<Ð<Ð<Ø×Ñ˜qÓ!×(Ñ(ªLÒ8Ð8Ñ8r*   c                  ó€  ‡‡‡‡	— t        j                  d«      } t        j                  d«      }t        | «      Š | t        dd«      t        dd«      ddg«      }‰j                  |«      }|j                  g d¢k(  sJ ‚|j
                  dk(  sJ ‚|j                  «       |k(  sJ ‚ |t        dd«      t        dd«      ddg«      Št        t        ˆˆfd„«       | j                  |«      }‰j                  |«      Š	‰	j                  g d¢k(  sJ ‚‰	j
                  dk(  sJ ‚‰	j                  «       |k(  sJ ‚|j                  ‰«      Št        t        ˆˆfd	„«       t        | j                  j                  «      }|j                  |«      Š	‰	j                  g d¢k(  sJ ‚‰	j
                  dk(  sJ ‚t        t        ˆ	fd
„«       y )Nr?   rs   r   r   r    )é*   é   r   r    rz   c                  ó&   •— ‰ j                  ‰«      S r-   )Úelement_from_ANP)rH   Úds   €€r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>é   s   ø€  a×&8Ñ&8¸Ó&;€ r*   c                  ó&   •— ‰ j                  ‰«      S r-   )Úelement_from_alg_num)rH   Údeltas   €€r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>ö   s   ø€  a×&<Ñ&<¸UÓ&C€ r*   c                  ó$   •— ‰ j                  «       S r-   )Ú
to_alg_num)Úepss   €r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>ÿ   s   ø€  3§>¡>Ó#3€ r*   )r   Úcyclotomic_fieldr   rµ   rt   ru   Úto_ANPr   r   r»   r¸   ÚextÚminpolyr   )
ÚkÚLrª   rg   ÚalpharI   rH   r¶   r¹   r¼   s
         @@@@r(   Ú$test_PowerBasis_element__conversionsrÄ   Ù   s„  û€ Ü
×Ñ˜AÓ€AÜ
×Ñ˜AÓ€AÜ�1‹€Añ 	
Œ2ˆa�‹8”R˜˜1“X˜q !Ð
$Ó%€AØ	×Ñ˜1Ó€AØ�8‰8’~Ò%Ð%Ð%Ø�7‰7�aŠ<Ðˆ<ð �8‰8‹:˜Š?Ðˆ?ñ 	
Œ2ˆa�‹8”R˜˜1“X˜q !Ð
$Ó%€AÜ
ÔÔ;Ô<ð �L‰L˜‹O€EØ
×
 Ñ
  Ó
'€CØ�:‰:šÒ'Ð'Ð'Ø�9‰9˜Š>Ðˆ>ð �>‰>Ó˜uÒ$Ð$Ð$ð �L‰L˜‹O€EÜ
ÔÔCÔDô 	�1—5‘5—=‘=Ó!€Aà
×
 Ñ
  Ó
'€CØ�:‰:šÒ'Ð'Ð'Ø�9‰9˜Š>Ðˆ>ä
Œ>Ó3Õ4r*   c                  óÈ   — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  d¬«      }t        |«      dk(  sJ ‚y )Nr?   r   r!   r    r§   zCSubmodule[[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 2]]/3)	r   r   r   r   rA   r
   rB   r	   r•   r\   s      r(   Útest_Submodule_reprrÆ     sV   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;À1ÐÓE€AÜ�‹7Ð[Ò[Ð[Ñ[r*   c                  ó^  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  d¬«      }|j                  «       }|j                  dk(  r||cxk(  r|k(  sJ ‚ J ‚y )Nr?   r   r!   rz   r    r§   r   )
r   r   r   r   rA   r
   rB   r	   Úreducedru   ©rF   rG   rH   rI   rJ   s        r(   Útest_Submodule_reducedrÊ   	  s•   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;À1ÐÓE€AØ	�	‰	‹€AØ�7‰7�aŠ<˜A œK ašKÐ'Ð'˜KÐ'Ð'˜Kr*   c                  óî  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j                  «        |j                  d«      }|j                  |j                  k(  sJ ‚|j                  «       r|j                  «       rJ ‚|j                  |j                  d d …dd …f   k(  sJ ‚|j                  «       ddgddgdœdddgidœk(  sJ ‚y )Nr?   r   r!   éþÿÿÿr   )r   r   r   )r   r   r   r   rA   r
   rB   r	   Úcompute_mult_tabÚdiscard_beforeÚparentr   r‚   r3   ©rF   rG   rH   rI   s       r(   Útest_Submodule_discard_beforerÑ     sÛ   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ×ÑÔØ	×Ñ˜Ó€AØ�8‰8�q—x‘xÒÐÐØ×ÑÔ ¨×)<Ñ)<Ô)>Ð>Ð>Ø�8‰8�q—x‘x¢ 1¡2 ‘Ò&Ð&Ð&Ø�:‰:‹< B¨ 8°°A°Ñ7¸QÀÀAÀ¸KÑHÒHÐHÑHr*   c                  ó6  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  d¬«      }|j                  |j                  k(  sJ ‚y ©Nr?   r   r!   rz   r    r§   )	r   r   r   r   rA   r
   rB   r	   Ú	QQ_matrixrÐ   s       r(   Útest_Submodule_QQ_matrixrÕ     s{   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;À1ÐÓE€AØ�;‰;˜!Ÿ+™+Ò%Ð%Ñ%r*   c                  ól  ‡‡	‡
‡‡— t        t        dt        «      «      } t        | «      Š‰j	                  dt        j                  dt        «      z  «      Š	‰	j	                  dt        j                  dt        «      z  «      } ‰t        g d¢«      «      } ‰t        g d¢«      «      } ‰t        g d¢«      «      Š‰	j                  |«      }|j                  «       g d¢k(  sJ ‚|j                  |«      }|j                  «       g d¢k(  sJ ‚‰j	                  t        g d	¢g d
¢g d¢gdt        «      j                  «       «      Š
t        t        dt        «      «      }t        |«      } |t        g d¢«      «      Št        t        ˆˆ
fd„«       t        t        ˆ	ˆfd„«       t        t        ˆ	ˆfd„«       y )Nr?   r   r!   r    )rz   é   é   é   r†   )r   r    r?   rs   r   rS   rT   r›   ©r    r!   rs   )r   r   r    r!   r?   rz   c                  ó2   •— ‰j                   ‰ d«      «      S )Nr    r5   )rG   ÚYs   €€r(   r1   z*test_Submodule_represent.<locals>.<lambda>?  s   ø€  1§;¡;©q°«tÓ#4€ r*   c                  ó&   •— ‰ j                  ‰«      S r-   r5   )rH   Úa2s   €€r(   r1   z*test_Submodule_represent.<locals>.<lambda>@  ó   ø€  1§;¡;¨r£?€ r*   c                  ó&   •— ‰ j                  ‰«      S r-   r5   )rH   Úz0s   €€r(   r1   z*test_Submodule_represent.<locals>.<lambda>A  rß   r*   )r   r   r   r   rA   r
   rB   r	   r   r6   r%   rM   r   r   )rF   rI   Úa0Úa1Úb1Úc0ÚUÚZrG   rH   rÜ   rÞ   rá   s           @@@@@r(   Útest_Submodule_representrè   &  sR  ü€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙ	
Œ6’/Ó"Ó	#€BÙ	
Œ6’,ÓÓ	 €BÙ	
Œ6’,ÓÓ	 €Bà	
�‰�R‹€BØ�7‰7‹9šÒ$Ð$Ð$à	
�‰�R‹€BØ�7‰7‹9šÒ$Ð$Ð$à	×Ñ¤ÚÚÚð.ð Œró	!÷ ‘9“;ó		 €Aô 	Œ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	
Œ6Ò$Ó%Ó	&€Bä
Œ>Ô4Ô5Ü
Œ>Ô2Ô3Ü
Œ>Ô2Õ3r*   c                  óÒ  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  «      }|j                  |«      du sJ ‚|j                  |«      du sJ ‚|j                  |«      du sJ ‚y )Nr?   r   r!   r    TF)	r   r   r   r   rA   r
   rB   r	   Úis_compat_submodulerÉ   s        r(   Ú"test_Submodule_is_compat_submodulerë   D  sÍ   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ× Ñ  Ó# tÑ+Ð+Ð+Ø× Ñ  Ó# uÑ,Ð,Ð,Ø× Ñ  Ó# uÑ,Ð,Ñ,r*   c                  ó  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  d¬«      }||k(  sJ ‚y rÓ   )r   r   r   r   rA   r
   rB   r	   rÐ   s       r(   Útest_Submodule_eqrí   O  sp   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;À1ÐÓE€AØ�Š6€M‰6r*   c                  ó\  ‡‡— t        t        dt        «      «      } t        | «      }|j	                  t        g d¢g d¢gdt        «      j                  «       d¬«      Š|j	                  t        g d¢g d¢gdt        «      j                  «       d	¬«      }|j	                  t        g d
¢g d¢g d¢gdt        «      j                  «       d¬«      }‰|z   |k(  sJ ‚t        t        dt        «      «      }t        |«      }|j                   |d«       |d«      g«      Št        t        ˆˆfd„«       y )Nr?   )r!   r   r   r   ©r   r!   r   r   ©r   r!   rz   r§   ©r   é
   r   r   ©r   r   rs   r   é   )é   r   r   r   ©r   rõ   r   r   ©r   r   é   r   rÚ   r³   rs   r   r   c                  ó   •— ‰ ‰z   S r-   rW   )rH   rÜ   s   €€r(   r1   z$test_Submodule_add.<locals>.<lambda>l  ó   ø€ ˜a !™e€ r*   )r   r   r   r   rA   r
   r	   rM   r}   r   Ú	TypeError)rF   rG   rI   rJ   ræ   rç   rH   rÜ   s         @@r(   Útest_Submodule_addrü   W  s!  ù€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ¤ÚÚð.ð Œró!÷ ‘9“; að 	 ó 	)€Að 	
×Ñ¤ÚÚð.ð Œró!÷ ‘9“; bð 	 ó 	*€Að 	
×Ñ¤ÚÚÚð.ð Œró	!÷ ‘9“; bð	 	 ó 	*€Að
 ˆq‰5�AŠ:Ðˆ:äŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ™q ›t¡Q q£T˜lÓ+€AÜ
Œ9”mÕ$r*   c            	      ó.  — t        t        dt        «      «      } t        | «      }|j	                  t        g d¢g d¢gdt        «      j                  «       d¬«      }|j	                  t        g d¢g d¢gdt        «      j                  «       d	¬«      }|j	                  t        g d
¢g d¢gdt        «      j                  «       d¬«      }|j	                  t        g d¢g d¢g d¢g d¢gdt        «      j                  «       d¬«      }|j	                  t        g d¢g d¢g d¢gdt        «      j                  «       d¬«      }|dz  |k(  sJ ‚|dz  |k(  sJ ‚|dz  |k(  sJ ‚| |d«      z  |k(  sJ ‚|j                  |d¬«      |k(  sJ ‚||z  |k(  sJ ‚|dz  |k(  sJ ‚y )Nr?   rñ   ró   rð   rô   r§   rö   r÷   r    )r   r   rò   r   ©r   r   r   rs   )r   r   éd   r   )r   r   r   éF   )éÏÿÿÿr  r  r  ©r!   r!   éá   )é$  r  r   r   )é:  r  rò   r   )é;  r  rs   rs   rÚ   r   rò   F)Úhnfr   )	r   r   r   r   rA   r
   r	   rM   Úmul)rF   rG   rI   ÚC1ÚC2ÚC3_unredÚC3s          r(   Útest_Submodule_mulr  o  sË  € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ¤ÚÚð.ð Œró!÷ ‘9“; bð 	 ó 	*€Að 
×	 Ñ	 ¤ÚÚð/ð Œró"÷ ‘9“; að 
!ó 
)€Bð 
×	 Ñ	 ¤ÚÚð/ð Œró"÷ ‘9“; bð 
!ó 
*€Bð ×&Ñ&¤|ÚÚÚÚð	5ð
 Œró(÷
 ‘9“; cð 'ó +€Hð 
×	 Ñ	 ¤ÚÚÚð/ð Œró	"÷ ‘9“; cð	 
!ó 
+€Bð
 ˆq‰5�AŠ:Ðˆ:Ø�‰6�QŠ;Ðˆ;Øˆr‰6�RŠ<Ðˆ<Ø‰q�‹t‰8�rŠ>Ðˆ>Ø�5‰5�˜ˆ5Ó (Ò*Ð*Ð*Øˆq‰5�BŠ;Ðˆ;Ø�‰6�RŠ<Ð‰<r*   c            	      ó–  ‡‡‡— t        t        dt        «      «      } t        | «      }|j	                  «       } |t        g d¢«      d¬«      Š|j                  t        j                  dt        «      d¬«      Š |t        g d¢«      d¬«      }‰j                  ‰«      }||k(  sJ ‚|j                  t        j                  dt        «      d¬«      Š |t        g d¢«      d¬«      }‰j                  ‰«      }||k(  sJ ‚|j                  t        j                  dt        «      d	¬«      Š |t        g d
¢«      d¬«      }‰j                  ‰«      }||k(  sJ ‚ |t        g d¢«      «      Št        t        ˆˆfd„«       |j                  t        g d¢g d¢g d¢g d¢gdt        «      j                  «       «      Št        t        ˆˆfd„«       y )Nr?   )éZ   éT   éP   éK   éx   r§   r!   r   )r³   rÙ   rõ   rô   )r   rÙ   rõ   rô   r‡   )r   é	   r?   r   r   c                  ó&   •— ‰ j                  ‰«      S r-   ©Úreduce_element)rI   rª   s   €€r(   r1   z/test_Submodule_reduce_element.<locals>.<lambda>¨  s   ø€ ¨×(8Ñ(8¸Ó(;€ r*   )r?   r!   r    r   )r   r‡   rs   rz   )r   r   é   r×   rœ   r  c                  ó&   •— ‰ j                  ‰«      S r-   r  )rI   r©   s   €€r(   r1   z/test_Submodule_reduce_element.<locals>.<lambda>°  s   ø€  1×#3Ñ#3°AÓ#6€ r*   )r   r   r   r   rŽ   r   rA   r
   rB   r	   r  r   r<   rM   r   )rF   rG   rH   Úb_bar_expectedÚb_barrI   rª   r©   s        @@@r(   Útest_Submodule_reduce_elementr  ’  s‘  ú€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×ÑÓ€AÙ	Œ&Ò!Ó
"¨#Ô.€Aà	×Ñ¤× 0Ñ 0°´BÓ 7¸qÐÓA€AÙ”vÒ.Ó/°sÔ;€NØ×Ñ˜QÓ€EØ�NÒ"Ð"Ð"à	×Ñ¤× 0Ñ 0°´BÓ 7¸qÐÓA€AÙ”všoÓ.°cÔ:€NØ×Ñ˜QÓ€EØ�NÒ"Ð"Ð"à	×Ñ¤× 0Ñ 0°´BÓ 7¸qÐÓA€AÙ”všlÓ+°3Ô7€NØ×Ñ˜QÓ€EØ�NÒ"Ð"Ð"á	Œ&’Ó
Ó€AÜ
ÔÔ ;Ô<à	×Ñ¤ÚÚÚÚð	.ð
 Œró!÷
 ‘9“;ó	 €Aô Œ>Ô6Õ7r*   c                  óô   — t        g d¢g d¢g d¢gt        «      } t        g d¢g d¢g d¢gt        «      }t        g d¢g d¢g d¢gt        «      }t        | «      du sJ ‚t        |«      du sJ ‚t        |«      du sJ ‚y )N)r    r   r   )r   r   r   )r   r   r   )r   rÌ   r   )r    r   r    TF)r   r	   r   )r0   ÚM1ÚM2s      r(   Útest_is_HNFr   ³  s˜   € Ü
ÚÚÚðô 
ó		€Aô
 
ÚÚÚðô 
ó	
€Bô
 
ÚÚÚðô 
ó	
€Bô
 ˜QÓ 4Ñ'Ð'Ð'Ü˜RÓ  EÑ)Ð)Ð)Ü˜RÓ  EÑ)Ð)Ñ)r*   c                  ó6  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }t        g d¢«      }t        ||«      }t        ||«      }t        |t        «      sJ ‚t        |t        «      rJ ‚y )Nr?   r   r!   r   )r   r   r   r   rA   r
   rB   r	   r   r   Ú
isinstancer   )rF   rG   rH   rO   ÚeAÚeBs         r(   Útest_make_mod_eltr%  È  s…   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÜ
’Ó
€CÜ	�a˜Ó	€BÜ	�a˜Ó	€BÜ�bÔ+Ô,Ð,Ð,Ü˜"Ô/Ô0Ð0Ð0Ð0r*   c                  ó–   — t        t        dt        «      «      } t        | «      } |t	        g d¢«      d¬«      }t        |«      dk(  sJ ‚y )Nr?   r   r   r§   z[1, 2, 3, 4]/2)r   r   r   r   r   r•   ©rF   rG   rg   s      r(   Útest_ModuleElement_reprr(  Ó  s@   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&’Ó
 aÔ(€AÜ�‹7Ð&Ò&Ð&Ñ&r*   c                  óÂ   — t        t        dt        «      «      } t        | «      } |t	        g d¢«      d¬«      }|j                  «       }|j                  dk(  r||k(  sJ ‚y )Nr?   r†   r   r§   r   )r   r   r   r   r   rÈ   ru   ©rF   rG   rg   r‹   s       r(   Útest_ModuleElement_reducedr+  Ú  sQ   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&’Ó
 aÔ(€AØ	�	‰	‹€AØ�7‰7�aŠ<˜A šFÐ"Ð"˜Fr*   c                  óº   — t        t        dt        «      «      } t        | «      } |t	        g d¢«      «      }|j                  d«      }|j                  g d¢k(  sJ ‚y )Nr?   )rõ   é(   é<   r  rs   )rV   rÌ   éýÿÿÿr    )r   r   r   r   r   Úreduced_mod_prt   r*  s       r(   Ú test_ModuleElement_reduced_mod_pr1  â  sL   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&Ò!Ó
"Ó#€AØ	�‰˜Ó€AØ�8‰8’Ò&Ð&Ñ&r*   c                  óž   — t        t        dt        «      «      } t        | «      }g d¢}t	        j
                  ||«      j                  |k(  sJ ‚y )Nr?   r   )r   r   r   r   r   Úfrom_int_listrt   )rF   rG   r&   s      r(   Ú test_ModuleElement_from_int_listr4  ê  sB   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÚ€AÜ×&Ñ& q¨!Ó,×3Ñ3°qÒ8Ð8Ñ8r*   c                  ó|   — t        t        dt        «      «      } t        | «      } |d«      }t	        |«      dk(  sJ ‚y )Nr?   r   r!   )r   r   r   r   Úlenr'  s      r(   Útest_ModuleElement_lenr7  ñ  s5   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	ˆ!‹€AÜˆq‹6�QŠ;Ð‰;r*   c                  ó   — t        t        dt        «      «      } t        | «      } |d«      }|j	                  «       }||j
                  k(  r||j
                  usJ ‚|j	                  t        d«      ¬«      }|j                  j                  sJ ‚y )Nr?   r   ©r"   )	r   r   r   r   r€   rO   r   r"   Úis_FF)rF   rG   rg   Úcol1Úcol2s        r(   Útest_ModuleElement_columnr=  ø  ss   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	ˆ!‹€AØ�8‰8‹:€DØ�1—5‘5Š=˜T¨¯©Ñ.Ð.Ð.Ø�8‰8œ2˜a›5ˆ8Ó!€DØ�;‰;×ÒÐÑr*   c                  óÖ   — t        t        dt        «      «      } t        | «      } |t	        g d¢«      d¬«      } |t	        g d¢«      d¬«      }|j
                  |j
                  k(  sJ ‚y )Nr?   r   r   r§   ©r    rz   r  r×   r    )r   r   r   r   r   ÚQQ_colr*  s       r(   Útest_ModuleElement_QQ_colrA    sT   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 qÔ)€AØ�8‰8�q—x‘xÒÐÑr*   c                  óÄ  ‡	— t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  «      } |d«      }|j                  «       }|j                  |«      }|j                  «       }|j                  |u r|j                  g d¢k(  sJ ‚|j                  |u r|j                  g d¢k(  sJ ‚|j                  |u r|j                  g d¢k(  sJ ‚ |d«      Š	t        t        ˆ	fd	„«       y )
Nr?   r   r!   r    r   ©r?   r   r   r   )rô   r   r   r   )r³   r   r   r   c                  ó$   •— ‰ j                  «       S r-   )rŠ   ©rª   s   €r(   r1   z1test_ModuleElement_to_ancestors.<locals>.<lambda>  s   ø€ ˜qŸ{™{›}€ r*   )r   r   r   r   rA   r
   rB   r	   rŠ   Úto_ancestorÚover_power_basisrc   rt   r   rY   )
rF   rG   rH   rI   rJ   ÚeDÚeCr$  r#  rª   s
            @r(   Útest_ModuleElement_to_ancestorsrJ  
  s  ø€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙ	
ˆ1‹€BØ	�‰‹€BØ	�‰˜Ó	€BØ	×	Ñ	Ó	€BØ�9‰9˜‰>˜bŸi™iª<Ò7Ð7Ð7Ø�9‰9˜‰>˜bŸi™iª=Ò8Ð8Ð8Ø�9‰9˜‰>˜bŸi™iª=Ò8Ð8Ð8á	ˆ!‹€AÜ
Œ:Ó,Õ-r*   c                  ó¼  ‡‡— t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      }|j	                  dt        j                  dt        «      z  «      Š|j	                  dt        j                  dt        «      z  «      } ‰d«      j                   ‰d«      «      du sJ ‚ ‰d«      j                   |d«      «      du sJ ‚ ‰d«      j                   |d«      «      \  }}|j                  |u r|j                  |u sJ ‚ ‰‰j                  |«      «       ‰d«      k(  r  ||j                  |«      «       |d«      k(  sJ ‚ ‰d«      j                   ‰d«      «      \  }}| ‰d«      k(  r| ‰d«      k(  sJ ‚t        t        d	t        «      «      }t        |«      Št        t        ˆˆfd
„«       y )Nr?   r   r!   r    r   r   TFrs   c                  ó>   •—  ‰ d«      j                   ‰d«      «      S )Nr   r   )Úunify)rI   rç   s   €€r(   r1   z2test_ModuleElement_compatibility.<locals>.<lambda>-  s   ø€ ¡a¨£d§j¡j±°1³Ó&6€ r*   )r   r   r   r   rA   r
   rB   r	   Ú	is_compatrM  rc   r6   r   r   )	rF   rG   rH   rJ   r    r¡   ræ   rI   rç   s	          @@r(   Ú test_ModuleElement_compatibilityrO    sˆ  ù€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙˆQ‹4�>‰>™!˜A›$Ó 4Ñ'Ð'Ð'ÙˆQ‹4�>‰>™!˜A›$Ó 5Ñ(Ð(Ð(ÙˆQ‹4�:‰:‘a˜“dÓ�D€A€qØ�8‰8�q‰=˜QŸX™X¨™]Ð*Ð*ÙˆQ�[‰[˜‹^Ó¡ !£Ò$©¨1¯;©;°q«>Ó):¹aÀ»dÒ)BÐBÐBáˆQ‹4�:‰:‘a˜“dÓ�D€A€qØ‘�!“Š9˜™a ›dšÐ"Ð"äŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ
ÔÔ6Õ7r*   c                  ó  — t        t        dt        «      «      } t        | «      } |t	        g d¢«      d¬«      } |t	        g d¢«      d¬«      }||k(  sJ ‚t        t        dt        «      «      }t        |«      }| |d«      k7  sJ ‚|d	k7  sJ ‚y )
Nr?   r   r   r§   r?  r    rs   r   ç…ëQ¸	@©r   r   r   r   r   )rF   rG   rg   r‹   ræ   rç   s         r(   Útest_ModuleElement_eqrS  0  s   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 qÔ)€AØ�Š6€Mˆ6äŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ‘�!“Š9Ðˆ9Ø�Š9Ð‰9r*   c                  ó–  ‡‡— t        t        dt        «      «      } t        | «      } |t	        g d¢«      d¬«      Š |t	        g d¢«      d¬«      }‰j                  |«      sJ ‚|j                  dt        j                  dt        «      z  «      } |t	        g d¢«      d¬«      } |t	        g d¢«      d¬«      }|j                  |«      sJ ‚ |t	        g d¢«      d	¬«      j                  t        d
d	«      «      sJ ‚t        t        d	t        «      «      }t        |«      Št        t        ˆˆfd„«       ‰j                  d«      du sJ ‚y )Nr?   r   r   r§   r?  r    r!   rC  rs   rô   c                  ó2   •— ‰j                   ‰ d«      «      S ©Nr   )Úequiv©rç   rg   s   €€r(   r1   z*test_ModuleElement_equiv.<locals>.<lambda>L  s   ø€  a§g¡g©a°«d£m€ r*   rQ  F)r   r   r   r   r   rW  rA   r
   rB   r	   r   r   r   )	rF   rG   r‹   rI   r®   r¯   ræ   rç   rg   s	          @@r(   Útest_ModuleElement_equivrY  =  s  ù€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 qÔ)€AØ�7‰7�1Œ:Ðˆ:à	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 qÔ)€AØ�7‰7�1Œ:Ðˆ:ÙŒV’LÓ!¨Ô+×1Ñ1´"°R¸³)Ô<Ð<Ð<äŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ
ÔÔ3Ô4à�7‰7�4‹=˜EÑ!Ð!Ñ!r*   c                  ó  ‡‡— t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      } |t        g d¢«      d¬«      Š |t        g d¢«      d¬«      } |t        g d	¢«      d
¬«      }‰|z    |t        g d¢«      d¬«      k(  sJ ‚‰|z
   |t        g d¢«      d¬«      k(  sJ ‚‰|z    |t        g d¢«      d¬«      k(  sJ ‚‰t        dd«      z    |t        g d¢«      d¬«      k(  sJ ‚|t        dd«      z    |t        g d¢«      d¬«      k(  sJ ‚t        t        dt        «      «      }t        |«      Št        t        ˆˆfd„«       t        t        ˆfd„«       y )Nr?   r    r!   r   rz   r§   )r?   rz   rs   r‡   rò   ©r   r   r   r   r   )rò   rø   rØ   rr   rô   )éûÿÿÿéüÿÿÿr/  rÌ   )rò   r  r×   é   rs   )é   rò   rô   rõ   r³   )rr   rô   rô   rô   c                  ó   •— ‰ ‰ d«      z   S rV  rW   rX  s   €€r(   r1   z(test_ModuleElement_add.<locals>.<lambda>`  ó   ø€ ˜a¡! A£$™h€ r*   c                  ó   •— ‰ dz   S ©NrQ  rW   ©rg   s   €r(   r1   z(test_ModuleElement_add.<locals>.<lambda>a  ó   ø€ ˜a $™h€ r*   )r   r   r   r   rA   r
   rB   r	   r   r   r   rû   )rF   rG   rI   r‹   r®   ræ   rç   rg   s         @@r(   Útest_ModuleElement_addrf  Q  sI  ù€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 bÔ)€AÙ	Œ&’Ó
 aÔ(€AØˆq‰5‘A”fÒ-Ó.°bÔ9Ò9Ð9Ð9Øˆq‰5‘A”fÒ-Ó.°bÔ9Ò9Ð9Ð9Øˆq‰5‘A”fÒ-Ó.°aÔ8Ò8Ð8Ð8ØŒr�!�R‹y‰=™AœfÒ%5Ó6¸bÔAÒAÐAÐAØŒr�!�R‹y‰=™AœfÒ%5Ó6¸bÔAÒAÐAÐAäŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ
Œ9Ô&Ô'Ü
Œ9Ó&Õ'r*   c                  óÞ  ‡‡— t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      } |t        g d¢«      d¬«      Š |t        g d¢«      d¬«      } |t        g d¢«      d¬«      } |t        g d	¢«      d
¬«      }‰|z   |t        g d¢«      d¬«      k(  sJ ‚‰|z   |t        g d¢«      «      k(  sJ ‚‰|z   |t        g d¢«      d¬«      k(  sJ ‚‰t        dd«      z   |t        g d¢«      d¬«      k(  sJ ‚|t        dd«      z  j                   |t        g d¢«      d
¬«      «      sJ ‚‰t        dd«      z   |t        g d¢«      d¬«      k(  sJ ‚t        t        d
t        «      «      }t        |«      Št        t        ˆˆfd„«       t        t        ˆfd„«       t        t        ˆfd„«       t        t        ˆfd„«       y )Nr?   r    r!   ©r   r   r   r   r§   rþ   rœ   r   )r   r   r    r   rs   )éòÿÿÿri  ri  ri  rô   r�   )rÌ   rÌ   rÌ   r!   é   rz   rï   rò   )r   r   r   r?   )r   r?   r   r   r  c                  ó   •— ‰ ‰ d«      z  S rV  rW   rX  s   €€r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>u  ra  r*   c                  ó   •— ‰ dz  S rc  rW   rd  s   €r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>v  re  r*   c                  ó   •— ‰ dz  S rc  rW   rd  s   €r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>w  s   ø€ ˜a 4™i€ r*   c                  ó   •— ‰ dz  S rV  rW   rd  s   €r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>x  s   ø€  a¨1¡f€ r*   )r   r   r   r   rA   r
   rB   r	   r   r   rW  r   rû   ÚZeroDivisionError)	rF   rG   rI   r‹   r®   r¯   ræ   rç   rg   s	          @@r(   Útest_ModuleElement_mulrp  d  s•  ù€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 aÔ(€AØˆq‰5‘A”fÒ1Ó2¸"Ô=Ò=Ð=Ð=Øˆq‰5‘A”fÒ-Ó.Ó/Ò/Ð/Ð/Øˆq‰5‘A”fš_Ó-°RÔ8Ò8Ð8Ð8ØŒr�!�Q‹x‰<™1œV¢LÓ1¸Ô;Ò;Ð;Ð;Ø”�2�r“
‰N×!Ñ!¡!¤Fª<Ó$8ÀÔ"BÔCÐCÐCØ”�1�a“‰=™Aœf¢\Ó2¸!Ô<Ò<Ð<Ð<äŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ
Œ9Ô&Ô'Ü
Œ9Ó&Ô'Ü
Œ9Ó'Ô(Ü
Ô›nÕ-r*   c                  ó˜  — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      } |t        g d¢«      d¬«      } |t        g d¢«      d¬«      } |t        g d¢«      «      }||z  d |d«      z  d	z  k(  sJ ‚||z  d
 |d«      z  dz  k(  sJ ‚d|z   |d«       k(  sJ ‚y )Nr?   r    r!   rh  r§   rþ   r[  rò   rj  rÌ   r   r  r   ©	r   r   r   r   rA   r
   rB   r	   r   )rF   rG   rI   rg   r‹   r®   s         r(   Útest_ModuleElement_divrs  {  sÁ   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
Ó€AØ�‰6�R™˜!›‘W˜b‘[Ò Ð Ð Ø�‰6�R™˜!›‘W˜a‘ZÒÐÐØ�‰6‘a˜“d�UŠ?Ð‰?r*   c                  ó   — t        t        dt        «      «      } t        | «      }|j	                  dt        j                  dt        «      z  «      } |t        g d¢«      d¬«      } |t        g d¢«      d¬«      }|dz   |t        g d¢«      d	¬«      k(  sJ ‚|dz   |t        g d
¢«      d¬«      k(  sJ ‚|dz   |t        g d¢«      «      k(  sJ ‚|dz   |t        g d¢«      «      k(  sJ ‚|dz  |k(  sJ ‚|dz  |k(  sJ ‚y )Nr?   r    r!   rh  r§   rœ   r   )r   r   r   r‡   é   )r   r    r   r   r   rS   r   rr  )rF   rG   rI   rg   r®   s        r(   Útest_ModuleElement_powrv  ‡  sô   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÙ	Œ&’Ó
 aÔ(€AÙ	Œ&’Ó
 aÔ(€AØ�‰6‘Q”všlÓ+°2Ô6Ò6Ð6Ð6Ø�‰6‘Q”všlÓ+°1Ô5Ò5Ð5Ð5Ø�‰6‘Q”všlÓ+Ó,Ò,Ð,Ð,Ø�‰6‘Q”všlÓ+Ó,Ò,Ð,Ð,Ø�‰6�QŠ;Ðˆ;Ø�‰6�QŠ;Ð‰;r*   c                  ó.  ‡‡— t        t        dt        «      «      } t        | «      } |t	        g d¢«      d¬«      Š‰dz   |t	        g d¢«      d¬«      k(  sJ ‚‰t        dd«      z  |j                  «       k(  sJ ‚‰t        dd«      z   |t	        g d	¢«      d
¬«      k(  sJ ‚|j                   |d«      d |d«      z  d |d«      z   |d«      g«      }‰|z   |t	        g d¢«      d¬«      k(  sJ ‚|j                  «       Št        t        ˆˆfd„«       y )Nr?   ©r   rô   r‡   r   r   r§   rs   )r   r   r‡   r   r   r    )r   r   r   r   rz   r   )r   r?   r   r   c                  ó   •— ‰‰ z  S r-   rW   )rI   rg   s   €€r(   r1   z(test_ModuleElement_mod.<locals>.<lambda>¡  rú   r*   )r   r   r   r   r   r   rl   r}   rŽ   r   rû   )rF   rG   rH   rI   rg   s      @@r(   Útest_ModuleElement_modrz  •  sõ   ù€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&’Ó
 qÔ)€AØˆq‰5‘A”fš\Ó*°!Ô4Ò4Ð4Ð4ØŒr�!�Q‹x‰<˜1Ÿ6™6›8Ò#Ð#Ð#ØŒr�!�Q‹x‰<™1œV¢LÓ1¸Ô;Ò;Ð;Ð;à	×Ñ™q ›t Q¡q¨£t¡V¨Q©q°«t©V±Q°q³TÐ:Ó;€AØˆq‰5‘A”fš\Ó*°!Ô4Ò4Ð4Ð4à	×ÑÓ€AÜ
Œ9”mÕ$r*   c                  ó¢  — t        t        dt        «      «      } t        | «      } |t	        g d¢«      d¬«      }|j                  t        ¬«      t        dt        dz  z  dt        z  z   dz   t        ¬	«      k(  sJ ‚|j                  t        ¬«      t        d
t        dz  z  t        dd«      t        z  z   t        dd«      z   t        ¬	«      k(  sJ ‚y )Nr?   rx  r   r§   ©r   r‡   rô   r   r9  r!   )
r   r   r   r   r   Ú	numeratorr   r	   Úpolyr   r'  s      r(   Útest_PowerBasisElement_polysr  ¤  s¦   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&’Ó
 qÔ)€AØ�;‰;œˆ;Ó¤$ q¬4°1©9¡}°r¼D±yÑ'@À1Ñ'DÌRÔ"PÒPÐPÐPØ�6‰6”Dˆ6‹>œT !¤d¨a¡i¡-´"°R¸³)¼dÑ2BÑ"BÄRÈÈ1ÃXÑ"MÔVXÔYÒYÐYÑYr*   c                  óœ   — t        t        dt        «      «      } t        | «      } |t	        g d¢«      «      }|j                  «       dk(  sJ ‚y )Nr?   )r   rV   r   r   )r   r   r   r   r   Únorm)rF   rG   Úlams      r(   Útest_PowerBasisElement_normrƒ  ¬  s=   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ
ŒF’=Ó!Ó
"€CØ�8‰8‹:˜Š?Ð‰?r*   c                  óº   — t        t        dt        «      «      } t        | «      } |t	        g d¢«      «      }d|z  d |d«      z  k(  sJ ‚|dz   |d«       k(  sJ ‚y )Nr?   r[  r   rÌ   r   r/  r    rR  r'  s      r(   Útest_PowerBasisElement_inverser…  ³  s]   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÙ	Œ&’Ó
Ó€AØ�‰6�R™˜!›‘WÒÐÐØ�‰7‘q˜“t�eÒÐÑr*   c                  óÊ   — t        t        dt        «      «      } t        | «      }t	        |d„ «      }|j                  «       }|t        g d¢g d¢g d¢g d¢gdt        «      k(  sJ ‚y )Nr?   c                 ó   — | dz  S )Nr   rW   rE  s    r(   r1   z0test_ModuleHomomorphism_matrix.<locals>.<lambda>¾  ó
   € ¨!¨q©&€ r*   )r   r   rV   r   )r   r   rV   r   )r   r   rV   r   )r   r   rV   r   r  )r   r   r   r   r   r‚   r
   r	   )rF   rG   Úphir0   s       r(   Útest_ModuleHomomorphism_matrixrŠ  »  se   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ
˜QÑ 0Ó
1€CØ�
‰
‹€AØ”ÚÚÚÚð	ð
 Œróò ð ñ r*   c                  ó¨   — t        t        dt        «      «      } t        | «      }t	        |d„ «      }|j                  «       }|j                  dk(  sJ ‚y )Nr?   c                 ó   — | dz  S r˜   rW   rE  s    r(   r1   z0test_ModuleHomomorphism_kernel.<locals>.<lambda>Ë  rˆ  r*   r    )r   r   r   r   r   Úkernelr.   )rF   rG   r‰  ÚNs       r(   Útest_ModuleHomomorphism_kernelr�  È  sC   € ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AÜ
˜QÑ 0Ó
1€CØ�
‰
‹€AØ�3‰3�!Š8€O‰8r*   c                  ó   ‡— t        t        dt        «      «      } t        | «      }|j	                  «       Š‰j                   |d«      «      }‰j                  |«      }|j                  «       t        g d¢gdt        «      k(  sJ ‚|j                  t        j                  dt        «      «      }|j	                  «       }|j                   |d«      «      }|j                  |«      }|t        g dt        «      k(  sJ ‚t        t        ˆfd„«       y )Nr?   r   )r   r   r   r   r   r   r   r   r   r   r   r   rV   rV   rV   rV   )r   é   )r!   r   )r   r   c                  ó&   •— ‰ j                  d«      S rc  r5   )ÚRs   €r(   r1   z1test_EndomorphismRing_represent.<locals>.<lambda>à  r7   r*   )r   r   r   r   Úendomorphism_ringÚinner_endomorphismr6   rM   r
   r	   rA   Úzerosr   r<   )rF   rG   r‰  rO   rH   ÚSÚpsir“  s          @r(   Útest_EndomorphismRing_representr™  Ð  së   ø€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ	×ÑÓ€AØ
×
Ñ
™q ›tÓ
$€CØ
�+‰+�cÓ
€CØ�=‰=‹?œlÚ<ð,à”óò ð ð ð 	
×Ñ¤× 2Ñ 2°6¼2Ó >Ó?€AØ	×ÑÓ€AØ
×
Ñ
™q ›tÓ
$€CØ
�+‰+�cÓ
€CØ”,˜r 6¬2Ó.Ò.Ð.Ð.ä
ÔÓ 9Õ:r*   c                  óº  ‡— t        t        dt        «      «      } t        | «      }g }t	         |d«      t
        t        |¬«      }|t        | t
        ¬«      k(  sJ ‚t        |«      dk(  sJ ‚t	         |d«      t
        t        ¬«      }|t        | t
        ¬«      k(  sJ ‚|j                  dt        j                  dt        «      z  «      Št        t        ˆfd„«       y )	Nr?   r   )r   Úpowersr9  r|  r   r!   c                  ó0   •— t         ‰ d«      t        «      S )Nr   )r   r   rX   s   €r(   r1   z$test_find_min_poly.<locals>.<lambda>ð  s   ø€ ¤m±A°a³D¼"Ó&=€ r*   )r   r   r   r   r   r   r6  rA   r
   rB   r	   r   r   )rF   rG   r›  r'   rH   s       @r(   Útest_find_min_polyr�  ã  s´   ø€ ÜŒ_˜Q¤Ó"Ó#€AÜ�1‹€AØ€FÜ‘a˜“dœB¤!¨FÔ3€AØ”�QœrÔ"Ò"Ð"Ð"Üˆv‹;˜!ÒÐÐô 	‘a˜“dœB¤!Ô$€AØ”�QœrÔ"Ò"Ð"Ð"à	×Ñ ¤L×$4Ñ$4°Q¼Ó$;Ñ ;Ó<€AÜ
ÔÓ=Õ>r*   N)WÚ	sympy.abcr   r   Úsympy.polysr   r   Úsympy.polys.domainsr   r   r	   Úsympy.polys.matricesr
   r   Ú#sympy.polys.numberfields.exceptionsr   r   r   Ú sympy.polys.numberfields.modulesr   r   r   r   r   r   r   r   r   Ú"sympy.polys.numberfields.utilitiesr   Úsympy.polys.polyerrorsr   Úsympy.testing.pytestr   r)   r=   rK   rQ   rZ   r]   ri   rm   rp   rx   r„   rŒ   r“   r–   r™   r¥   r«   r°   rÄ   rÆ   rÊ   rÑ   rÕ   rè   rë   rí   rü   r  r  r   r%  r(  r+  r1  r4  r7  r=  rA  rJ  rO  rS  rY  rf  rp  rs  rv  rz  r  rƒ  r…  rŠ  r�  r™  r�  rW   r*   r(   ú<module>r§     sQ  ðß ß -ß *Ñ *ß 1÷ñ ÷÷ õ õ 6Ý 4Ý 'òòKò,ò
Bò&ò*ò!ò  òòòFò
Uò	ò?òòDò3ò9ò&5òR\ò(ò	Iò&ò4ò<-òò%ò0 òF8òB*ò*1ò'ò#ò'ò9òòò ò.ò$8ò(
ò"ò((ò&.ò.	òò%òZòòò
òò;ó&?r*   