
    sgY                        d dl mZmZ d dlmZmZ d dlmZmZm	Z	 d dl
mZmZ d dlmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lm Z  d
 Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d  Z7d! Z8d" Z9d# Z:d$ Z;d% Z<d& Z=d' Z>d( Z?d) Z@d* ZAd+ ZBd, ZCd- ZDd. ZEd/ ZFd0 ZGd1 ZHd2 ZId3 ZJd4 ZKd5 ZLd6 ZMd7 ZNd8 ZOd9 ZPd: ZQd; ZRd< ZSd= ZTd> ZUd? ZVy@)A    )xzeta)Polycyclotomic_poly)FFQQZZ)DomainMatrixDM)ClosureFailureMissingUnityErrorStructureError)	ModuleModuleElementModuleEndomorphism
PowerBasisPowerBasisElementfind_min_polyis_sq_maxrank_HNFmake_mod_eltto_colis_int)UnificationFailed)raisesc                      g d} t        |       }|j                  j                  sJ |j                  dk(  sJ |j	                         | k(  sJ y )N            )r!   r   )r   domainis_ZZshapeflat)cms     ^/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/numberfields/tests/test_modules.pytest_to_colr)      sD    Aq	A88>>>77f668q==    c                       t                t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       y )Nc                       j                   S N)nMs   r(   <lambda>z,test_Module_NotImplemented.<locals>.<lambda>   s     r*   c                  $     j                         S r-   )mult_tabr/   s   r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s    

 r*   c                  &     j                  d       S r-   	representr/   s   r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>       D(9 r*   c                  $     j                         S r-   )starts_with_unityr/   s   r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s    (;(;(= r*   c                  :     j                  t        dd            S )Nr   r    )element_from_rationalr   r/   s   r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s    (?(?1a(I r*   )r   r   NotImplementedErrorr/   s   @r(   test_Module_NotImplementedr=      sE    A
,
 45
 9:
 =>
 IJr*   c                  J   t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z        }|j                  d      |||gk(  sJ |j                  d      |||gk(  sJ |j                         |k(  sJ |j                  |      |k(  sJ t               }|j                         J y )N   r   r!   r    T)include_self)r   r   r   r   submodule_from_matrixr
   eyer	   	ancestorspower_basis_ancestornearest_common_ancestorr   )TABCDr0   s         r(   test_Module_ancestorsrK   "   s   _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	L$4$4Q$; ;<A;;D;)aAY666;;D;)aAY666!!#q((($$Q'1,,,A!!#+++r*   c                  <   t        t        dt                    } t        |       }t	        g d      }|j                         }|j                  |      du sJ |j                  |      du sJ |j                  d      du sJ |j                  t        j                  dt              d d df         du sJ |j                  t        j                  dt              d d df         du sJ |j                  t        j                  dt              d d df         du sJ y )	Nr?   r   TFr   r    r   r!   )r   r   r   r   r   	transposeis_compat_colr
   rB   r	   r   )rF   rG   colrows       r(   test_Module_compat_colrQ   0   s    _Q"#A1A

C
--/C??34'''??35(((??1&&&??<++Ar21a489UBBB??<++Ar21a489UBBB??<++Ar21a489TAAAr*   c                     t        t        dt                    } t        |        d      j                  j                         g dk(  sJ  d      j                  j                         g dk(  sJ t        j                  dt              d d df   } |      j                  |k(  sJ t        t        fd       y )	Nr?   r   r   r   r   r   r   r   r   r   r   r!   r   c                        d      S )N rH   s   r(   r1   z"test_Module_call.<locals>.<lambda>D   s    qu r*   )r   r   r   r   rO   r%   r
   rB   r	   r   
ValueError)rF   rO   rH   s     @r(   test_Module_callrZ   =   s    _Q"#A1AQ488==?l***Q488==?l***


1b
!!Q$
'CS6::
:}%r*   c                      t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j                         du sJ |j                         du sJ y )Nr?   r   r!   TF)	r   r   r   r   rA   r
   rB   r	   r9   rF   rG   rH   s      r(   test_Module_starts_with_unityr]   G   sl    _Q"#A1A	L$4$4Q$; ;<A D((( E)))r*   c                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j                         }|j                         }t        t        ||            D ]f  \  }\  }}dgdz  }|j                  |k(  sJ |j                  |k(  sJ d||<   | |t        |            k(  sJ d||<   | |t        |            k(  rfJ  y )Nr?   r   r!   r   r   )r   r   r   r   rA   r
   rB   r	   basis_elementsbasis_element_pullbacks	enumeratezipmoduler   )	rF   rG   rH   basisbpiepr&   s	            r(   test_Module_basis_elementsri   O   s    _Q"#A1A	L$4$4Q$; ;<AE	
	"	"	$Bs5"~. !	6AqC!Gxx1}}xx1}}!AfQiL   !AfQiL   !r*   c                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j                         j                  j                         g dk(  sJ |j                         j                  |k(  sJ |j                         j                  j                         g dk(  sJ |j                         j                  |k(  sJ y )Nr?   r   r!   r   r   r   r   )r   r   r   r   rA   r
   rB   r	   zerorO   r%   rc   r\   s      r(   test_Module_zerorm   _   s    _Q"#A1A	L$4$4Q$; ;<A668<<,...668??a668<<,...668??ar*   c                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j                         j                  j                         g dk(  sJ |j                         j                  |k(  sJ |j                         j                  j                         g dk(  sJ |j                         j                  |k(  sJ y )Nr?   r   r!   rS   )r   r   r   r   rA   r
   rB   r	   onerO   r%   rc   r\   s      r(   test_Module_onerp   i   s    _Q"#A1A	L$4$4Q$; ;<A557;;---557>>Q557;;---557>>Qr*   c                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j                  t        dd            }|j                  t        dd            }|j                  g dk(  sJ |j                  dk(  sJ |j                  |k(  sJ |j                  g dk(  sJ |j                  dk(  sJ |j                  |k(  sJ y )Nr?   r   r!         )rr   r   r   r   )r   r   r   r   rA   r
   rB   r	   r;   r   coeffsdenomrc   )rF   rG   rH   rArBs        r(   !test_Module_element_from_rationalrx   s   s    _Q"#A1A	L$4$4Q$; ;<A	
	 	 B	+B	
	 	 B	+B99%%%88q==99>>99%%%88q==99>>r*   c                     t        t        dt                    } t        |       d d      z  d d      z  d d      z  d d      z  g}j	                  |      |d   j                         j                  |d   j                               }j                  |k(  sJ t        t        fd       t        t        fd       y )Nr?   r   r   r      c                  &     j                  g       S r-   submodule_from_gensrG   s   r(   r1   z1test_Module_submodule_from_gens.<locals>.<lambda>   s    q44R8 r*   c                  H     j                  d  d      z   d      g      S )Nr    r   r|   )rG   rH   s   r(   r1   z1test_Module_submodule_from_gens.<locals>.<lambda>   s"    q44a!fa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dFAadFAadFAadF+D	d#A 	QQ 01A88q==
:89
:DEr*   c                  z   t        t        dt                    } t        |       j	                  dt        j                  dt              z        } |t        g d            }|j                         }|j                  j                         g dk(  sJ t        t        fd       t        t        fd       y )Nr?   r   r!   r   r   r!   rz      c                  V     j                  t        j                  dt                    S )Nr!   )rA   r
   rB   r   r~   s   r(   r1   z3test_Module_submodule_from_matrix.<locals>.<lambda>   s    q66|7G7G27NO r*   c                  \     j                  dt        j                  dt              z        S )Nr   r?   )rA   r
   rB   r	   r~   s   r(   r1   z3test_Module_submodule_from_matrix.<locals>.<lambda>   s$    q66q<;K;KAr;R7R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$4Q$; ;<A	&
A	A55::<<'''
:OP
:STr*   c                  b   t        t        dt                    } t        |       }|j	                         } |t        g d            }|j                         }|j                  j                         g dk(  sJ  |d       |d       |d       |d      f\  }}}}||z  |k(  sJ |dz  |k(  sJ y )Nr?   r   r   r   r   r    )	r   r   r   r   whole_submoduler   r   rO   r%   )	rF   rG   rH   rg   r   e0e1e2e3s	            r(   test_Module_whole_submoduler      s    _Q"#A1A	A	&
A	A55::<<'''qT1Q41qt+NBB7b==7b==r*   c                  l    t        t        dt                    } t        |       }t	        |      dk(  sJ y )Nr?   z&PowerBasis(x**4 + x**3 + x**2 + x + 1))r   r   r   r   repr)rF   rG   s     r(   test_PowerBasis_reprr      s/    _Q"#A1A7>>>>r*   c                  p    t        t        dt                    } t        |       }t        |       }||k(  sJ y Nr?   )r   r   r   r   r\   s      r(   test_PowerBasis_eqr      s0    _Q"#A1A1A6M6r*   c                      t        t        dt                    } t        |       }|j	                         g dg dg dg ddg dg dg ddg dg dd	d
g did}|k(  sJ t        fdD              sJ y )Nr?   rS   rT   r   r   r   r   r   r   r   r   )r   r   r   r    rV   rV   rV   rV   )r   r   r    )r   r    r    c              3   b   K   | ]&  }|   D ]  }|   |   D ]  }t        |         ( y wr-   r   ).0uvr&   r0   s       r(   	<genexpr>z+test_PowerBasis_mult_tab.<locals>.<genexpr>   s9     CQQqTC1Q47CavayCyCyCs   ,/)r   r   r   r   r3   all)rF   rG   expr0   s      @r(   test_PowerBasis_mult_tabr      sw    _Q"#A1A	

A<L\R<4DE"|4,!C
 8O8C!CCCCr*   c                      t        t        dt                    } t        |       t	        g d      } |      }j                  |      |k(  sJ  |d      t        t        fd       y )Nr?   r   r   ru   c                  &     j                        S r-   r5   )rG   bs   r(   r1   z+test_PowerBasis_represent.<locals>.<lambda>   s    1;;q> r*   )r   r   r   r   r   r6   r   r   )rF   rO   arG   r   s      @@r(   test_PowerBasis_representr      s\    _Q"#A1A

C	#A;;q>S   	#QA
>12r*   c                     t        t        dt                    } t        |       }t        ddt        z  z         }t        t        dz        }t        dt              }|j	                  |      j
                  g dk(  sJ |j	                  |      j
                  g dk(  sJ |j	                  |      j
                  g dk(  sJ y )	Nr?   r   r   r!   r   )r   r   r   r   r   rk   )r   r   r   r   element_from_polyrt   )rF   rG   r   ghs        r(   !test_PowerBasis_element_from_polyr      s    _Q"#A1AQ1WAQT
AQ
Aq!((L888q!((,<<<<q!((L888r*   c                    	 t        j                  d      } t        j                  d      }t        |        | t        dd      t        dd      ddg      }j                  |      }|j                  g dk(  sJ |j
                  dk(  sJ |j                         |k(  sJ  |t        dd      t        dd      ddg      t        t        fd       | j                  |      }j                  |      		j                  g dk(  sJ 	j
                  dk(  sJ 	j                         |k(  sJ |j                        t        t        fd	       t        | j                  j                        }|j                  |      		j                  g dk(  sJ 	j
                  dk(  sJ t        t        	fd
       y )Nr?   rs   r   r   r    )*      r   r    rz   c                  &     j                        S r-   )element_from_ANP)rH   ds   r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>   s    a&8&8&; r*   c                  &     j                        S r-   )element_from_alg_num)rH   deltas   r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>   s    a&<&<U&C r*   c                  $     j                         S r-   )
to_alg_num)epss   r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>   s    3>>#3 r*   )r   cyclotomic_fieldr   r   rt   ru   to_ANPr   r   r   r   extminpolyr   )
kLr   rg   alpharI   rH   r   r   r   s
         @@@@r(   $test_PowerBasis_element__conversionsr      s   
AA
AA1A 	
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                      t        t        dt                    } t        |       }|j	                  dt        j                  dt              z  d      }t        |      dk(  sJ y )Nr?   r   r!   r    r   zCSubmodule[[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 2]]/3)	r   r   r   r   rA   r
   rB   r	   r   r\   s      r(   test_Submodule_reprr     sV    _Q"#A1A	L$4$4Q$; ;1EA7[[[[r*   c                  ^   t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z  d      }|j                         }|j                  dk(  r||cxk(  r|k(  sJ  J y )Nr?   r   r!   rz   r    r   r   )
r   r   r   r   rA   r
   rB   r	   reducedru   rF   rG   rH   rI   rJ   s        r(   test_Submodule_reducedr   	  s    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;1EA			A77a<AKaK''K''Kr*   c                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j                          |j                  d      }|j                  |j                  k(  sJ |j                         r|j                         rJ |j                  |j                  d d dd f   k(  sJ |j                         ddgddgddddgidk(  sJ y )Nr?   r   r!   r   )r   r   r   )r   r   r   r   rA   r
   rB   r	   compute_mult_tabdiscard_beforeparentr   r   r3   rF   rG   rH   rI   s       r(   test_Submodule_discard_beforer     s    _Q"#A1A	L$4$4Q$; ;<A	A88qxx )<)<)>>>88qxx12&&&::<B8A7QAKHHHHr*   c                  6   t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z  d      }|j                  |j                  k(  sJ y Nr?   r   r!   rz   r    r   )	r   r   r   r   rA   r
   rB   r	   	QQ_matrixr   s       r(   test_Submodule_QQ_matrixr     s{    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;1EA;;!++%%%r*   c                  l  	
 t        t        dt                    } t        |       j	                  dt        j                  dt              z        		j	                  dt        j                  dt              z        } t        g d            } t        g d            } t        g d            	j                  |      }|j                         g dk(  sJ |j                  |      }|j                         g dk(  sJ j	                  t        g d	g d
g dgdt              j                               
t        t        dt                    }t        |      } |t        g d            t        t        
fd       t        t        	fd       t        t        	fd       y )Nr?   r   r!   r    )rz            r   )r   r    r?   rs   r   rS   rT   r   r    r!   rs   )r   r   r    r!   r?   rz   c                  2    j                    d            S )Nr    r5   )rG   Ys   r(   r1   z*test_Submodule_represent.<locals>.<lambda>?  s    1;;qt#4 r*   c                  &     j                        S r-   r5   )rH   a2s   r(   r1   z*test_Submodule_represent.<locals>.<lambda>@      1;;r? r*   c                  &     j                        S r-   r5   )rH   z0s   r(   r1   z*test_Submodule_represent.<locals>.<lambda>A  r   r*   )r   r   r   r   rA   r
   rB   r	   r   r6   r%   rM   r   r   )rF   rI   a0a1b1c0UZrG   rH   r   r   r   s           @@@@@r(   test_Submodule_representr   &  sR   _Q"#A1A	L$4$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                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z        }|j                  |      du sJ |j                  |      du sJ |j                  |      du sJ y )Nr?   r   r!   r    TF)	r   r   r   r   rA   r
   rB   r	   is_compat_submoduler   s        r(   "test_Submodule_is_compat_submoduler   D  s    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	L$4$4Q$; ;<A  #t+++  #u,,,  #u,,,r*   c                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z  d      }||k(  sJ y r   )r   r   r   r   rA   r
   rB   r	   r   s       r(   test_Submodule_eqr   O  sp    _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;1EA6M6r*   c                  \   t        t        dt                    } t        |       }|j	                  t        g dg dgdt              j                         d      |j	                  t        g dg dgdt              j                         d	      }|j	                  t        g d
g dg dgdt              j                         d      }|z   |k(  sJ t        t        dt                    }t        |      }|j                   |d       |d      g      t        t        fd       y )Nr?   )r!   r   r   r   r   r!   r   r   r   r!   rz   r   r   
   r   r   r   r   rs   r      )   r   r   r   r   r   r   r   r   r      r   r   r   rs   r   r   c                       z   S r-   rW   )rH   r   s   r(   r1   z$test_Submodule_add.<locals>.<lambda>l      a!e r*   )r   r   r   r   rA   r
   r	   rM   r}   r   	TypeError)rF   rG   rI   rJ   r   r   rH   r   s         @@r(   test_Submodule_addr   W  s!   _Q"#A1A	. r! 9;a 	  	)A 	
. r! 9;b 	  	*A 	
. r	! 9;b	 	  	*A
 q5A::_Q"#A1A	qtQqTl+A
9m$r*   c            	      .   t        t        dt                    } t        |       }|j	                  t        g dg dgdt              j                         d      }|j	                  t        g dg dgdt              j                         d	      }|j	                  t        g d
g dgdt              j                         d      }|j	                  t        g dg dg dg dgdt              j                         d      }|j	                  t        g dg dg dgdt              j                         d      }|dz  |k(  sJ |dz  |k(  sJ |dz  |k(  sJ | |d      z  |k(  sJ |j                  |d      |k(  sJ ||z  |k(  sJ |dz  |k(  sJ y )Nr?   r   r   r   r   r   r   r   r    )r   r   r   r   r   r   r   rs   )r   r   d   r   )r   r   r   F   )r  r  r  r!   r!      )$  r  r   r   ):  r  r   r   );  r  rs   rs   r   r   r   F)hnfr   )	r   r   r   r   rA   r
   r	   rM   mul)rF   rG   rI   C1C2C3_unredC3s          r(   test_Submodule_mulr  o  s   _Q"#A1A	. r! 9;b 	  	*A 
	 	 / r" 9;a 
! 
)B 
	 	 / r" 9;b 
! 
*B &&|	5
 r(
 9;c ' +H 
	 	 / r	" 9;c	 
! 
+B
 q5A::6Q;;r6R<<qt8r>>555(***q5B;;6R<<r*   c            	         t        t        dt                    } t        |       }|j	                         } |t        g d      d      |j                  t        j                  dt              d       |t        g d      d      }j                        }||k(  sJ |j                  t        j                  dt              d       |t        g d      d      }j                        }||k(  sJ |j                  t        j                  dt              d	       |t        g d
      d      }j                        }||k(  sJ  |t        g d            t        t        fd       |j                  t        g dg dg dg dgdt              j                               t        t        fd       y )Nr?   )Z   T   P   K   x   r   r!   r   )r   r   r   r   )r   r   r   r   r   )r   	   r?   r   r   c                  &     j                        S r-   reduce_element)rI   r   s   r(   r1   z/test_Submodule_reduce_element.<locals>.<lambda>  s    (8(8(; r*   )r?   r!   r    r   )r   r   rs   rz   )r   r      r   r   r  c                  &     j                        S r-   r  )rI   r   s   r(   r1   z/test_Submodule_reduce_element.<locals>.<lambda>  s    1#3#3A#6 r*   )r   r   r   r   r   r   rA   r
   rB   r	   r  r   r<   rM   r   )rF   rG   rH   b_bar_expectedb_barrI   r   r   s        @@@r(   test_Submodule_reduce_elementr    s   _Q"#A1A	A	&!
"#.A	 0 0B 7qAAv./s;NQEN"""	 0 0B 7qAAvo.c:NQEN"""	 0 0B 7qAAvl+37NQEN"""	&
A
 ;<		.
 r!
 9;	 A >67r*   c                      t        g dg dg dgt              } t        g dg dg dgt              }t        g dg dg dgt              }t        |       du sJ t        |      du sJ t        |      du sJ y )N)r    r   r   )r   r   r   )r   r   r   )r   r   r   )r    r   r    TF)r   r	   r   )r0   M1M2s      r(   test_is_HNFr     s    
 
		A
 
 
	
B
 
 
	
B
 Q4'''R E)))R E)))r*   c                  6   t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }t        g d      }t        ||      }t        ||      }t        |t              sJ t        |t              rJ y )Nr?   r   r!   r   )r   r   r   r   rA   r
   rB   r	   r   r   
