a
    khY                     @   s\  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
d Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+d d! Z,d"d# Z-d$d% Z.d&d' Z/d(d) Z0d*d+ Z1d,d- Z2d.d/ Z3d0d1 Z4d2d3 Z5d4d5 Z6d6d7 Z7d8d9 Z8d:d; Z9d<d= Z:d>d? Z;d@dA Z<dBdC Z=dDdE Z>dFdG Z?dHdI Z@dJdK ZAdLdM ZBdNdO ZCdPdQ ZDdRdS ZEdTdU ZFdVdW ZGdXdY ZHdZd[ ZId\d] ZJd^d_ ZKd`da ZLdbdc ZMddde ZNdfdg ZOdhdi ZPdjdk ZQdldm ZRdndo ZSdpdq ZTdrds ZUdtdu ZVdvS )w    )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                  C   s>   g d} t | }|jjsJ |jdks*J | | ks:J d S )N            )r   r   )r   domainZis_ZZshapeflat)cm r%   Y/var/www/auris/lib/python3.9/site-packages/sympy/polys/numberfields/tests/test_modules.pytest_to_col   s
    r'   c                      sd   t   tt fdd tt fdd tt fdd tt fdd tt fdd d S )Nc                      s    j S N)nr%   Mr%   r&   <lambda>       z,test_Module_NotImplemented.<locals>.<lambda>c                      s      S r(   )mult_tabr%   r*   r%   r&   r,      r-   c                      s
     d S r(   	representr%   r*   r%   r&   r,      r-   c                      s      S r(   )starts_with_unityr%   r*   r%   r&   r,      r-   c                      s     tddS )Nr   r   )element_from_rationalr   r%   r*   r%   r&   r,      r-   )r   r   NotImplementedErrorr%   r%   r*   r&   test_Module_NotImplemented   s    r4   c                  C   s   t tdt} t| }|dtdt }|dtdt }|dtdt }|jdd|||gksrJ |jdd|||gksJ |	 |ksJ |
||ksJ t }|	 d u sJ d S )N   r   r   r   T)Zinclude_self)r   r   r   r   submodule_from_matrixr	   eyer   Z	ancestorsZpower_basis_ancestorZnearest_common_ancestorr   )TABCDr+   r%   r%   r&   test_Module_ancestors"   s    r=   c                  C   s   t tdt} t| }tg d}| }||du s<J ||du sNJ |ddu s`J |tdt	d d df du sJ |tdt
d d df du sJ |tdt	d d df du sJ d S )	Nr5   r   TFr   r   r   r   )r   r   r   r   r   	transposeZis_compat_colr	   r7   r   r   )r8   r9   colrowr%   r%   r&   test_Module_compat_col0   s    &&rA   c                     s   t tdt} t|   dj g dks0J  dj g dksJJ tdtd d df } |j|kstJ t	t
 fdd	 d S )
Nr5   r   r   r   r   r   r   r   r   r   r   r   r   c                      s    dS )Nr%   r%   r:   r%   r&   r,   D   r-   z"test_Module_call.<locals>.<lambda>)r   r   r   r   r?   r"   r	   r7   r   r   
ValueError)r8   r?   r%   rE   r&   test_Module_call=   s    rG   c                  C   sP   t tdt} t| }|dtdt }| du s<J | du sLJ d S )Nr5   r   r   TF)	r   r   r   r   r6   r	   r7   r   r1   r8   r9   r:   r%   r%   r&   test_Module_starts_with_unityG   s
    rI   c            	      C   s   t tdt} t| }|dtdt }| }|	 }t
