
    sg                        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mZmZmZmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZmZ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 Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1y)z&Tests for sparse distributed modules.     )sdm_monomial_mulsdm_monomial_degsdm_monomial_dividessdm_addsdm_LMsdm_LTsdm_mul_termsdm_zerosdm_degsdm_LCsdm_from_dict	sdm_spoly	sdm_ecartsdm_nf_morasdm_groebnersdm_from_vectorsdm_to_vectorsdm_monomial_lcm)lexgrlexInverseOrder)QQxyzc                  &    t        dd      dk(  sJ y )N   r   r   )r      r      r    )r        \/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_distributedmodules.pytest_sdm_monomial_mulr&      s    Iv.);;;r$   c                  $    t        d      dk(  sJ y )N   r"   r   r    )r   r#   r$   r%   test_sdm_monomial_degr*      s    I&!+++r$   c                  &    t        dd      dk(  sJ y )Nr!   )r   r)   r   )r   r)   r    )r   r#   r$   r%   test_sdm_monomial_lcmr,      s    Iy1Y>>>r$   c                      t        dd      du sJ t        dd      du sJ t        dd      du sJ t        dd      du sJ t        dd      du sJ t        d	d
      du sJ y )Nr   r   r   Tr   r"   r   )r)   r   r   r(   r"   r   r   Fr   )r)   r   r"   )r)   r   r   )r   r#   r$   r%   test_sdm_monomial_dividesr1      s    	95===	95===	95===	95>>>	95>>>	95>>>r$   c                  X    t        dt        d      fgt              t        d      k(  sJ y )Nr!   r)   )r   r   r#   r$   r%   test_sdm_LCr3   '   s'    Ir!u%&+r!u444r$   c            	         t        d      t        d      t        d      t        d      t        d      d} t        | t              dt        d      fdt        d      fdt        d      fdt        d      fdt        d      fgk(  sJ y )Nr   r   r"   r   r   r   r   r"   r   r   r   r"   r   r   r   r   r    r   r   r   r   r6   r7   r8   r9   r:   )r   r   r   dics    r%   test_sdm_from_dictr=   +   s    Abe2a5Abe5Ce$
1	r!u 5
1	r!u 5be7L	NN N Nr$   c                     t        dt        d      fgdt        d      fgt        t              dt        d      fdt        d      fgk(  sJ t        dt        d      fgdt        d      fgt        t              g k(  sJ t        dt        d      fgdt        d      fgt        t              dt        d      fgk(  sJ t        dt        d      fgd	t        d      fgt        t              d	t        d      fdt        d      fgk(  sJ y )
N)r   r   r   r   r0   r.   r"   r    r   r   r   r   )r   r   r   r#   r$   r%   test_sdm_addrA   5   s   Y1&'9be*<)=sBG
RU	iA/01 1 1Y1&'9bf*=)>RHBNNNY1&'9be*<)=sBG
RU	  Y1&'9be*<)=sBG
RU	iA/01 1 1r$   c                      t        d      t        d      t        d      d} t        t        | t                    dk(  sJ y )Nr   r!   )   r   r   rD   r   r   rE   )r   r   r   r   r;   s    r%   test_sdm_LMrF   ?   s4    e1"Q%
@C-S)*i777r$   c                      t        d      t        d      t        d      d} t        t        | t                    dt        d      fk(  sJ y )Nr   r"   r    rC   rE   )r   r   r   r   r;   s    r%   test_sdm_LTrH   D   s=    e1"Q%
@C-S)*y"Q%.@@@@r$   c                     t        dt        d      fgdt        d      ft        t              g k(  sJ t        g dt        d      ft        t              g k(  sJ t        dt        d      fgdt        d      ft        t              dt        d      fgk(  sJ dt        d      fdt        d	      fg} t        | d
t        d      ft        t              dt        d      fdt        d      fgk(  sJ y )Nr.   r   )r   r   r   r   r   r   )r"   r   r   rD   r    )r   r   r"   )r"   r   r"      r/      )r	   r   r   )fs    r%   test_sdm_mul_termrN   I   s    )RU+,vr!uosBG2MMMVRUOS"5;;;)RU+,vr!uosBG
RU	  
RU	iA/0AFBqE?C4
RU	iA/01 1 1r$   c                  "    t               g k(  sJ y )N)r
   r#   r$   r%   test_sdm_zerorP   S   s    :r$   c                  (    t        g d      dk(  sJ y )N)r!   r   ))
   r   r   r   ))r"   r    rD   rD      )r   r#   r$   r%   test_sdm_degrU   W   s    DEJJJr$   c                      dt        d      fdt        d      fg} dt        d      fg}dt        d      fg}t        | |t        t               g k(  sJ t        | |t        t               dt        d      fgk(  sJ y )N)r"   r   r   r   r@   )r"   r    r   r!   r/   )r   r   r   )rM   ghs      r%   test_sdm_spolyrY   [   s~    
