
    RieS                        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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%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZD ddlEmFZF ddlGmHZH ddlImJZJ ddlKmLZL d	  eA            D             \  ZMZNZOZPZQZRZSd
 ZTd ZUd ZVd ZWd ZXd ZYd ZZd Z[d Z\d Z]d Z^d Z_d Z`d Zad Zbd Zcd Zdd Zed Zfd Zgd Zhd Zid  Zjd! Zkd" Zld# Zmd$ Znd% Zod& Zpd' Zqd( Zrd) Zsd* Ztd+ Zud, Zvd- Zwd. Zxd/ Zyd0 Zzd1 Z{d2 Z|d3 Z}d4 Z~d5 Zd6 Zd7 Zd8 Zd9 Zd: Zd; Zd< Zd= Zd> Zd? Zd@ ZdA ZdB ZdC ZdDS )Ez4Tests for dense recursive polynomials' basic tools.     )>dup_LCdmp_LCdup_TCdmp_TCdmp_ground_LCdmp_ground_TCdmp_true_LT
dup_degree
dmp_degreedmp_degree_indmp_degree_list	dup_strip	dmp_stripdmp_validatedup_reversedup_copydmp_copy
dup_normal
dmp_normaldup_convertdmp_convertdup_from_sympydmp_from_sympydup_nthdmp_nthdmp_ground_nth
dmp_zero_pdmp_zero	dmp_one_pdmp_onedmp_ground_p
dmp_grounddmp_negative_pdmp_positive_p	dmp_zerosdmp_groundsdup_from_dictdup_from_raw_dictdup_to_dictdup_to_raw_dictdmp_from_dictdmp_to_dictdmp_swapdmp_permutedmp_nest	dmp_raisedup_deflatedmp_deflatedup_multi_deflatedmp_multi_deflatedup_inflatedmp_inflatedmp_excludedmp_include
dmp_inject	dmp_ejectdup_terms_gcddmp_terms_gcddmp_list_termsdmp_apply_pairs	dup_slice
dup_random)f_polys)ZZQQ)ring)S)raises)ooc                 6    g | ]}|                                 S  )to_dense).0fs     Alib/python3.11/site-packages/sympy/polys/tests/test_densebasic.py
<listcomp>rN   0   s     $G$G$Gqajjll$G$G$G    c                  v    t          g t                    dk    sJ t          g dt                    dk    sJ d S )Nr               rR   )r   rB   rI   rO   rM   test_dup_LCrV   2   @    "b>>Q,,,##q((((((rO   c                  v    t          g t                    dk    sJ t          g dt                    dk    sJ d S )Nr   rQ   rU   )r   rB   rI   rO   rM   test_dup_TCrY   7   rW   rO   c                     t          g gt                    g k    sJ t          g ddggt                    g dk    sJ t          g ggt                    g gk    sJ t          dgddggdgggt                    dgddggk    sJ d S NrR   rS   rT   rU   rR   rS   rT   )r   rB   rI   rO   rM   test_dmp_LCr]   <   s    2$r!!!!999qc"B''9994444B4&""%%%%QC!Q=A3%("--1#1v>>>>>>rO   c                     t          g gt                    g k    sJ t          g ddggt                    dgk    sJ t          g ggt                    g gk    sJ t          dgddggdgggt                    dggk    sJ d S r[   )r   rB   rI   rO   rM   test_dmp_TCr_   C   s    2$r!!!!999qc"B''A3....B4&""%%%%QC!Q=A3%("--1#666666rO   c                     t          g gdt                    dk    sJ t          g ddggdt                    dk    sJ t          g ggdt                    dk    sJ t          dgddggdgggdt                    dk    sJ d S N   r   r\   rU   rR   rS   rT   )r   rB   rI   rO   rM   test_dmp_ground_LCrc   J       "q"%%****)))aS)1b11Q66662$B''1,,,,A3A-1#/B771<<<<<<rO   c                     t          g gdt                    dk    sJ t          g ddggdt                    dk    sJ t          g ggdt                    dk    sJ t          dgddggdgggdt                    dk    sJ d S ra   )r   rB   rI   rO   rM   test_dmp_ground_TCrf   Q   rd   rO   c                  8   t          g gdt                    dk    sJ t          dggdt                    dk    sJ t          ddggdt                    dk    sJ t          dgg gdt                    dk    sJ t          ddgg gdt                    dk    sJ d S )	Nrb   )r   r   r      )rh   ri   r   )r   rb   rb   )rb   r   rb   )rb   rb   rb   )r	   rB   rI   rO   rM   test_dmp_true_LTrm   X   s    tQ##{2222ua$$3333AxB'';6666Ry!R((K7777A|Q++{::::::rO   c                      t          g           t           u sJ t          dg          dk    sJ t          ddg          dk    sJ t          g d          dk    sJ d S )Nrb   r   )rb   r   r   r   rb   rT   )r
   rG   rI   rO   rM   test_dup_degreero   a   st    b>>bS    qc??aq!f""""ooo&&!++++++rO   c                      t          g gd          t           u sJ t          g ggd          t           u sJ t          dggd          dk    sJ t          dgdggd          dk    sJ d S Nrb   rR   r   )r   rG   rI   rO   rM   test_dmp_degreerr   h   s    rdA2#%%%%tfa  RC''''seQ1$$$$sQCj!$$))))))rO   c                     t          g ggdd          t           u sJ t          g ggdd          t           u sJ t          g ggdd          t           u sJ t          dgggdd          dk    sJ t          dgggdd          dk    sJ t          dgggdd          dk    sJ t          t          dd          dk    sJ t          t          dd          dk    sJ t          t          dd          dk    sJ t          t          dd          dk    sJ t          t          dd          dk    sJ t          t          dd          dk    sJ t          t          d	d	          d	k    sJ t	          t
          d
            d S )Nr   rR   rb   	         rT      rS   c                  (    t          dggdd          S )Nrb   )r   rI   rO   rM   <lambda>z$test_dmp_degree_in.<locals>.<lambda>   s    }qcUB:: rO   )r   rG   f_4f_6rF   
IndexErrorrI   rO   rM   test_dmp_degree_inr~   p   s   2$A&&2#----2$A&&2#----2$A&&2#----A3%!Q''1,,,,A3%!Q''1,,,,A3%!Q''1,,,,a##q((((a##r))))a##q((((a##q((((a##q((((a##q((((a##q((((
:::;;;;;rO   c                     t          g gggd          t           t           t           t           fk    sJ t          dggggd          dk    sJ t          t          d          dk    sJ t          t          d          dk    sJ t          t          d          dk    sJ t          t
          d          dk    sJ t          t          d          d	k    sJ t          t          d          dk    sJ t          t          d          d
k    sJ d S )NrS   rb   )r   r   r   r   rR   )rR   rR   rR   )rS   rS   rS   )rU   rS   rS   )rU   rT   ri   )rt   ru   rv   )rT   rT   rw   rS   )	r   rG   f_0f_1f_2f_3r{   f_5r|   rI   rO   rM   test_dmp_degree_listr      s   cUG9a((bS2#sRC,@@@@@qcUG9a((M99993""i////3""i////3""i////3""i////3""j00003""i////3""l222222rO   c                     t          g           g k    sJ t          dg          g k    sJ t          g d          g k    sJ t          dg          dgk    sJ t          ddg          dgk    sJ t          g d          dgk    sJ t          g d          g dk    sJ t          g d          g dk    sJ t          g d          g dk    sJ d S )Nr   r   r   r   rb   )r   r   r   rb   )rb   rR   r   )r   rb   rR   r   )r   r   r   rb   rR   r   )r   rI   rO   rM   test_dup_stripr      s   R==BaS>>RYYY2%%%%aS>>aS    aV####\\\""qc))))YYY999,,,,\\\""iii////'''((III555555rO   c                  0   t          g dd          ddgk    sJ t          g gd          g gk    sJ t          g g gd          g gk    sJ t          g g g gd          g gk    sJ t          g ggd          g ggk    sJ t          g gg ggd          g ggk    sJ t          g gg gg ggd          g ggk    sJ t          dgggd          dgggk    sJ t          g gdgggd          dgggk    sJ t          g gdggg ggd          dggg ggk    sJ d S )N)r   rb   r   r   rb   rR   )r   rI   rO   rM   test_dmp_stripr      s   YYY""q!f,,,,bT1"%%%%b"Xq!!bT))))b"b\1%%"----rdVQRD6))))rdRD\1%%2$////rdRD2$'++v5555seWa  qcUG++++rdaSE]A&&QC5'1111rdaSEB4(!,,1#======rO   c                     t          g           g dfk    sJ t          g d          ddgdfk    sJ t          g gg          g ggdfk    sJ t          dgg dgdgdgg          dgg gdfk    sJ t          t          d            d S )Nr   )r   r   r   rb   r   rb   rR   c                  2    t          dgddgdgdgg          S )Nr   rb   )r   rI   rO   rM   rz   z#test_dmp_validate.<locals>.<lambda>   s!    |aS!aS1#s,CDD rO   )r   rF   
ValueErrorrI   rO   rM   test_dmp_validater      s    Aw&&&&((aVQK7777"bTFA;....!b1#sQC011sBi^CCCC
:DDEEEEErO   c                  j    t          g d          g dk    sJ t          g d          g dk    sJ d S )N)rb   rR   r   rS   )rS   r   rR   rb   rb   rR   rS   r   )rS   rR   rb   )r   rI   rO   rM   test_dup_reverser      sJ    |||$$4444|||$$			111111rO   c                      t          d          t          d          t          d          g} t          |           }t          d          t          d          c|d<   |d<   | |k    sJ d S )Nrb   r   rR   ri   )rB   r   rL   gs     rM   test_dup_copyr      s[    	A1r!uuAAA1JAaD!A$666666rO   c                      t          d          gt          d          t          d          gg} t          | d          }t          d          t          d          c|d         d<   |d         d<   | |k    sJ d S )Nrb   rR   r   ri   )rB   r   r   s     rM   test_dmp_copyr      sj    
Q%%2a55"Q%%.!AAA!uubeeAaDGQqT!W666666rO   c                      t          g dt                    t          d          t          d          t          d          t          d          t          d          gk    sJ d S )N)r   r   rR   rb   r      r   rR   rb   r   r   )r   rB   rI   rO   rM   test_dup_normalr      s`    ,,,b11	A1r!uubffbee,- - - - - -rO   c                      t          dgg g ddgdgg gdt                    t          d          t          d          gg t          d          gg gk    sJ d S )Nr   )r   rR   rb   r   rb   rR   )r   rB   rI   rO   rM   test_dmp_normalr      sj    sB			A3b91bAA
Q%%AbffXr*+ + + + + +rO   c                      t           d         t           }}  | d           | d           | d           | d          g}t          || |          t          d          t          d          t          d          t          d          gk    sJ d S )Nxrb   rR   r   rS   )rB   r   K0K1rL   s      rM   test_dup_convertr      s    WbB	A1rr!uubbee$Aq"b!!	A1r!uubee$% % % % % %rO   c                     t           d         t           }}  | d          g | d          gg  | d          gg}t          |d| |          t          d          gt          d          gg t          d          ggk    sJ d S )Nr   rb   rR   rS   )rB   r   r   s      rM   test_dmp_convertr      s    WbB
"Q%%22a55'21w'Aq!R$$
Q%%2a55'21w'( ( ( ( ( (rO   c                  J   t          t          j        t          d          gt                    t          d          t          d          gk    sJ t          t          j        t          d          gt
                    t          dd          t          dd          gk    sJ d S )NrR   rb   rS   )r   rE   OnerB   HalfrC   rI   rO   rM   test_dup_from_sympyr      s    15!A$$-,,	A1   161Q44."--	Aq2a88     rO   c                  p   t          t          j        t          d          gt          j        ggdt                    t	          d          t	          d          gg gk    sJ t          t          j        t          d          ggdt                    t          dd          t          dd          ggk    sJ d S )NrR   rb   )r   rE   r   ZerorB   r   rC   rI   rO   rM   test_dmp_from_sympyr      s    AE1Q44=16(3Q;;
Q%%A   AFAaDD>*Ar22
Q((Bq!HH	     rO   c                  "   t          g ddt                    dk    sJ t          g ddt                    dk    sJ t          g ddt                    dk    sJ t          g ddt                    dk    sJ t          t          d            d S )Nrb   rR   rS   r   rS   rb   rR   rt   c                  2    t          g ddt                    S )N)rS   rT   rU   )r   rB   rI   rO   rM   rz   ztest_dup_nth.<locals>.<lambda>  s    wyyy"b99 rO   )r   rB   rF   r}   rI   rO   rM   test_dup_nthr      s    999a$$))))999a$$))))999a$$))))999a$$))))
:99:::::rO   c                  P   t          dgdgdggddt                    dgk    sJ t          dgdgdggddt                    dgk    sJ t          dgdgdggddt                    dgk    sJ t          dgdgdggddt                    g k    sJ t          t          d            d S )Nrb   rR   rS   r   rt   c                  <    t          dgdgdggddt                    S )NrS   rT   rU   r   rb   )r   rB   rI   rO   rM   rz   ztest_dmp_nth.<locals>.<lambda>  s     waS1#ArBB rO   )r   rB   rF   r}   rI   rO   rM   test_dmp_nthr     s    QC!qc?Aq"--!4444QC!qc?Aq"--!4444QC!qc?Aq"--!4444QC!qc?Aq"--3333
:BBCCCCCrO   c                     t          g gddt                    dk    sJ t          dgdgdggddt                    dk    sJ t          dgdgdggddt                    dk    sJ t          dgdgdggddt                    dk    sJ t          dgdgdggddt                    dk    sJ t          dgdgdggd	dt                    dk    sJ t          t          d
            d S )Nrh   rb   r   rR   rS   rk   rR   r   rR   rb   )rS   r   c                  <    t          dgdgdggddt                    S )NrS   rT   rU   )rR   r   rb   )r   rB   rI   rO   rM   rz   z%test_dmp_ground_nth.<locals>.<lambda>  s     ~sQC!ow2NN rO   )r   rB   rF   r}   rI   rO   rM   test_dmp_ground_nthr     s   2$2..!3333A3aS/61b99Q>>>>A3aS/61b99Q>>>>A3aS/61b99Q>>>>A3aS/61b99Q>>>>A3aS/61b99Q>>>>