t||D ]j\}\}}dgd }|j|ksnJ |j|ks|J d||< ||t|ksJ d||< ||t|ksJJ qJd S )Nr5   r   r   r   r   )r   r   r   r   r6   r	   r7   r   Zbasis_elementsZbasis_element_pullbacks	enumeratezipmoduler   )	r8   r9   r:   ZbasisZbpiepr#   r%   r%   r&   test_Module_basis_elementsO   s    
rP   c                  C   s   t tdt} t| }|dtdt }| j	
 g dksFJ | j|ksXJ | j	
 g dksrJ | j|ksJ d S )Nr5   r   r   r   r   r   r   )r   r   r   r   r6   r	   r7   r   zeror?   r"   rL   rH   r%   r%   r&   test_Module_zero_   s    rS   c                  C   s   t tdt} t| }|dtdt }| j	
 g dksFJ | j|ksXJ | j	
 g dksrJ | j|ksJ d S )Nr5   r   r   rB   )r   r   r   r   r6   r	   r7   r   Zoner?   r"   rL   rH   r%   r%   r&   test_Module_onei   s    rT   c                  C   s   t tdt} t| }|dtdt }|t	dd}|t	dd}|j
g dks^J |jdkslJ |j|kszJ |j
g dksJ |jdksJ |j|ksJ d S )Nr5   r   r         )rU   r   r   r   )r   r   r   r   r6   r	   r7   r   r2   r   coeffsdenomrL   )r8   r9   r:   ZrAZrBr%   r%   r&   !test_Module_element_from_rationals   s    rY   c                     s   t tdt} t|  d d d d d d d d g} ||d  |d  }j|kstJ tt	 fdd tt	 fdd d S )	Nr5   r   r   r      c                      s
     g S r(   submodule_from_gensr%   r9   r%   r&   r,      r-   z1test_Module_submodule_from_gens.<locals>.<lambda>c                      s     d d dgS )Nr   r   r[   r%   r9   r:   r%   r&   r,      r-   )
r   r   r   r   r\   columnZhstackmatrixr   rF   )r8   Zgensr+   r%   r^   r&   test_Module_submodule_from_gens   s    ,
ra   c                     s   t tdt} t|   dtdt }|tg d}|	 }|j
 g dksZJ tt fdd tt fdd d S )	Nr5   r   r   r   r   r   rZ      c                      s     tdtS )Nr   )r6   r	   r7   r   r%   r]   r%   r&   r,      r-   z3test_Module_submodule_from_matrix.<locals>.<lambda>c                      s     dtdt S )Nr   r5   )r6   r	   r7   r   r%   r]   r%   r&   r,      r-   )r   r   r   r   r6   r	   r7   r   r   	to_parentr?   r"   r   rF   )r8   r:   rN   fr%   r]   r&   !test_Module_submodule_from_matrix   s    rf   c            	      C   s   t tdt} t| }| }|tg d}| }|j g dksLJ |d|d|d|df\}}}}|| |ksJ |d |ksJ d S )Nr5   r   r   r   r   r   )	r   r   r   r   whole_submoduler   rd   r?   r"   )	r8   r9   r:   rN   re   Ze0e1e2Ze3r%   r%   r&   test_Module_whole_submodule   s    $rj   c                  C   s*   t tdt} t| }t|dks&J d S )Nr5   z&PowerBasis(x**4 + x**3 + x**2 + x + 1))r   r   r   r   repr)r8   r9   r%   r%   r&   test_PowerBasis_repr   s    rl   c                  C   s.   t tdt} t| }t| }||ks*J d S Nr5   )r   r   r   r   rH   r%   r%   r&   test_PowerBasis_eq   s    rn   c                     s   t tdt} t| }|  g dg dg dg ddg dg dg ddg dg dd	d
