§
    OŠtjŽ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?„ ZVd@S )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 ‚|                     ¦   «         | k    sJ ‚d S )N©é   é   é   é   )r!   r   )r   ÚdomainÚis_ZZÚshapeÚflat)ÚcÚms     úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/numberfields/tests/test_modules.pyÚtest_to_colr)      sQ   € Øˆˆ€AÝˆq‰	Œ	€AØŒ8Œ>ÐÐˆ>ØŒ7�fÒÐÐÐØ�6Š6‰8Œ8�qŠ=ˆ=ˆ=ˆ=ˆ=ˆ=ó    c                  ó  ‡ — t          ¦   «         Š t          t          ˆ fd„¦  «         t          t          ˆ fd„¦  «         t          t          ˆ fd„¦  «         t          t          ˆ fd„¦  «         t          t          ˆ fd„¦  «         d S )Nc                  ó   •— ‰ j         S ©N)Ún©ÚMs   €r(   ú<lambda>z,test_Module_NotImplemented.<locals>.<lambda>   s	   ø€ ¨¬€ r*   c                  ó,   •— ‰                       ¦   «         S r-   )Úmult_tabr/   s   €r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s   ø€ ¨¯
ª
©¬€ r*   c                  ó.   •— ‰                       d ¦  «        S r-   ©Ú	representr/   s   €r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   ó   ø€ ¨¯ª°DÑ(9Ô(9€ r*   c                  ó,   •— ‰                       ¦   «         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Ô(I€ r*   )r   r   ÚNotImplementedErrorr/   s   @r(   Útest_Module_NotImplementedr=      s•   ø€ Ý‰Œ€AÝ
Õ    Ñ,Ô,Ð,Ý
ÕÐ 4Ð 4Ð 4Ð 4Ñ5Ô5Ð5Ý
ÕÐ 9Ð 9Ð 9Ð 9Ñ:Ô:Ð:Ý
ÕÐ =Ð =Ð =Ð =Ñ>Ô>Ð>Ý
ÕÐ IÐ IÐ IÐ IÑJÔJÐJÐJÐJr*   c                  ó¶  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     d¬¦  «        |||gk    sJ ‚|                     d¬¦  «        |||gk    sJ ‚| 	                    ¦   «         |k    sJ ‚| 
                    |¦  «        |k    sJ ‚t          ¦   «         }| 	                    ¦   «         �J ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ�;Š; Dˆ;Ñ)Ô)¨a°°A¨YÒ6Ð6Ð6Ð6Ø�;Š; Dˆ;Ñ)Ô)¨a°°A¨YÒ6Ð6Ð6Ð6Ø×!Ò!Ñ#Ô# qÒ(Ð(Ð(Ð(Ø×$Ò$ QÑ'Ô'¨1Ò,Ð,Ð,Ð,Ý‰Œ€AØ×!Ò!Ñ#Ô#Ð+Ð+Ð+Ð+Ð+r*   c                  óª  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }t	          g d¢¦  «        }|                     ¦   «         }|                     |¦  «        du sJ ‚|                     |¦  «        du sJ ‚|                     d¦  «        du sJ ‚|                     t          j        dt          ¦  «        d d …df         ¦  «        du sJ ‚|                     t          j        dt          ¦  «        d d …df         ¦  «        du sJ ‚|                     t          j        dt          ¦  «        d d …df         ¦  «        du sJ ‚d S )	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   sD  € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ
���Ñ
Ô
€CØ
�-Š-‰/Œ/€CØ�?Š?˜3ÑÔ 4Ð'Ð'Ð'Ð'Ø�?Š?˜3ÑÔ 5Ð(Ð(Ð(Ð(Ø�?Š?˜1ÑÔ Ð&Ð&Ð&Ð&Ø�?Š?�<Ô+¨A­rÑ2Ô2°1°1°1°a°4Ô8Ñ9Ô9¸UÐBÐBÐBÐBØ�?Š?�<Ô+¨A­rÑ2Ô2°1°1°1°a°4Ô8Ñ9Ô9¸UÐBÐBÐBÐBØ�?Š?�<Ô+¨A­rÑ2Ô2°1°1°1°a°4Ô8Ñ9Ô9¸TÐAÐAÐAÐAÐAÐAr*   c                  ó¶  ‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        Š ‰d¦  «        j                             ¦   «         g d¢k    sJ ‚ ‰d¦  «        j                             ¦   «         g d¢k    sJ ‚t          j        dt          ¦  «        d d …df         } ‰|¦  «        j        |k    sJ ‚t          t          ˆfd„¦  «         d S )	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˜q ™uœ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Øˆ1ˆQ‰4Œ4Œ8�=Š=‰?Œ?˜l˜l˜lÒ*Ð*Ð*Ð*Øˆ1ˆQ‰4Œ4Œ8�=Š=‰?Œ?˜l˜l˜lÒ*Ð*Ð*Ð*Ý
Ô
˜1�bÑ
!Ô
! ! ! ! Q $Ô
'€CØˆ1ˆS‰6Œ6Œ:˜ÒÐÐÐÝ
�:�}�}�}�}Ñ%Ô%Ð%Ð%Ð%r*   c                  ó(  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     ¦   «         du sJ ‚|                     ¦   «         du sJ ‚d S )Nr?   r   r!   TF)	r   r   r   r   rA   r
   rB   r	   r9   ©rF   rG   rH   s      r(   Útest_Module_starts_with_unityr]   G   s‰   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ×ÒÑ Ô  DÐ(Ð(Ð(Ð(Ø×ÒÑ Ô  EÐ)Ð)Ð)Ð)Ð)Ð)r*   c                  ó0  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     ¦   «         }| 	                    ¦   «         }t          t          ||¦  «        ¦  «        D ]n\  }\  }}dgdz  }|j        |k    sJ ‚|j        |k    sJ ‚d||<   | |t          |¦  «        ¦  «        k    sJ ‚d||<   | |t          |¦  «        ¦  «        k    sJ ‚Œod S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ×ÒÑÔ€EØ	
