
    gK+                         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%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                  /   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 d S ))Nr         c                  >    t          t          g dd                    S )Nr   r   nextr        \/var/www/html/ai-engine/env/lib/python3.11/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#899 r   c                  H    t          t          t          gd                    S r'   r*   r   r   r   r   r    r!   z test_monomials.<locals>.<lambda>&   s    s=!b#9#9:: r   c                  T    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#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                  L    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                  N    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#ABB r   c                  N    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=!iii#D#DEE r   c                  L    t          t          t          gg dg                    S r3   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>[   s    s=!b1##>#>?? r   c                  N    t          t          t          gg ddg                    S r8   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>\   s     s=!b1a&#A#ABB r   c                  N    t          t          t          gg g d                    S r:   r,   r   r   r    r!   z test_monomials.<locals>.<lambda>]   s     s=!b)))#D#DEE r   c                  ^    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#KLL r   c                  j    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III1v#N#NOO r   c                  N    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A r   c                  ^    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#IJ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                  ^    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#HII r   c                  j    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IIIyyy#Q#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   r   Oner   StopIteration
ValueErrorr   r   r   )ijks      r    test_monomialsrR      s    }R##$$////}R##$$////}R##$$////}RA&&''AE72222}RA&&''AE72222}RA&&''AE72222
=??@@@
=??@@@
=??@@@}RA&&''3550000}RA&&''3550000}RA&&''3550000
:99:::
:::;;;
:==>>>}aS!$$%%!%0000}aS!$$%%!%3333}aS!$$%%!%AqD)99999}aS!$$%%!%AqD!Q$)?????}aVQ''((QUG3333}aVQ''((QUAqM9999}aVQ''((QUAq!Q$1ac,JJJJJ}aVQ''((UAq!Q$1adAqD!A#qAvqAvFG G G G g5111GAq!}aAY**++w6666}aAY**++q!Q/?????}aAY**++E1aAqD!Q$1ac1Q3!QqS!A#qsKL L L L }aAY**++QU 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6}aAY**++q!Q/?????}aAY**++q!Q!QqS!A#qQRsTUWXTXZ[]^Z^`acd`d/eeeee}aAY**++UAq!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0
:::;;;
:::;;;
:::;;;
:??@@@
:BBCCC
:EEFFF
:??@@@
:BBCCC
:EEFFF
:LLMMM
:OOPPP
:AABBB
:JJKKK
:<<===
:<<===
:<<===
:IIJJJ
:RRSSS}aS1#&&''AE72222}aS1#&&''AE1:5555}aS1#&&''AE1ad+;;;;;}aS1#&&''AE1adAqD+A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K}aVQ**++1ac1a4Aq!tAvqQRTUQUvWXZ[W[/\\\\\}aVaV,,--!%8888}aVaV,,--!%;;;;}aVaV,,--!%AqD1AAAAA}aVaVaV4455!QTBBBB}aVaVaV4455!Q$????}aVaV,,--!%;;;;}aVaV,,--!%Aqs1CCCCC}aVaV,,--!%AqsAqD!AqD&1QQQQQ}aVaVaV4455!A#qAvFFFF}aVaVaV4455!AqD&AAAA}aVaV,,--!%AqD1AAAAA}aVaV,,--!%AqsAqD!Q$q&1QQQQQ}aVaV,,--UAqD!AqD&!QqS!Q$1QT	1ad1fEF F F F g511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233w>>>>}aAY			22331v====}aAY			22331v====}aAY			22331v====}aAY			22331a|CCCC}aAY			22331ad|CCCC}aAY			22331ad|CCCC}aAY			22331a1ac1aPQcSTUVSVWXSX7YYYYY}aAY			223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233w>>>>}aAY			22331v====}aAY			22331v====}aAY			22331v====}aAY			22331a|CCCC}aAY			22331ad|CCCC}aAY			22331ad|CCCC}aAY			22331a1ac1aPQcSTUVSVWXSX7YYYYY}aAY			223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                  ^    t          dd          dk    sJ t          dd          dk    sJ d S )Nr      r%   
   )r   r   r   r    test_monomial_countrV      s>    !Q1$$$$!Q2%%%%%%r   c                  2    t          dd          dk    sJ d S )Nr%      r   r   r   r   rY   rT   r   )r   r   r   r    test_monomial_mulr\      #    	9--::::::r   c                  2    t          dd          dk    sJ d S )NrX   rZ   r   r   r   )r   r   r   r    test_monomial_divr`      r]   r   c                  2    t          dd          dk    sJ d S NrX   rZ   )r   r   r   r    test_monomial_gcdrc      r]   r   c                  2    t          dd          dk    sJ d S rb   )r   r   r   r    test_monomial_lcmre      r]   r   c                  4    t          ddd          dk    sJ d S )Nr%   rY      r   rh   r   rT   r%   	   )rT   rh   rk   )r	   r   r   r    test_monomial_maxrl      %    	9i88IEEEEEEr   c                  2    t          dd          dk    sJ d S )Nr;   r%   )r%   rT   rk   )r   r   r   r    test_monomial_powro      s#    	1%%222222r   c                  4    t          ddd          dk    sJ d S )Nrg   ri   rj   )r   r%   r   )r
   r   r   r    test_monomial_minrq      rm   r   c                  V    t          dd          du sJ t          dd          du sJ d S )Nr;   )rY   rh   rT   T)r   rh   rT   F)r   r   r   r    test_monomial_dividesrs      s>    Iy11T9999Iy11U::::::r   c                  	   t          dt          t          t          f          t          dt          t          t          f          }                                 t          dz  t          dz  z  t          z  k    sJ |                                 t          dz  t          dz  z  k    sJ                     t
          t          t                    t
          dz  t          dz  z  t          z  k    s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k    sJ dk    sJ | dk    sJ dk    du sJ d         d	         cxk    rdk    sn J d         d
         cxk    rdk    sn J d         d         cxk    rdk    sn J | d         | d	         cxk    rdk    sn J | d         | d
         cxk    rdk    sn J | d         | d         cxk    rdk    sn 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 
                    |           t          d          k    sJ                     |           t          d          k    sJ 
                    d          t          d          k    s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           d S )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                  ,                                      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                  .                          d          S rH   )gcdrz   s   r    r!   ztest_Monomial.<locals>.<lambda>      aeeAhh r   c                  .                          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      sM   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****;)####6aAY;)####6aAY	>>>>	>>>>	>>>>	>>>>FuQ41R5AQ41R5AQ41R5AQ41R5AQ41R5AQ41R5ARaR5F????RaR5F????Q3(9%%%%%%Q3(9%%%%%%Y;(9------Y;(9------5588x	******5588x	******55x	22222255x	222222a48I&&&&&&a419999a48I&&&&&&a48J''''''	)		B2YY  QTzzzz
a
 = = = =>>>	)		B
:++++,,,r77+++++q66%%%%%
,,,
,,,
:}}}}%%%
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      s   P P                          7 6 6 6 6 6 & & & & & & & & & & & & & & & & ! ! ! ! ! ! ! ! ' ' ' ' ' '\ \ \|& & &; ; ;; ; ;; ; ;; ; ;F F F3 3 3F F F; ; ;@( @( @( @( @(r   