g did} |ks|J t fdd D sJ d S )Nr5   rB   rC   r   r   r   r   r   r   r   r   )r   r   r   r   rD   rD   rD   rD   )r   r   r   )r   r   r   c                 3   s6   | ].} | D ] } | | D ]}t |V  qqqd S r(   r   ).0uvr#   r*   r%   r&   	<genexpr>   r-   z+test_PowerBasis_mult_tab.<locals>.<genexpr>)r   r   r   r   r.   all)r8   r9   expr%   r*   r&   test_PowerBasis_mult_tab   s    
rx   c                     s`   t tdt} t|  tg d} |} ||ks<J  |ddtt fdd d S )Nr5   r   r   rX   c                      s
     S r(   r/   r%   r9   br%   r&   r,      r-   z+test_PowerBasis_represent.<locals>.<lambda>)r   r   r   r   r   r0   r   r   )r8   r?   ar%   rz   r&   test_PowerBasis_represent   s    r}   c                  C   s   t tdt} t| }t ddt  }t td }t dt}||jg dksTJ ||jg dkslJ ||jg dksJ d S )	Nr5   r   r   r   r   )r   r   r   r   rq   rQ   )r   r   r   r   Zelement_from_polyrW   )r8   r9   re   ghr%   r%   r&   !test_PowerBasis_element_from_poly   s    
r   c                     sT  t d} t d}t|  | t ddt ddddg} |}|jg dksTJ |jdksbJ | |ksrJ |t ddt ddddgtt fdd	 | 	|} 
|jg dksJ jdksJ 	 |ksJ |	tt fd
d	 t| jj}|
|jg dks.J jdks>J ttfdd	 d S )Nr5   rV   r   r   r   )*      r   r   rZ   c                      s
     S r(   )element_from_ANPr%   )r:   dr%   r&   r,      r-   z6test_PowerBasis_element__conversions.<locals>.<lambda>c                      s
     S r(   )element_from_alg_numr%   )r:   deltar%   r&   r,      r-   c                      s      S r(   )
to_alg_numr%   )epsr%   r&   r,      r-   )r   Zcyclotomic_fieldr   r   rW   rX   Zto_ANPr   r   r   r   extZminpolyr   )kLr|   rN   alphar;   r%   )r:   r   r   r   r&   $test_PowerBasis_element__conversions   s,    






r   c                  C   sD   t tdt} t| }|jdtdt dd}t|dks@J d S )Nr5   r   r   r   ry   zCSubmodule[[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 2]]/3)	r   r   r   r   r6   r	   r7   r   rk   rH   r%   r%   r&   test_Submodule_repr  s    r   c                  C   sv   t tdt} t| }|dtdt }|jdtdt dd}| }|j	dkrn||  krl|ksrn J d S )Nr5   r   r   rZ   r   ry   r   )
r   r   r   r   r6   r	   r7   r   reducedrX   r8   r9   r:   r;   r<   r%   r%   r&   test_Submodule_reduced	  s    r   c                  C   s   t tdt} t| }|dtdt }|  |	d}|j
|j
ksNJ | r^| rbJ |j|jd d dd f ksJ | ddgddgddddgidksJ d S )Nr5   r   r   r   )r   r   r   )r   r   r   r   r6   r	   r7   r   Zcompute_mult_tabZdiscard_beforeparentr   r`   r.   r8   r9   r:   r;   r%   r%   r&   test_Submodule_discard_before  s    
 r   c                  C   sZ   t tdt} t| }|dtdt }|jdtdt dd}|j|jksVJ d S Nr5   r   r   rZ   r   ry   )	r   r   r   r   r6   r	   r7   r   Z	QQ_matrixr   r%   r%   r&   test_Submodule_QQ_matrix  s
    r   c                     s<  t tdt} t|   dtdt dtdt } tg d} tg d} tg d	|}|
 g dksJ |	|}|
 g dksJ  tg d	g d
g dgdt t tdt}t|}|tg dtt fdd ttfdd ttfdd d S )Nr5   r   r   r   )rZ            rb   )r   r   r5   rV   r   rB   rC   ro   r   r   rV   )r   r   r   r   r5   rZ   c                      s     dS )Nr   r/   r%   )r9   Yr%   r&   r,   ?  r-   z*test_Submodule_represent.<locals>.<lambda>c                      s
     S r(   r/   r%   )r:   a2r%   r&   r,   @  r-   c                      s
     S r(   r/   r%   )r:   z0r%   r&   r,   A  r-   )r   r   r   r   r6   r	   r7   r   r   r0   r"   r>   r   r   )r8   r;   Za0Za1b1Zc0UZr%   )r9   r:   r   r   r   r&   test_Submodule_represent&  s0    