×	"Ò	"Ñ	$Ô	$€BÝ�s 5¨"™~œ~Ñ.Ô.ð !ð !‰	ˆ‰6ˆAˆqØˆC�!‰GˆØŒx˜1Š}ˆ}ˆ}ˆ}ØŒx˜1Š}ˆ}ˆ}ˆ}Øˆˆ!‰Ø�A�A•f˜Q‘i”i‘L”LÒ Ð Ð Ð Øˆˆ!‰Ø�A�A•f˜Q‘i”i‘L”LÒ Ð Ð Ð Ð ð!ð !r*   c                  ó  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     ¦   «         j	         
                    ¦   «         g d¢k    sJ ‚|                     ¦   «         j        |k    sJ ‚|                     ¦   «         j	         
                    ¦   «         g d¢k    sJ ‚|                     ¦   «         j        |k    sJ ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ�6Š6‰8Œ8Œ<×ÒÑÔ , , ,Ò.Ð.Ð.Ð.Ø�6Š6‰8Œ8Œ?˜aÒÐÐÐØ�6Š6‰8Œ8Œ<×ÒÑÔ , , ,Ò.Ð.Ð.Ð.Ø�6Š6‰8Œ8Œ?˜aÒÐÐÐÐÐr*   c                  ó  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     ¦   «         j	         
                    ¦   «         g d¢k    sJ ‚|                     ¦   «         j        |k    sJ ‚|                     ¦   «         j	         
                    ¦   «         g d¢k    sJ ‚|                     ¦   «         j        |k    sJ ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ�5Š5‰7Œ7Œ;×ÒÑÔ   Ò-Ð-Ð-Ð-Ø�5Š5‰7Œ7Œ>˜QÒÐÐÐØ�5Š5‰7Œ7Œ;×ÒÑÔ   Ò-Ð-Ð-Ð-Ø�5Š5‰7Œ7Œ>˜QÒÐÐÐÐÐr*   c                  óø  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     t          dd¦  «        ¦  «        }|                     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 ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	
×	 Ò	 ¥ B¨¡¤Ñ	+Ô	+€BØ	
×	 Ò	 ¥ B¨¡¤Ñ	+Ô	+€BØŒ9˜˜˜Ò%Ð%Ð%Ð%ØŒ8�qŠ=ˆ=ˆ=ˆ=ØŒ9˜Š>ˆ>ˆ>ˆ>ØŒ9˜˜˜Ò%Ð%Ð%Ð%ØŒ8�qŠ=ˆ=ˆ=ˆ=ØŒ9˜Š>ˆ>ˆ>ˆ>ˆ>ˆ>r*   c                  ó  ‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        Šd ‰d¦  «        z  d ‰d¦  «        z  d ‰d¦  «        z  d ‰d¦  «        z  g}‰                     |¦  «        Š|d                              ¦   «                              |d                              ¦   «         ¦  «        }‰j        |k    sJ ‚t          t          ˆfd„¦  «         t          t          ˆˆfd„¦  «         d S )Nr?   r   r   r   é   c                  ó.   •— ‰                       g ¦  «        S r-   ©Úsubmodule_from_gens©rG   s   €r(   r1   z1test_Module_submodule_from_gens.<locals>.<lambda>‹   s   ø€ ˜q×4Ò4°RÑ8Ô8€ r*   c                  ó\   •— ‰                       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¸aÀ¹d¼d°^Ñ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ˆa�‰dŒd‰F�A�a�a˜‘d”d‘F˜A˜a˜a ™dœd™F A a a¨¡d¤d¡FÐ+€DØ	×Ò˜dÑ#Ô#€Að 	ˆQŒ�ŠÑÔ×Ò  Q¤§¢Ñ 0Ô 0Ñ1Ô1€AØŒ8�qŠ=ˆ=ˆ=ˆ=å
�:Ð8Ð8Ð8Ð8Ñ9Ô9Ð9å
�:ÐDÐDÐDÐDÐDÑEÔEÐEÐEÐEr*   c                  óÈ  ‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        Š‰                     dt          j        dt          ¦  «        z  ¦  «        } |t          g d¢¦  «        ¦  «        }| 	                    ¦   «         }|j
                             ¦   «         g d¢k    sJ ‚t          t          ˆfd„¦  «         t          t          ˆfd„¦  «         d S )Nr?   r   r!   r   ©r   r!   rz   é   c                  ó^   •— ‰                       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ÈÍ2Ñ7NÔ7NÑOÔO€ r*   c                  ód   •— ‰                       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ÈAÍrÑ;RÔ;RÑ7RÑSÔ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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	ˆ�&���Ñ
