o
    à8Vaì*  ã                   @   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   sÚ  t tg dƒƒtjhksJ ‚t tg dƒƒtjhksJ ‚t tg dƒƒtjhks'J ‚t tg ddƒƒtjhks5J ‚t tg ddƒƒtjhksCJ ‚t tg ddƒƒtjhksQJ ‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ t tg ddƒƒt ƒ kssJ ‚t tg ddƒƒt ƒ ks€J ‚t tg ddƒƒt ƒ ksJ ‚ttd	d„ ƒ ttd
d„ ƒ ttdd„ ƒ t ttgdƒƒtjhks°J ‚t ttgdƒƒtjthks¿J ‚t ttgdƒƒtjttd hksÑJ ‚t ttgdƒƒtjttd td hksæJ ‚t tttgdƒƒtjhksõJ ‚t tttgdƒƒtjtthksJ ‚t tttgdƒƒtjtttd td tt hks"J ‚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sMJ ‚t	ddd\} }}t t| ||gdƒƒtjhksgJ ‚t t| ||gdƒƒtj| ||hks{J ‚t t| ||gdƒƒtj| ||| d |d |d | | | | ||  || ||  || hksªJ ‚t t| ||gdƒƒh tj’| ’|’|’| d ’|d ’|d ’| | ’| | ’||  ’|| ’||  ’|| ’| d ’|d ’|d ’| d | ’| d | ’|| d  ’|| d  ’|d |  ’|d | ’| |d  ’||d  ’|d |  ’|d | ’| |d  ’||d  ’| | |  ’| | |  ’||  | ’|| | ’||  | ’|| | ’| | | ’| | | ’||  | ’|| |  ’||  | ’|| |  ’ks‚J ‚t tt| |gdƒƒtjhks“J ‚t tt| |gdƒƒtjt| |hks§J ‚t tt| |gdƒƒtjt| |t|  t| | | ||  td | d |d hksÐJ ‚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>J ‚t tg g ƒƒtjhksLJ ‚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sÚJ ‚t ttgdgƒƒtjthksëJ ‚t ttgdgƒƒtjttd hksÿJ ‚t ttgdgƒƒtjttd td hksJ ‚t ttgdgdgƒƒttd td hks-J ‚t ttgdgdgƒƒtd td hksCJ ‚t tttgddƒƒtd td t ttd  td hksbJ ‚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ŠJ ‚t tttgddgƒƒtjhksœJ ‚t tttgddgƒƒtjthks¯J ‚t tttgddgƒƒtjttd hksÅJ ‚t tttgddgddgƒƒttd hksÜJ ‚t tttgddgddgƒƒtd hksòJ ‚t tttgddgƒƒtjthksJ ‚t tttgddgƒƒtjtttt hksJ ‚t tttgddgƒƒtjtttt td ttd  hks;J ‚t tttgddgddgƒƒtt ttd  hksVJ ‚t tttgddgddgƒƒttd  hksnJ ‚t tttgddgƒƒtjttd hks„J ‚t tttgddgƒƒtjtttt td td t hks£J ‚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ÑJ ‚t	ddd\} }}t t| ||gddƒƒ||  | d | | || ||  |d |d || | | h	ksJ ‚t t| ||gddƒƒh ||d  ’| |d  ’||  | ’|| d  ’|d ’|| | ’||d  ’| | |  ’| | ’|d | ’| d | ’||  | ’|d ’| d ’|| |  ’|| |  ’||  ’|d | ’|| d  ’|| ’|| | ’| | |  ’||  | ’| |d  ’|d ’||  | ’| d ’|| ’| | ’| | | ’|d ’| d | ’|d |  ’|d |  ’| | | ’||  ’ksÕJ ‚t t| ||gg d!¢ƒƒtjhksèJ ‚t t| ||gg d"¢ƒƒd|hksûJ ‚t t| ||gg d#¢ƒƒd|hksJ ‚t t| ||gg d$¢ƒƒ| dhks!J ‚t t| ||gg d%¢ƒƒ|d d|hks7J ‚t t| ||gg d&¢ƒƒd||d hksMJ ‚t t| ||gg d'¢ƒƒ| d| d hkscJ ‚t t| ||gg d(¢ƒƒd|||| | | | | | | | | hks†J ‚t t| ||g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 | |d  hks J ‚t tt||gg d!¢ƒƒtjhks3J ‚t tt||gg d"¢ƒƒd|hksFJ ‚t tt||gg d#¢ƒƒd|hksYJ ‚t tt||gg d$¢ƒƒtdhkslJ ‚t tt||gg d%¢ƒƒ|d d|hks‚J ‚t tt||gg d&¢ƒƒd||d hks˜J ‚t tt||gg d'¢ƒƒtdtd hks®J ‚t tt||gg d(¢ƒƒd|||| t| tt| t| | hksÑJ ‚t tt||gg d)¢ƒƒ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	skJ ‚d S )*Nr   é   é   c                   S   ó   t tg ddƒƒS )Nr   r   ©Únextr   © r   r   úB/usr/lib/python3/dist-packages/sympy/polys/tests/test_monomials.pyÚ<lambda>   ó    z test_monomials.<locals>.<lambda>c                   S   r   )Nr   r   r   r   r   r   r   r      r   c                   S   r   )Nr   é   r   r   r   r   r   r      r   r    c                   S   s   t tg dƒƒS ©Néÿÿÿÿ©Úsetr   r   r   r   r   r   %   s    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   '   s    zi j kF)Zcommutativec                   S   ó   t tg dgƒƒS )Nr   r#   r   r   r   r   r   S   r   c                   S   r'   ©Nr   r#   r   r   r   r   r   T   r   c                   S   r'   ©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   ó    c                   S   s   t ttgddgg ƒƒS ©Nr   r   r%   r   r   r   r   r   X   ó    c                   S   s   t ttgg d¢g ƒƒS ©N©r   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 g d¢ƒƒS r-   r%   r   r   r   r   r   ]   r,   c                   S   s   t tttgddgg d¢ƒƒS )Nr   r   r.   r&   r   r   r   r   r   _   ó    c                   S   s   t ttttgg d¢ddgƒƒS )Nr.   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   ó   t tg g dƒƒS r(   r#   r   r   r   r   r   e   r   c                   S   r2   r)   r#   r   r   r   r   r   f   r   c                   S   r2   ©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g d¢g d¢ƒƒS )N)r   r   r    )r   r   r   r0   r   r   r   r   r   j   r1   ©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   ZOner   ÚStopIterationÚ
ValueErrorr   r   r   )ÚiÚjÚkr   r   r   Útest_monomials   sÒ  $*$6<
ÿ"(B
ÿ\ÿÿÿ
þ
þ
þ
þ
ý
ý
ý
ý
ü
ü
ü
ü
û
û
û
û
û
û
ú
ú
ú
ú
ú
ú
ÿ"
(R4((û
ÿ
 "(..,>P$&,.,&.>60,>>
ÿ8
ÿf
ÿ
ÿ
ÿÿÿ
ÿ
ÿÿ
þ
þþ
þ
þ
þ
þþ
ýýýý
ýý
ý
ý
ý
üü
ÿ&&&&,,,FB6@Zý
ÿ&&&&,,,FB6@Zýÿr:   c                   C   s(   t ddƒdks	J ‚t ddƒdksJ ‚d S )Nr   é   r    é
   )r   r   r   r   r   Útest_monomial_count°   ó   r=   c                   C   ó   t ddƒdks	J ‚d S )N©r    é   r   ©r   r   r   ©rA   r;   r   )r   r   r   r   r   Útest_monomial_mul´   ó   rD   c                   C   r?   )Nr@   rB   ©r   r   r   )r   r   r   r   r   Útest_monomial_div·   rE   rG   c                   C   s   t ddƒdks	J ‚d S ©Nr@   rB   )r   r   r   r   r   Útest_monomial_gcdº   rE   rI   c                   C   s   t ddƒdks	J ‚d S rH   )r   r   r   r   r   Útest_monomial_lcm½   rE   rJ   c                   C   ó   t dddƒdks