r   c                  C   s   t tdt} t| }|dtdt }|dtdt }|dtdt }||du sjJ ||du s|J ||du sJ d S )Nr5   r   r   r   TF)	r   r   r   r   r6   r	   r7   r   Zis_compat_submoduler   r%   r%   r&   "test_Submodule_is_compat_submoduleD  s    r   c                  C   sV   t tdt} t| }|dtdt }|jdtdt dd}||ksRJ d S r   )r   r   r   r   r6   r	   r7   r   r   r%   r%   r&   test_Submodule_eqO  s
    r   c                     s   t tdt} t| }|jtg dg dgdt dd |jtg dg dgdt d	d}|jtg d
g dg dgdt dd} | |ksJ t tdt}t|}||d|dgt	t
 fdd d S )Nr5   )r   r   r   r   r   r   r   r   r   r   rZ   ry   r   
   r   r   r   r   rV   r      )   r   r   r   r   r   r   r   r   r      r   r   r   rV   r   r   c                      s     S r(   r%   r%   r:   r   r%   r&   r,   l  r-   z$test_Submodule_add.<locals>.<lambda>)r   r   r   r   r6   r	   r   r>   r\   r   	TypeError)r8   r9   r;   r<   r   r   r%   r   r&   test_Submodule_addW  s@    r   c                  C   sp  t tdt} t| }|jtg dg dgdt dd}|jtg dg dgdt d	d}|jtg d
g dgdt dd}|jtg dg dg dg dgdt dd}|jtg dg dg dgdt dd}|d |ksJ |d |ksJ |d |ksJ ||d |ks0J |j|dd|ksHJ || |ksZJ |d |kslJ d S )Nr5   r   r   r   r   ry   r   r   r   )r   r   r   r   r   r   r   rV   )r   r   d   r   )r   r   r   F   )r   r   r   r   r      )$  r   r   r   ):  r   r   r   );  r   rV   rV   r   r   r   F)Zhnfr   )	r   r   r   r   r6   r	   r   r>   mul)r8   r9   r;   ZC1ZC2ZC3_unredZC3r%   r%   r&   test_Submodule_mulo  sh    r   c                     s\  t tdt} t| }| }|tg ddd|jtdt	dd |tg ddd} 
}||ksrJ |jtdt	dd |tg ddd} 
}||ksJ |jtdt	d	d |tg d
dd} 
}||ksJ |tg dtt fdd |tg dg dg dg dgdt	  tt fdd d S )Nr5   )Z   T   P   K   x   ry   r   r   )r   r   r   r   )r   r   r   r   rc   )r   	   r5   r   r   c                      s
     S r(   reduce_elementr%   )r;   r|   r%   r&   r,     r-   z/test_Submodule_reduce_element.<locals>.<lambda>)r5   r   r   r   )r   rc   rV   rZ   )r   r      r   rp   r   c                      s
     S r(   r   r%   )r;   r{   r%   r&   r,     r-   )r   r   r   r   rg   r   r6   r	   r7   r   r   r   r3   r>   r   )r8   r9   r:   Zb_bar_expectedZb_barr%   )r;   r|   r{   r&   test_Submodule_reduce_element  s6    



r   c                  C   s   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 sdJ t|du stJ t|du sJ d S )N)r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   TF)r
   r   r   )r+   ZM1ZM2r%   r%   r&   test_is_HNF  s0    r   c                  C   sl   t tdt} t| }|dtdt }tg d}t	||}t	||}t
|tsZJ t
|trhJ d S )Nr5   r   r   r   )r   r   r   r   r6   r	   r7   r   r   r   
isinstancer   )r8   r9   r:   r?   eAeBr%   r%   r&   test_make_mod_elt  s    

