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

 r*   c                  .                          d           S r-   	representr/   s   r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>       D(9(9 r*   c                  ,                                      S r-   )starts_with_unityr/   s   r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s    (;(;(=(= r*   c                  J                          t          dd                    S )Nr   r    )element_from_rationalr   r/   s   r(   r1   z,test_Module_NotImplemented.<locals>.<lambda>   s    (?(?1a(I(I r*   )r   r   NotImplementedErrorr/   s   @r(   test_Module_NotImplementedr=      s    A
,,,
 4 4 4 4555
 9 9 9 9:::
 = = = =>>>
 I I I IJJJJJr*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                    dt          j        dt                    z            }|                    dt          j        dt                    z            }|                    d          |||gk    sJ |                    d          |||gk    sJ |	                                |k    sJ |
                    |          |k    sJ t                      }|	                                J d S )N   r   r!   r    T)include_self)r   r   r   r   submodule_from_matrixr
   eyer	   	ancestorspower_basis_ancestornearest_common_ancestorr   )TABCDr0   s         r(   test_Module_ancestorsrK   "   s@   _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A;;D;))aAY6666;;D;))aAY6666!!##q(((($$Q''1,,,,A!!##+++++r*   c                     t          t          dt                              } t          |           }t	          g d          }|                                }|                    |          du sJ |                    |          du sJ |                    d          du sJ |                    t          j        dt                    d d df                   du sJ |                    t          j        dt                    d d df                   du sJ |                    t          j        dt                    d d df                   du sJ d S )	Nr?   r   TFr   r    r   r!   )r   r   r   r   r   	transposeis_compat_colr
   rB   r	   r   )rF   rG   colrows       r(   test_Module_compat_colrQ   0   sD   _Q""##A1A


C
--//C??34''''??35((((??1&&&&??<+Ar22111a4899UBBBB??<+Ar22111a4899UBBBB??<+Ar22111a4899TAAAAAAr*   c                     t          t          dt                              } t          |            d          j                                        g dk    sJ  d          j                                        g dk    sJ t          j        dt                    d d df         } |          j        |k    sJ t          t          fd           d S )	Nr?   r   r   r   r   r   r   r   r   r   r   r!   r   c                        d          S )N rH   s   r(   r1   z"test_Module_call.<locals>.<lambda>D   s    qquu 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1Q448==??lll****1Q448==??lll****

1b
!
!!!!Q$
'C1S66:
:}}}}%%%%%r*   c                  (   t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                                du sJ |                                du sJ d S )Nr?   r   r!   TF)	r   r   r   r   rA   r
   rB   r	   r9   rF   rG   rH   s      r(   test_Module_starts_with_unityr]   G   s    _Q""##A1A	L$4Q$;$; ;<<A  D((((  E))))))r*   c                  0   t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                                }|	                                }t          t          ||                    D ]n\  }\  }}dgdz  }|j        |k    sJ |j        |k    sJ d||<   | |t          |                    k    sJ d||<   | |t          |                    k    sJ od S )Nr?   r   r!   r   r   )r   r   r   r   rA   r
   rB   r	   basis_elementsbasis_element_pullbacks	enumeratezipmoduler   )	rF   rG   rH   basisbpiepr&   s	            r(   test_Module_basis_elementsri   O   s   _Q""##A1A	L$4Q$;$; ;<<AE	
	"	"	$	$Bs5"~~.. ! !	6AqC!Gx1}}}}x1}}}}!AAfQiiLL    !AAfQiiLL     ! !r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                                j	        
                                g dk    sJ |                                j        |k    sJ |                                j	        
                                g dk    sJ |                                j        |k    sJ d S )Nr?   r   r!   r   r   r   r   )r   r   r   r   rA   r
   rB   r	   zerorO   r%   rc   r\   s      r(   test_Module_zerorm   _   s    _Q""##A1A	L$4Q$;$; ;<<A6688<,,,....6688?a6688<,,,....6688?ar*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                                j	        
                                g dk    sJ |                                j        |k    sJ |                                j	        
                                g dk    sJ |                                j        |k    sJ d S )Nr?   r   r!   rS   )r   r   r   r   rA   r
   rB   r	   onerO   r%   rc   r\   s      r(   test_Module_onerp   i   s    _Q""##A1A	L$4Q$;$; ;<<A5577;----5577>Q5577;----5577>Qr*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                    t          dd                    }|                    t          dd                    }|j
        g dk    sJ |j        dk    sJ |j        |k    sJ |j
        g dk    sJ |j        dk    sJ |j        |k    sJ d S )Nr?   r   r!         )rr   r   r   r   )r   r   r   r   rA   r
   rB   r	   r;   r   coeffsdenomrc   )rF   rG   rH   rArBs        r(   !test_Module_element_from_rationalrx   s   s    _Q""##A1A	L$4Q$;$; ;<<A	
	 	 B	+	+B	
	 	 B	+	+B9%%%%8q====9>>>>9%%%%8q====9>>>>>>r*   c                     t          t          dt                              } t          |           d d          z  d d          z  d d          z  d d          z  g}                    |          |d                                                             |d                                                   }j        |k    sJ t          t          fd           t          t          fd           d S )Nr?   r   r   r      c                  .                          g           S r-   submodule_from_gensrG   s   r(   r1   z1test_Module_submodule_from_gens.<locals>.<lambda>   s    q44R88 r*   c                  \                          d  d          z   d          g          S )Nr    r   r|   )rG   rH   s   r(   r1   z1test_Module_submodule_from_gens.<locals>.<lambda>   s-    q44a!faadd^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aaddFAaaddFAaaddFAaaddF+D	d##A 	QQ 0 011A8q====
:8888999
:DDDDDEEEEEr*   c                     t          t          dt                              } t          |                               dt          j        dt                    z            } |t          g d                    }|	                                }|j
                                        g dk    sJ t          t          fd           t          t          fd           d S )Nr?   r   r!   r   r   r!   rz      c                  ^                          t          j        dt                              S )Nr!   )rA   r
   rB   r   r~   s   r(   r1   z3test_Module_submodule_from_matrix.<locals>.<lambda>   s"    q66|7G27N7NOO r*   c                  d                          dt          j        dt                    z            S )Nr   r?   )rA   r
   rB   r	   r~   s   r(   r1   z3test_Module_submodule_from_matrix.<locals>.<lambda>   s'    q66q<;KAr;R;R7RSS r*   )r   r   r   r   rA   r
   rB   r	   r   	to_parentrO   r%   r   rY   )rF   rH   rg   frG   s       @r(   !test_Module_submodule_from_matrixr      s    _Q""##A1A	L$4Q$;$; ;<<A	&

A	A5::<<<<<''''
:OOOOPPP
:SSSSTTTTTr*   c                     t          t          dt                              } t          |           }|                                } |t          g d                    }|                                }|j                                        g dk    sJ  |d           |d           |d           |d          f\  }}}}||z  |k    sJ |dz  |k    sJ d S )Nr?   r   r   r   r   r    )	r   r   r   r   whole_submoduler   r   rO   r%   )	rF   rG   rH   rg   r   e0e1e2e3s	            r(   test_Module_whole_submoduler      s    _Q""##A1A	A	&

A	A5::<<<<<''''QqTT11Q441qqtt+NBB7b====7b======r*   c                      t          t          dt                              } t          |           }t	          |          dk    sJ d S )Nr?   z&PowerBasis(x**4 + x**3 + x**2 + x + 1))r   r   r   r   repr)rF   rG   s     r(   test_PowerBasis_reprr      sB    _Q""##A1A77>>>>>>>r*   c                      t          t          dt                              } t          |           }t          |           }||k    sJ d S Nr?   )r   r   r   r   r\   s      r(   test_PowerBasis_eqr      s@    _Q""##A1A1A666666r*   c                  .   t          t          dt                              } t          |           }|                                g dg dg dg ddg dg dg ddg dg dd	d
g did}|k    sJ t          fdD                       sJ d S )Nr?   rS   rT   r   r   r   r   r   r   r   r   )r   r   r   r    rV   rV   rV   rV   )r   r   r    )r   r    r    c              3   n   K   | ]/}|         D ]$}|         |         D ]}t          |          V  %0d S r-   r   ).0uvr&   r0   s       r(   	<genexpr>z+test_PowerBasis_mult_tab.<locals>.<genexpr>   sO      CCQQqTCC1Q47CCavayyCCCCCCCCr*   )r   r   r   r   r3   all)rF   rG   expr0   s      @r(   test_PowerBasis_mult_tabr      s    _Q""##A1A	

A,,<<<LLL\\\RR,,<<<4D4D4DEE"""|||44,,,! !C
 8888CCCC!CCCCCCCCCCr*   c                  &   t          t          dt                              } t          |           t	          g d          } |          }                    |          |k    sJ  |d          t          t          fd           d S )Nr?   r   r   ru   c                  .                                    S r-   r5   )rG   bs   r(   r1   z+test_PowerBasis_represent.<locals>.<lambda>   s    1;;q>> r*   )r   r   r   r   r   r6   r   r   )rF   rO   arG   r   s      @@r(   test_PowerBasis_representr      s    _Q""##A1A


C	#A;;q>>S    	#QA
>1111122222r*   c                     t          t          dt                              } t          |           }t          ddt          z  z             }t          t          dz            }t          dt                    }|                    |          j        g dk    sJ |                    |          j        g dk    sJ |                    |          j        g dk    sJ d S )	Nr?   r   r   r!   r   )r   r   r   r   r   rk   )r   r   r   r   element_from_polyrt   )rF   rG   r   ghs        r(   !test_PowerBasis_element_from_polyr      s    _Q""##A1AQ1WAQT

AQ

Aq!!(LLL8888q!!(,<,<,<<<<<q!!(LLL888888r*   c                    	 t          j        d          } t          j        d          }t          |            | t          dd          t          dd          ddg          }                    |          }|j        g dk    sJ |j        dk    sJ |                                |k    sJ  |t          dd          t          dd          ddg          t          t          fd           | 	                    |          }
                    |          		j        g dk    sJ 	j        dk    sJ 		                                |k    sJ |	                              t          t          fd	           t          | j        j                  }|
                    |          		j        g dk    sJ 	j        dk    sJ t          t          	fd
           d S )Nr?   rs   r   r   r    )*      r   r    rz   c                  .                                    S r-   )element_from_ANP)rH   ds   r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>   s    a&8&8&;&; r*   c                  .                                    S r-   )element_from_alg_num)rH   deltas   r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>   s    a&<&<U&C&C r*   c                  ,                                      S r-   )
to_alg_num)epss   r(   r1   z6test_PowerBasis_element__conversions.<locals>.<lambda>   s    3>>#3#3 r*   )r   cyclotomic_fieldr   r   rt   ru   to_ANPr   r   r   r   extminpolyr   )
kLr   rg   alpharI   rH   r   r   r   s
         @@@@r(   $test_PowerBasis_element__conversionsr      s   
AA
AA1A 	
2a88R1XXq!
$%%A	1A8~~~%%%%7a<<<< 88::???? 	
2a88R1XXq!
$%%A
;;;;;<<< LLOOE

 
 
'
'C:''''9>>>> >>u$$$$ LLOOE
CCCCCDDD 	15=!!A

 
 
'
'C:''''9>>>>
>333344444r*   c                      t          t          dt                              } t          |           }|                    dt          j        dt                    z  d          }t          |          dk    sJ d S )Nr?   r   r!   r    r   zCSubmodule[[2, 0, 0, 0], [0, 2, 0, 0], [0, 0, 2, 0], [0, 0, 0, 2]]/3)	r   r   r   r   rA   r
   rB   r	   r   r\   s      r(   test_Submodule_reprr     sl    _Q""##A1A	L$4Q$;$; ;1EEA77[[[[[[[r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                    dt          j        dt                    z  d          }|                                }|j	        dk    r||cxk    r|k    sn J d S )Nr?   r   r!   rz   r    r   r   )
r   r   r   r   rA   r
   rB   r	   reducedru   rF   rG   rH   rI   rJ   s        r(   test_Submodule_reducedr   	  s    _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;1EEA			A7a<<AKKKKaKKKKKKKKr*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                                 |	                    d          }|j
        |j
        k    sJ |                                r|                                rJ |j        |j        d d dd f         k    sJ |                                ddgddgddddgidk    sJ d S )Nr?   r   r!   r   )r   r   r   )r   r   r   r   rA   r
   rB   r	   compute_mult_tabdiscard_beforeparentr   r   r3   rF   rG   rH   rI   s       r(   test_Submodule_discard_beforer     s   _Q""##A1A	L$4Q$;$; ;<<A	A8qx  >)<)<)>)>>>>8qx122&&&&::<<B8A77QAKHHHHHHHHr*   c                  P   t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                    dt          j        dt                    z  d          }|j        |j        k    sJ d S Nr?   r   r!   rz   r    r   )	r   r   r   r   rA   r
   rB   r	   	QQ_matrixr   s       r(   test_Submodule_QQ_matrixr     s    _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;1EEA;!+%%%%%%r*   c                  F  	
 t          t          dt                              } t          |                               dt          j        dt                    z            		                    dt          j        dt                    z            } t          g d                    } t          g d                    } t          g d                    		                    |          }|
                                g dk    sJ |	                    |          }|
                                g dk    sJ                     t          g d	g d
g dgdt                                                              
t          t          dt                              }t          |          } |t          g d                    t          t          
fd           t          t          	fd           t          t          	fd           d S )Nr?   r   r!   r    )rz            r   )r   r    r?   rs   r   rS   rT   r   r    r!   rs   )r   r   r    r!   r?   rz   c                  @                           d                    S )Nr    r5   )rG   Ys   r(   r1   z*test_Submodule_represent.<locals>.<lambda>?  s    1;;qqtt#4#4 r*   c                  .                                    S r-   r5   )rH   a2s   r(   r1   z*test_Submodule_represent.<locals>.<lambda>@      1;;r?? r*   c                  .                                    S r-   r5   )rH   z0s   r(   r1   z*test_Submodule_represent.<locals>.<lambda>A  r   r*   )r   r   r   r   rA   r
   rB   r	   r   r6   r%   rM   r   r   )rF   rI   a0a1b1c0UZrG   rH   r   r   r   s           @@@@@r(   test_Submodule_representr   &  s   _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A	
6///""	#	#B	
6,,,	 	 B	
6,,,	 	 B	
RB7799$$$$	
RB7799$$$$	. r	! ! 9;;		  	 A 	_Q""##A1A	
6$$$%%	&	&B
>44444555
>22222333
>2222233333r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                    dt          j        dt                    z            }|                    dt          j        dt                    z            }|                    |          du sJ |                    |          du sJ |                    |          du sJ d S )Nr?   r   r!   r    TF)	r   r   r   r   rA   r
   rB   r	   is_compat_submoduler   s        r(   "test_Submodule_is_compat_submoduler   D  s    _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A  ##t++++  ##u,,,,  ##u,,,,,,r*   c                  <   t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                    dt          j        dt                    z  d          }||k    sJ d S r   )r   r   r   r   rA   r
   rB   r	   r   s       r(   test_Submodule_eqr   O  s    _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;1EEA666666r*   c                      t          t          dt                              } t          |           }|                    t          g dg dgdt                                                    d          |                    t          g dg dgdt                                                    d	          }|                    t          g d
g dg dgdt                                                    d          }|z   |k    sJ t          t          dt                              }t          |          }|                     |d           |d          g          t          t          fd           d S )Nr?   )r!   r   r   r   r   r!   r   r   r   r!   rz   r   r   
   r   r   r   r   rs   r      )   r   r   r   r   r   r   r   r   r      r   r   r   rs   r   r   c                       z   S r-   rW   )rH   r   s   r(   r1   z$test_Submodule_add.<locals>.<lambda>l      a!e r*   )r   r   r   r   rA   r
   r	   rM   r}   r   	TypeError)rF   rG   rI   rJ   r   r   rH   r   s         @@r(   test_Submodule_addr   W  s   _Q""##A1A	. r! ! 9;;a 	  	) 	)A 	
. r! ! 9;;b 	  	* 	*A 	
. r	! ! 9;;b	 	  	* 	*A
 q5A::::_Q""##A1A	qqttQQqTTl++A
9mmmmm$$$$$r*   c            	         t          t          dt                              } t          |           }|                    t          g dg dgdt                                                    d          }|                    t          g dg dgdt                                                    d	          }|                    t          g d
g dgdt                                                    d          }|                    t          g dg dg dg dgdt                                                    d          }|                    t          g dg dg dgdt                                                    d          }|dz  |k    sJ |dz  |k    sJ |dz  |k    sJ | |d          z  |k    sJ |                    |d          |k    sJ ||z  |k    sJ |dz  |k    sJ d S )Nr?   r   r   r   r   r   r   r   r    )r   r   r   r   r   r   r   rs   )r   r   d   r   )r   r   r   F   )r  r  r  r!   r!      )$  r  r   r   ):  r  r   r   );  r  rs   rs   r   r   r   F)hnfr   )	r   r   r   r   rA   r
   r	   rM   mul)rF   rG   rI   C1C2C3_unredC3s          r(   test_Submodule_mulr  o  s_   _Q""##A1A	. r! ! 9;;b 	  	* 	*A 
	 	 / r" " 9;;a 
! 
) 
)B 
	 	 / r" " 9;;b 
! 
* 
*B &&|	5
 r( (
 9;;c ' + +H 
	 	 / r	" " 9;;c	 
! 
+ 
+B
 q5A::::6Q;;;;r6R<<<<qqtt8r>>>>555(****q5B;;;;6R<<<<<<r*   c            	      d   t          t          dt                              } t          |           }|                                } |t          g d          d          |                    t          j        dt                    d           |t          g d          d          }
                              }||k    sJ |                    t          j        dt                    d           |t          g d          d          }
                              }||k    sJ |                    t          j        dt                    d	           |t          g d
          d          }
                              }||k    sJ  |t          g d                    t          t          fd           |                    t          g dg dg dg dgdt                                                              t          t          fd           d S )Nr?   )Z   T   P   K   x   r   r!   r   )r   r   r   r   )r   r   r   r   r   )r   	   r?   r   r   c                  .                                    S r-   reduce_element)rI   r   s   r(   r1   z/test_Submodule_reduce_element.<locals>.<lambda>  s    (8(8(;(; r*   )r?   r!   r    r   )r   r   rs   rz   )r   r      r   r   r  c                  .                                    S r-   r  )rI   r   s   r(   r1   z/test_Submodule_reduce_element.<locals>.<lambda>  s    1#3#3A#6#6 r*   )r   r   r   r   r   r   rA   r
   rB   r	   r  r   r<   rM   r   )rF   rG   rH   b_bar_expectedb_barrI   r   r   s        @@@r(   test_Submodule_reduce_elementr    sK   _Q""##A1A	A	&!!!
"
"#...A	 0B 7 7qAAAQv...//s;;;NQEN""""	 0B 7 7qAAAQvooo..c:::NQEN""""	 0B 7 7qAAAQvlll++3777NQEN""""	&

A
 ; ; ; ; ;<<<		.
 r! !
 9;;	  	 A >6666677777r*   c                  ,   t          g dg dg dgt                    } t          g dg dg dgt                    }t          g dg dg dgt                    }t          |           du sJ t          |          du sJ t          |          du sJ d S )N)r    r   r   )r   r   r   )r   r   r   )r   r   r   )r    r   r    TF)r   r	   r   )r0   M1M2s      r(   test_is_HNFr     s    
						 
		 	A
 
		

		 
	
 
B
 
						 
	
 
B
 Q4''''R  E))))R  E))))))r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }t          g d          }t          ||          }t          ||          }t          |t                    sJ t          |t                    rJ d S )Nr?   r   r!   r   )r   r   r   r   rA   r
   rB   r	   r   r   
isinstancer   )rF   rG   rH   rO   eAeBs         r(   test_make_mod_eltr%    s    _Q""##A1A	L$4Q$;$; ;<<A


C	a		B	a		Bb+,,,,,"/0000000r*   c                      t          t          dt                              } t          |           } |t	          g d          d          }t          |          dk    sJ d S )Nr?   r   r   r   z[1, 2, 3, 4]/2)r   r   r   r   r   r   rF   rG   rg   s      r(   test_ModuleElement_reprr(    sb    _Q""##A1A	&

a(((A77&&&&&&&r*   c                      t          t          dt                              } t          |           } |t	          g d          d          }|                                }|j        dk    r||k    sJ d S )Nr?   r   r   r   r   )r   r   r   r   r   r   ru   rF   rG   rg   r   s       r(   test_ModuleElement_reducedr+    sl    _Q""##A1A	&

a(((A			A7a<<AFFFFFFr*   c                      t          t          dt                              } t          |           } |t	          g d                    }|                    d          }|j        g dk    sJ d S )Nr?   )r   (   <   r  rs   )rV   r   r    )r   r   r   r   r   reduced_mod_prt   r*  s       r(    test_ModuleElement_reduced_mod_pr1    sp    _Q""##A1A	&!!!
"
"##A	A8&&&&&&r*   c                      t          t          dt                              } t          |           }g d}t	          j        ||          j        |k    sJ d S )Nr?   r   )r   r   r   r   r   from_int_listrt   )rF   rG   r&   s      r(    test_ModuleElement_from_int_listr4    sT    _Q""##A1AA&q!,,3q888888r*   c                      t          t          dt                              } t          |           } |d          }t	          |          dk    sJ d S )Nr?   r   r!   )r   r   r   r   lenr'  s      r(   test_ModuleElement_lenr7    sH    _Q""##A1A	!Aq66Q;;;;;;r*   c                  4   t          t          dt                              } t          |           } |d          }|                                }||j        k    r	||j        usJ |                    t          d                    }|j        j        sJ d S )Nr?   r   r"   )	r   r   r   r   r   rO   r   r"   is_FF)rF   rG   rg   col1col2s        r(   test_ModuleElement_columnr=    s    _Q""##A1A	!A88::D15==T....882a558!!D;r*   c                      t          t          dt                              } t          |           } |t	          g d          d          } |t	          g d          d          }|j        |j        k    sJ d S )Nr?   r   r   r   r    rz   r  r   r    )r   r   r   r   r   QQ_colr*  s       r(   test_ModuleElement_QQ_colrA    s    _Q""##A1A	&

a(((A	&

q)))A8qxr*   c                    	 t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                    dt          j        dt                    z            }|                    dt          j        dt                    z            } |d          }|                                }|	                    |          }|
                                }|j        |u r|j        g dk    sJ |j        |u r|j        g dk    sJ |j        |u r|j        g dk    sJ  |d          	t          t          	fd	           d S )
Nr?   r   r!   r    r   r?   r   r   r   )r   r   r   r   )r   r   r   r   c                  ,                                      S r-   )r   r   s   r(   r1   z1test_ModuleElement_to_ancestors.<locals>.<lambda>  s    q{{}} r*   )r   r   r   r   rA   r
   rB   r	   r   to_ancestorover_power_basisrc   rt   r   rY   )
rF   rG   rH   rI   rJ   eDeCr$  r#  r   s
            @r(   test_ModuleElement_to_ancestorsrJ  
  s`   _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A	
1B	B			B					B9>>bi<<<77779>>bi===88889>>bi===8888	!A
:,,,,-----r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            }|                    dt          j        dt                    z            |                    dt          j        dt                    z            } d                               d                    du sJ  d                               |d                    du sJ  d          	                     |d                    \  }}|j
        |u r	|j
        |u sJ                      |                     d          k    r+ ||                    |                     |d          k    sJ  d          	                     d                    \  }}| d          k    r| d          k    sJ t          t          d	t                              }t          |          t          t          fd
           d S )Nr?   r   r!   r    r   r   TFrs   c                  R      d                                d                    S )Nr   r   )unify)rI   r   s   r(   r1   z2test_ModuleElement_compatibility.<locals>.<lambda>-  s#    aaddjj1&6&6 r*   )r   r   r   r   rA   r
   rB   r	   	is_compatrM  rc   r6   r   r   )	rF   rG   rH   rJ   r   r   r   rI   r   s	          @@r(    test_ModuleElement_compatibilityrO    s   _Q""##A1A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A	L$4Q$;$; ;<<A1Q44>>!!A$$4''''1Q44>>!!A$$5((((1Q44::aaddDAq8q==QX]]]]1Q[[^^!$$1;;q>>):):aadd)B)B)B)B1Q44::aaddDAq!99aadd_Q""##A1A
6666677777r*   c                  |   t          t          dt                              } t          |           } |t	          g d          d          } |t	          g d          d          }||k    sJ t          t          dt                              }t          |          }| |d          k    sJ |d	k    sJ d S )
Nr?   r   r   r   r?  r    rs   r   Q	@r   r   r   r   r   )rF   rG   rg   r   r   r   s         r(   test_ModuleElement_eqrS  0  s    _Q""##A1A	&

a(((A	&

q)))A6666_Q""##A1A!9999999999r*   c                  L   t          t          dt                              } t          |           } |t	          g d          d           |t	          g d          d          }                    |          sJ |                    dt          j        dt                    z            } |t	          g d          d          } |t	          g d          d          }|                    |          sJ  |t	          g d          d	                              t          d
d	                    sJ t          t          d	t                              }t          |          t          t          fd                               d          du sJ d S )Nr?   r   r   r   r?  r    r!   rC  rs   r   c                  @                           d                    S Nr   )equivr   rg   s   r(   r1   z*test_ModuleElement_equiv.<locals>.<lambda>L  s    aggaaddmm 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$4Q$;$; ;<<A	&

a(((A	&

q)))A771::1VLLL!!+++11"R))<<<<<_Q""##A1A
33333444774==E!!!!!!r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            } |t          g d          d           |t          g d          d          } |t          g d	          d
          }|z    |t          g d          d          k    sJ |z
   |t          g d          d          k    sJ |z    |t          g d          d          k    sJ t          dd          z    |t          g d          d          k    sJ |t          dd          z    |t          g d          d          k    sJ t          t          dt                              }t          |          t          t          fd           t          t          fd           d S )Nr?   r    r!   r   rz   r   )r?   rz   rs   r   r   r   r   r   r   r   )r   r   r   rr   r   )r/  r   )r   r  r      rs   )   r   r   r   r   )rr   r   r   r   c                         d          z   S rV  rW   rX  s   r(   r1   z(test_ModuleElement_add.<locals>.<lambda>`      a!!A$$h r*   c                       dz   S NrQ  rW   rg   s   r(   r1   z(test_ModuleElement_add.<locals>.<lambda>a      a$h r*   )r   r   r   r   rA   r
   rB   r	   r   r   r   r   )rF   rG   rI   r   r   r   r   rg   s         @@r(   test_ModuleElement_addrf  Q  s   _Q""##A1A	L$4Q$;$; ;<<A	&

a(((A	&

b)))A	&

a(((Aq5AAf---..b9999999q5AAf---..b9999999q5AAf---..a8888888r!Ryy=AAf%5%5%566bAAAAAAAr!Ryy=AAf%5%5%566bAAAAAAA_Q""##A1A
9&&&&&'''
9&&&&'''''r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            } |t          g d          d           |t          g d          d          } |t          g d          d          } |t          g d	          d
          }|z   |t          g d          d          k    sJ |z   |t          g d                    k    sJ |z   |t          g d          d          k    sJ t          dd          z   |t          g d          d          k    sJ |t          dd          z  
                     |t          g d          d
                    sJ t          dd          z   |t          g d          d          k    sJ t          t          d
t                              }t          |          t          t          fd           t          t          fd           t          t          fd           t          t          fd           d S )Nr?   r    r!   r   r   r   r   r   r   r   r   )r   r   r    r   rs   )ri  ri  ri  r   r   )r   r   r   r!      rz   r   r   )r   r   r   r?   )r   r?   r   r   r  c                         d          z  S rV  rW   rX  s   r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>u  ra  r*   c                       dz  S rc  rW   rd  s   r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>v  re  r*   c                       dz  S rc  rW   rd  s   r(   r1   z(test_ModuleElement_mul.<locals>.<lambda>w  s    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$4Q$;$; ;<<A	&

a(((A	&

a(((A	&

a(((A	&

a(((Aq5AAf11122"=======q5AAf---..//////q5AAf___--R8888888r!Qxx<11VLLL11;;;;;;;2r

N!!!!F<<<$8$8"B"B"BCCCCC1a=AAf\\\22!<<<<<<<_Q""##A1A
9&&&&&'''
9&&&&'''
9''''(((
nnnn-----r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            } |t          g d          d          } |t          g d          d          } |t          g d                    }||z  d |d          z  d	z  k    sJ ||z  d
 |d          z  dz  k    sJ d|z   |d           k    sJ d S )Nr?   r    r!   rh  r   r   r[  r   rj  r   r   r  r   	r   r   r   r   rA   r
   rB   r	   r   )rF   rG   rI   rg   r   r   s         r(   test_ModuleElement_divrs  {  s   _Q""##A1A	L$4Q$;$; ;<<A	&

a(((A	&

a(((A	&

A6R!Wb[    6R!WaZ6aaddU??????r*   c                     t          t          dt                              } t          |           }|                    dt          j        dt                    z            } |t          g d          d          } |t          g d          d          }|dz   |t          g d          d	          k    sJ |dz   |t          g d
          d          k    sJ |dz   |t          g d                    k    sJ |dz   |t          g d                    k    sJ |dz  |k    sJ |dz  |k    sJ d S )Nr?   r    r!   rh  r   r   r   )r   r   r   r      )r   r    r   r   r   rS   r   rr  )rF   rG   rI   rg   r   s        r(   test_ModuleElement_powrv    se   _Q""##A1A	L$4Q$;$; ;<<A	&

a(((A	&

a(((A6QQvlll++266666666QQvlll++155555556QQvlll++,,,,,,6QQvlll++,,,,,,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  |                                k    sJ t          dd          z   |t	          g d	          d
          k    sJ |                     |d          d |d          z  d |d          z   |d          g          }|z   |t	          g d          d          k    sJ |                                t          t          fd           d S )Nr?   r   r   r   r   r   r   rs   )r   r   r   r   r   r    )r   r   r   r   rz   r   )r   r?   r   r   c                       z  S r-   rW   )rI   rg   s   r(   r1   z(test_ModuleElement_mod.<locals>.<lambda>  r   r*   )r   r   r   r   r   r   rl   r}   r   r   r   )rF   rG   rH   rI   rg   s      @@r(   test_ModuleElement_modrz    sv   _Q""##A1A	&

q)))Aq5AAf\\\**!4444444r!Qxx<16688####r!Qxx<11VLLL11;;;;;;;	qqttQqqttVQqqttVQQqTT:;;Aq5AAf\\\**!4444444	A
9mmmmm$$$$$r*   c                     t          t          dt                              } t          |           } |t	          g d          d          }|                    t                    t          dt          dz  z  dt          z  z   dz   t          	          k    sJ |                    t                    t          d
t          dz  z  t          dd          t          z  z   t          dd          z   t          	          k    sJ d S )Nr?   rx  r   r   r   r   r   r   r9  r!   )
r   r   r   r   r   	numeratorr   r	   polyr   r'  s      r(   test_PowerBasisElement_polysr    s    _Q""##A1A	&

q)))A;;;$q419}rDy'@1'DR"P"P"PPPPP66D6>>T!dai-"R))d2B"BR1XX"MVXYYYYYYYYYr*   c                      t          t          dt                              } t          |           } |t	          g d                    }|                                dk    sJ d S )Nr?   )r   rV   r   r   )r   r   r   r   r   norm)rF   rG   lams      r(   test_PowerBasisElement_normr    sX    _Q""##A1A
!F===!!
"
"C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 d S )Nr?   r[  r   r   r   r/  r    rR  r'  s      r(   test_PowerBasisElement_inverser    s    _Q""##A1A	&

A6R!W7qqtter*   c                     t          t          dt                              } t          |           }t	          |d           }|                                }|t          g dg dg dg dgdt                    k    sJ d S )Nr?   c                     | dz  S )Nr   rW   rE  s    r(   r1   z0test_ModuleHomomorphism_matrix.<locals>.<lambda>  
    !q& r*   )r   r   rV   r   )r   r   rV   r   )r   r   rV   r   )r   r   rV   r   r  )r   r   r   r   r   r   r
   r	   )rF   rG   phir0   s       r(   test_ModuleHomomorphism_matrixr    s    _Q""##A1A
Q 0 0
1
1C

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

A3!888888r*   c                     t          t          dt                              } t          |           }|                                                     |d                    }                    |          }|                                t          g dgdt                    k    sJ |
                    t          j        dt                              }|                                }|                     |d                    }|                    |          }|t          g dt                    k    sJ t          t          fd           d S )Nr?   r   )r   r   r   r   r   r   r   r   r   r   r   r   rV   rV   rV   rV   )r      )r!   r   )r   r   c                  .                          d          S rc  r5   )Rs   r(   r1   z1test_EndomorphismRing_represent.<locals>.<lambda>  r7   r*   )r   r   r   r   endomorphism_ringinner_endomorphismr6   rM   r
   r	   rA   zerosr   r<   )rF   rG   r  rO   rH   Spsir  s          @r(   test_EndomorphismRing_representr    s=   _Q""##A1A	A


qqtt
$
$C
++c

C==??l<<<,      	
 262 > >??A	A


qqtt
$
$C
++c

C,r62......
 9 9 9 9:::::r*   c                  .   t          t          dt                              } t          |           }g }t	           |d          t
          t          |          }|t          | t
                    k    sJ t          |          dk    sJ t	           |d          t
          t                    }|t          | t
                    k    sJ |                    dt          j	        dt                    z            t          t          fd           d S )	Nr?   r   )r   powersr9  r|  r   r!   c                  @    t            d          t                    S )Nr   )r   r   rX   s   r(   r1   z$test_find_min_poly.<locals>.<lambda>  s    mAAaDD"&=&= 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aaddB!F333AQr"""""""v;;! 	aaddB!$$$AQr"""""""	L$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     s           - - - - - - - - * * * * * * * * * * 1 1 1 1 1 1 1 1                               6 5 5 5 5 5 4 4 4 4 4 4 ' ' ' ' ' '  K K K, , ,
B 
B 
B& & &* * *! ! !          F F F
U 
U 
U	 	 	? ? ?  D D D3 3 39 9 9&5 &5 &5R\ \ \( ( (	I 	I 	I& & &4 4 4<- - -  % % %0     F8 8 8B* * **1 1 1' ' '# # #' ' '9 9 9         . . .$8 8 8(
 
 
" " "(( ( (&. . ..	 	 	  % % %Z Z Z    
 
 
  ; ; ;&? ? ? ? ?r*   