isinstancer   )rF   rG   rH   rO   eAeBs         r(   test_make_mod_eltr%    s    _Q"#A1A	L$4$4Q$; ;<A

C	a	B	a	Bb+,,,"/0000r*   c                      t        t        dt                    } t        |       } |t	        g d      d      }t        |      dk(  sJ y )Nr?   r   r   r   z[1, 2, 3, 4]/2)r   r   r   r   r   r   rF   rG   rg   s      r(   test_ModuleElement_reprr(    s@    _Q"#A1A	&
a(A7&&&&r*   c                      t        t        dt                    } t        |       } |t	        g d      d      }|j                         }|j                  dk(  r||k(  sJ y )Nr?   r   r   r   r   )r   r   r   r   r   r   ru   rF   rG   rg   r   s       r(   test_ModuleElement_reducedr+    sQ    _Q"#A1A	&
a(A			A77a<AF""Fr*   c                      t        t        dt                    } t        |       } |t	        g d            }|j                  d      }|j                  g dk(  sJ y )Nr?   )r   (   <   r  rs   )rV   r   r    )r   r   r   r   r   reduced_mod_prt   r*  s       r(    test_ModuleElement_reduced_mod_pr1    sL    _Q"#A1A	&!
"#A	A88&&&r*   c                      t        t        dt                    } t        |       }g d}t	        j
                  ||      j                  |k(  sJ y )Nr?   r   )r   r   r   r   r   from_int_listrt   )rF   rG   r&   s      r(    test_ModuleElement_from_int_listr4    sB    _Q"#A1AA&&q!,33q888r*   c                  |    t        t        dt                    } t        |       } |d      }t	        |      dk(  sJ y )Nr?   r   r!   )r   r   r   r   lenr'  s      r(   test_ModuleElement_lenr7    s5    _Q"#A1A	!Aq6Q;;r*   c                      t        t        dt                    } t        |       } |d      }|j	                         }||j
                  k(  r||j
                  usJ |j	                  t        d            }|j                  j                  sJ y )Nr?   r   r"   )	r   r   r   r   r   rO   r   r"   is_FF)rF   rG   rg   col1col2s        r(   test_ModuleElement_columnr=    ss    _Q"#A1A	!A88:D155=T...882a58!D;;r*   c                      t        t        dt                    } t        |       } |t	        g d      d      } |t	        g d      d      }|j
                  |j
                  k(  sJ y )Nr?   r   r   r   r    rz   r  r   r    )r   r   r   r   r   QQ_colr*  s       r(   test_ModuleElement_QQ_colrA    sT    _Q"#A1A	&
a(A	&
q)A88qxxr*   c                    	 t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z        } |d      }|j                         }|j                  |      }|j                         }|j                  |u r|j                  g dk(  sJ |j                  |u r|j                  g dk(  sJ |j                  |u r|j                  g dk(  sJ  |d      	t        t        	fd	       y )
Nr?   r   r!   r    r   r?   r   r   r   )r   r   r   r   )r   r   r   r   c                  $     j                         S r-   )r   r   s   r(   r1   z1test_ModuleElement_to_ancestors.<locals>.<lambda>  s    q{{} r*   )r   r   r   r   rA   r
   rB   r	   r   to_ancestorover_power_basisrc   rt   r   rY   )