Ô
ÑÔ€AØ	�Š‰Œ€AØŒ5�:Š:‰<Œ<˜<˜<˜<Ò'Ð'Ð'Ð'å
�:ÐOÐOÐOÐOÑPÔPÐPå
�:ÐSÐSÐSÐSÑTÔTÐTÐTÐTr*   c                  ó¸  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     ¦   «         } |t          g d¢¦  «        ¦  «        }|                     ¦   «         }|j                             ¦   «         g d¢k    sJ ‚ |d¦  «         |d¦  «         |d¦  «         |d¦  «        f\  }}}}||z  |k    sJ ‚|dz  |k    sJ ‚d S )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�:Š:‰<Œ<˜<˜<˜<Ò'Ð'Ð'Ð'Ø�Q�q‘T”T˜1˜1˜Q™4œ4   1¡¤ q q¨¡t¤tÐ+�N€BˆˆB�Ø�‰7�bŠ=ˆ=ˆ=ˆ=Ø�‰7�bŠ=ˆ=ˆ=ˆ=ˆ=ˆ=r*   c                  ó’   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }t	          |¦  «        dk    sJ ‚d S )Nr?   z&PowerBasis(x**4 + x**3 + x**2 + x + 1))r   r   r   r   Úrepr)rF   rG   s     r(   Útest_PowerBasis_reprr–   ©   sB   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ�‰7Œ7Ð>Ò>Ð>Ð>Ð>Ð>Ð>r*   c                  ó–   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }t          | ¦  «        }||k    sJ ‚d S ©Nr?   )r   r   r   r   r\   s      r(   Útest_PowerBasis_eqr™   ¯   s@   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ�1‰Œ€AØ�Š6ˆ6ˆ6ˆ6ˆ6ˆ6r*   c                  ó.  ‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     ¦   «         Š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 ‚d S )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   ón   •K  — | ]/}‰|         D ]$}‰|         |         D ]}t          |¦  «        V — ŒŒ%Œ0d S r-   r   )Ú.0ÚuÚvr&   r0   s       €r(   ú	<genexpr>z+test_PowerBasis_mult_tab.<locals>.<genexpr>Á   sO   øè è € ÐCÐC˜Q¨Q¨q¬TÐCÐC¨¸1¸Q¼4À¼7ÐCÐC°a�v�a‰yŒyÐCÐCÐCÐCÐCÐCÐCÐCr*   )r   r   r   r   r3   Úall)rF   rG   Úexpr0   s      @r(   Útest_PowerBasis_mult_tabr¥   ¶   sØ   ø€ Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	�
Š
‰Œ€AØ�,�, < < <°L°L°LÀ\À\À\ÐRÐRØ�,�, < < <Ð4DÐ4DÐ4DÐEÐEØ"Ð"Ð" | | |Ð4Ð4Ø�,�,�,Ðð!ð !€Cð
 �Š8ˆ8ˆ8ˆ8åÐCÐCÐCÐC !ÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCr*   c                  ó&  ‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        Št	          g d¢¦  «        } ‰|¦  «        }‰                     |¦  «        |k    sJ ‚ ‰|d¬¦  «        Št          t          ˆˆfd„¦  «         d S )Nr?   r   r   ©ru   c                  ó.   •— ‰                       ‰¦  «        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Ð1Ð1Ð1Ð1Ñ2Ô2Ð2Ð2Ð2r*   c                  óÀ  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }t          ddt          z  z   ¦  «        }t          t          dz  ¦  «        }t          dt          ¦  «        }|                     |¦  «        j        g d¢k    sJ ‚|                     |¦  «        j        g d¢k    sJ ‚|                     |¦  «        j        g d¢k    sJ ‚d S )	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¨L¨LÒ8Ð8Ð8Ð8Ø×Ò˜qÑ!Ô!Ô(Ð,<Ð,<Ð,<Ò<Ð<Ð<Ð<Ø×Ò˜qÑ!Ô!Ô(¨L¨L¨LÒ8Ð8Ð8Ð8Ð8Ð8r*   c                  óÐ  ‡‡‡‡	— t          j        d¦  «        } t          j        d¦  «        }t          | ¦  «        Š | t          dd¦  «        t          dd¦  «        ddg¦  «        }‰                     |¦  «        }|j        g d¢k    sJ ‚|j        dk    sJ ‚|                     ¦   «         |k    sJ ‚ |t          dd¦  «        t          dd¦  «        ddg¦  «        Št          t          ˆˆfd„¦  «         |  	                    |¦  «        }‰ 
                    |¦  «        Š	‰	j        g d¢k    sJ ‚‰	j        dk    sJ ‚‰	 	                    ¦   «         |k    sJ ‚| 	                    ‰¦  «        Št          t          ˆˆfd	„¦  «         t          | j        j        ¦  «        }| 
                    |¦  «        Š	‰	j        g d¢k    sJ ‚‰	j        dk    sJ ‚t          t          ˆ	fd
„¦  «         d S )Nr?   rs   r   r   r    )é*   é   r   r    rz   c                  ó.   •— ‰                       ‰¦  «        S r-   )Úelement_from_ANP)rH   Úds   €€r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>é   s   ø€  a×&8Ò&8¸Ñ&;Ô&;€ r*   c                  ó.   •— ‰                       ‰¦  «        S r-   )Úelement_from_alg_num)rH   Údeltas   €€r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>ö   s   ø€  a×&<Ò&<¸UÑ&CÔ&C€ r*   c                  ó,   •— ‰                       ¦   «         S r-   )Ú
to_alg_num)Úepss   €r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>ÿ   s   ø€  3§>¢>Ñ#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Œ8•R˜˜1‘X”X˜q !Ð
$Ñ%Ô%€AØ	×Ò˜1ÑÔ€AØŒ8�~�~�~Ò%Ð%Ð%Ð%ØŒ7�aŠ<ˆ<ˆ<ˆ<ð �8Š8‰:Œ:˜Š?ˆ?ˆ?ˆ?ð 	
ˆ�2ˆa�‰8Œ8•R˜˜1‘X”X˜q !Ð
$Ñ%Ô%€AÝ
ÕÐ;Ð;Ð;Ð;Ð;Ñ<Ô<Ð<ð �LŠL˜‰OŒO€EØ
×
 Ò
  Ñ
'Ô
'€CØŒ:˜˜˜Ò'Ð'Ð'Ð'ØŒ9˜Š>ˆ>ˆ>ˆ>ð �>Š>ÑÔ˜uÒ$Ð$Ð$Ð$ð �LŠL˜‰OŒO€EÝ
ÕÐCÐCÐCÐCÐCÑDÔDÐDõ 	�1”5”=Ñ!Ô!€Aà
×
 Ò
  Ñ
