o
    oÇhK+  ã                   @   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   út/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-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)Ú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   r0   c                   S   ó   t tg g dƒƒS r)   r#   r   r   r   r   r   e   r   c                   S   r3   r*   r#   r   r   r   r   r   f   r   c                   S   r3   ©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   r0   c                   S   s   t ttttgg d¢g d¢ƒƒS )N)r   r   r    )r   r   r   r1   r   r   r   r   r   j   r2   ©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   Ú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   ©rC   r=   r   )r   r   r   r   r   Útest_monomial_mul´   ó   rF   c                   C   rA   )NrB   rD   ©r   r   r   )r   r   r   r   r   Útest_monomial_div·   rG   rI   c                   C   s   t ddƒdks	J ‚d S ©NrB   rD   )r   r   r   r   r   Útest_monomial_gcdº   rG   rK   c                   C   s   t ddƒdks	J ‚d S rJ   )r   r   r   r   r   Útest_monomial_lcm½   rG   rL   c                   C   ó   t dddƒdks
J ‚d S )N©r    rC   é   ©r   rO   r   ©r=   r    é	   )r=   rO   rR   )r   r   r   r   r   Útest_monomial_maxÀ   ó   rS   c                   C   rA   )Nr/   r    )r    r=   rR   )r   r   r   r   r   Útest_monomial_powÃ   rG   rU   c                   C   rM   )NrN   rP   rQ   )r   r    r   )r	   r   r   r   r   Útest_monomial_minÆ   rT   rV   c                   C   s(   t ddƒdu s	J ‚t ddƒdu sJ ‚d S )Nr/   )rC   rO   r=   T)r   rO   r=   F)r
   r   r   r   r   Útest_monomial_dividesÉ   r@   rW   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 dƒ}tdƒD ]} |ˆ |  ks°J ‚|ˆ 9 }q¥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 )NrB   rD   r    rC   r   r   Fr   éýÿÿÿéþÿÿÿr"   )r    rC   )r   r   rE   rH   r5   )r=   é   r   )rR   é   r    r>   c                      s   ˆ t dƒ S )N)rO   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   r\   r   r   r   	  r`   c                      s   ˆ d S r)   r   r   r\   r   r   r   
  r`   c                      s   ˆ d S r!   r   r   r\   r   r   r     r`   c                      ó
   ˆ   d¡S r4   )Úgcdr   r\   r   r   r     ó   
 c                      ra   r4   )Úlcmr   r\   r   r   r     rc   )r   r   r   r   r^   r   r   r   Ú	exponentsÚgensrb   rd   Úranger   r   r8   ÚstrÚNotImplementedErrorÚ	TypeError)ÚnÚ_ar   )r]   r_   r   Útest_MonomialÍ   sb    &"$$$$$&rm   N)&Ú__doc__Úsympy.polys.monomialsr   r   r   r   r   r   r   r	   r
   r   r   Úsympy.polys.polyerrorsr   Ú	sympy.abcr   r   r   r   r   r   Ú
sympy.corer   r   Úsympy.testing.pytestr   r<   r?   rF   rI   rK   rL   rS   rU   rV   rW   rm   r   r   r   r   Ú<module>   s$    4	  