r   c                  C   s>   t tdt} t| }|tg ddd}t|dks:J d S )Nr5   r   r   ry   z[1, 2, 3, 4]/2)r   r   r   r   r   rk   r8   r9   rN   r%   r%   r&   test_ModuleElement_repr  s    r   c                  C   sL   t tdt} t| }|tg ddd}| }|jdkrD||ksHJ d S )Nr5   rb   r   ry   r   )r   r   r   r   r   r   rX   r8   r9   rN   re   r%   r%   r&   test_ModuleElement_reduced  s
    r   c                  C   sF   t tdt} t| }|tg d}|d}|jg dksBJ d S )Nr5   )r   (   <   r   rV   )rD   r   r   )r   r   r   r   r   Zreduced_mod_prW   r   r%   r%   r&    test_ModuleElement_reduced_mod_p  s
    
r   c                  C   s8   t tdt} t| }g d}t||j|ks4J d S )Nr5   r   )r   r   r   r   r   Zfrom_int_listrW   )r8   r9   r#   r%   r%   r&    test_ModuleElement_from_int_list  s    r   c                  C   s2   t tdt} t| }|d}t|dks.J d S )Nr5   r   r   )r   r   r   r   lenr   r%   r%   r&   test_ModuleElement_len  s    r   c                  C   s^   t tdt} t| }|d}| }||jkr:||jus>J |jtdd}|jjsZJ d S )Nr5   r   r    )	r   r   r   r   r_   r?   r   r    Zis_FF)r8   r9   rN   Zcol1Zcol2r%   r%   r&   test_ModuleElement_column  s    r   c                  C   sR   t tdt} t| }|tg ddd}|tg ddd}|j|jksNJ d S )Nr5   r   r   ry   r   rZ   r   r   r   )r   r   r   r   r   ZQQ_colr   r%   r%   r&   test_ModuleElement_QQ_col  s
    r   c            	         s   t tdt} t| }|dtdt }|dtdt }|dtdt }|d}| }|	|}|
 }|j|u r|jg dksJ |j|u r|jg dksJ |j|u r|jg dksJ |d tt fd	d
 d S )Nr5   r   r   r   r   r5   r   r   r   )r   r   r   r   )r   r   r   r   c                      s      S r(   )rd   r%   r|   r%   r&   r,     r-   z1test_ModuleElement_to_ancestors.<locals>.<lambda>)r   r   r   r   r6   r	   r7   r   rd   Zto_ancestorZover_power_basisrL   rW   r   rF   )	r8   r9   r:   r;   r<   ZeDZeCr   r   r%   r   r&   test_ModuleElement_to_ancestors
  s    