RU	iA/0A
RU	A
RU	AQ3#r)))Q3#BqE(:';;;;r$   c                  L    t        ddg      dk(  sJ t        ddg      dk(  sJ y )NrR   )r@   r   r   ))r"   r"   r   r   ))r   r)   r   r   r    )r   r#   r$   r%   test_sdm_ecartr[   c   s2    nn56!;;;nn56!;;;r$   c            	         t        t        d      t        d      t        d      t        d      t        d      dt              } t        t        d      t        d      t        d      dt              }t        dt        d      it              }t        d      D cg c]!  }t        |dddft        d      it              # c}\  }}}t	        | ||gt        t        |||gf      d	t        d      fd
t        d      fdt        d      fdt        d      fgdt        d      fdt        d      fgfk(  sJ t	        | ||gt        t        |||gf      d	t        d      fd
t        d      fdt        d      fgdt        d      fdt        d      fdt        d      fgfk(  sJ t        t        t        z  t        dz  t        t        z  z   t        z
  t        gt        t        t        t        t        g      } t        t        t        dgt        t        t        t        t        g      }t        t        t        z  t        t        dz  gt        t        t        t        t        g      }t	        | ||gt        t              t	        | ||gt        t              cxk(  r6dt        d      fdt        d      fdt        d      fdt        d      fgk(  sJ  J y c c}w )Nr   r5   r?   )r:   )r   r   r"   r   )r   r   r   r   r:   r    r   )phantomr8   r9   )r   r   r   r   )r   r   r   r   )r"   r   r   r   )r"   r   r   r   r"   gens)r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )
r   r   r   ranger   r   r   r   r   r   )rM   f1f2iid0id1id2s          r%   test_sdm_nf_morarh   h   s   RU"Q% e2a51O	A 
be2a5&(f./4
6B	be,e	4B %a* %q!QlBqE%:EB *OS#s q2r(E2c3Z7HIA
,1!6r!u8MA

!B
 <A"7	8	:: : : q2r(E2c3Z7HIA
,1!6r!u8M	NB
 <B"8<A:O	P	RR R R 	1adQqSj1na0#rAq	JA	!QC1a)	<B	!A#q!Q$b1ay	ABq2r(C,ABxb) 
1	r"v 6r"v8N
1		          *s   &Kc                  4   t         dz  t        dz  z   dt        z  g} dt        d      fdt        d      fdt        d      fg}t	        |t         t        t        gt              | k(  sJ t        | t        t              |k(  sJ t        t         dgt        t              dt        d      fdt        d      fgk(  sJ t	        dgt         t        t        gt        d	
      dt         dgk(  sJ t        ddgt        t        t         t        g      t               k(  sJ y )Nr"   r`   )r   r"   r   r   r   )r   r   r"   r   rJ   )r   r   ))r   r   r   r   r   r    )nr   r^   )r   r   r   r   r   r   r   r
   )rM   rW   s     r%   test_conversionrk      s    	
A1acA
1	r!u 5be7LMAQ1Ir*a///1c2&!+++	
AR$be_vr!uo>? ? ?+,q!QiqAaAYNNNAq63!Q8HJFFFr$   c                  z	   t         t        t        gfd}  | t         t        gt               sJ  | t         t        gt         t        z         sJ  | t         t        gd      rJ  | t         t        gt              rJ  | t         dz  t        z   t         dz  t         z   gt         t        z
        sJ  | t         t        z   t        z   t         t        z  t         t        z  z   t        t        z  z   t         t        z  t        z  gt         dz        rJ  | t         t        z   t        z   t         t        z  t         t        z  z   t        t        z  z   t         t        z  t        z  gt         dz        sJ  | t         t        z   t        z   t         t        z  t         t        z  z   t        t        z  z   t         t        z  t        z  gt         dz        sJ  | t         t        z   t        z   t         t        z  t         t        z  z   t        t        z  z   t         t        z  t        z  gt         t        dz  z        rJ  | t         t        z   t        z   t         t        z  t         t        z  z   t        t        z  z   t         t        z  t        z  gt         dz  t        dz  z   dt        z  t        z  t         z  z         sJ  | t         t        z   t        z   t         t        z  t         t        z  z   t        t        z  z   t         t        z  t        z  gt         t        z  t        z        sJ  | t         dt         z   t        z   ddt        z  z
  gd      sJ  | t         dz  t        dz  z   t        dz  t        dz  z   t        dz  t         dz  z   t         dz  t        z  t         dz  t        z  z   t        dz  t        z  z   gt         dz        sJ  | t         dz  t        dz  z   t        dz  t        dz  z   t        dz  t         dz  z   t         dz  t        z  t         dz  t        z  z   t        dz  t        z  z   gt         dz  t        dz  z         rJ  | t         dt         z   t        z   z  t        dt        z   z  gt               rJ  | t         dt         z   t        z   z  t        dt        z   z  gt         t        z         rJ y )Nc           	          | D cg c]  }t        |gt        t               }}t        |t        t        t              }t	        t        |gt        t              |t        t              t               k(  S c c}w Nr^   )r   r   r   r   r   r
   )IrM   rW   SGr_   s        r%   containsz!test_nontrivial.<locals>.contains   sf    ?@A!_aS#r5AAKb1?A3RdCc2'*2*5 	5 Bs   A8r   r"   r    rD   r)   rT   r   )rr   r_   s    @r%   test_nontrivialrs      s   q!9D5 QFAQFAE"""A"""A"""QTAXq!tax(!a%000QAaC!A#I!OQqSU;QTBBBQUQY!ac	AaC1Q7A>>>QUQY!ac	AaC1Q7A>>>QAaC!A#I!OQqSU;Qq!tVDDDQUQY!ac	AaC1Q7A1qs1uQw9NOOOQUQY!ac	AaC1Q71Q???QA	1qs7+Q///	