'Ô
'€CØŒ:˜˜˜Ò'Ð'Ð'Ð'ØŒ9˜Š>ˆ>ˆ>ˆ>å
�>Ð3Ð3Ð3Ð3Ñ4Ô4Ð4Ð4Ð4r*   c                  óö   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  d¬¦  «        }t          |¦  «        dk    sJ ‚d S )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Æ     sl   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;À1ÐÑEÔE€AÝ�‰7Œ7Ð[Ò[Ð[Ð[Ð[Ð[Ð[r*   c                  óŒ  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  d¬¦  «        }|                     ¦   «         }|j	        dk    r||cxk    r|k    sn J ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;À1ÐÑEÔE€AØ	�	Š	‰Œ€AØŒ7�aŠ<ˆ<˜A ˜K˜KšK˜K ašK˜K˜K˜K˜KÐ'˜K˜Kr*   c                  ó  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     ¦   «          | 	                    d¦  «        }|j
        |j
        k    sJ ‚|                     ¦   «         r|                     ¦   «         rJ ‚|j        |j        d d …dd …f         k    sJ ‚|                     ¦   «         ddgddgdœdddgidœk    sJ ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ×ÒÑÔÐØ	×Ò˜ÑÔ€AØŒ8�q”xÒÐÐÐØ×ÒÑ Ô Ð>¨×)<Ò)<Ñ)>Ô)>Ð>Ð>Ð>ØŒ8�q”x    1 2 2 ”Ò&Ð&Ð&Ð&Ø�:Š:‰<Œ< B¨ 8°°A°Ð7Ð7¸QÀÀAÀ¸KÐHÐHÒHÐHÐHÐHÐHÐHr*   c                  óP  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  d¬¦  «        }|j        |j        k    sJ ‚d S ©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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;À1ÐÑEÔE€AØŒ;˜!œ+Ò%Ð%Ð%Ð%Ð%Ð%r*   c                  óF  ‡‡	‡
‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        Š‰                     dt          j        dt          ¦  «        z  ¦  «        Š	‰	                     dt          j        dt          ¦  «        z  ¦  «        } ‰t          g d¢¦  «        ¦  «        } ‰t          g d¢¦  «        ¦  «        } ‰t          g d¢¦  «        ¦  «        Š‰	 	                    |¦  «        }| 
                    ¦   «         g d¢k    sJ ‚| 	                    |¦  «        }| 
                    ¦   «         g d¢k    sJ ‚‰                     t          g d	¢g d
¢g d¢gdt          ¦  «                             ¦   «         ¦  «        Š
t          t          dt          ¦  «        ¦  «        }t          |¦  «        } |t          g d¢¦  «        ¦  «        Št          t          ˆˆ
fd„¦  «         t          t          ˆ	ˆfd„¦  «         t          t          ˆ	ˆfd„¦  «         d S )Nr?   r   r!   r    )rz   é   é   é   r†   )r   r    r?   rs   r   rS   rT   r›   ©r    r!   rs   )r   r   r    r!   r?   rz   c                  ó@   •— ‰                       ‰ d¦  «        ¦  «        S )Nr    r5   )rG   ÚYs   €€r(   r1   z*test_Submodule_represent.<locals>.<lambda>?  s   ø€  1§;¢;¨q¨q°©t¬tÑ#4Ô#4€ r*   c                  ó.   •— ‰                       ‰¦  «        S r-   r5   )rH   Úa2s   €€r(   r1   z*test_Submodule_represent.<locals>.<lambda>@  ó   ø€  1§;¢;¨r¡?¤?€ r*   c                  ó.   •— ‰                       ‰¦  «        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è   &  s  øøøøø€ Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	
ˆ�6�/�/�/Ñ"Ô"Ñ	#Ô	#€BØ	
ˆ�6�,�,�,ÑÔÑ	 Ô	 €BØ	
ˆ�6�,�,�,ÑÔÑ	 Ô	 €Bà	
�Š�R‰Œ€BØ�7Š7‰9Œ9˜˜˜Ò$Ð$Ð$Ð$à	
�Š�R‰Œ€BØ�7Š7‰9Œ9˜˜˜Ò$Ð$Ð$Ð$à	×Ò¥ØˆˆØˆˆØˆˆð.ð �rñ	!ô !÷ ’9‘;”;ñ		 ô 	 €Aõ 	�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	
ˆ�6Ð$Ð$Ð$Ñ%Ô%Ñ	&Ô	&€Bå
�>Ð4Ð4Ð4Ð4Ð4Ñ5Ô5Ð5Ý
�>Ð2Ð2Ð2Ð2Ð2Ñ3Ô3Ð3Ý
�>Ð2Ð2Ð2Ð2Ð2Ñ3Ô3Ð3Ð3Ð3r*   c                  ó  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     |¦  «        du sJ ‚|                     |¦  «        du sJ ‚|                     |¦  «        du sJ ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ× Ò  Ñ#Ô# tÐ+Ð+Ð+Ð+Ø× Ò  Ñ#Ô# uÐ,Ð,Ð,Ð,Ø× Ò  Ñ#Ô# uÐ,Ð,Ð,Ð,Ð,Ð,r*   c                  ó<  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  d¬¦  «        }||k    sJ ‚d S rÓ   )r   r   r   r   rA   r
   rB   r	   rÐ   s       r(   Útest_Submodule_eqrí   O  s„   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;À1ÐÑEÔE€AØ�Š6ˆ6ˆ6ˆ6ˆ6ˆ6r*   c                  ó   ‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     t          g d¢g d¢gdt          ¦  «                             ¦   «         d¬¦  «        Š|                     t          g d¢g d¢gdt          ¦  «                             ¦   «         d	¬¦  «        }|                     t          g d
¢g d¢g d¢gdt          ¦  «                             ¦   «         d¬¦  «        }‰|z   |k    sJ ‚t          t          dt          ¦  «        ¦  «        }t          |¦  «        }|                      |d¦  «         |d¦  «        g¦  «        Št          t          ˆˆfd„¦  «         d S )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˜q ™tœt Q Q q¡T¤T˜lÑ+Ô+€AÝ
�9�m�m�m�m�mÑ$Ô$Ð$Ð$Ð$r*   c            	      óè  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     t          g d¢g d¢gdt          ¦  «                             ¦   «         d¬¦  «        }|                     t          g d¢g d¢gdt          ¦  «                             ¦   «         d	¬¦  «        }|                     t          g d
¢g d¢gdt          ¦  «                             ¦   «         d¬¦  «        }|                     t          g d¢g d¢g d¢g d¢gdt          ¦  «                             ¦   «         d¬¦  «        }|                     t          g d¢g d¢g d¢gdt          ¦  «                             ¦   «         d¬¦  «        }|dz  |k    sJ ‚|dz  |k    sJ ‚|dz  |k    sJ ‚| |d¦  «        z  |k    sJ ‚|                     |d¬¦  «        |k    sJ ‚||z  |k    sJ ‚|dz  |k    sJ ‚d S )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ˆq�‰tŒt‰8�rŠ>ˆ>ˆ>ˆ>Ø�5Š5�˜ˆ5ÑÔ (Ò*Ð*Ð*Ð*Øˆq‰5�BŠ;ˆ;ˆ;ˆ;Ø�‰6�RŠ<ˆ<ˆ<ˆ<ˆ<ˆ<r*   c            	      ód  ‡‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     ¦   «         } |t          g d¢¦  «        d¬¦  «        Š|                     t          j        dt          ¦  «        d¬¦  «        Š |t          g d¢¦  «        d¬¦  «        }‰ 
                    ‰¦  «        }||k    sJ ‚|                     t          j        dt          ¦  «        d¬¦  «        Š |t          g d¢¦  «        d¬¦  «        }‰ 
                    ‰¦  «        }||k    sJ ‚|                     t          j        dt          ¦  «        d	¬¦  «        Š |t          g d
