
    sgK+                         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 Zd Zd	 Zd
 Zd Zd Z d Z!d Z"d Z#d Z$d Z%y)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                  t)   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(  sJ 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        t	        t
        d        t	        t
        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        t	        t        d	        t	        t        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z  hk(  sJ t        t        t        gd            t        j                  t        t        dz  t        dz  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z  t        dz  t        t        z  hk(  sJ t        t        t        t        gd            t        j                  t        t        t        dz  t        dz  t        dz  t        dz  t        t        z  t        t        dz  z  t        t        dz  z  h
k(  sJ t        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z  |dz  |dz  | |z  | |z  || z  ||z  || z  ||z  hk(  sJ t        t        | ||gd            h t        j                  | ||| dz  |dz  |dz  | |z  | |z  || z  ||z  || z  ||z  | dz  |dz  |dz  | dz  |z  | dz  |z  || dz  z  || dz  z  |dz  | z  |dz  |z  | |dz  z  ||dz  z  |dz  | z  |dz  |z  | |dz  z  ||dz  z  | |z  | z  | |z  | z  || z  |z  ||z  |z  || z  |z  ||z  |z  | |z  |z  | |z  |z  || z  |z  ||z  | z  || z  |z  ||z  | z  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        | z  t        |z  | |z  || z  t        dz  | dz  |dz  hk(  sJ t        t        t        | |gd            t        j                  t        | |t        | z  t        |z  | |z  || z  t        dz  | dz  |dz  t        dz  | dz  |dz  t        dz  | z  t        dz  |z  t        | dz  z  || dz  z  | dz  |z  | |z  | z  t        |dz  z  | |dz  z  |dz  | z  || z  |z  t        | z  |z  t        |z  | z  hk(  sJ t        t        g g             t        j                  hk(  sJ t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        d        t	        t        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z  hk(  sJ t        t        t        gdg            t        j                  t        t        dz  t        dz  hk(  sJ t        t        t        gdgdg            t        t        dz  t        dz  hk(  sJ t        t        t        gdgdg            t        dz  t        dz  hk(  sJ t        t        t        t        gdd            t        dz  t        dz  t        z  t        t        dz  z  t        dz  hk(  sJ t        t        t        t        gdd            t        dz  t        t        z  t        dz  t        dz  t        dz  t        z  t        t        dz  z  t        dz  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z  hk(  sJ t        t        t        t        gddgddg            t        t        dz  hk(  sJ t        t        t        t        gddgddg            t        dz  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        z  hk(  sJ t        t        t        t        gddg            t        j                  t        t        t        t        z  t        dz  t        t        dz  z  hk(  sJ t        t        t        t        gddgddg            t        t        z  t        t        dz  z  hk(  sJ t        t        t        t        gddgddg            t        t        dz  z  hk(  sJ t        t        t        t        gddg            t        j                  t        t        dz  hk(  sJ t        t        t        t        gddg            t        j                  t        t        t        t        z  t        dz  t        dz  t        z  hk(  sJ t        t        t        t        gddg            t        j                  t        dz  t        t        dz  z  t        t        t        z  t        dz  t        dz  t        dz  z  t        t        dz  t        z  h	k(  sJ t        dd      \  } }}t        t        | ||gdd            || z  | dz  | |z  ||z  || z  |dz  |dz  ||z  | |z  h	k(  sJ t        t        | ||gdd            h ||dz  z  | |dz  z  || z  |z  || dz  z  |dz  ||z  |z  ||dz  z  | |z  | z  | |z  |dz  |z  | dz  |z  || z  |z  |dz  | dz  ||z  | z  ||z  | z  || z  |dz  |z  || dz  z  ||z  ||z  |z  | |z  | z  || z  |z  | |dz  z  |dz  || z  |z  | dz  ||z  | |z  | |z  |z  |dz  | dz  |z  |dz  | z  |dz  | z  | |z  |z  || z  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z  d|hk(  sJ t        t        | ||gg d%            d||dz  hk(  sJ t        t        | ||gg d&            | d| dz  hk(  sJ t        t        | ||gg d'            d||||z  | |z  | | |z  | |z  |z  hk(  sJ t        t        | ||gg d(            d|| dz  |dz  z  ||z  |dz  | | |z  ||dz  z  | |dz  z  |dz  z  | dz  |z  | dz  |dz  z  |dz  |dz  |z  | |dz  z  |z  |dz  |dz  z  | |z  | dz  |z  | dz  |dz  z  |z  || dz  |z  |z  | |dz  z  | |dz  z  | |z  |z  | dz  |dz  z  |dz  z  | |z  |dz  z  | dz  | dz  |z  |dz  z  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(  sJ t        t        t        ||gg d$            |dz  d|hk(  sJ t        t        t        ||gg d%            d||dz  hk(  sJ t        t        t        ||gg d&            t        dt        dz  hk(  sJ t        t        t        ||gg d'            d||||z  t        |z  t        t        |z  t        |z  |z  hk(  sJ t        t        t        ||gg d(            d|t        dz  |dz  z  ||z  |dz  t        t        |z  ||dz  z  t        |dz  z  |dz  z  t        dz  |z  t        dz  |dz  z  |dz  |dz  |z  t        |dz  z  |z  |dz  |dz  z  t        |z  t        dz  |z  t        dz  |dz  z  |z  |t        dz  |z  |z  t        |dz  z  t        |dz  z  t        |z  |z  t        dz  |dz  z  |dz  z  t        |z  |dz  z  t        dz  t        dz  |z  |dz  z  hk(  sJ y ))Nr         c                  .    t        t        g dd            S )Nr   r   nextr        S/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_monomials.py<lambda>z test_monomials.<locals>.<lambda>       $}RA'>"? r   c                  .    t        t        g dd            S )Nr   r   r   r   r   r    r!   z test_monomials.<locals>.<lambda>   r"   r   c                  .    t        t        g dd            S )Nr      r   r   r   r    r!   z test_monomials.<locals>.<lambda>   r"   r   r%   c                  ,    t        t        g d            S Nsetr   r   r   r    r!   z test_monomials.<locals>.<lambda>%   s    s=R#89 r   c                  6    t        t        t        gd            S r'   r*   r   r   r   r   r    r!   z test_monomials.<locals>.<lambda>&   s    s=!b#9: r   c                  @    t        t        t        t        gd            S r'   r*   r   r   r   r   r   r    r!   z test_monomials.<locals>.<lambda>'   s    s=!Q#<= r   zi j kF)commutativec                  .    t        t        g dg            S )Nr   r)   r   r   r    r!   z test_monomials.<locals>.<lambda>S       s=aS#9: r   c                  .    t        t        g dg            S Nr   r)   r   r   r    r!   z test_monomials.<locals>.<lambda>T   r1   r   c                  .    t        t        g dg            S Nr   r)   r   r   r    r!   z test_monomials.<locals>.<lambda>U   r1   r   c                  :    t        t        t        gdgg             S r3   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>W   s    s=!qc2#>? r   c                  <    t        t        t        gddgg             S Nr   r   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>X   s    s=!q!fb#AB r   c                  <    t        t        t        gg dg             S Nr   r   r%   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>Y   s    s=!i#DE r   c                  :    t        t        t        gg dg            S r3   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>[   s    s=!b1##>? r   c                  <    t        t        t        gg ddg            S r8   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>\   s    s=!b1a&#AB r   c                  <    t        t        t        gg g d            S r:   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>]   s    s=!b)#DE r   c                  J    t        t        t        t        gddgg d            S )Nr   r   r;   r.   r   r   r    r!   z test_monomials.<locals>.<lambda>_   s    s=!Q!Q#KL r   c                  T    t        t        t        t        t        gg dddg            S )Nr;   r   r   r*   r   r   r   r   r   r   r    r!   z test_monomials.<locals>.<lambda>`   s    s=!QI1v#NO r   c                  <    t        t        t        gdgdg            S )Nr   r(   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>b   s    s=!qcB4#@A r   c                  J    t        t        t        t        gddgddg            S )Nr   r   r(   r.   r   r   r    r!   z test_monomials.<locals>.<lambda>c   s     s=!Q!Q!R#IJ r   c                  .    t        t        g g d            S r3   r)   r   r   r    r!   z test_monomials.<locals>.<lambda>e       s=R#;< r   c                  .    t        t        g g d            S r5   r)   r   r   r    r!   z test_monomials.<locals>.<lambda>f   rE   r   c                  .    t        t        g g d            S Nr%   r)   r   r   r    r!   z test_monomials.<locals>.<lambda>g   rE   r   c                  J    t        t        t        t        gddgddg            S )Nr   r   r   r.   r   r   r    r!   z test_monomials.<locals>.<lambda>i   s     s=!Q!Q!Q#HI r   c                  T    t        t        t        t        t        gg dg d            S )N)r   r   r%   )r   r   r   rA   r   r   r    r!   z test_monomials.<locals>.<lambda>j   s    s=!QIy#Q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   r   Oner   StopIteration
ValueErrorr   r   r   )ijks      r    test_monomialsrR      s;    }R#$///}R#$///}R#$///}RA&'AEE7222}RA&'AEE7222}RA&'AEE7222
=?@
=?@
=?@}RA&'35000}RA&'35000}RA&'35000
:9:
::;
:=>}aS!$%!%%000}aS!$%!%%333}aS!$%!%%AqD)9999}aS!$%!%%AqD!Q$)????}aVQ'(QUUG333}aVQ'(QUUAqM999}aVQ'(QUUAq!Q$1ac,JJJJ}aVQ'(UUAq!Q$1adAqD!A#qAvqAvFG G G g51GAq!}aAY*+w666}aAY*+q!Q/????}aAY*+EE1aAqD!Q$1ac1Q3!QqS!A#qsKL L L }aAY*+QUU A q ! QT 1a4 A qs AaC 1 ac 1Q3 ! qDQ$ !1qD1HdQh()AqD23ad( qD1H  dQh )*AqD 34ad( qD1H	  dQh	 )*AqD	 34ad(	
 aCE
 Q3q5
 #$A#a%
 *+1Q
 12!A
 89s1u aCE Q3q5 #$A#a% *+1Q 12!A 89s1u   }aAY*+w666}aAY*+q!Q/????}aAY*+q!Q!QqS!A#qQRsTUWXTXZ[]^Z^`acd`d/eeee}aAY*+UUAq!QqS!A#qsAaCAq!tQTqD!Q$1qD1HadQh1Ha!Q$h1q!A#a%1Ha!Q$h1q!A#a%EAIq1uqy   }R$%!%%000
::;
::;
::;
:?@
:BC
:EF
:?@
:BC
:EF
:LM
:OP
:AB
:JK
:<=
:<=
:<=
:IJ
:RS}aS1#&'AEE7222}aS1#&'AEE1:555}aS1#&'AEE1ad+;;;;}aS1#&'AEE1adAqD+AAAA}aS1#s+,AqD!Q$???}aS1#s+,Aq!t<<<}aVQ*+1ad1fa1fad/KKKK}aVQ*+1ac1a4Aq!tAvqQRTUQUvWXZ[W[/\\\\}aVaV,-!%%888}aVaV,-!%%;;;}aVaV,-!%%AqD1AAAA}aVaVaV45!QTBBB}aVaVaV45!Q$???}aVaV,-!%%;;;}aVaV,-!%%Aqs1CCCC}aVaV,-!%%AqsAqD!AqD&1QQQQ}aVaVaV45!A#qAvFFF}aVaVaV45!AqD&AAA}aVaV,-!%%AqD1AAAA}aVaV,-!%%AqsAqD!Q$q&1QQQQ}aVaV,-UUAqD!AqD&!QqS!Q$1QT	1ad1fEF F F g51GAq!}aAY1-.qS!Q$!QqS!A#q!tQT1Q3!<= = =}aAY1-.Qq!tV Qq!tV QqSU AadF AqD !A#a% 1a4 1Q ! qDFqDF$%aCE+,a412A78s1u>?c!eEFqSqDFadF$%aC)*1Q01!A78s1u>?1fFGd aCE a4 "#1 '(c ,-Q3q5 34Q$ 9:1Q AB1Q IJ1Q aCE	 Q3	   }aAY	23w>>>}aAY	231v===}aAY	231v===}aAY	231v===}aAY	231a|CCC}aAY	231ad|CCC}aAY	231ad|CCC}aAY	231a1ac1aPQcSTUVSVWXSX7YYYY}aAY	231a419ac1a4AaC1a41a41qDFAqDAIq!tQT!VQq!tVAXqDAIqsAqDFAqDAIaKAqDF1HadFAadFAaCE1a419QT>1Q3q!t8QT1a4PQ6RSUVRV;   }aAY	23w>>>}aAY	231v===}aAY	231v===}aAY	231v===}aAY	231a|CCC}aAY	231ad|CCC}aAY	231ad|CCC}aAY	231a1ac1aPQcSTUVSVWXSX7YYYY}aAY	231a419ac1a4AaC1a41a41qDFAqDAIq!tQT!VQq!tVAXqDAIqsAqDFAqDAIaKAqDF1HadFAadFAaCE1a419QT>1Q3q!t8QT1a4PQ6RSUVRV;  r   c                  H    t        dd      dk(  sJ t        dd      dk(  sJ y )Nr      r%   
   )r   r   r   r    test_monomial_countrV      s,    !Q1$$$!Q2%%%r   c                  &    t        dd      dk(  sJ y )Nr%      r   r   r   r   rY   rT   r   )r   r   r   r    test_monomial_mulr\          	9-:::r   c                  &    t        dd      dk(  sJ y )NrX   rZ   r   r   r   )r   r   r   r    test_monomial_divr`      r]   r   c                  &    t        dd      dk(  sJ y NrX   rZ   )r   r   r   r    test_monomial_gcdrc      r]   r   c                  &    t        dd      dk(  sJ y rb   )r   r   r   r    test_monomial_lcmre      r]   r   c                  (    t        ddd      dk(  sJ y )Nr%   rY      r   rh   r   rT   r%   	   )rT   rh   rk   )r	   r   r   r    test_monomial_maxrl          	9i8IEEEr   c                  &    t        dd      dk(  sJ y )Nr;   r%   )r%   rT   rk   )r   r   r   r    test_monomial_powro      s    	1%222r   c                  (    t        ddd      dk(  sJ y )Nrg   ri   rj   )r   r%   r   )r
   r   r   r    test_monomial_minrq      rm   r   c                  D    t        dd      du sJ t        dd      du sJ y )Nr;   )rY   rh   rT   T)r   rh   rT   F)r   r   r   r    test_monomial_dividesrs      s,    Iy1T999Iy1U:::r   c                     t        dt        t        t        f      t        dt        t        t        f      } j	                         t        dz  t        dz  z  t        z  k(  sJ | j	                         t        dz  t        dz  z  k(  sJ j	                  t
        t        t              t
        dz  t        dz  z  t        z  k(  sJ | j	                  t
        t        t              t
        dz  t        dz  z  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k7  sJ dk7  sJ | dk(  sJ dk(  du sJ d   d	   cxk(  rdk(  sJ  J d   d
   cxk(  rdk(  sJ  J d   d   cxk(  rdk(  sJ  J | d   | d	   cxk(  rdk(  sJ  J | d   | d
   cxk(  rdk(  sJ  J | d   | d   cxk(  rdk(  sJ  J d d dk(  sJ | d d dk(  sJ | z  t        d      k(  sJ | z  t        d      k(  sJ dz  t        d      k(  sJ dz  t        d      k(  sJ j                  |       t        d      k(  sJ j                  |       t        d      k(  sJ j                  d      t        d      k(  sJ j                  d      t        d      k(  sJ dz  t        d      k(  sJ dz  k(  sJ dz  t        d      k(  sJ dz  t        d      k(  sJ t        d      }t        d      D ]  } || z  k(  sJ |z  } t        t        fd       t        d      t        t        fd       t!              dk(  sJ t!              dk(  sJ t        t"        fd       t        t"        fd       t        t        fd       t        t$        fd       t        t$        fd       y )NrX   rZ   r%   rY   r   r   Fr   r(   )r%   rY   )r   r   r[   r_   rK   )rT      r   )rk      r%   rU   c                        t        d      z  S )N)rh   r   r   )r   ms   r    r!   ztest_Monomial.<locals>.<lambda>  s    (9*=(= r   r;   c                  $     j                         S )N)as_expr)mms   r    r!   ztest_Monomial.<locals>.<lambda>  s    rzz| r   zMonomial((1, 2, 3))zx**3*y**4*z**1c                       dz  S r3   r   rz   s   r    r!   ztest_Monomial.<locals>.<lambda>	      ! r   c                       dz  S r3   r   rz   s   r    r!   ztest_Monomial.<locals>.<lambda>
  r   r   c                       dz  S r'   r   rz   s   r    r!   ztest_Monomial.<locals>.<lambda>  s    q"u r   c                  &     j                  d      S rH   )gcdrz   s   r    r!   ztest_Monomial.<locals>.<lambda>      aeeAh r   c                  &     j                  d      S rH   )lcmrz   s   r    r!   ztest_Monomial.<locals>.<lambda>  r   r   )r   r   r   r   r}   r   r   r   	exponentsgensr   r   ranger   r   rN   strNotImplementedError	TypeError)n_ar{   r~   s     @@r    test_Monomialr      s   Q1I&AQ1I&A99;!Q$q!t)A+%%%99;!Q$q!t)###99Q1Aad1,,,99Q1Aad***;;)###66aAY;;)###66aAY	>>	>>	>>	>>FuQ41R5AQ41R5AQ41R5AQ41R5AQ41R5AQ41R5ARa5F??Ra5F??Q3(9%%%%Q3(9%%%%Y;(9----Y;(9----558x	****558x	****55x	222255x	2222a48I&&&&a4199a48I&&&&a48J''''	)	B2Y QTzz
a  =>	)	B
:+,r7++++q6%%%%
,
,
:}%
9&'
9&'r   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   rR   rV   r\   r`   rc   re   rl   ro   rq   rs   r   r   r   r    <module>r      si    P    7 & & ! '\|&;;;;F3F;@(r   