U
    ˜9%eì*  ã                   @   sÜ   d Z ddlmZmZ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mZmZmZmZmZ ddlmZ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S )zJTests for tools and arithmetics for monomials of distributed polynomials. é    )ÚitermonomialsÚmonomial_countÚmonomial_mulÚmonomial_divÚmonomial_gcdÚmonomial_lcmÚmonomial_maxÚmonomial_minÚmonomial_dividesÚmonomial_powÚMonomial)ÚExactQuotientFailed)ÚaÚbÚcÚxÚyÚz)ÚSÚsymbols)Úraisesc               *   C   st  t tg dƒƒtjhkst‚t tg dƒƒtjhks4t‚t tg dƒƒtjhksNt‚t tg ddƒƒtjhksjt‚t tg ddƒƒtjhks†t‚t tg ddƒƒtjhks¢t‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ t tg ddƒƒt ƒ ksæt‚t tg ddƒƒt ƒ kst‚t tg ddƒƒt ƒ kst‚ttd	d„ ƒ ttd
d„ ƒ ttdd„ ƒ t ttgdƒƒtjhksft‚t ttgdƒƒtjthks†t‚t ttgdƒƒtjttd hks¬t‚t ttgdƒƒtjttd td hksØt‚t ttt	gdƒƒtjhksøt‚t ttt	gdƒƒtjtt	hkst‚t ttt	gdƒƒtjtt	td t	d tt	 hksRt‚t ttt	gdƒƒtjtt	td td t	d t	d tt	 tt	d  t	td  h
ks¨t‚t
ddd\} }}t t| ||gdƒƒtjhksÜt‚t t| ||gdƒƒtj| ||hkst‚t t| ||gdƒƒtj| ||| d |d |d | | | | ||  || ||  || hksbt‚t t| ||gdƒƒtj| ||| d |d |d | | | | ||  || ||  || | d |d |d | d | | d | || d  || d  |d |  |d | | |d  ||d  |d |  |d | | |d  ||d  | | |  | | |  ||  | || | ||  | || | | | | | | | ||  | || |  ||  | || |  h(ksÂt‚t tt| |gdƒƒtjhksät‚t tt| |gdƒƒtjt| |hkst‚t tt| |gdƒƒtjt| |t|  t| | | ||  td | d |d hks^t‚t tt| |gdƒƒtjt| |t|  t| | | ||  td | d |d td | d |d td |  td | t| d  || d  | d | | | |  t|d  | |d  |d |  ||  | t|  | t| |  hks:t‚t tg g ƒƒtjhksVt‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttd d„ ƒ t ttgdgƒƒtjhksrt‚t ttgdgƒƒtjthks”t‚t ttgdgƒƒtjttd hks¼t‚t ttgdgƒƒtjttd td hksêt‚t ttgdgdgƒƒttd td hkst‚t ttgdgdgƒƒtd td hksDt‚t ttt	gddƒƒtd td t	 tt	d  t	d hks‚t‚t ttt	gddƒƒtd tt	 t	d td td t	 tt	d  t	d hksÒt‚t ttt	gddgƒƒtjhksöt‚t ttt	gddgƒƒtjt	hk	st‚t ttt	gddgƒƒtjt	t	d hk	sHt‚t ttt	gddgddgƒƒt	t	d hk	svt‚t ttt	gddgddgƒƒt	d hk	s¢t‚t ttt	gddgƒƒtjthk	sÈt‚t ttt	gddgƒƒtjtt	tt	 hk	söt‚t ttt	gddgƒƒtjtt	tt	 t	d tt	d  hk
s4t‚t ttt	gddgddgƒƒtt	 tt	d  hk
sjt‚t ttt	gddgddgƒƒtt	d  hk
sšt‚t ttt	gddgƒƒtjttd hk
sÆt‚t ttt	gddgƒƒtjtt	tt	 td td t	 hkst‚t ttt	gddgƒƒtjt	d tt	d  ttt	 td td t	d  t	td t	 h	ks`t‚t
ddd\} }}t t| ||gddƒƒ||  | d | | || ||  |d |d || | | h	ksÈt‚t t| ||gddƒƒ||d  | |d  ||  | || d  |d || | ||d  | | |  | | |d | | d | ||  | |d | d || |  || |  ||  |d | || d  || || | | | |  ||  | | |d  |d ||  | | d || | | | | | |d | d | |d |  |d |  | | | ||  h$ks t‚t t| ||gdddgƒƒtjhksHt‚t t| ||gdddgƒƒd|hkspt‚t t| ||gdddgƒƒd|hks˜t‚t t| ||gdddgƒƒ| dhksÀt‚t t| ||gdddgƒƒ|d d|hksît‚t t| ||gdddgƒƒd||d hkst‚t t| ||gdddgƒƒ| d| d hksJt‚t t| ||gdddgƒƒd|||| | | | | | | | | hks’t‚t t| ||gdddgƒƒd|| d |d  || |d | | | ||d  | |d  |d  | d | | d |d  |d |d | | |d  | |d |d  | | | d | | d |d  | || d | | | |d  | |d  | | | | d |d  |d  | | |d  | d | d | |d  hksÈt‚t tt||gdddgƒƒtjhksðt‚t tt||gdddgƒƒd|hkst‚t tt||gdddgƒƒd|hks@t‚t tt||gdddgƒƒtdhksht‚t tt||gdddgƒƒ|d d|hks–t‚t tt||gdddgƒƒd||d hksÄt‚t tt||gdddgƒƒtdtd hksòt‚t tt||gdddgƒƒd|||| t| tt| t| | hks:t‚t tt||gdddgƒƒd|td |d  || |d tt| ||d  t|d  |d  td | td |d  |d |d | t|d  | |d |d  t| td | td |d  | |td | | t|d  t|d  t| | td |d  |d  t| |d  td td | |d  hkspt‚d S )!Nr   é   é   c                   S   s   t tg ddƒƒS )Nr   r   ©Únextr   © r   r   ú_/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/polys/tests/test_monomials.pyÚ<lambda>   ó    z test_monomials.<locals>.<lambda>c                   S   s   t tg ddƒƒS )Nr   r   r   r   r   r   r   r      r   c                   S   s   t tg ddƒƒS )Nr   é   r   r   r   r   r   r      r   r   c                   S   s   t tg dƒƒS ©Néÿÿÿÿ©Úsetr   r   r   r   r   r   %   r   c                   S   s   t ttgdƒƒS r    ©r#   r   r   r   r   r   r   r   &   r   c                   S   s   t tttgdƒƒS r    ©r#   r   r   r   r   r   r   r   r   '   r   zi j kF)Zcommutativec                   S   s   t tg dgƒƒS )Nr   r"   r   r   r   r   r   S   r   c                   S   s   t tg dgƒƒS ©Nr   r"   r   r   r   r   r   T   r   c                   S   s   t tg dgƒƒS ©Nr   r"   r   r   r   r   r   U   r   c                   S   s   t ttgdgg ƒƒS r&   r$   r   r   r   r   r   W   r   c                   S   s   t ttgddgg ƒƒS ©Nr   r   r$   r   r   r   r   r   X   r   c                   S   s   t ttgdddgg ƒƒS ©Nr   r   r   r$   r   r   r   r   r   Y   r   c                   S   s   t ttgg dgƒƒS r&   r$   r   r   r   r   r   [   r   c                   S   s   t ttgg ddgƒƒS r(   r$   r   r   r   r   r   \   r   c                   S   s   t ttgg dddgƒƒS r)   r$   r   r   r   r   r   ]   r   c                   S   s   t tttgddgdddgƒƒS r)   r%   r   r   r   r   r   _   r   c                   S   s    t ttttgdddgddgƒƒS )Nr   r   r   r   ©r#   r   r   r   r   r   r   r   r   r   `   r   c                   S   s   t ttgdgdgƒƒS )Nr   r!   r$   r   r   r   r   r   b   r   c                   S   s   t tttgddgddgƒƒS )Nr   r   r!   r%   r   r   r   r   r   c   r   c                   S   s   t tg g dƒƒS r&   r"   r   r   r   r   r   e   r   c                   S   s   t tg g dƒƒS r'   r"   r   r   r   r   r   f   r   c                   S   s   t tg g dƒƒS ©Nr   r"   r   r   r   r   r   g   r   c                   S   s   t tttgddgddgƒƒS )Nr   r   r   r%   r   r   r   r   r   i   r   c                   S   s"   t ttttgdddgdddgƒƒS )Nr   r   r   r   r*   r   r   r   r   r   j   r   )r#   r   r   ZOneÚAssertionErrorr   ÚStopIterationÚ
ValueErrorr   r   r   )ÚiÚjÚkr   r   r   Útest_monomials   sº    &, $6<ÿ
"(Bÿ
@  
 
 
 

 
 
 

 
 
 

 
 
 
 
 

 
 
 
 
 
úÿ