¢¦  «        d¬¦  «        }‰ 
                    ‰¦  «        }||k    sJ ‚ |t          g d¢¦  «        ¦  «        Št          t          ˆˆfd„¦  «         |                     t          g d¢g d¢g d¢g d¢gdt          ¦  «                             ¦   «         ¦  «        Št          t          ˆˆfd„¦  «         d S )Nr?   )éZ   éT   éP   éK   éx   r§   r!   r   )r³   rÙ   rõ   rô   )r   rÙ   rõ   rô   r‡   )r   é	   r?   r   r   c                  ó.   •— ‰                       ‰¦  «        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                  ó.   •— ‰                       ‰¦  «        S r-   r  )rI   r©   s   €€r(   r1   z/test_Submodule_reduce_element.<locals>.<lambda>°  s   ø€  1×#3Ò#3°AÑ#6Ô#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  ’  sK  øøø€ Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	×ÒÑÔ€AØ	ˆ�&Ð!Ð!Ð!Ñ
"Ô
"¨#Ð.Ñ.Ô.€Aà	×Ò¥Ô 0°µBÑ 7Ô 7¸qÐÑAÔA€AØ�Q•vÐ.Ð.Ð.Ñ/Ô/°sÐ;Ñ;Ô;€NØ×Ò˜QÑÔ€EØ�NÒ"Ð"Ð"Ð"à	×Ò¥Ô 0°µBÑ 7Ô 7¸qÐÑAÔA€AØ�Q•v˜o˜o˜oÑ.Ô.°cÐ:Ñ:Ô:€NØ×Ò˜QÑÔ€EØ�NÒ"Ð"Ð"Ð"à	×Ò¥Ô 0°µBÑ 7Ô 7¸qÐÑAÔA€AØ�Q•v˜l˜l˜lÑ+Ô+°3Ð7Ñ7Ô7€NØ×Ò˜QÑÔ€EØ�NÒ"Ð"Ð"Ð"à	ˆ�&���Ñ
Ô
ÑÔ€AÝ
ÕÐ ;Ð ;Ð ;Ð ;Ð ;Ñ<Ô<Ð<à	×Ò¥ØˆˆØˆˆØˆˆØˆˆð	.ð
 �rñ!ô !÷
 ’9‘;”;ñ	 ô 	 €Aõ �>Ð6Ð6Ð6Ð6Ð6Ñ7Ô7Ð7Ð7Ð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 ‚d S )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                  ó†  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }t          g d¢¦  «        }t          ||¦  «        }t          ||¦  «        }t          |t          ¦  «        sJ ‚t          |t          ¦  «        rJ ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AÝ
���Ñ
Ô
€CÝ	�a˜Ñ	Ô	€BÝ	�a˜Ñ	Ô	€BÝ�bÕ+Ñ,Ô,Ð,Ð,Ð,Ý˜"Õ/Ñ0Ô0Ð0Ð0Ð0Ð0Ð0r*   c                  óÊ   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |t	          g d¢¦  «        d¬¦  «        }t          |¦  «        dk    sJ ‚d S )Nr?   r   r   r§   z[1, 2, 3, 4]/2)r   r   r   r   r   r•   ©rF   rG   rg   s      r(   Útest_ModuleElement_reprr(  Ó  sb   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AÝ�‰7Œ7Ð&Ò&Ð&Ð&Ð&Ð&Ð&r*   c                  óî   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |t	          g d¢¦  «        d¬¦  «        }|                     ¦   «         }|j        dk    r||k    sJ ‚d S )Nr?   r†   r   r§   r   )r   r   r   r   r   rÈ   ru   ©rF   rG   rg   r‹   s       r(   Útest_ModuleElement_reducedr+  Ú  sm   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	�	Š	‰Œ€AØŒ7�aŠ<ˆ<˜A šF˜F˜FÐ"˜F˜Fr*   c                  óä   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |t	          g d¢¦  «        ¦  «        }|                     d¦  «        }|j        g d¢k    sJ ‚d S )Nr?   )rõ   é(   é<   r  rs   )rV   rÌ   éýÿÿÿr    )r   r   r   r   r   Úreduced_mod_prt   r*  s       r(   Ú test_ModuleElement_reduced_mod_pr1  â  sp   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	ˆ�&Ð!Ð!Ð!Ñ
"Ô
"Ñ#Ô#€AØ	�Š˜ÑÔ€AØŒ8���Ò&Ð&Ð&Ð&Ð&Ð&r*   c                  ó°   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }g d¢}t	          j        ||¦  «        j        |k    sJ ‚d S )Nr?   r   )r   r   r   r   r   Úfrom_int_listrt   )rF   rG   r&   s      r(   Ú test_ModuleElement_from_int_listr4  ê  sT   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØˆˆ€AÝÔ& q¨!Ñ,Ô,Ô3°qÒ8Ð8Ð8Ð8Ð8Ð8r*   c                  ó¨   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |d¦  «        }t	          |¦  «        dk    sJ ‚d S )Nr?   r   r!   )r   r   r   r   Úlenr'  s      r(   Útest_ModuleElement_lenr7  ñ  sH   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	ˆˆ!‰Œ€AÝˆq‰6Œ6�QŠ;ˆ;ˆ;ˆ;ˆ;ˆ;r*   c                  ó4  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |d¦  «        }|                     ¦   «         }||j        k    r	||j        usJ ‚|                     t          d¦  «        ¬¦  «        }|j        j        sJ ‚d S )Nr?   r   ©r"   )	r   r   r   r   r€   rO   r   r"   Úis_FF)rF   rG   rg   Úcol1Úcol2s        r(   Útest_ModuleElement_columnr=  ø  s‹   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	ˆˆ!‰Œ€AØ�8Š8‰:Œ:€DØ�1”5Š=ˆ=˜T¨¬Ð.Ð.Ð.Ð.Ø�8Š8�2˜a™5œ5ˆ8Ñ!Ô!€DØŒ;ÔÐÐÐÐÐr*   c                  óü   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |t	          g d¢¦  «        d¬¦  «        } |t	          g d¢¦  «        d¬¦  «        }|j        |j        k    sJ ‚d S )Nr?   r   r   r§   ©r    rz   r  r×   r    )r   r   r   r   r   ÚQQ_colr*  s       r(   Útest_ModuleElement_QQ_colrA    s   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
 qÐ)Ñ)Ô)€AØŒ8�q”xÒÐÐÐÐÐr*   c                  óð  ‡	— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        } |d¦  «        }|                     ¦   «         }| 	                    |¦  «        }| 
                    ¦   «         }|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	„¦  «         d S )