:NNOOOOOrO   c                      t          g d          du sJ t          g gd          du sJ t          g ggd          du sJ t          dgggd          du sJ d S )Nr   Trb   rR   F)r   rI   rO   rM   test_dmp_zero_pr     s    b!$$$$rdA$&&&&tfa  D((((ugq!!U******rO   c                  ^    t          d          g k    sJ t          d          g ggk    sJ d S )Nr   rR   )r   rI   rO   rM   test_dmp_zeror   #  s:    A;;"A;;B4&      rO   c                      t          dgdt                    du sJ t          dggdt                    du sJ t          dgggdt                    du sJ t          dgggdt                    du sJ d S )Nrb   r   TrR   ru   F)r   rB   rI   rO   rM   test_dmp_one_pr   (  s    aS!R  D((((qcUAr""d****seWa$$,,,,tfXq"%%......rO   c                      t          dt                    t          d          gk    sJ t          dt                    t          d          gggk    sJ d S )Nr   rb   rR   )r    rB   rI   rO   rM   test_dmp_oner   /  sN    1b>>beeW$$$$1b>>1wi[((((((rO   c                     t          g dd          du sJ t          g gdd          du sJ t          g gdd          du sJ t          t          d          ggdd          du sJ t          t          d          gggdd          du sJ t          t          d          gggdd          du sJ t          t          d          gg ggdd          du sJ t          g d d          du sJ t          g gd d          du sJ t          t          d          gd d          du sJ t          t          d          gggd d          du sJ t          t          d          gg ggd d          du sJ d S )Nr   Trb   FrR   rS   )r!   rB   rI   rO   rM   test_dmp_ground_pr   4  s   Aq!!T))))a##t++++a##u,,,,"Q%%	1a((D00002a55'Q**d22222a55'Q**e33332a55'2A..%7777D!$$,,,,dA&&$....Aq))T11112a55'T1--55552a55'2q11U::::::rO   c                  x   t          t          d          d          g ggk    sJ t          t          d          d          t          d          k    sJ t          t          d          d          t          d          gk    sJ t          t          d          d          t          d          gggk    sJ d S )Nr   rR   ri   r   )r"   rB   rI   rO   rM   test_dmp_groundr   H  s    beeQRD6))))beeR  BqEE))))beeQBqEE7****beeQbeeWI;......rO   c                     t          ddt                    g g g g gk    sJ t          ddt                    g k    sJ t          ddt                    g gggk    sJ t          ddt                    g ggg gggk    sJ t          ddt                    g ggg ggg gggk    sJ t          ddt                    g dk    sJ d S )NrT   r   rR   rb   rS   r   r   )r%   rB   rI   rO   rM   test_dmp_zerosr   P  s    Q22r2r"22222Q2"$$$$Q2RD6(****Q2RD6RD6"22222Q2RD6RD6RD6":::::QB999,,,,,,rO   c                     t          t          d          dd          g k    sJ t          t          d          dd          dggggk    sJ t          t          d          dd          dgggdggggk    sJ t          t          d          dd          dgggdgggdggggk    sJ t          t          d          dd          g dk    sJ d S )Nri   r   rR   rb   rS   r   )ri   ri   ri   )r&   rB   rI   rO   rM   test_dmp_groundsr   [  s    r!uua##r))))r!uua##1#y0000r!uua##1#A3%'99999r!uua##1#A3%QC5''BBBBBr!uua$$			111111rO   c                      t          g ggdt                    du sJ t          dgdgggdt                    du sJ t          dgdgggdt                    du sJ d S )NrR   Frb   r   T)r#   rB   rI   rO   rM   test_dmp_negative_pr   e  sw    B4&!R((E1111QC!:,2..%7777RD1#;-B//4777777rO   c                      t          g ggdt                    du sJ t          dgdgggdt                    du sJ t          dgdgggdt                    du sJ d S )NrR   Frb   Tr   )r$   rB   rI   rO   rM   test_dmp_positive_pr   k  sw    B4&!R((E1111QC!:,2..$6666RD1#;-B//5888888rO   c                  \   t          i t                    g k    sJ t          i t                    g k    sJ t          g           i k    sJ t	          g           i k    sJ t          g t          d          dt          d          ik    sJ t	          g t          d          dt          d          ik    sJ g d} dddd	}dddd
}t          |t                    | k    sJ t          |t                    | k    sJ t          |           |k    sJ t	          |           |k    sJ t          dt                    \  }}}|                                } |d           |d           |d           |d           |d           |d          g}  |d           |d           |d          d} |d           |d           |d          d}t          ||          | k    sJ t          ||          | k    sJ t          |           |k    sJ t	          |           |k    sJ d S )NTzeror   r   )	rS   r   r   rR   r   r   r   r   rv   rS   rR   rv   )rv   rU   r   ))rv   rU   r   x,y)rU   rS   r   )r   rS   r   )r(   rB   r'   r*   r)   rD   	to_domain)rL   r   hRr   yKs          rM   test_dup_from_to_dictr   q  sg   R$$****R  B&&&&2"$$$$r??b    2r---!RUU;;;;r2D)))dBqEE]::::###A!A##AQ##q((((B1$$$$1""""q>>Q%__FAq	A	
1qqttQQqTT11Q441qqtt,AAaDDQQqTTaadd##Aqtt11Q44qqtt,,AQ""a''''A!####1""""q>>QrO   c            	         t          i dt                    g gk    sJ t          g gd          i k    sJ t          g dt          d          dt          d          ik    sJ t          g gdt          d          dt          d          ik    sJ dgg g dgg g g g d	gg	} ddd	d
}t          |dt                    | k    sJ t          | d          |k    sJ d S )Nrb   r   Tr   r   rh   rS   rR   rv   ))rv   r   )rU   r   rh   )r+   rB   r,   r   s     rM   test_dmp_from_to_dictr     s   Q##t++++tQ2%%%%r1bt,,,r!uu====tQ...62a55/AAAA
b"qc2r2rA3/AAq))AAr""a''''q!!!!!!!rO   c                  h   t          g dg ddgg dggdt                    t          g dg ddggdt                    } t          dddt                    k    sJ t          dddt                    | k    sJ t          | dddt                    k    sJ t          t          fd           d S )Nrb   r   r   rb   r   rb   r   r   r   r   c                  4    t           dddt                    S )Nr   irb   )r-   rB   rL   s   rM   rz   ztest_dmp_swap.<locals>.<lambda>  s    x2r1b99 rO   )r   rB   r-   rF   r}   )r   rL   s    @rM   test_dmp_swapr     s    IIIrAq62s3Q;;AOOOYYY4a<<AAq!Q##q((((Aq!Q##q((((Aq!Q##q((((
:9999:::::rO   c                  z   t          g dg ddgg dggdt                    } t          g dg ddggdt                    }t          | ddgdt                    | k    sJ t          |ddgdt                    |k    sJ t          | ddgdt                    |k    sJ t          |ddgdt                    | k    sJ d S )Nr   rb   r   r   )r   rB   r.   r   s     rM   test_dmp_permuter     s    IIIrAq62s3Q;;AOOOYYY4a<<Aq1a&!R((A----q1a&!R((A----q1a&!R((A----q1a&!R((A------rO   c                  $   t          t          d          dt                    dgggk    sJ t          dggdt                    dggk    sJ t          dggdt                    dgggk    sJ t          dggdt                    dggggk    sJ d S rq   )r/   rB   rI   rO   rM   test_dmp_nestr     s    BqEE1b!!seW,,,,aSE1b!!qcU****aSE1b!!seW,,,,aSE1b!!ugY......rO   c                      t          g ddt                    g ggk    sJ t          dggddt                    dggk    sJ t          g dg ddggddt                    dggdggdgggg ggdggdggggk    sJ d S )NrR   r   rb   r   rS   )r0   rB   rI   rO   rM   test_dmp_raiser     s    RAr""tf,,,,qcUAq"%%1#....iiiaV,aB773%1#!	"1#!78 8 8 8 8 8rO   c                  L   t          g t                    dg fk    sJ t          dgt                    ddgfk    sJ t          g dt                    dg dfk    sJ t          g dt                    dg dfk    sJ t          t          dddt                    t                    dg dfk    sJ t          t          dddt                    t                    dddgfk    sJ t          t          ddd	t                    t                    dg d
fk    sJ t          t          dddt                    t                    dg dfk    sJ t          t          dddt                    t                    dg dfk    sJ t          t          ddit                    t                    dddgfk    sJ t          t          ddit                    t                    dddgfk    sJ t          t          ddit                    t                    dddgfk    sJ d S )Nrb   rR   r   rb   r   rR   r   rS   )ri   rb   )rb   r   r   r   r   r   rb   r   )ri   r   ri   )ri   rS   )rb   r   r   r   rb   r   r   r   )ri   rT   )rb   r   r   rb   r   r   r   r   )rv   rT   rT   )rb   rb   r   rv   r   )r1   rB   r(   rI   rO   rM   test_dup_deflater     s   r21b'))))sBAs8++++yyy"%%!YYY7777++999~====(Q1r::B??	
$$$%& & & &(Q1r::B??	
QF   (Q1r::B??	
$$$%& & & & (Q1r::B??	
$$$%& & & &(Q1r::B??	
III    (!Q44b99	
QF   (!Q44b99	
QF   (!Q44b99	
QF     rO   c                      t          g gdt                    dg gfk    sJ t          dggdt                    ddggfk    sJ g dg ddgg dgg} t          | dt                    dg dddgdggfk    sJ d S )Nrb   rl   rR   r   r   r   )r2   rB   r   s    rM   test_dmp_deflater     s    tQ##~5555ua$$1#7777	BAQC(Aq!R  Viii!Q!-E$FFFFFFFrO   c                     t          dgft                    ddgffk    sJ t          g g ft                    dg g ffk    sJ t          g dft                    dg dffk    sJ t          g dft                    dg dffk    sJ t          g dg dft                    dg dddgffk    sJ t          g dg dft                    dg dg dffk    sJ d S )NrR   rb   r   r   rR   r   r   r   )rR   rb   r   )r3   rB   rI   rO   rM   test_dup_multi_deflater     s9   qcVR((Q!K7777b"Xr**q2r(m;;;;iii\2..1yyyl2CCCCCooo/44YYYL8IIIIIoooyyy92>>	
YYYA ! ! ! !oooyyy92>>	
___iii()* * * * * *rO   c                     t          g gfdt                    dg gffk    sJ t          g gg gfdt                    dg gg gffk    sJ t          dggg gfdt                    ddggg gffk    sJ t          dggdggfdt                    ddggdggffk    sJ t          dggddggfdt                    ddggddggffk    sJ t          ddggddggfdt                    dddggddggffk    sJ t          dggg dgfdt                    ddggddggffk    sJ t          g dgg dgfdt                    dddggddggffk    sJ t          g dg dfdt                    dddgg d	ffk    sJ g d
g ddgg dgg} g dg dgg}t          | fdt                    dg d
ddgdggffk    sJ t          | |fdt                    dg d
ddgdggg ddggffk    sJ d S )Nrb   rl   rR   r   r   rb   rR   )rb   r   rT   r   rb   rR   )rb   rT   rb   r   rb   r   rb   r   r   )r4   rB   r   s     rM   test_dmp_multi_deflater     sM   rdWa,,	2$   rdRD\1b11	2$    sebT]Ar22	A3%"       seqcU^Q33	A3%1# ! ! ! !seq!fX.266	A3%1a&"#$ $ $ $ 1vh!Q11b99	Aq6(aVH%&' ' ' ' #a% %)/A3%1a&1B(CD D D D
))yyyk"Ar+ +/5!QAq6(7K.LM M M M iii91bAA	A			"#$ $ $ $ 
BAQC(A	rA3AaT1b))	999q!fqc*,-. . . . aVQ++	999q!fqc*<<!%' 	(( ( ( ( ( (rO   c                  j   t          g dt                    g k    sJ t          g ddt                    g dk    sJ t          g ddt                    g dk    sJ t          g ddt                    g dk    sJ t          g ddt                    g d	k    sJ t          t          d
            d S )N   r   rb   rR   r   rS   )rb   r   r   rR   r   r   rS   rT   )	rb   r   r   r   rR   r   r   r   rS   c                  2    t          g ddt                    S )Nr   r   )r5   rB   rI   rO   rM   rz   z"test_dup_inflate.<locals>.<lambda>#  s    {999a<< rO   )r5   rB   rF   r}   rI   rO   rM   test_dup_inflater     s    r2r""b((((yyy!R((III5555yyy!R((OOO;;;;yyy!R((,A,A,AAAAAyyy!R((,G,G,GGGGG
