a
    Ÿ¬<bì*  ã                   @   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   sP  t tg dƒƒtjhksJ ‚t tg dƒƒtjhks4J ‚t tg dƒƒtjhksNJ ‚t tg ddƒƒtjhksjJ ‚t tg ddƒƒtjhks†J ‚t tg ddƒƒtjhks¢J ‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ t tg ddƒƒt ƒ ksæJ ‚t tg ddƒƒt ƒ ksJ ‚t tg ddƒƒt ƒ ksJ ‚ttd	d„ ƒ ttd
d„ ƒ ttdd„ ƒ t ttgdƒƒtjhksfJ ‚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sRJ ‚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¨J ‚t	ddd\} }}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| ||| d |d |d | | | | ||  || ||  || hksbJ ‚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Â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sVJ ‚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srJ ‚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sDJ ‚t tttgddƒƒtd td t ttd  td hks‚J ‚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	sHJ ‚t tttgddgddgƒƒttd hk	svJ ‚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
s4J ‚t tttgddgddgƒƒtt ttd  hk
sjJ ‚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ƒƒ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ƒƒ||d  | |d  ||  | || d  |d || | ||d  | | |  | | |d | | d | ||  | |d | d || |  || |  ||  |d | || d  || || | | | |  ||  | | |d  |d ||  | | d || | | | | | |d | d | |d |  |d |  | | | ||  h$ks J ‚t t| ||gg d!¢ƒƒtjhksFJ ‚t t| ||gg d"¢ƒƒd|hkslJ ‚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säJ ‚t t| ||gg d&¢ƒƒd||d hksJ ‚t t| ||gg d'¢ƒƒ| d| d hks<J ‚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sÜJ ‚t tt||gg d"¢ƒƒd|hksJ ‚t tt||gg d#¢ƒƒd|hks(J ‚t tt||gg d$¢ƒƒtdhksNJ ‚t tt||gg d%¢ƒƒ|d d|hkszJ ‚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sLJ ‚d S )*Nr   é   é   c                   S   s   t tg ddƒƒS )Nr   r   ©Únextr   © r   r   úp/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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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   _   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   `   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g d¢g d¢ƒƒS )N)r   r   r   )r   r   r   r+   r   r   r   r   r   j   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   ZOner   ÚStopIterationÚ
ValueErrorr   r   r   )ÚiÚjÚkr   r   r   Útest_monomials   s    &, $6<ÿ
"(Bÿ
@(((<<úÿ

"(R4((ûÿ

 "(..,>P$&,.,&.>60,>>ÿ
8ÿ
RDHJüÿ
&&&&,,,FB6@Zýÿ
&&&&,,,FB6@Zýÿr3   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°   s    r6   c                   C   s   t ddƒdksJ ‚d S )N©r   é   r   ©r   r   r   ©r8   r4   r   )r   r   r   r   r   Útest_monomial_mul´   s    r;   c                   C   s   t ddƒdksJ ‚d S )Nr7   r9   ©r   r   r   )r   r   r   r   r   Útest_monomial_div·   s    r=   c                   C   s   t ddƒdksJ ‚d S ©Nr7   r9   )r   r   r   r   r   Útest_monomial_gcdº   s    r?   c                   C   s   t ddƒdksJ ‚d S r>   )r   r   r   r   r   Útest_monomial_lcm½   s    r@   c                   C   s   t dddƒdksJ ‚d S )N©r   r8   é   ©r   rB   r   ©r4   r   é	   )r4   rB   rE   )r   r   r   r   r   Útest_monomial_maxÀ   s    rF   c                   C   s   t ddƒdksJ ‚d S )Nr*   r   )r   r4   rE   )r   r   r   r   r   Útest_monomial_powÃ   s    rG   c                   C   s   t dddƒdksJ ‚d S )NrA   rC   rD   )r   r   r   )r	   r   r   r   r   Útest_monomial_minÆ   s    rH   c                   C   s(   t ddƒdu sJ ‚t ddƒdu s$J ‚d S )Nr*   )r8   rB   r4   T)r   rB   r4   F)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@J ‚|  ¡ td td  ks\J ‚ˆ  ttt¡td td  t ks‚J ‚|  ttt¡td td  ks¤J ‚ˆ jdks²J ‚ˆ j	tttfksÆJ ‚| jdksÔJ ‚| j	tttfksèJ ‚ˆ dksôJ ‚| dksJ ‚ˆ dksJ ‚| dksJ ‚ˆ dkdu s0J ‚ˆ d ˆ d	   krPdksVn J ‚ˆ d ˆ d
   krvdks|n J ‚ˆ d ˆ d   krœdks¢n J ‚| d | d	   krÂdksÈn J ‚| d | d
   krèdksîn J ‚| d | d   krdksn J ‚ˆ d d… dks*J ‚| d d… dks@J ‚ˆ |  t dƒksVJ ‚ˆ |  t dƒkslJ ‚ˆ d t dƒks‚J ‚ˆ d t dƒks˜J ‚ˆ  
| ¡t dƒks°J ‚ˆ  | ¡t dƒksÈJ ‚ˆ  
d¡t dƒksàJ ‚ˆ  d¡t dƒksøJ ‚ˆ d t dƒksJ ‚ˆ d ˆ ks J ‚ˆ d t dƒks6J ‚ˆ d t dƒksLJ ‚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 )Nr7   r9   r   r8   r   r   Fr   éýÿÿÿéþÿÿÿr!   )r   r8   )r   r   r:   r<   r-   )r4   é   r   )rE   é   r   c                      s   ˆ t dƒ S )N)rB   r   r   )r   r   ©Úmr   r   r   ÿ   r   ztest_Monomial.<locals>.<lambda>r*   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   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   r3   r6   r;   r=   r?   r@   rF   rG   rH   rI   rX   r   r   r   r   Ú<module>   s"   4	  