J ‚d S )N©r    rA   é   ©r   rM   r   ©r;   r    é	   )r;   rM   rP   )r   r   r   r   r   Útest_monomial_maxÀ   ó   rQ   c                   C   r?   )Nr.   r    )r    r;   rP   )r   r   r   r   r   Útest_monomial_powÃ   rE   rS   c                   C   rK   )NrL   rN   rO   )r   r    r   )r	   r   r   r   r   Útest_monomial_minÆ   rR   rT   c                   C   s(   t ddƒdu s	J ‚t ddƒdu sJ ‚d S )Nr.   )rA   rM   r;   T)r   rM   r;   F)r
   r   r   r   r   Útest_monomial_dividesÉ   r>   rU   c                     sè  t dtttfƒ‰ t dtttfƒ} ˆ  ¡ td td  t ks J ‚|  ¡ td td  ks.J ‚ˆ  ttt¡td td  t ksAJ ‚|  ttt¡td td  ksRJ ‚ˆ jdksYJ ‚ˆ j	tttfkscJ ‚| jdksjJ ‚| j	tttfkstJ ‚ˆ dkszJ ‚| dks€J ‚ˆ dks†J ‚| dksŒJ ‚ˆ dkdu s”J ‚ˆ d ˆ d	   kr£dks¦J ‚ J ‚ˆ d ˆ d
   krµdks¸J ‚ J ‚ˆ d ˆ d   krÇdksÊJ ‚ J ‚| d | d	   krÙdksÜJ ‚ J ‚| d | d
   krëdksîJ ‚ J ‚| d | d   krþdksJ ‚ J ‚ˆ d d… dksJ ‚| d d… dksJ ‚ˆ |  t dƒks"J ‚ˆ |  t dƒks-J ‚ˆ d t dƒks8J ‚ˆ d t dƒksCJ ‚ˆ  