:<<=====rO   c                      t          dgddt                    dgk    sJ t          g gddt                    g gk    sJ t          dggddt                    dggk    sJ t          ddggddt                    ddggk    sJ t          ddggddt                    g dgk    sJ t          ddggd	dt                    g d
gk    sJ t          g ddgddggddt                    g dg dgg ddggk    sJ t          t          d            d S )Nrb   r   r   )rS   ri   rR   r   rl   r   )rb   rS   rR   r   r   r   r   r   c                  2    t          g gddt                    S )N)ri   rb   )r6   rB   rI   rO   rM   rz   z"test_dmp_inflate.<locals>.<lambda>3  s    {B4!R@@ rO   )r6   rB   rF   r}   rI   rO   rM   test_dmp_inflater   &  sZ   sD!R((QC////tVQ++t3333ufa,,!5555AxB//QF8;;;;AxB//III;>>>>AxB//LLL>AAAA			A3A/B??	BR!Q() ) ) ) :@@AAAAArO   c                  n   t          g ggdt                    g g ggdfk    sJ t          dgggdt                    g dgggdfk    sJ t          g ddt                    g g ddfk    sJ t          dgddggdt                    g dgddggdfk    sJ t          g dgdt                    dgg ddfk    sJ t          dgdgdggdt                    dgg ddfk    sJ t          g dggdt                    ddgg ddfk    sJ t          dggdggdgggdt                    ddgg ddfk    sJ d S )NrR   ri   r   r   rb   rS   )r7   rB   rI   rO   rM   test_dmp_excluder   6  s   vq"%%"tfa8888!w2&&2!w*:::::yyy!R((RA,>>>>>aV}a,,qcAq6]A0FFFFF			{Ar**sIIIq.AAAAAaS1#2..A3			12EEEEE}a,,!QA0FFFFF!use,a44!QA8NNNNNNNrO   c                  x   t          g dg dt                    g dk    sJ t          g ddgdt                    g dgk    sJ t          g ddgdt                    dgdgdggk    sJ t          g dddgdt                    g dggk    sJ t          g dddgdt                    dggdggdgggk    sJ d S )Nr   r   rb   rR   rS   )r8   rB   rI   rO   rM   test_dmp_includer  D  s    yyy"a,,			9999yyy1#q"--)))<<<<yyy1#q"--1#sQC@@@@yyy1a&!R00iii[MAAAAyyy1a&!R00qcUaSEQC54IIIIIIIrO   c                     t          dt                    \  } }}|                                 }t          g d|          g ggdfk    sJ t          g gd|          g gggdfk    sJ t           | d          gd|          dgggdfk    sJ t           | d          ggd|          dggggdfk    sJ t           | d          d|z  d|z  z   dz   gd|          dggdgddgggdfk    sJ d|dz  z  d|z  |z  z   d|dz  z  z   d|z   | d          ||dz  z  d	z   g}dgddgg d
gdgg gg gg dd	ggg}t          |d|          |dfk    sJ d S )Nr   r   rR   rb   rS   rT   ri   rU   r   rU   r   r   r   )rD   rB   r   r9   r   r   r   r   rL   r   s         rM   test_dmp_injectr  N  s   %__FAq	Ab!QbTFA;....rdAq!!vh]2222qqttfa##1#|3333!vh1%%aSE7)Q7777qqttQqS1Q3Y]+Q22!aV}7Mq6QQQQQ	
1a4!A#a%!AqD&	 !A#qqttQq!tVb[9A#1vyyy	!QC9rdYYY4EFAaA1a&((((((rO   c                     t          dt                    \  } }}|                                 }t          g ggd|          g k    sJ t          g gggd|          g gk    sJ t          dgggd|           | d          gk    sJ t          dggggd|           | d          ggk    sJ t          dggdgddgggd|           | d          d|z  d|z  z   dz   gk    sJ d|dz  z  d|z  |z  z   d|dz  z  z   d|z   | d          ||dz  z  d	z   g}dgddgg d
gdgg gg gg dd	ggg}t          |d|          |k    sJ d S )Nr   rR   rS   rb   rT   ri   rU   r   r   r  r   )rD   rB   r   r:   r  s         rM   test_dmp_ejectr  `  s   %__FAq	ArdVQ""b((((tfXq!$$,,,,seWa##!v----ugY1%%11Q44&1111seqcAq6]+Q22qqttQqS1Q3Y]6KKKKK	
1a4!A#a%!AqD&	 !A#qqttQq!tVb[9A#1vyyy	!QC9rdYYY4EFAQ1""""""rO   c                      t          g t                    dg fk    sJ t          g dt                    dg dfk    sJ t          g dt                    dg dfk    sJ d S )Nr   rb   r   rb   r   rb   )r;   rB   rI   rO   rM   test_dup_terms_gcdr
  r  su    R  QG++++B''Ayyy>9999r**q)))n<<<<<<rO   c                     t          g gdt                    dg gfk    sJ t          g ddt                    dg dfk    sJ t          dgg dgg gdt                    ddgg dggfk    sJ t          ddgg dggdt                    dddgg dggfk    sJ t          ddgg dg g gdt                    d	dgddggfk    sJ d S )
Nrb   rh   r   r   rb   r	  rk   r   r   )r<   rB   rI   rO   rM   test_dmp_terms_gcdr  x  s3   "q"%%&2$7777q"--$			1BBBBB1#rA3+Q33!b1#7OOOOO
QaS1b" "&,1vrA3.?%@A A A A
QB#Q, ,06!q!f/FG G G G G GrO   c                  4   t          g ggdt                    dgk    sJ t          dgggdt                    dgk    sJ t          g ddt                    g dk    sJ t          dgddgg d	gdt                    g d
k    sJ g dg dg g} t          | dt          d          ddgk    sJ t          | dt          d          ddgk    sJ g dg dg g} t          | dt          d          ddgk    sJ t          | dt          d          ddgk    sJ d S )NrR   )r   r   rb   )r   rb   )rb   rR   rT   rS   rU   r   )))rT   rb   )r   rR   )r   rT   )r  rS   )r   rU   rT   )rS   rU   r   ))r   rb   )rl   rR   )rk   rT   ))r   rR   rS   )rj   rU   r   r   lex)order))rR   rS   rR   )r   rb   grlex)rb   r   r   r   r   r   ))rb   rU   rb   )r=   rB   r   s    rM   test_dmp_list_termsr    s   B4&!R((^,<<<<<QC5'1b))n-=====///1b11???@ @ @ @ A3A			2Ar::IIIJ J J J 
yyy"%A!Q%000[+4NNNNN	1b! ! !%0+$>? ? ? ? 
)))2.A!Q%000[+4NNNNN	1b! ! !%0+$>? ? ? ? ? ?rO   c                     d } t          g dg d| g dt                    g dk    sJ t          ddgg d| g dt                    dd	gk    sJ t          g dd
dg| g dt                    dd	gk    sJ t          ddgdggdd
gdgg| g dt                    ddgd	ggk    sJ t          ddgdggdgd
dgg| g dt                    dgd	ggk    sJ t          dgddggdd
gdgg| g dt                    d
gd	ggk    sJ d S )Nc                     | |z  S )NrI   )abs     rM   rz   z&test_dmp_apply_pairs.<locals>.<lambda>  s
    QqS rO   r   )rT   rU   rw   r   )rT   
      rR   rS   r  r  rU   rw   rb   rT   rv   )r>   rB   )r   s    rM   test_dmp_apply_pairsr    s   A999iiiB2>>+++MMMMAq6999aQ;;BxGGGG999q!faQ;;BxGGGG
Q!A}aQ4 49:B"G G G G 
Q!aV}aQ4 49:bT{C C C C
q!fA}aQ4 49:bT{C C C C C CrO   c                  "   g d} t          | ddt                    g k    sJ t          | ddt                    dgk    sJ t          | ddt                    ddgk    sJ t          | ddt                    g dk    sJ t          | ddt                    g dk    sJ t          | ddt                    | k    sJ t          | ddt                    | k    sJ t          | ddt                    g k    sJ t          | ddt                    g k    sJ t          | ddt                    ddgk    sJ t          | ddt                    g d	k    sJ t          | ddt                    g d
k    sJ t          ddgddt                    ddgk    sJ d S )N)rb   rR   rS   rT   r   rb   rT   rR   rS   r\   rt   )rR   rS   r   r   )r?   rB   r   s    rM   test_dup_slicer    s   AQ1b!!R''''Q1b!!aS((((Q1b!!aV++++Q1b!!YYY....Q1b!!\\\1111Q1b!!Q&&&&Q1b!!Q&&&&Q1b!!R''''Q1b!!R''''Q1b!!aV++++Q1b!!YYY....Q1b!!\\\1111aVQ2&&1a&000000rO   c                  >   t          dddt                    } t          |           dk    sJ t          d | D                       sJ t          dddt                    } t          |           dk    sJ t          d | D                       sJ t          d	d
dt                    } t          |           d	k    sJ t          d | D                       sJ t          dddt                    } t          |           dk    sJ t          d | D                       sJ d S )Nr   r  c              3   6   K   | ]}d |cxk    odk    nc V  dS )r  r  NrI   rK   cs     rM   	<genexpr>z"test_dup_random.<locals>.<genexpr>  6      ))!sa~~~~2~~~~))))))rO   rb      c              3   6   K   | ]}d |cxk    odk    nc V  dS )r#  r$  NrI   r  s     rM   r!  z"test_dup_random.<locals>.<genexpr>  r"  rO   rR      c              3   6   K   | ]}d |cxk    odk    nc V  dS )r&  r'  NrI   r  s     rM   r!  z"test_dup_random.<locals>.<genexpr>  r"  rO   rS   (   c              3   6   K   | ]}d |cxk    odk    nc V  dS )r)  r*  NrI   r  s     rM   r!  z"test_dup_random.<locals>.<genexpr>  r"  rO   )r@   rB   r
   allr   s    rM   test_dup_randomr-    s<   1c2r""Aa==A))q))))))))1c2r""Aa==A))q))))))))1c2r""Aa==A))q))))))))1c2r""Aa==A))q))))))))))rO   N)__doc__sympy.polys.densebasicr   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$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   sympy.polys.specialpolysrA   sympy.polys.domainsrB   rC   sympy.polys.ringsrD   sympy.core.singletonrE   sympy.testing.pytestrF   sympy.core.numbersrG   r   r   r   r   r{   r   r|   rV   rY   r]   r_   rc   rf   rm   ro   rr   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   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r-  rI   rO   rM   <module>r6     s   : :" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "H - , , , , , & & & & & & & & " " " " " " " " " " " " ' ' ' ' ' ' ! ! ! ! ! !$G$GGGII$G$G$G !S#sCc) ) )
) ) )
? ? ?7 7 7= = == = =; ; ;, , ,* * *< < <*
3 
3 
36 6 6> > > F F F2 2 2
    - - -
+ + +
% % %( ( (    ; ; ;D D D	P 	P 	P+ + +! ! !
/ / /) ) )
; ; ;(/ / /- - -2 2 28 8 89 9 9  D" " "	; 	; 	;. . ./ / /8 8 8  4G G G
* 
* 
* (  (  (F> > >B B B O O OJ J J) ) )$# # #$= = =	G 	G 	G? ? ?.C C C"1 1 1** * * * *rO   