"(R4  
 

 
 
 

 
 
 

 
ûÿ

 "(..,>P$&,.,&.>60,>>ÿ
8ÿ
R
 
 
   
 
 
 
  
 
 
 
 
    
  
 
 

 üÿ
((((...HB
   
   
   
 
 
    ýÿ
((((...HB
   
   
   
 
 
    ýÿr2   c                   C   s(   t ddƒdkst‚t ddƒdks$t‚d S )Nr   é   r   é
   )r   r,   r   r   r   r   Útest_monomial_count°   s    r5   c                   C   s   t ddƒdkst‚d S )N©r   é   r   ©r   r   r   ©r7   r3   r   )r   r,   r   r   r   r   Útest_monomial_mul´   s    r:   c                   C   s   t ddƒdkst‚d S )Nr6   r8   ©r   r   r   )r   r,   r   r   r   r   Útest_monomial_div·   s    r<   c                   C   s   t ddƒdkst‚d S ©Nr6   r8   )r   r,   r   r   r   r   Útest_monomial_gcdº   s    r>   c                   C   s   t ddƒdkst‚d S r=   )r   r,   r   r   r   r   Útest_monomial_lcm½   s    r?   c                   C   s   t dddƒdkst‚d S )N©r   r7   é   ©r   rA   r   ©r3   r   é	   )r3   rA   rD   )r   r,   r   r   r   r   Útest_monomial_maxÀ   s    rE   c                   C   s   t ddƒdkst‚d S )N©r   r   r   r   )r   r3   rD   )r   r,   r   r   r   r   Útest_monomial_powÃ   s    rG   c                   C   s   t dddƒdkst‚d S )Nr@   rB   rC   )r   r   r   )r	   r,   r   r   r   r   Útest_monomial_minÆ   s    rH   c                   C   s(   t ddƒdkst‚t ddƒdks$t‚d S )NrF   )r7   rA   r3   T)r   rA   r3   F)r
   r,   r   r   r   r   Útest_monomial_dividesÉ   s    rI   c                     sú  t dtttfƒ‰ t dtttfƒ} ˆ  ¡ td td  t ks@t‚|  ¡ td td  ks\t‚ˆ  ttt¡td td  t ks‚t‚|  ttt¡td td  ks¤t‚ˆ j	dks²t‚ˆ j
