
    \hY                        S SK JrJr  S SKJrJr  S SKJrJrJ	r	  S SK
JrJr  S SKJrJrJr  S SKJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S S	KJ r   S
 r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4S r5S r6S  r7S! r8S" r9S# r:S$ r;S% r<S& r=S' r>S( r?S) r@S* rAS+ rBS, rCS- rDS. rES/ rFS0 rGS1 rHS2 rIS3 rJS4 rKS5 rLS6 rMS7 rNS8 rOS9 rPS: rQS; rRS< rSS= rTS> rUS? rVg@)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                      / SQn [        U 5      nUR                  R                  (       d   eUR                  S:X  d   eUR	                  5       U :X  d   eg )N            )r!   r   )r   domainis_ZZshapeflat)cms     c/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/numberfields/tests/test_modules.pytest_to_colr)      sD    Aq	A88>>>77f668q==    c                     ^  [        5       m [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        g )Nc                     > T R                   $ N)nMs   r(   <lambda>,test_Module_NotImplemented.<locals>.<lambda>   s	    r*   c                  $   > T R                  5       $ r-   )mult_tabr/   s   r(   r1   r2      s    

r*   c                  &   > T R                  S 5      $ r-   	representr/   s   r(   r1   r2          D(9r*   c                  $   > T R                  5       $ r-   )starts_with_unityr/   s   r(   r1   r2      s    (;(;(=r*   c                  :   > T R                  [        SS5      5      $ )Nr   r    )element_from_rationalr   r/   s   r(   r1   r2      s    (?(?1a(Ir*   )r   r   NotImplementedErrorr/   s   @r(   test_Module_NotImplementedr>      sE    A
,
 45
 9:
 =>
 IJr*   c                  J   [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  5      nUR                  SS9XU/:X  d   eUR                  SS9XU/:X  d   eUR                  5       U:X  d   eUR                  U5      U:X  d   e[        5       nUR                  5       b   eg )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_ancestorsrL   "   s   _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	L$4$4Q$; ;<A;;D;)aAY666;;D;)aAY666!!#q((($$Q'1,,,A!!#+++r*   c                  N   [        [        S[        5      5      n [        U 5      n[	        / SQ5      nUR                  5       nUR                  U5      SL d   eUR                  U5      SL d   eUR                  S5      SL d   eUR                  [        R                  " S[        5      S S 2S4   5      SL d   eUR                  [        R                  " S[        5      S S 2S4   5      SL d   eUR                  [        R                  " S[        5      S S 2S4   5      SL d   eg )	Nr@   r   TFr   r    r   r!   )r   r   r   r   r   	transposeis_compat_colr
   rC   r	   r   )rG   rH   colrows       r(   test_Module_compat_colrR   0   s    _Q"#A1A

C
--/C??34'''??35(((??1&&&??<++Ar21a489UBBB??<++Ar21a489UBBB??<++Ar21a489TAAAr*   c                    ^ [        [        S[        5      5      n [        U 5      mT" S5      R                  R                  5       / SQ:X  d   eT" S5      R                  R                  5       / SQ:X  d   e[        R                  " S[        5      S S 2S4   nT" U5      R                  U:X  d   e[        [        U4S j5        g )	Nr@   r   r   r   r   r   r   r   r   r   r   r!   r   c                     > T " S5      $ )N rI   s   r(   r1   "test_Module_call.<locals>.<lambda>D   s	    qur*   )r   r   r   r   rP   r%   r
   rC   r	   r   
ValueError)rG   rP   rI   s     @r(   test_Module_callr\   =   s    _Q"#A1AQ488==?l***Q488==?l***


1b
!!Q$
'CS6::
:}%r*   c                      [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR                  5       SL d   eUR                  5       SL d   eg )Nr@   r   r!   TF)	r   r   r   r   rB   r
   rC   r	   r:   rG   rH   rI   s      r(   test_Module_starts_with_unityr_   G   sl    _Q"#A1A	L$4$4Q$; ;<A D((( E)))r*   c                     [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR                  5       nUR                  5       n[        [        X45      5       Hf  u  nu  pgS/S-  nUR                  U:X  d   eUR                  U:X  d   eSX'   Xb" [        U5      5      :X  d   eSX'   Xq" [        U5      5      :X  a  Mf   e   g )Nr@   r   r!   r   r   )r   r   r   r   rB   r
   rC   r	   basis_elementsbasis_element_pullbacks	enumeratezipmoduler   )	rG   rH   rI   basisbpiepr&   s	            r(   test_Module_basis_elementsrk   O   s    _Q"#A1A	L$4$4Q$; ;<AE	
	"	"	$Bs5~.	6AC!Gxx1}}xx1}}AfQiL   AfQiL    /r*   c                     [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR                  5       R                  R                  5       / SQ:X  d   eUR                  5       R                  U:X  d   eUR                  5       R                  R                  5       / SQ:X  d   eUR                  5       R                  U:X  d   eg )Nr@   r   r!   r   r   r   r   )r   r   r   r   rB   r
   rC   r	   zerorP   r%   re   r^   s      r(   test_Module_zeroro   _   s    _Q"#A1A	L$4$4Q$; ;<A668<<,...668??a668<<,...668??ar*   c                     [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR                  5       R                  R                  5       / SQ:X  d   eUR                  5       R                  U:X  d   eUR                  5       R                  R                  5       / SQ:X  d   eUR                  5       R                  U:X  d   eg )Nr@   r   r!   rT   )r   r   r   r   rB   r
   rC   r	   onerP   r%   re   r^   s      r(   test_Module_onerr   i   s    _Q"#A1A	L$4$4Q$; ;<A557;;---557>>Q557;;---557>>Qr*   c                     [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR                  [        SS5      5      nUR                  [        SS5      5      nUR                  / SQ:X  d   eUR                  S:X  d   eUR                  U:X  d   eUR                  / SQ:X  d   eUR                  S:X  d   eUR                  U:X  d   eg )Nr@   r   r!         )rt   r   r   r   )r   r   r   r   rB   r
   rC   r	   r<   r   coeffsdenomre   )rG   rH   rI   rArBs        r(   !test_Module_element_from_rationalrz   s   s    _Q"#A1A	L$4$4Q$; ;<A	
	 	 B	+B	
	 	 B	+B99%%%88q==99>>99%%%88q==99>>r*   c                    ^^ [        [        S[        5      5      n [        U 5      mST" S5      -  ST" S5      -  ST" S5      -  ST" S5      -  /nTR	                  U5      mUS   R                  5       R                  US   R                  5       5      nTR                  U:X  d   e[        [        U4S j5        [        [        UU4S j5        g )Nr@   r   r   r      c                  &   > T R                  / 5      $ r-   submodule_from_gensrH   s   r(   r1   1test_Module_submodule_from_gens.<locals>.<lambda>   s    q44R8r*   c                  H   > T R                  ST " S5      -  T" S5      /5      $ )Nr    r   r~   )rH   rI   s   r(   r1   r      s     q44a!fad^Dr*   )
r   r   r   r   r   columnhstackmatrixr   r[   )rG   gensr0   rH   rI   s      @@r(   test_Module_submodule_from_gensr      s    _Q"#A1AadFAadFAadFAadF+D	d#A 	QQ 01A88q==
:89
:DEr*   c                    ^ [        [        S[        5      5      n [        U 5      mTR	                  S[
        R                  " S[        5      -  5      nU" [        / SQ5      5      nUR                  5       nUR                  R                  5       / SQ:X  d   e[        [        U4S j5        [        [        U4S j5        g )Nr@   r   r!   r   r   r!   r|      c                  X   > T R                  [        R                  " S[        5      5      $ )Nr!   )rB   r
   rC   r   r   s   r(   r1   3test_Module_submodule_from_matrix.<locals>.<lambda>   s    q66|7G7G27NOr*   c                  ^   > T R                  S[        R                  " S[        5      -  5      $ )Nr   r@   )rB   r
   rC   r	   r   s   r(   r1   r      s"    q66q<;K;KAr;R7RSr*   )r   r   r   r   rB   r
   rC   r	   r   	to_parentrP   r%   r   r[   )rG   rI   ri   frH   s       @r(   !test_Module_submodule_from_matrixr      s    _Q"#A1A	L$4$4Q$; ;<A	&
A	A55::<<'''
:OP
:STr*   c                  b   [        [        S[        5      5      n [        U 5      nUR	                  5       nU" [        / SQ5      5      nUR                  5       nUR                  R                  5       / SQ:X  d   eU" S5      U" S5      U" S5      U" S5      4u  pVpxXx-  U:X  d   eUS-  U:X  d   eg )Nr@   r   r   r   r   r    )	r   r   r   r   whole_submoduler   r   rP   r%   )	rG   rH   rI   ri   r   e0e1e2e3s	            r(   test_Module_whole_submoduler      s    _Q"#A1A	A	&
A	A55::<<'''qT1Q41qt+NBB7b==7b==r*   c                  n    [        [        S[        5      5      n [        U 5      n[	        U5      S:X  d   eg )Nr@   z&PowerBasis(x**4 + x**3 + x**2 + x + 1))r   r   r   r   repr)rG   rH   s     r(   test_PowerBasis_reprr      s/    _Q"#A1A7>>>>r*   c                  p    [        [        S[        5      5      n [        U 5      n[        U 5      nX:X  d   eg Nr@   )r   r   r   r   r^   s      r(   test_PowerBasis_eqr      s.    _Q"#A1A1A6M6r*   c                    ^ [        [        S[        5      5      n [        U 5      nUR	                  5       m/ SQ/ SQ/ SQ/ SQS./ SQ/ SQ/ SQS./ SQ/ SQS	.S
/ SQ0S.nTU:X  d   e[        U4S jT 5       5      (       d   eg )Nr@   rT   rU   r   r   r   r   r   r   r   r   )r   r   r   r    rW   rW   rW   rW   )r   r   r    )r   r    r    c              3   t   >#    U  H-  nTU     H   nTU   U     H  n[        U5      v   M     M"     M/     g 7fr-   r   ).0uvr&   r0   s       r(   	<genexpr>+test_PowerBasis_mult_tab.<locals>.<genexpr>   s3     C!QQqT1Q47avayy7yTy!s   58)r   r   r   r   r4   all)rG   rH   expr0   s      @r(   test_PowerBasis_mult_tabr      sz    _Q"#A1A	

A<L\R<4DE"|4,!C
 8O8C!CCCCCr*   c                     ^^ [        [        S[        5      5      n [        U 5      m[	        / SQ5      nT" U5      nTR                  U5      U:X  d   eT" USS9m[        [        UU4S j5        g )Nr@   r   r   rw   c                  &   > T R                  T5      $ r-   r6   )rH   bs   r(   r1   +test_PowerBasis_represent.<locals>.<lambda>   s    1;;q>r*   )r   r   r   r   r   r7   r   r   )rG   rP   arH   r   s      @@r(   test_PowerBasis_representr      s\    _Q"#A1A

C	#A;;q>S   	#QA
>12r*   c                     [        [        S[        5      5      n [        U 5      n[        SS[        -  -   5      n[        [        S-  5      n[        S[        5      nUR	                  U5      R
                  / SQ:X  d   eUR	                  U5      R
                  / SQ:X  d   eUR	                  U5      R
                  / SQ:X  d   eg )	Nr@   r   r   r!   r   )r   r   r   r   r   rm   )r   r   r   r   element_from_polyrv   )rG   rH   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                    ^^^^	 [         R                  " S5      n [         R                  " S5      n[        U 5      mU " [        SS5      [        SS5      SS/5      nTR                  U5      nUR                  / SQ:X  d   eUR
                  S:X  d   eUR                  5       U:X  d   eU" [        SS5      [        SS5      SS/5      m[        [        UU4S j5        U R                  U5      nTR                  U5      m	T	R                  / SQ:X  d   eT	R
                  S:X  d   eT	R                  5       U:X  d   eUR                  T5      m[        [        UU4S	 j5        [        U R                  R                  5      nUR                  U5      m	T	R                  / SQ:X  d   eT	R
                  S:X  d   e[        [        U	4S
 j5        g )Nr@   ru   r   r   r    )*      r   r    r|   c                  &   > T R                  T5      $ r-   )element_from_ANP)rI   ds   r(   r1   6test_PowerBasis_element__conversions.<locals>.<lambda>   s    a&8&8&;r*   c                  &   > T R                  T5      $ r-   )element_from_alg_num)rI   deltas   r(   r1   r      s    a&<&<U&Cr*   c                  $   > T R                  5       $ r-   )
to_alg_num)epss   r(   r1   r      s    3>>#3r*   )r   cyclotomic_fieldr   r   rv   rw   to_ANPr   r   r   r   extminpolyr   )
kLr   ri   alpharJ   rI   r   r   r   s
         @@@@r(   $test_PowerBasis_element__conversionsr      s   
AA
AA1A 	
2a8R1Xq!
$%A	1A88~%%%77a<< 88:?? 	
2a8R1Xq!
$%A
;< LLOE

 
 
'C::'''99>> >>u$$$ LLOE
CD 	155==!A

 
 
'C::'''99>>
>34r*   c                      [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  SS9n[        U5      S:X  d   eg )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   rB   r
   rC   r	   r   r^   s      r(   test_Submodule_reprr     sV    _Q"#A1A	L$4$4Q$; ;1EA7[[[[r*   c                  `   [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  SS9nUR                  5       nUR                  S:X  a  XCs=:X  a  U:X  d   e   eg )Nr@   r   r!   r|   r    r   r   )
r   r   r   r   rB   r
   rC   r	   reducedrw   rG   rH   rI   rJ   rK   s        r(   test_Submodule_reducedr   	  s    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;1EA			A77a<AKaK''K''Kr*   c                  
   [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR                  5         UR                  S5      nUR                  UR                  :X  d   eUR                  5       (       a  UR                  5       (       a   eUR                  UR                  S S 2SS 24   :X  d   eUR                  5       SS/SS/S.SSS/0S.:X  d   eg )Nr@   r   r!   r   )r   r   r   )r   r   r   r   rB   r
   rC   r	   compute_mult_tabdiscard_beforeparentr   r   r4   rG   rH   rI   rJ   s       r(   test_Submodule_discard_beforer     s    _Q"#A1A	L$4$4Q$; ;<A	A88qxx  )<)<)>)>>>88qxx12&&&::<B8A7QAKHHHHr*   c                  6   [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  SS9nUR                  UR                  :X  d   eg Nr@   r   r!   r|   r    r   )	r   r   r   r   rB   r
   rC   r	   	QQ_matrixr   s       r(   test_Submodule_QQ_matrixr     s{    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;1EA;;!++%%%r*   c                  z  ^^	^
^^ [        [        S[        5      5      n [        U 5      mTR	                  S[
        R                  " S[        5      -  5      m	T	R	                  S[
        R                  " S[        5      -  5      nT" [        / SQ5      5      nT" [        / SQ5      5      nT" [        / SQ5      5      mT	R                  U5      nUR                  5       / SQ:X  d   eUR                  U5      nUR                  5       / SQ:X  d   eTR	                  [        / S	Q/ S
Q/ SQ/S[        5      R                  5       5      m
[        [        S[        5      5      n[        U5      nU" [        / SQ5      5      m[        [        UU
4S j5        [        [        U	U4S j5        [        [        U	U4S j5        g )Nr@   r   r!   r    )r|            r   )r   r    r@   ru   r   rT   rU   r   r    r!   ru   )r   r   r    r!   r@   r|   c                  2   > TR                  T " S5      5      $ )Nr    r6   )rH   Ys   r(   r1   *test_Submodule_represent.<locals>.<lambda>?  s    1;;qt#4r*   c                  &   > T R                  T5      $ r-   r6   )rI   a2s   r(   r1   r   @      1;;r?r*   c                  &   > T R                  T5      $ r-   r6   )rI   z0s   r(   r1   r   A  r   r*   )r   r   r   r   rB   r
   rC   r	   r   r7   r%   rN   r   r   )rG   rJ   a0a1b1c0UZrH   rI   r   r   r   s           @@@@@r(   test_Submodule_representr   &  sR   _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	
6/"	#B	
6,	 B	
6,	 B	
RB779$$$	
RB779$$$	. r	! 9;		 A 	_Q"#A1A	
6$%	&B
>45
>23
>23r*   c                     [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  5      nUR                  U5      SL d   eUR                  U5      SL d   eUR                  U5      SL d   eg )Nr@   r   r!   r    TF)	r   r   r   r   rB   r
   rC   r	   is_compat_submoduler   s        r(   "test_Submodule_is_compat_submoduler   D  s    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	L$4$4Q$; ;<A  #t+++  #u,,,  #u,,,r*   c                     [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  SS9nX2:X  d   eg r   )r   r   r   r   rB   r
   rC   r	   r   s       r(   test_Submodule_eqr   O  sn    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;1EA6M6r*   c                  N  ^^ [        [        S[        5      5      n [        U 5      nUR	                  [        / SQ/ SQ/S[        5      R                  5       SS9mUR	                  [        / SQ/ SQ/S[        5      R                  5       S	S9nUR	                  [        / S
Q/ SQ/ SQ/S[        5      R                  5       SS9nTU-   U:X  d   e[        [        S[        5      5      n[        U5      nUR                  U" S5      U" S5      /5      m[        [        UU4S j5        g )Nr@   )r!   r   r   r   r   r!   r   r   r   r!   r|   r   r   
   r   r   r   r   ru   r      )   r   r   r   r   r   r   r   r   r      r   r   r   ru   r   r   c                     > T T-   $ r-   rX   )rI   r   s   r(   r1   $test_Submodule_add.<locals>.<lambda>l  	    a!er*   )r   r   r   r   rB   r
   r	   rN   r   r   	TypeError)rG   rH   rJ   rK   r   r   rI   r   s         @@r(   test_Submodule_addr  W  s!   _Q"#A1A	. r! 9;a 	  	)A 	
. r! 9;b 	  	*A 	
. r	! 9;b	 	  	*A
 q5A::_Q"#A1A	qtQqTl+A
9m$r*   c            	         [        [        S[        5      5      n [        U 5      nUR	                  [        / SQ/ SQ/S[        5      R                  5       SS9nUR	                  [        / SQ/ SQ/S[        5      R                  5       S	S9nUR	                  [        / S
Q/ SQ/S[        5      R                  5       SS9nUR	                  [        / SQ/ SQ/ SQ/ SQ/S[        5      R                  5       SS9nUR	                  [        / SQ/ SQ/ SQ/S[        5      R                  5       SS9nUS-  U:X  d   eUS-  U:X  d   eUS-  U:X  d   eX!" S5      -  U:X  d   eUR                  USS9U:X  d   eX"-  U:X  d   eUS-  U:X  d   eg )Nr@   r   r   r   r   r   r   r   r    )r   r   r   r   r   r   r   ru   )r   r   d   r   )r   r   r   F   )r
  r
  r
  r!   r!      )$  r  r   r   ):  r  r   r   );  r  ru   ru   r   r   r   F)hnfr   )	r   r   r   r   rB   r
   r	   rN   mul)rG   rH   rJ   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
 q5A::6Q;;r6R<<qt8r>>555(***5B;;6R<<r*   c            	      v  ^^^ [        [        S[        5      5      n [        U 5      nUR	                  5       nU" [        / SQ5      SS9mUR                  [        R                  " S[        5      SS9mU" [        / SQ5      SS9nTR                  T5      nXC:X  d   eUR                  [        R                  " S[        5      SS9mU" [        / SQ5      SS9nTR                  T5      nXC:X  d   eUR                  [        R                  " S[        5      S	S9mU" [        / S
Q5      SS9nTR                  T5      nXC:X  d   eU" [        / SQ5      5      m[        [        UU4S j5        UR                  [        / SQ/ SQ/ SQ/ SQ/S[        5      R                  5       5      m[        [        UU4S j5        g )Nr@   )Z   T   P   K   x   r   r!   r   )r   r   r   r   )r   r   r   r   r   )r   	   r@   r   r   c                  &   > T R                  T5      $ r-   reduce_element)rJ   r   s   r(   r1   /test_Submodule_reduce_element.<locals>.<lambda>  s    (8(8(;r*   )r@   r!   r    r   )r   r   ru   r|   )r   r      r   r   r  c                  &   > T R                  T5      $ r-   r  )rJ   r   s   r(   r1   r!    s    1#3#3A#6r*   )r   r   r   r   r   r   rB   r
   rC   r	   r   r   r=   rN   r   )rG   rH   rI   b_bar_expectedb_barrJ   r   r   s        @@@r(   test_Submodule_reduce_elementr&    s   _Q"#A1A	A	&!
"#.A	 0 0B 7qAAv./s;NQE"""	 0 0B 7qAAvo.c:NQE"""	 0 0B 7qAAvl+37NQE"""	&
A
 ;<		.
 r!
 9;	 A >67r*   c                      [        / SQ/ SQ/ SQ/[        5      n [        / SQ/ SQ/ SQ/[        5      n[        / SQ/ SQ/ SQ/[        5      n[        U 5      SL d   e[        U5      SL d   e[        U5      SL d   eg )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                  H   [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      n[        / SQ5      n[        X5      n[        X#5      n[        U[        5      (       d   e[        U[        5      (       a   eg )Nr@   r   r!   r   )r   r   r   r   rB   r
   rC   r	   r   r   
isinstancer   )rG   rH   rI   rP   eAeBs         r(   test_make_mod_eltr/    s    _Q"#A1A	L$4$4Q$; ;<A

C	a	B	a	Bb+,,,,"/00000r*   c                      [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      SS9n[        U5      S:X  d   eg )Nr@   r   r   r   z[1, 2, 3, 4]/2)r   r   r   r   r   r   rG   rH   ri   s      r(   test_ModuleElement_reprr2    s@    _Q"#A1A	&
a(A7&&&&r*   c                      [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      SS9nUR                  5       nUR                  S:X  a  X2:X  d   eg )Nr@   r   r   r   r   )r   r   r   r   r   r   rw   rG   rH   ri   r   s       r(   test_ModuleElement_reducedr5    sO    _Q"#A1A	&
a(A			A77a<AF""Fr*   c                      [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      5      nUR                  S5      nUR                  / SQ:X  d   eg )Nr@   )r   (   <   r  ru   )rW   r   r    )r   r   r   r   r   reduced_mod_prv   r4  s       r(    test_ModuleElement_reduced_mod_pr;    sL    _Q"#A1A	&!
"#A	A88&&&r*   c                      [        [        S[        5      5      n [        U 5      n/ SQn[        R
                  " X5      R                  U:X  d   eg )Nr@   r   )r   r   r   r   r   from_int_listrv   )rG   rH   r&   s      r(    test_ModuleElement_from_int_listr>    s@    _Q"#A1AA&&q,33q888r*   c                  ~    [        [        S[        5      5      n [        U 5      nU" S5      n[	        U5      S:X  d   eg )Nr@   r   r!   )r   r   r   r   lenr1  s      r(   test_ModuleElement_lenrA    s5    _Q"#A1A	!Aq6Q;;r*   c                  $   [        [        S[        5      5      n [        U 5      nU" S5      nUR	                  5       nX2R
                  :X  a  X2R
                  Ld   eUR	                  [        S5      S9nUR                  R                  (       d   eg )Nr@   r   r"   )	r   r   r   r   r   rP   r   r"   is_FF)rG   rH   ri   col1col2s        r(   test_ModuleElement_columnrG    so    _Q"#A1A	!A88:D55=T...882a58!D;;r*   c                      [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      SS9nU" [	        / SQ5      SS9nUR
                  UR
                  :X  d   eg )Nr@   r   r   r   r    r|   r  r   r    )r   r   r   r   r   QQ_colr4  s       r(   test_ModuleElement_QQ_colrK    sT    _Q"#A1A	&
a(A	&
q)A88qxxr*   c                    ^	 [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  5      nU" S5      nUR                  5       nUR                  U5      nUR                  5       nUR                  UL a  UR                  / SQ:X  d   eUR                  UL a  UR                  / SQ:X  d   eUR                  UL a  UR                  / SQ:X  d   eU" S5      m	[        [        U	4S	 j5        g )
Nr@   r   r!   r    r   r@   r   r   r   )r   r   r   r   )r   r   r   r   c                  $   > T R                  5       $ r-   )r   r   s   r(   r1   1test_ModuleElement_to_ancestors.<locals>.<lambda>  s    q{{}r*   )r   r   r   r   rB   r
   rC   r	   r   to_ancestorover_power_basisre   rv   r   r[   )
rG   rH   rI   rJ   rK   eDeCr.  r-  r   s
            @r(   test_ModuleElement_to_ancestorsrU  
  s   _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	
1B	B		B				B99>bii<77799>bii=88899>bii=888	!A
:,-r*   c                    ^^ [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nUR	                  S[
        R                  " S[        5      -  5      mUR	                  S[
        R                  " S[        5      -  5      nT" S5      R                  T" S5      5      SL d   eT" S5      R                  U" S5      5      SL d   eT" S5      R                  U" S5      5      u  pEUR                  UL a  UR                  UL d   eT" TR                  U5      5      T" S5      :X  a!  U" UR                  U5      5      U" S5      :X  d   eT" S5      R                  T" S5      5      u  pEUT" S5      :X  a  UT" S5      :X  d   e[        [        S	[        5      5      n[        U5      m[        [        UU4S
 j5        g )Nr@   r   r!   r    r   r   TFru   c                  >   > T " S5      R                  T" S5      5      $ )Nr   r   )unify)rJ   r   s   r(   r1   2test_ModuleElement_compatibility.<locals>.<lambda>-  s    adjj1&6r*   )r   r   r   r   rB   r
   rC   r	   	is_compatrX  re   r7   r   r   )	rG   rH   rI   rK   r   r   r   rJ   r   s	          @@r(    test_ModuleElement_compatibilityr[    s   _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	L$4$4Q$; ;<AQ4>>!A$4'''Q4>>!A$5(((Q4::adDA88q=QXX]**Q[[^!$1;;q>):ad)BBBQ4::adDA!9ad""_Q"#A1A
67r*   c                     [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      SS9nU" [	        / SQ5      SS9nX#:X  d   e[        [        S[        5      5      n[        U5      nX%" S5      :w  d   eUS	:w  d   eg )
Nr@   r   r   r   rI  r    ru   r   Q	@r   r   r   r   r   )rG   rH   ri   r   r   r   s         r(   test_ModuleElement_eqr_  0  s}    _Q"#A1A	&
a(A	&
q)A6M6_Q"#A1A!9999r*   c                    ^^ [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      SS9mU" [	        / SQ5      SS9nTR                  U5      (       d   eUR                  S[        R                  " S[        5      -  5      nU" [	        / SQ5      SS9nU" [	        / SQ5      SS9nUR                  U5      (       d   eU" [	        / SQ5      S	S9R                  [        S
S	5      5      (       d   e[        [        S	[        5      5      n[        U5      m[        [        UU4S j5        TR                  S5      SL d   eg )Nr@   r   r   r   rI  r    r!   rM  ru   r   c                  2   > TR                  T " S5      5      $ Nr   )equivr   ri   s   r(   r1   *test_ModuleElement_equiv.<locals>.<lambda>L  s    aggadmr*   r]  F)r   r   r   r   r   rc  rB   r
   rC   r	   r   r   r   )	rG   rH   r   rJ   r   r   r   r   ri   s	          @@r(   test_ModuleElement_equivrf  =  s   _Q"#A1A	&
a(A	&
q)A771:::	L$4$4Q$; ;<A	&
a(A	&
q)A771:::VL!+11"R)<<<<_Q"#A1A
34774=E!!!r*   c                    ^^ [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nU" [        / SQ5      SS9mU" [        / SQ5      SS9nU" [        / S	Q5      S
S9nTU-   U" [        / SQ5      SS9:X  d   eTU-
  U" [        / SQ5      SS9:X  d   eTU-   U" [        / SQ5      SS9:X  d   eT[        SS5      -   U" [        / SQ5      SS9:X  d   eU[        SS5      -   U" [        / SQ5      SS9:X  d   e[        [        S[        5      5      n[        U5      m[        [        UU4S j5        [        [        U4S j5        g )Nr@   r    r!   r   r|   r   )r@   r|   ru   r   r   r   r   r   r   r   )r   r   r   rt   r   )r9  r   )r   r"  r      ru   )   r   r   r   r   )rt   r   r   r   c                     > TT " S5      -   $ rb  rX   rd  s   r(   r1   (test_ModuleElement_add.<locals>.<lambda>`      a!A$hr*   c                     > T S-   $ Nr]  rX   ri   s   r(   r1   rn  a  	    a$hr*   )r   r   r   r   rB   r
   rC   r	   r   r   r   r  )rG   rH   rJ   r   r   r   r   ri   s         @@r(   test_ModuleElement_addrt  Q  sI   _Q"#A1A	L$4$4Q$; ;<A	&
a(A	&
b)A	&
a(Aq5Af-.b9999q5Af-.b9999q5Af-.a8888r!Ry=Af%56bAAAAr!Ry=Af%56bAAAA_Q"#A1A
9&'
9&'r*   c                    ^^ [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nU" [        / SQ5      SS9mU" [        / SQ5      SS9nU" [        / SQ5      SS9nU" [        / S	Q5      S
S9nTU-  U" [        / SQ5      SS9:X  d   eTU-  U" [        / SQ5      5      :X  d   eTU-  U" [        / SQ5      SS9:X  d   eT[        SS5      -  U" [        / SQ5      SS9:X  d   eU[        SS5      -  R                  U" [        / SQ5      S
S95      (       d   eT[        SS5      -  U" [        / SQ5      SS9:X  d   e[        [        S
[        5      5      n[        U5      m[        [        UU4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        g )Nr@   r    r!   r   r   r   r   r   r  r   r   )r   r   r    r   ru   )rw  rw  rw  r   r   )r   r   r   r!      r|   r   r   )r   r   r   r@   )r   r@   r   r   r  c                     > TT " S5      -  $ rb  rX   rd  s   r(   r1   (test_ModuleElement_mul.<locals>.<lambda>u  ro  r*   c                     > T S-  $ rq  rX   rr  s   r(   r1   rz  v  rs  r*   c                     > T S-  $ rq  rX   rr  s   r(   r1   rz  w  s	    a4ir*   c                     > T S-  $ rb  rX   rr  s   r(   r1   rz  x  s	    a1fr*   )r   r   r   r   rB   r
   rC   r	   r   r   rc  r   r  ZeroDivisionError)	rG   rH   rJ   r   r   r   r   r   ri   s	          @@r(   test_ModuleElement_mulr  d  s   _Q"#A1A	L$4$4Q$; ;<A	&
a(A	&
a(A	&
a(A	&
a(Aq5Af12"====q5Af-.////q5Af_-R8888r!Qx<1VL1;;;;2r
N!!!F<$8"BCCCC1a=Af\2!<<<<_Q"#A1A
9&'
9&'
9'(
n-r*   c                     [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nU" [        / SQ5      SS9nU" [        / SQ5      SS9nU" [        / SQ5      5      nX4-  SU" S5      -  S	-  :X  d   eX5-  S
U" S5      -  S-  :X  d   eSU-  U" S5      * :X  d   eg )Nr@   r    r!   rv  r   r  rh  r   rx  r   r   r  r   	r   r   r   r   rB   r
   rC   r	   r   )rG   rH   rJ   ri   r   r   s         r(   test_ModuleElement_divr  {  s    _Q"#A1A	L$4$4Q$; ;<A	&
a(A	&
a(A	&
A6R!Wb[   6R!WaZ6adU??r*   c                     [        [        S[        5      5      n [        U 5      nUR	                  S[
        R                  " S[        5      -  5      nU" [        / SQ5      SS9nU" [        / SQ5      SS9nUS-  U" [        / SQ5      S	S9:X  d   eUS-  U" [        / S
Q5      SS9:X  d   eUS-  U" [        / SQ5      5      :X  d   eUS-  U" [        / SQ5      5      :X  d   eUS-  U:X  d   eUS-  U:X  d   eg )Nr@   r    r!   rv  r   r   r   )r   r   r   r      )r   r    r   r   r   rT   r   r  )rG   rH   rJ   ri   r   s        r(   test_ModuleElement_powr    s    _Q"#A1A	L$4$4Q$; ;<A	&
a(A	&
a(A6Qvl+266666Qvl+155556Qvl+,,,,6Qvl+,,,,6Q;;6Q;;r*   c                     ^^ [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      SS9mTS-  U" [	        / SQ5      SS9:X  d   eT[        SS5      -  UR                  5       :X  d   eT[        SS5      -  U" [	        / S	Q5      S
S9:X  d   eUR                  U" S5      SU" S5      -  SU" S5      -  U" S5      /5      nTU-  U" [	        / SQ5      SS9:X  d   eUR                  5       m[        [        UU4S j5        g )Nr@   r   r   r   r   r   r   ru   )r   r   r   r   r   r    )r   r   r   r   r|   r   )r   r@   r   r   c                     > TT -  $ r-   rX   )rJ   ri   s   r(   r1   (test_ModuleElement_mod.<locals>.<lambda>  r  r*   )r   r   r   r   r   r   rn   r   r   r   r  )rG   rH   rI   rJ   ri   s      @@r(   test_ModuleElement_modr    s    _Q"#A1A	&
q)Aq5Af\*!4444r!Qx<1668###r!Qx<1VL1;;;;	qtQqtVQqtVQqT:;Aq5Af\*!4444	A
9m$r*   c                     [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      SS9nUR                  [        S9[        S[        S-  -  S[        -  -   S-   [        S	9:X  d   eUR                  [        S9[        S
[        S-  -  [        SS5      [        -  -   [        SS5      -   [        S	9:X  d   eg )Nr@   r  r   r   r   r   r   r   rC  r!   )
r   r   r   r   r   	numeratorr   r	   polyr   r1  s      r(   test_PowerBasisElement_polysr    s    _Q"#A1A	&
q)A;;;$q419}rDy'@1'DR"PPPP66D6>T!dai-"R)d2B"BR1X"MVXYYYYr*   c                      [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      5      nUR                  5       S:X  d   eg )Nr@   )r   rW   r   r   )r   r   r   r   r   norm)rG   rH   lams      r(   test_PowerBasisElement_normr    s=    _Q"#A1A
F=!
"C88:??r*   c                      [        [        S[        5      5      n [        U 5      nU" [	        / SQ5      5      nSU-  SU" S5      -  :X  d   eUS-  U" S5      * :X  d   eg )Nr@   rh  r   r   r   r9  r    r^  r1  s      r(   test_PowerBasisElement_inverser    s]    _Q"#A1A	&
A6R!W7qter*   c                      [        [        S[        5      5      n [        U 5      n[	        US 5      nUR                  5       nU[        / SQ/ SQ/ SQ/ SQ/S[        5      :X  d   eg )Nr@   c                     U S-  $ )Nr   rX   rO  s    r(   r1   0test_ModuleHomomorphism_matrix.<locals>.<lambda>      !q&r*   )r   r   rW   r   )r   r   rW   r   )r   r   rW   r   )r   r   rW   r   r  )r   r   r   r   r   r   r
   r	   )rG   rH   phir0   s       r(   test_ModuleHomomorphism_matrixr    se    _Q"#A1A
Q 0
1C

A	
 r   r*   c                      [        [        S[        5      5      n [        U 5      n[	        US 5      nUR                  5       nUR                  S:X  d   eg )Nr@   c                     U S-  $ r   rX   rO  s    r(   r1   0test_ModuleHomomorphism_kernel.<locals>.<lambda>  r  r*   r    )r   r   r   r   r   kernelr.   )rG   rH   r  Ns       r(   test_ModuleHomomorphism_kernelr    sC    _Q"#A1A
Q 0
1C

A33!8O8r*   c                  (  ^ [        [        S[        5      5      n [        U 5      nUR	                  5       mTR                  U" S5      5      nTR                  U5      nUR                  5       [        / SQ/S[        5      :X  d   eUR                  [        R                  " S[        5      5      nUR	                  5       nUR                  U" S5      5      nUR                  U5      nU[        / S[        5      :X  d   e[        [        U4S j5        g )Nr@   r   )r   r   r   r   r   r   r   r   r   r   r   r   rW   rW   rW   rW   )r      )r!   r   )r   r   c                  &   > T R                  S5      $ rq  r6   )Rs   r(   r1   1test_EndomorphismRing_represent.<locals>.<lambda>  r8   r*   )r   r   r   r   endomorphism_ringinner_endomorphismr7   rN   r
   r	   rB   zerosr   r=   )rG   rH   r  rP   rI   Spsir  s          @r(   test_EndomorphismRing_representr    s    _Q"#A1A	A


qt
$C
++c
C==?l<,    	
 2 262 >?A	A


qt
$C
++c
C,r62....
 9:r*   c                    ^ [        [        S[        5      5      n [        U 5      n/ n[	        U" S5      [
        [        US9nU[        U [
        S9:X  d   e[        U5      S:X  d   e[	        U" S5      [
        [        S9nU[        U [
        S9:X  d   eUR                  S[        R                  " S[        5      -  5      m[        [        U4S j5        g )	Nr@   r   )r   powersrC  r  r   r!   c                  0   > [        T " S5      [        5      $ )Nr   )r   r   rY   s   r(   r1   $test_find_min_poly.<locals>.<lambda>  s    mAaD"&=r*   )r   r   r   r   r   r   r@  rB   r
   rC   r	   r   r   )rG   rH   r  r'   rI   s       @r(   test_find_min_polyr    s    _Q"#A1AFadB!F3AQr""""v;! 	adB!$AQr""""	L$4$4Q$; ;<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>   rL   rR   r\   r_   rk   ro   rr   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r&  r*  r/  r2  r5  r;  r>  rA  rG  rK  rU  r[  r_  rf  rt  r  r  r  r  r  r  r  r  r  r  r  rX   r*   r(   <module>r     sQ    - * * 1    6 4 'K,
B&*!  F
U	?D39&5R\(	I&4<-%0 F8B**1'#'9 .$8(
"((&..	%Z
;&?r*   