rF   rG   rH   rI   rJ   eDeCr$  r#  r   s
            @r(   test_ModuleElement_to_ancestorsrJ  
  s   _Q"#A1A	L$4$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                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        }|j	                  dt        j                  dt              z        |j	                  dt        j                  dt              z        } d      j                   d            du sJ  d      j                   |d            du sJ  d      j                   |d            \  }}|j                  |u r|j                  |u sJ  j                  |             d      k(  r  ||j                  |             |d      k(  sJ  d      j                   d            \  }}| d      k(  r| d      k(  sJ t        t        d	t                    }t        |      t        t        fd
       y )Nr?   r   r!   r    r   r   TFrs   c                  >      d      j                   d            S )Nr   r   )unify)rI   r   s   r(   r1   z2test_ModuleElement_compatibility.<locals>.<lambda>-  s    adjj1&6 r*   )r   r   r   r   rA   r
   rB   r	   	is_compatrM  rc   r6   r   r   )	rF   rG   rH   rJ   r   r   r   rI   r   s	          @@r(    test_ModuleElement_compatibilityrO    s   _Q"#A1A	L$4$4Q$; ;<A	L$4$4Q$; ;<A	L$4$4Q$; ;<AQ4>>!A$4'''Q4>>!A$5(((Q4::adDAq88q=QXX]**Q[[^!$1;;q>):ad)BBBQ4::adDAq!9ad""_Q"#A1A
67r*   c                     t        t        dt                    } t        |       } |t	        g d      d      } |t	        g d      d      }||k(  sJ t        t        dt                    }t        |      }| |d      k7  sJ |d	k7  sJ y )
Nr?   r   r   r   r?  r    rs   r   Q	@r   r   r   r   r   )rF   rG   rg   r   r   r   s         r(   test_ModuleElement_eqrS  0  s    _Q"#A1A	&
a(A	&
q)A6M6_Q"#A1A!9999r*   c                     t        t        dt                    } t        |       } |t	        g d      d       |t	        g d      d      }j                  |      sJ |j                  dt        j                  dt              z        } |t	        g d      d      } |t	        g d      d      }|j                  |      sJ  |t	        g d      d	      j                  t        d
d	            sJ t        t        d	t                    }t        |      t        t        fd       j                  d      du sJ y )Nr?   r   r   r   r?  r    r!   rC  rs   r   c                  2    j                    d            S Nr   )equivr   rg   s   r(   r1   z*test_ModuleElement_equiv.<locals>.<lambda>L  s    aggadm 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771::	L$4$4Q$; ;<A	&
a(A	&
q)A771::VL!+11"R)<<<_Q"#A1A
34774=E!!!r*   c                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        } |t        g d      d       |t        g d      d      } |t        g d	      d
      }|z    |t        g d      d      k(  sJ |z
   |t        g d      d      k(  sJ |z    |t        g d      d      k(  sJ t        dd      z    |t        g d      d      k(  sJ |t        dd      z    |t        g d      d      k(  sJ t        t        dt                    }t        |      t        t        fd       t        t        fd       y )Nr?   r    r!   r   rz   r   )r?   rz   rs   r   r   r   r   r   r   r   )r   r   r   rr   r   )r/  r   )r   r  r      rs   )   r   r   r   r   )rr   r   r   r   c                        d      z   S rV  rW   rX  s   r(   r1   z(test_ModuleElement_add.<locals>.<lambda>`      a!A$h r*   c                       dz   S NrQ  rW   rg   s   r(   r1   z(test_ModuleElement_add.<locals>.<lambda>a      a$h r*   )r   r   r   r   rA   r
   rB   r	   r   r   r   r   )rF   rG   rI   r   r   r   r   rg   s         @@r(   test_ModuleElement_addrf  Q  sI   _Q"#A1A	L$4$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                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        } |t        g d      d       |t        g d      d      } |t        g d      d      } |t        g d	      d
      }|z   |t        g d      d      k(  sJ |z   |t        g d            k(  sJ |z   |t        g d      d      k(  sJ t        dd      z   |t        g d      d      k(  sJ |t        dd      z  j                   |t        g d      d
            sJ t        dd      z   |t        g d      d      k(  sJ t        t        d
t                    }t        |      t        t        fd       t        t        fd       t        t        fd       t        t        fd       y )Nr?   r    r!   r   r   r   r   r   r   r   r   )r   r   r    r   rs   )ri  ri  ri  r   r   )r   r   r   r!      rz   r   r   )r   r   r   r?   )r   r?   r   r   r  c                        d      z  S rV  rW   rX  s   r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>u  ra  r*   c                       dz  S rc  rW   rd  s   r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>v  re  r*   c                       dz  S rc  rW   rd  s   r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>w  s    a4i r*   c                       dz  S rV  rW   rd  s   r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>x  s    a1f 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$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1a=Af\2!<<<<_Q"#A1A
9&'
9&'
9'(
n-r*   c                     t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        } |t        g d      d      } |t        g d      d      } |t        g d            }||z  d |d      z  d	z  k(  sJ ||z  d
 |d      z  dz  k(  sJ d|z   |d       k(  sJ y )Nr?   r    r!   rh  r   r   r[  r   rj  r   r   r  r   	r   r   r   r   rA   r
   rB   r	   r   )rF   rG   rI   rg   r   r   s         r(   test_ModuleElement_divrs  {  s    _Q"#A1A	L$4$4Q$; ;<A	&
a(A	&
a(A	&
A6R!Wb[   6R!WaZ6adU??r*   c                      t        t        dt                    } t        |       }|j	                  dt        j                  dt              z        } |t        g d      d      } |t        g d      d      }|dz   |t        g d      d	      k(  sJ |dz   |t        g d
      d      k(  sJ |dz   |t        g d            k(  sJ |dz   |t        g d            k(  sJ |dz  |k(  sJ |dz  |k(  sJ y )Nr?   r    r!   rh  r   r   r   )r   r   r   r      )r   r    r   r   r   rS   r   rr  )rF   rG   rI   rg   r   s        r(   test_ModuleElement_powrv    s    _Q"#A1A	L$4$4Q$; ;<A	&
a(A	&
a(A6Qvl+266666Qvl+155556Qvl+,,,,6Qvl+,,,,6Q;;6Q;;r*   c                  .   t        t        dt                    } t        |       } |t	        g d      d      dz   |t	        g d      d      k(  sJ t        dd      z  |j                         k(  sJ t        dd      z   |t	        g d	      d
      k(  sJ |j                   |d      d |d      z  d |d      z   |d      g      }|z   |t	        g d      d      k(  sJ |j                         t        t        fd       y )Nr?   r   r   r   r   r   r   rs   )r   r   r   r   r   r    )r   r   r   r   rz   r   )r   r?   r   r   c                       z  S r-   rW   )rI   rg   s   r(   r1   z(test_ModuleElement_mod.<locals>.<lambda>  r   r*   )r   r   r   r   r   r   rl   r}   r   r   r   )rF   rG   rH   rI   rg   s      @@r(   test_ModuleElement_modrz    s    _Q"#A1A	&
q)A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                     t        t        dt                    } t        |       } |t	        g d      d      }|j                  t              t        dt        dz  z  dt        z  z   dz   t        	      k(  sJ |j                  t              t        d
t        dz  z  t        dd      t        z  z   t        dd      z   t        	      k(  sJ y )Nr?   rx  r   r   r   r   r   r   r9  r!   )
r   r   r   r   r   	numeratorr   r	   polyr   r'  s      r(   test_PowerBasisElement_polysr    s    _Q"#A1A	&
q)A;;;$q419}rDy'@1'DR"PPPP66D6>T!dai-"R)d2B"BR1X"MVXYYYYr*   c                      t        t        dt                    } t        |       } |t	        g d            }|j                         dk(  sJ y )Nr?   )r   rV   r   r   )r   r   r   r   r   norm)rF   rG   lams      r(   test_PowerBasisElement_normr    s=    _Q"#A1A
F=!
"C88:??r*   c                      t        t        dt                    } t        |       } |t	        g d            }d|z  d |d      z  k(  sJ |dz   |d       k(  sJ y )Nr?   r[  r   r   r   r/  r    rR  r'  s      r(   test_PowerBasisElement_inverser    s]    _Q"#A1A	&
A6R!W7qter*   c                      t        t        dt                    } t        |       }t	        |d       }|j                         }|t        g dg dg dg dgdt              k(  sJ y )Nr?   c                     | dz  S )Nr   rW   rE  s    r(   r1   z0test_ModuleHomomorphism_matrix.<locals>.<lambda>  
    !q& r*   )r   r   rV   r   )r   r   rV   r   )r   r   rV   r   )r   r   rV   r   r  )r   r   r   r   r   r   r
   r	   )rF   rG   phir0   s       r(   test_ModuleHomomorphism_matrixr    se    _Q"#A1A
Q 0
1C

A	
 r   r*   c                      t        t        dt                    } t        |       }t	        |d       }|j                         }|j                  dk(  sJ y )Nr?   c                     | dz  S r   rW   rE  s    r(   r1   z0test_ModuleHomomorphism_kernel.<locals>.<lambda>  r  r*   r    )r   r   r   r   r   kernelr.   )rF   rG   r  Ns       r(   test_ModuleHomomorphism_kernelr    sC    _Q"#A1A
Q 0
1C

A33!8O8r*   c                      t        t        dt                    } t        |       }|j	                         j                   |d            }j                  |      }|j                         t        g dgdt              k(  sJ |j                  t        j                  dt                    }|j	                         }|j                   |d            }|j                  |      }|t        g dt              k(  sJ t        t        fd       y )Nr?   r   )r   r   r   r   r   r   r   r   r   r   r   r   rV   rV   rV   rV   )r      )r!   r   )r   r   c                  &     j                  d      S rc  r5   )Rs   r(   r1   z1test_EndomorphismRing_represent.<locals>.<lambda>  r7   r*   )r   r   r   r   endomorphism_ringinner_endomorphismr6   rM   r
   r	   rA   zerosr   r<   )rF   rG   r  rO   rH   Spsir  s          @r(   test_EndomorphismRing_representr    s    _Q"#A1A	A


qt
$C
++c
C==?l<,    	
 2 262 >?A	A


qt
$C
++c
C,r62....
 9:r*   c                     t        t        dt                    } t        |       }g }t	         |d      t
        t        |      }|t        | t
              k(  sJ t        |      dk(  sJ t	         |d      t
        t              }|t        | t
              k(  sJ |j                  dt        j                  dt              z        t        t        fd       y )	Nr?   r   )r   powersr9  r|  r   r!   c                  0    t          d      t              S )Nr   )r   r   rX   s   r(   r1   z$test_find_min_poly.<locals>.<lambda>  s    mAaD"&= 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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=   rK   rQ   rZ   r]   ri   rm   rp   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r%  r(  r+  r1  r4  r7  r=  rA  rJ  rO  rS  rY  rf  rp  rs  rv  rz  r  r  r  r  r  r  r  rW   r*   r(   <module>r     sQ    - * * 1    6 4 'K,
B&*!  F
U	?D39&5R\(	I&4<-%0 F8B**1'#'9 .$8(
"((&..	%Z
;&?r*   