r   c                     sN  t tdt} t| }|dtdt }|dtdt  |dtdt } d ddu srJ  d|ddu sJ  d	|d\}}|j
|u r|j
|u sJ   | dkr||||dksJ  d	 d\}}| dkr| dks J t td	t}t|tt fd
d d S )Nr5   r   r   r   r   r   TFrV   c                      s    d dS )Nr   r   )unifyr%   r;   r   r%   r&   r,   -  r-   z2test_ModuleElement_compatibility.<locals>.<lambda>)r   r   r   r   r6   r	   r7   r   Z	is_compatr   rL   r0   r   r   )r8   r9   r:   r<   rs   rt   r   r%   r   r&    test_ModuleElement_compatibility  s    0 r   c                  C   s   t tdt} t| }|tg ddd}|tg ddd}||ksJJ t tdt}t|}||dkspJ |d	ks|J d S )
Nr5   r   r   ry   r   r   rV   r   Q	@r   r   r   r   r   )r8   r9   rN   re   r   r   r%   r%   r&   test_ModuleElement_eq0  s    r   c                     s   t tdt} t| }|tg ddd|tg ddd}|sLJ |dtdt	 }|tg ddd}|tg ddd}||sJ |tg dd	dt
d
d	sJ t td	t}t| tt fdd ddu sJ d S )Nr5   r   r   ry   r   r   r   r   rV   r   c                      s     dS Nr   )equivr%   r   rN   r%   r&   r,   L  r-   z*test_ModuleElement_equiv.<locals>.<lambda>r   F)r   r   r   r   r   r   r6   r	   r7   r   r   r   r   )r8   r9   re   r;   r~   r   r   r%   r   r&   test_ModuleElement_equiv=  s    $r   c                     sV  t tdt} t| }|dtdt }|tg ddd|tg ddd}|tg d	d
d}| |tg dddksJ | |tg dddksJ | |tg dddksJ t	dd |tg dddksJ |t	dd |tg dddksJ t tdt}t| t
t fdd t
tfdd d S )Nr5   r   r   r   rZ   ry   )r5   rZ   rV   rc   r   r   r   r   r   r   )r   r   r   rU   r   )r   r   )r   r   r      rV   )   r   r   r   r   )rU   r   r   r   c                      s    d S r   r%   r%   r   r%   r&   r,   `  r-   z(test_ModuleElement_add.<locals>.<lambda>c                      s    d S Nr   r%   r%   rN   r%   r&   r,   a  r-   )r   r   r   r   r6   r	   r7   r   r   r   r   r   )r8   r9   r;   re   r~   r   r%   r   r&   test_ModuleElement_addQ  s       &(r   c                     s  t tdt} t| }|dtdt }|tg ddd|tg ddd}|tg ddd}|tg d	d
d}| |tg dddksJ | |tg dksJ | |tg dddksJ t	dd |tg dddksJ |t	dd 
|tg dd
ds(J t	dd |tg dddksPJ t td
t}t| tt fdd ttfdd ttfdd ttfdd d S )Nr5   r   r   r   r   r   r   ry   r   rp   r   )r   r   r   r   rV   )r   r   r   r   rq   )r   r   r   r      rZ   r   r   )r   r   r   r5   )r   r5   r   r   r   c                      s    d S r   r%   r%   r   r%   r&   r,   u  r-   z(test_ModuleElement_mul.<locals>.<lambda>c                      s    d S r   r%   r%   r   r%   r&   r,   v  r-   c                      s    d S r   r%   r%   r   r%   r&   r,   w  r-   c                      s    d S r   r%   r%   r   r%   r&   r,   x  r-   )r   r   r   r   r6   r	   r7   r   r   r   r   r   r   ZeroDivisionError)r8   r9   r;   re   r~   r   r   r%   r   r&   test_ModuleElement_muld  s&      &*(r   c                  C   s   t tdt} t| }|dtdt }|tg ddd}|tg ddd}|tg d}|| d|d d	 ksJ || d
|d d ksJ d| |d ksJ d S )Nr5   r   r   r   ry   r   r   r   r   r   r   r   r   	r   r   r   r   r6   r	   r7   r   r   )r8   r9   r;   rN   re   r~   r%   r%   r&   test_ModuleElement_div{  s    r   c                  C   s   t tdt} t| }|dtdt }|tg ddd}|tg ddd}|d |tg dd	dkstJ |d |tg d
ddksJ |d |tg dksJ |d |tg dksJ |d |ksJ |d |ksJ d S )Nr5   r   r   r   ry   rp   r   )r   r   r   rc      )r   r   r   r   r   rB   r   r   )r8   r9   r;   rN   r~   r%   r%   r&   test_ModuleElement_pow  s      r   c                     s   t tdt} t| }|tg dddd |tg dddksJJ tdd | ksdJ tdd |tg d	d
dksJ ||dd|d d|d |dg}| |tg dddksJ |  t	t
 fdd d S )Nr5   r   r   rc   r   r   ry   rV   )r   r   rc   r   r   r   )r   r   r   r   rZ   r   )r   r5   r   r   c                      s     S r(   r%   r%   r;   rN   r%   r&   r,     r-   z(test_ModuleElement_mod.<locals>.<lambda>)r   r   r   r   r   r   rR   r\   rg   r   r   rH   r%   r   r&   test_ModuleElement_mod  s     &* r   c                  C   s   t tdt} t| }|tg ddd}|jtdt dtd  dt  d td	ksZJ |jtdt d
td  t	ddt  t	dd t	d	ksJ d S )Nr5   r   r   ry   r   rc   r   r   r   r   )
r   r   r   r   r   	numeratorr   r   Zpolyr   r   r%   r%   r&   test_PowerBasisElement_polys  s
    0r   c                  C   s:   t tdt} t| }|tg d}| dks6J d S )Nr5   )r   rD   r   r   )r   r   r   r   r   Znorm)r8   r9   Zlamr%   r%   r&   test_PowerBasisElement_norm  s    r   c                  C   sX   t tdt} t| }|tg d}d| d|d ks>J |d |d ksTJ d S )Nr5   r   r   r   r   r   r   r   r   r%   r%   r&   test_PowerBasisElement_inverse  s
    r   c                  C   s\   t tdt} t| }t|dd }| }|tg dg dg dg dgdtksXJ d S )	Nr5   c                 S   s   | d S )Nr   r%   r   r%   r%   r&   r,     r-   z0test_ModuleHomomorphism_matrix.<locals>.<lambda>)r   r   rD   r   )r   r   rD   r   )r   r   rD   r   )r   r   rD   r   r   )r   r   r   r   r   r`   r	   r   )r8   r9   phir+   r%   r%   r&   test_ModuleHomomorphism_matrix  s    r  c                  C   s>   t tdt} t| }t|dd }| }|jdks:J d S )Nr5   c                 S   s   | d S rm   r%   r   r%   r%   r&   r,     r-   z0test_ModuleHomomorphism_kernel.<locals>.<lambda>r   )r   r   r   r   r   kernelr)   )r8   r9   r  Nr%   r%   r&   test_ModuleHomomorphism_kernel  s
    r  c                     s   t tdt} t| }|   |d} |}| tg dgdt	ksTJ |