A1adQTk1a4!Q$;1QAa!Q$q&0HI	1   	
A1adQTk1a4!Q$;1QAa!Q$q&0HI	1q!t  
 AEAI1q5	2A666AEAI1q5	2AE::::r$   c                  (   t        t              t        t        t        gfd}  | t        t        gt              sJ  | t        t        gt        t        z         sJ  | t        t        gd      rJ  | t        t        gt              rJ  | t        dz  t        z   t        dz  t        z   gt        t        z
        sJ  | t        t        z   t        z   t        t        z  t        t        z  z   t        t        z  z   t        t        z  t        z  gt        dz        rJ  | t        dt        z   t        z   z  t        dt        z   z  gt              sJ  | t        dt        z   t        z   z  t        dt        z   z  gt        t        z         sJ y )Nc           	          | D cg c]  }t        |gt               }}t        |t        t              }t        t        |gt        t              |t        t              t               k(  S c c}w rn   )r   r   r   r   r   r
   )ro   rM   rW   rp   rq   r_   igrlexs        r%   rr   ztest_local.<locals>.contains   sf    BCDQ_aS&"48DDK4?A3RdCc2'*2*5 	5 Es   A0r   r"   )r   r   r   r   r   )rr   r_   rv   s    @@r%   
test_localrw      s1   % Fq!9D5
 QFAQFAE"""A"""A"""QTAXq!tax(!a%000QAaC!A#I!OQqSU;QTBBBQA	]Aq1uI.222QA	]Aq1uI.A666r$   c                  0   t         t        g} t               }t        t         dgt        t
        |       }t        dt        gt        t
        |       }t        ||t        t
              t               k(  sJ t        ||t        t
              t               k(  sJ y )Nr   r^   )r   r   r
   r   r   r   r   )r_   rb   rc   f3s       r%   test_uncovered_linerz      sp    q6D	B	!Qbt	4B	!Qbt	4BRS"%333RS"%333r$   c                      t         g} t        dt         gt        t        |       }t        dt         dz
  gt        t        |       }t	        t        ||gt        t        t                    dk(  sJ y )Nr   r^   r   r"   )r   r   r   r   lenr   r   )r_   rb   rc   s      r%   test_chain_criterionr}      sW    3D	!Q	6B	!QUUBT	:B|RHk5"=>!CCCr$   N)2__doc__sympy.polys.distributedmodulesr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   sympy.polys.orderingsr   r   r   sympy.polys.domainsr   	sympy.abcr   r   r   r&   r*   r,   r1   r3   r=   rA   rF   rH   rN   rP   rU   rY   r[   rh   rk   rs   rw   rz   r}   r#   r$   r%   <module>r      s    ,     ; : "  <,??5N18
A
1K<<
 6G;B7&4Dr$   