tttfksÆt‚| j	dksÔt‚| j
tttfksèt‚ˆ dksôt‚| dkst‚ˆ dkst‚| dkst‚ˆ dkdks0t‚ˆ d ˆ d	   krPdksVn t‚ˆ d ˆ d
   krvdks|n t‚ˆ d ˆ d   krœdks¢n t‚| d | d	   krÂdksÈn t‚| d | d
   krèdksîn t‚| d | d   krdksn t‚ˆ d d… dks*t‚| d d… dks@t‚ˆ |  t dƒksVt‚ˆ |  t dƒkslt‚ˆ d t dƒks‚t‚ˆ d t dƒks˜t‚ˆ  | ¡t dƒks°t‚ˆ  | ¡t dƒksÈt‚ˆ  d¡t dƒksàt‚ˆ  d¡t dƒksøt‚ˆ d t dƒkst‚ˆ d ˆ ks t‚ˆ d t dƒks6t‚ˆ d t dƒksLt‚tt‡ fdd„ƒ t dƒ‰tt‡fdd„ƒ tˆƒdksŠt‚tˆ ƒdksœ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 )Nr6   r8   r   r7   r   r   Fr   éýÿÿÿéþÿÿÿr!   )r   r7   )r   r   r9   r;   )r   r   r   )r3   é   r   )rD   é   r   c                      s   ˆ t dƒ S )N)rA   r   r   )r   r   ©Úmr   r   r   ÿ   r   ztest_Monomial.<locals>.<lambda>rF   c                      s   ˆ   ¡ S )N)Úas_exprr   )Úmmr   r   r     r   zMonomial((1, 2, 3))zx**3*y**4*z**1c                      s   ˆ d S r&   r   r   rN   r   r   r     r   c                      s   ˆ d S r&   r   r   rN   r   r   r     r   c                      s   ˆ d S r    r   r   rN   r   r   r     r   c                      s
   ˆ   d¡S r+   )Úgcdr   rN   r   r   r     r   c                      s
   ˆ   d¡S r+   )Úlcmr   rN   r   r   r   	  r   )r   r   r   r   rP   r,   r   r   r   Z	exponentsZgensrR   rS   r   r   r.   ÚstrÚNotImplementedErrorÚ	TypeError)Únr   )rO   rQ   r   Útest_MonomialÍ   sZ     &"&&&&&&rX   N)&Ú__doc__Zsympy.polys.monomialsr   r   r   r   r   r   r   r	   r
   r   r   Zsympy.polys.polyerrorsr   Z	sympy.abcr   r   r   r   r   r   Z
sympy.corer   r   Zsympy.testing.pytestr   r2   r5   r:   r<   r>   r?   rE   rG   rH   rI   rX   r   r   r   r   Ú<module>   s"   4	  