Nr?   r   r!   r    r   ©r?   r   r   r   )rô   r   r   r   )r³   r   r   r   c                  ó,   •— ‰                       ¦   «         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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	
ˆˆ1‰Œ€BØ	�Š‰Œ€BØ	�Š˜Ñ	Ô	€BØ	×	Ò	Ñ	Ô	€BØŒ9˜ˆ>ˆ>˜bœi¨<¨<¨<Ò7Ð7Ð7Ð7ØŒ9˜ˆ>ˆ>˜bœi¨=¨=¨=Ò8Ð8Ð8Ð8ØŒ9˜ˆ>ˆ>˜bœi¨=¨=¨=Ò8Ð8Ð8Ð8à	ˆˆ!‰Œ€AÝ
�:Ð,Ð,Ð,Ð,Ñ-Ô-Ð-Ð-Ð-r*   c                  óŒ  ‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        }|                     dt          j        dt          ¦  «        z  ¦  «        Š|                     dt          j        dt          ¦  «        z  ¦  «        } ‰d¦  «                              ‰d¦  «        ¦  «        du sJ ‚ ‰d¦  «                              |d¦  «        ¦  «        du sJ ‚ ‰d¦  «         	                     |d¦  «        ¦  «        \  }}|j
        |u r	|j
        |u sJ ‚ ‰‰                     |¦  «        ¦  «         ‰d¦  «        k    r+ ||                     |¦  «        ¦  «         |d¦  «        k    sJ ‚ ‰d¦  «         	                     ‰d¦  «        ¦  «        \  }}| ‰d¦  «        k    r| ‰d¦  «        k    sJ ‚t          t          d	t          ¦  «        ¦  «        }t          |¦  «        Št          t          ˆˆfd
„¦  «         d S )Nr?   r   r!   r    r   r   TFrs   c                  óR   •—  ‰ d¦  «                               ‰d¦  «        ¦  «        S )Nr   r   )Úunify)rI   rç   s   €€r(   r1   z2test_ModuleElement_compatibility.<locals>.<lambda>-  s#   ø€  a a¨¡d¤d§j¢j°°°1±´Ñ&6Ô&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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØˆ1ˆQ‰4Œ4�>Š>˜!˜!˜A™$œ$ÑÔ 4Ð'Ð'Ð'Ð'Øˆ1ˆQ‰4Œ4�>Š>˜!˜!˜A™$œ$ÑÔ 5Ð(Ð(Ð(Ð(Øˆ1ˆQ‰4Œ4�:Š:�a�a˜‘d”dÑÔ�D€A€qØŒ8�qˆ=ˆ=˜QœX¨˜]˜]˜]Ð*Øˆ1ˆQ�[Š[˜‰^Œ^ÑÔ   !¡¤Ò$Ð$¨¨¨1¯;ª;°q©>¬>Ñ):Ô):¸a¸aÀ¹d¼dÒ)BÐ)BÐ)BÐBàˆ1ˆQ‰4Œ4�:Š:�a�a˜‘d”dÑÔ�D€A€qØ���!‘”Š9ˆ9˜˜a˜a ™dœdš˜˜Ð"å�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ
ÕÐ6Ð6Ð6Ð6Ð6Ñ7Ô7Ð7Ð7Ð7r*   c                  ó|  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |t	          g d¢¦  «        d¬¦  «        } |t	          g d¢¦  «        d¬¦  «        }||k    sJ ‚t          t          dt          ¦  «        ¦  «        }t          |¦  «        }| |d¦  «        k    sJ ‚|d	k    sJ ‚d S )
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ˆ6ˆ6ˆ6å�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ���!‘”Š9ˆ9ˆ9ˆ9Ø�Š9ˆ9ˆ9ˆ9ˆ9ˆ9r*   c                  óL  ‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |t	          g d¢¦  «        d¬¦  «        Š |t	          g d¢¦  «        d¬¦  «        }‰                     |¦  «        sJ ‚|                     dt          j        dt          ¦  «        z  ¦  «        } |t	          g d¢¦  «        d¬¦  «        } |t	          g d¢¦  «        d¬¦  «        }|                     |¦  «        sJ ‚ |t	          g d¢¦  «        d	¬¦  «                             t          d
d	¦  «        ¦  «        sJ ‚t          t          d	t          ¦  «        ¦  «        }t          |¦  «        Št          t          ˆˆfd„¦  «         ‰                     d¦  «        du sJ ‚d S )Nr?   r   r   r§   r?  r    r!   rC  rs   rô   c                  ó@   •— ‰                       ‰ d¦  «        ¦  «        S ©Nr   )Úequiv©rç   rg   s   €€r(   r1   z*test_ModuleElement_equiv.<locals>.<lambda>L  s   ø€  a§g¢g¨a¨a°©d¬d¡m¤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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
 qÐ)Ñ)Ô)€AØ�7Š7�1‰:Œ:ÐÐˆ:Øˆ1�V�L�L�LÑ!Ô!¨Ð+Ñ+Ô+×1Ò1µ"°R¸±)´)Ñ<Ô<Ð<Ð<Ð<å�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ
ÕÐ3Ð3Ð3Ð3Ð3Ñ4Ô4Ð4à�7Š7�4‰=Œ=˜EÐ!Ð!Ð!Ð!Ð!Ð!r*   c                  óâ  ‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     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„¦  «         d S )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  s  øø€ Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
 bÐ)Ñ)Ô)€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØˆq‰5�A�A•fÐ-Ð-Ð-Ñ.Ô.°bÐ9Ñ9Ô9Ò9Ð9Ð9Ð9Øˆq‰5�A�A•fÐ-Ð-Ð-Ñ.Ô.°bÐ9Ñ9Ô9Ò9Ð9Ð9Ð9Øˆq‰5�A�A•fÐ-Ð-Ð-Ñ.Ô.°aÐ8Ñ8Ô8Ò8Ð8Ð8Ð8Ø�r�!�R‰yŒy‰=˜A˜A�fÐ%5Ð%5Ð%5Ñ6Ô6¸bÐAÑAÔAÒAÐAÐAÐAØ�r�!�R‰yŒy‰=˜A˜A�fÐ%5Ð%5Ð%5Ñ6Ô6¸bÐAÑAÔAÒAÐAÐAÐAå�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ
�9Ð&Ð&Ð&Ð&Ð&Ñ'Ô'Ð'Ý
�9Ð&Ð&Ð&Ð&Ñ'Ô'Ð'Ð'Ð'r*   c                  óú  ‡‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     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   
                     |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„¦  «         d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØˆq‰5�A�A•fÐ1Ð1Ð1Ñ2Ô2¸"Ð=Ñ=Ô=Ò=Ð=Ð=Ð=Øˆq‰5�A�A•fÐ-Ð-Ð-Ñ.Ô.Ñ/Ô/Ò/Ð/Ð/Ð/Øˆq‰5�A�A•f˜_˜_˜_Ñ-Ô-°RÐ8Ñ8Ô8Ò8Ð8Ð8Ð8Ø�r�!�Q‰xŒx‰<˜1˜1�V L L LÑ1Ô1¸Ð;Ñ;Ô;Ò;Ð;Ð;Ð;Ø•�2�r‘
”
‰N×!Ò! ! !¥F¨<¨<¨<Ñ$8Ô$8ÀÐ"BÑ"BÔ"BÑCÔCÐCÐCÐCØ•�1�a‘”‰=˜A˜A�f \ \ \Ñ2Ô2¸!Ð<Ñ<Ô<Ò<Ð<Ð<Ð<å�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ
�9Ð&Ð&Ð&Ð&Ð&Ñ'Ô'Ð'Ý
�9Ð&Ð&Ð&Ð&Ñ'Ô'Ð'Ý
�9Ð'Ð'Ð'Ð'Ñ(Ô(Ð(Ý
Õ˜n˜n˜n˜nÑ-Ô-Ð-Ð-Ð-r*   c                  óþ  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     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 ‚d S )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°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
ÑÔ€AØ�‰6�R˜˜˜!™œ‘W˜b‘[Ò Ð Ð Ð Ø�‰6�R˜˜˜!™œ‘W˜a‘ZÒÐÐÐØ�‰6�a�a˜‘d”d�UŠ?ˆ?ˆ?ˆ?ˆ?ˆ?r*   c                  ó„  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     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 ‚d S )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  ‡  se  € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	×Ò ¥LÔ$4°Q½Ñ$;Ô$;Ñ ;Ñ<Ô<€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ	ˆ�&���Ñ
Ô
 aÐ(Ñ(Ô(€AØ�‰6�Q�Q•v˜l˜l˜lÑ+Ô+°2Ð6Ñ6Ô6Ò6Ð6Ð6Ð6Ø�‰6�Q�Q•v˜l˜l˜lÑ+Ô+°1Ð5Ñ5Ô5Ò5Ð5Ð5Ð5Ø�‰6�Q�Q•v˜l˜l˜lÑ+Ô+Ñ,Ô,Ò,Ð,Ð,Ð,Ø�‰6�Q�Q•v˜l˜l˜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  |                     ¦   «         k    sJ ‚‰t          dd¦  «        z   |t	          g d	¢¦  «        d
¬¦  «        k    sJ ‚|                      |d¦  «        d |d¦  «        z  d |d¦  «        z   |d¦  «        g¦  «        }‰|z   |t	          g d¢¦  «        d¬¦  «        k    sJ ‚|                     ¦   «         Št          t          ˆˆfd„¦  «         d S )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  •  sv  øø€ Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AØ	ˆ�&���Ñ
Ô
 qÐ)Ñ)Ô)€AØˆq‰5�A�A•f˜\˜\˜\Ñ*Ô*°!Ð4Ñ4Ô4Ò4Ð4Ð4Ð4Ø�r�!�Q‰xŒx‰<˜1Ÿ6š6™8œ8Ò#Ð#Ð#Ð#Ø�r�!�Q‰xŒx‰<˜1˜1�V L L LÑ1Ô1¸Ð;Ñ;Ô;Ò;Ð;Ð;Ð;à	×Ò˜q˜q ™tœt Q q q¨¡t¤t¡V¨Q¨q¨q°©t¬t©V°Q°Q°q±T´TÐ:Ñ;Ô;€AØˆq‰5�A�A•f˜\˜\˜\Ñ*Ô*°!Ð4Ñ4Ô4Ò4Ð4Ð4Ð4à	×ÒÑÔ€AÝ