tdt	}| }||d}||}|tg dt	ksJ tt fdd d S )	Nr5   r   )r   r   r   r   r   r   r   r   r   r   r   r   rD   rD   rD   rD   )r      )r   r   )r   r   c                      s
     dS r   r/   r%   Rr%   r&   r,     r-   z1test_EndomorphismRing_represent.<locals>.<lambda>)r   r   r   r   Zendomorphism_ringZinner_endomorphismr0   r>   r	   r   r6   zerosr   r3   )r8   r9   r  r?   r:   Spsir%   r  r&   test_EndomorphismRing_represent  s     


r  c                     s   t tdt} t| }g }t|dtt|d}|t | tdksBJ t|dksRJ t|dttd}|t | tdksxJ |dt	dt
  tt fdd	 d S )
Nr5   r   )r   powersr   r   r   r   c                      s   t  dtS )Nr   )r   r   r%   rE   r%   r&   r,     r-   z$test_find_min_poly.<locals>.<lambda>)r   r   r   r   r   r   r   r6   r	   r7   r   r   r   )r8   r9   r  r$   r%   rE   r&   test_find_min_poly  s    r  N)WZ	sympy.abcr   r   Zsympy.polysr   r   Zsympy.polys.domainsr   r   r   Zsympy.polys.matricesr	   r
   Z#sympy.polys.numberfields.exceptionsr   r   r   Z sympy.polys.numberfields.modulesr   r   r   r   r   r   r   r   r   Z"sympy.polys.numberfields.utilitiesr   Zsympy.polys.polyerrorsr   Zsympy.testing.pytestr   r'   r4   r=   rA   rG   rI   rP   rS   rT   rY   ra   rf   rj   rl   rn   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r%   r%   r%   r&   <module>   s|   ,	



)	#!