| ¡t dƒksOJ ‚ˆ  | ¡t dƒks[J ‚ˆ  
d¡t dƒksgJ ‚ˆ  d¡t dƒkssJ ‚ˆ d t dƒks~J ‚ˆ d ˆ ks‡J ‚ˆ d t dƒks’J ‚ˆ d t dƒksJ ‚tt‡ fdd„ƒ t dƒ‰tt‡fdd„ƒ tˆƒdks¼J ‚tˆ ƒdksÅJ ‚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 )Nr@   rB   r    rA   r   r   Fr   éýÿÿÿéþÿÿÿr"   )r    rA   )r   r   rC   rF   r4   )r;   é   r   )rP   é   r    c                      s   ˆ t dƒ S )N)rM   r   r   )r   r   ©Úmr   r   r   ÿ   s    ztest_Monomial.<locals>.<lambda>r.   c                      s   ˆ   ¡ S )N)Úas_exprr   )Úmmr   r   r     ó    zMonomial((1, 2, 3))zx**3*y**4*z**1c                      s   ˆ d S r(   r   r   rZ   r   r   r     r^   c                      s   ˆ d S r(   r   r   rZ   r   r   r     r^   c                      s   ˆ d S r!   r   r   rZ   r   r   r     r^   c                      ó
   ˆ   d¡S r3   )Úgcdr   rZ   r   r   r     ó   
 c                      r_   r3   )Úlcmr   rZ   r   r   r   	  ra   )r   r   r   r   r\   r   r   r   Z	exponentsZgensr`   rb   r   r   r6   ÚstrÚNotImplementedErrorÚ	TypeError)Únr   )r[   r]   r   Útest_MonomialÍ   sZ    &"$$$$$&rg   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   r:   r=   rD   rG   rI   rJ   rQ   rS   rT   rU   rg   r   r   r   r   Ú<module>   s$    4	  