�9�m�m�m�m�mÑ$Ô$Ð$Ð$Ð$r*   c                  ó  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |t	          g d¢¦  «        d¬¦  «        }|                     t          ¬¦  «        t          dt          dz  z  dt          z  z   dz   t          ¬	¦  «        k    sJ ‚|                     t          ¬¦  «        t          d
t          dz  z  t          dd¦  «        t          z  z   t          dd¦  «        z   t          ¬	¦  «        k    sJ ‚d S )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ÐPÐPÐPØ�6Š6•Dˆ6‰>Œ>�T !¥d¨a¡i¡-µ"°R¸±)´)½dÑ2BÑ"BÅRÈÈ1ÁXÄXÑ"MÕVXÐYÑYÔYÒYÐYÐYÐYÐYÐYr*   c                  óÐ   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        } |t	          g d¢¦  «        ¦  «        }|                     ¦   «         dk    sJ ‚d S )Nr?   )r   rV   r   r   )r   r   r   r   r   Únorm)rF   rG   Úlams      r(   Útest_PowerBasisElement_normrƒ  ¬  sX   € Ý�_˜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 ‚d S )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�q˜‘t”t�eÒÐÐÐÐÐr*   c                  ó  — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }t	          |d„ ¦  «        }|                     ¦   «         }|t          g d¢g d¢g d¢g d¢gdt          ¦  «        k    sJ ‚d S )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Š  »  s™   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ
˜QÐ 0Ð 0Ñ
1Ô
1€CØ�
Š
‰Œ€AØ•ØˆˆØˆˆØˆˆØˆˆð	ð
 �rñô ò ð ð ð ð ð r*   c                  óÌ   — t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }t	          |d„ ¦  «        }|                     ¦   «         }|j        dk    sJ ‚d S )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�  È  sW   € Ý�_˜Q¥Ñ"Ô"Ñ#Ô#€AÝ�1‰Œ€AÝ
˜QÐ 0Ð 0Ñ
1Ô
1€CØ�
Š
‰Œ€AØŒ3�!Š8ˆ8ˆ8ˆ8ˆ8ˆ8r*   c                  óª  ‡— t          t          dt          ¦  «        ¦  «        } t          | ¦  «        }|                     ¦   «         Š‰                      |d¦  «        ¦  «        }‰                     |¦  «        }|                     ¦   «         t          g d¢gdt          ¦  «        k    sJ ‚| 
                    t          j        dt          ¦  «        ¦  «        }|                     ¦   «         }|                      |d¦  «        ¦  «        }|                     |¦  «        }|t          g dt          ¦  «        k    sJ ‚t          t          ˆfd„¦  «         d S )Nr?   r   )r   r   r   r   r   r   r   r   r   r   r   r   rV   rV   rV   rV   )r   é   )r!   r   )r   r   c                  ó.   •— ‰                       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˜q ™tœtÑ
$Ô
$€CØ
�+Š+�cÑ
Ô
€CØ�=Š=‰?Œ?�lØ<Ð<Ð<ð,à•ñô ò ð ð ð ð 	
×Ò¥Ô 2°6½2Ñ >Ô >Ñ?Ô?€AØ	×ÒÑÔ€AØ
×
Ò
˜q˜q ™tœtÑ
$Ô
$€CØ
�+Š+�cÑ
Ô
€CØ•,˜r 6­2Ñ.Ô.Ò.Ð.Ð.Ð.å
ÕÐ 9Ð 9Ð 9Ð 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 ‚|                     dt          j	        dt          ¦  «        z  ¦  «        Št          t          ˆfd„¦  «         d S )	Nr?   r   )r   Úpowersr9  r|  r   r!   c                  ó@   •— t           ‰ d¦  «        t          ¦  «        S )Nr   )r   r   rX   s   €r(   r1   z$test_find_min_poly.<locals>.<lambda>ð  s   ø€ ¥m°A°A°a±D´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�a˜‘d”d�B¥!¨FÐ3Ñ3Ô3€AØ•�Q�rÐ"Ñ"Ô"Ò"Ð"Ð"Ð"Ýˆv‰;Œ;˜!ÒÐÐÐõ 	�a�a˜‘d”d�B¥!Ð$Ñ$Ô$€AØ•�Q�rÐ"Ñ"Ô"Ò"Ð"Ð"Ð"à	×Ò ¥LÔ$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§     s’  ðØ Ð Ð Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 6Ð 5Ð 5Ð 5Ð 5Ð 5Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ðKð Kð Kð,ð ,ð ,ð
Bð 
Bð 
Bð&ð &ð &ð*ð *ð *ð!ð !ð !ð  ð  ð  ðð ð ðð ð ðFð Fð Fð
Uð 
Uð 
Uð	ð 	ð 	ð?ð ?ð ?ðð ð ðDð Dð Dð3ð 3ð 3ð9ð 9ð 9ð&5ð &5ð &5ðR\ð \ð \ð(ð (ð (ð	Ið 	Ið 	Ið&ð &ð &ð4ð 4ð 4ð<-ð -ð -ðð ð ð%ð %ð %ð0 ð  ð  ðF8ð 8ð 8ðB*ð *ð *ð*1ð 1ð 1ð'ð 'ð 'ð#ð #ð #ð'ð 'ð 'ð9ð 9ð 9ðð ð ðð ð ð ð  ð  ð.ð .ð .ð$8ð 8ð 8ð(
ð 
ð 
ð"ð "ð "ð((ð (ð (ð&.ð .ð .ð.	ð 	ð 	ðð ð ð%ð %ð %ðZð Zð Zðð ð ðð ð ð
ð 
ð 
ðð ð ð;ð ;ð ;ð&?ð ?ð ?ð ?ð ?r*   