+
    ‹°³jrŒ  ã                   ó   € R t ^ RIHt ^ RIHtHt ^ RIHt ^ RIt]	! R4      t
R tR t];tt];ttR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tRMR ltR tR t R t!R t"R t#R t$R t%R t&R t'R t(R  t)R! t*R" t+R# t,R$ t-R% t.R& t/R' t0R( t1R) t2R* t3R+ t4R, t5R- t6R. t7R/ t8R0 t9RNR1 lt:RNR2 lt;RNR3 lt<R4 t=R5 t>R6 t?R7 t@R8 tAR9 tBR: tCR; tDR< tER= tFR> tGR? tHR@ tIRORA ltJRORB ltKRC tLRD tMRE tNRMRF ltORG tPRH tQRI tRRJ tSRK tTRL tUR# )PzEBasic tools for dense recursive polynomials in ``K[x]`` or ``K[X]``. )Úigcd)Úmonomial_minÚmonomial_div)Úmonomial_keyNz-infc                ó<   € V '       g   VP                   # V ^ ,          # )zÑ
Return leading coefficient of ``f``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import poly_LC

>>> poly_LC([], ZZ)
0
>>> poly_LC([ZZ(1), ZZ(2), ZZ(3)], ZZ)
1

©Úzero©ÚfÚKs   &&ÚW/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/polys/densebasic.pyÚpoly_LCr      s   € ÷  Ø�v‰vˆà��tˆó    c                ó<   € V '       g   VP                   # V R,          # )zÒ
Return trailing coefficient of ``f``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import poly_TC

>>> poly_TC([], ZZ)
0
>>> poly_TC([ZZ(1), ZZ(2), ZZ(3)], ZZ)
3

éÿÿÿÿr   r	   s   &&r   Úpoly_TCr   $   s   € ÷  Ø�v‰vˆà��uˆr   c                óT   € V'       d   \        W4      p V^,          pK  \        W4      # )zÙ
Return the ground leading coefficient.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_ground_LC

>>> f = ZZ.map([[[1], [2, 3]]])

>>> dmp_ground_LC(f, 2, ZZ)
1

)Údmp_LCÚdup_LC©r
   Úur   s   &&&r   Údmp_ground_LCr   =   ó#   € ÷  Ü�1‹LˆØ	ˆQ�Šä�!‹<Ðr   c                óT   € V'       d   \        W4      p V^,          pK  \        W4      # )zÚ
Return the ground trailing coefficient.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_ground_TC

>>> f = ZZ.map([[[1], [2, 3]]])

>>> dmp_ground_TC(f, 2, ZZ)
3

)Údmp_TCÚdup_TCr   s   &&&r   Údmp_ground_TCr   T   r   r   c                ó   € . pV'       d5   VP                  \        V 4      ^,
          4       V ^ ,          V^,
          rK<  V '       g   VP                  ^ 4       M!VP                  \        V 4      ^,
          4       \        V4      \        W4      3# )zø
Return the leading term ``c * x_1**n_1 ... x_k**n_k``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_true_LT

>>> f = ZZ.map([[4], [2, 0], [3, 0, 0]])

>>> dmp_true_LT(f, 1, ZZ)
((2, 0), 4)

)ÚappendÚlenÚtupler   )r
   r   r   Úmonoms   &&& r   Údmp_true_LTr"   k   sd   € ð  €Eç
Ø�‰”S˜“V˜a•ZÔ Ø��t�Q˜•UŠ1çØ�‰�Q�à�‰”S˜“V˜a•ZÔ ä�‹<œ ›Ð%Ð%r   c                óB   € V '       g   \         # \        V 4      ^,
          # )a  
Return the leading degree of ``f`` in ``K[x]``.

Note that the degree of 0 is negative infinity (``float('-inf')``).

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_degree

>>> f = ZZ.map([1, 2, 0, 3])

>>> dup_degree(f)
3

)Úninfr   ©r
   s   &r   Ú
dup_degreer&   ‰   s   € ÷$ ÜˆÜˆq‹6�A�:Ðr   c                óT   € \        W4      '       d   \        # \        V 4      ^,
          # )aI  
Return the leading degree of ``f`` in ``x_0`` in ``K[X]``.

Note that the degree of 0 is negative infinity (``float('-inf')``).

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_degree

>>> dmp_degree([[[]]], 2)
-inf

>>> f = ZZ.map([[2], [1, 2, 3]])

>>> dmp_degree(f, 1)
1

)Ú
dmp_zero_pr$   r   ©r
   r   s   &&r   Ú
dmp_degreer*       s"   € ô* �!×ÒÜˆä�1‹v˜�zÐr   c                ó‚   aaa€ SS8X  d   \        V S4      # S^,
          S^,           uoo\        VVV3R lV  4       4      # )z4Recursive helper function for :func:`dmp_degree_in`.c              3   ó@   <"  € T F  p\        VSSS4      x € K  	  R # 5i©N)Ú_rec_degree_in)Ú.0ÚcÚiÚjÚvs   & €€€r   Ú	<genexpr>Ú!_rec_degree_in.<locals>.<genexpr>Â   s   øé € Ð5±1¨aŒ~˜a  A q×)Ð)³1ùs   ƒ)r*   Úmax)Úgr3   r1   r2   s   &fffr   r.   r.   »   s;   ú€ àˆA„vÜ˜!˜QÓÐàˆq�5�!�a•%€D€A€qäÖ5±1Ó5Ó5Ð5r   c                ó‚   € V'       g   \        W4      # V^ 8  g   W8”  d   \        RV: RV: 24      h\        W^ V4      # )a
  
Return the leading degree of ``f`` in ``x_j`` in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_degree_in

>>> f = ZZ.map([[2], [1, 2, 3]])

>>> dmp_degree_in(f, 0, 1)
1
>>> dmp_degree_in(f, 1, 1)
2

z
0 <= j <= ú expected, got )r*   Ú
IndexErrorr.   )r
   r2   r   s   &&&r   Údmp_degree_inr;   Å   s<   € ÷$ Ü˜!ÓÐØˆ1„u�”Ý»AºqÐAÓBÐBä˜!  1Ó%Ð%r   c                óž   € \        W2,          \        W4      4      W2&   V^ 8”  d)   V^,
          V^,           r!V  F  p\        WAW#4       K  	  R# R# )z-Recursive helper for :func:`dmp_degree_list`.N)r6   r*   Ú_rec_degree_list)r7   r3   r1   Údegsr0   s   &&&& r   r=   r=   ß   sF   € ä�$•'œ: aÓ+Ó,€D�Gàˆ1„uØ�1�u�a˜!•eˆ1ãˆAÜ˜Q 1Ö+ó ñ r   c                ó\   € \         .V^,           ,          p\        W^ V4       \        V4      # )zç
Return a list of degrees of ``f`` in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_degree_list

>>> f = ZZ.map([[1], [1, 2, 3]])

>>> dmp_degree_list(f, 1)
(1, 2)

)r$   r=   r    )r
   r   r>   s   && r   Údmp_degree_listr@   ê   s)   € ô  ˆ6�1�q•5�>€DÜ�Q˜1˜dÔ#Ü�‹;Ðr   c                óx   € V '       d   V ^ ,          '       d   V # ^ pV  F  pV'       d    MV^,          pK  	  WR # )z¤
Remove leading zeros from ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.densebasic import dup_strip

>>> dup_strip([0, 0, 1, 2, 3, 0])
[1, 2, 3, 0]

N© )r
   r1   Úcfs   &  r   Ú	dup_striprD   ÿ   s=   € ÷ ��!—”Øˆà	€AãˆßÙà��FŠAñ	 ð ˆRˆ5€Lr   c                óê   € V'       g   \        V 4      # \        W4      '       d   V # ^ V^,
          r2V  F  p\        WC4      '       g    MV^,          pK!  	  V\        V 4      8X  d   \        V4      # WR # )z­
Remove leading zeros from ``f`` in ``K[X]``.

Examples
========

>>> from sympy.polys.densebasic import dmp_strip

>>> dmp_strip([[], [0, 1, 2], [1]], 1)
[[0, 1, 2], [1]]

N)rD   r(   r   Údmp_zero)r
   r   r1   r3   r0   s   &&   r   Ú	dmp_striprG     sm   € ÷ Ü˜‹|Ðä�!×ÒØˆàˆa�!�e€qãˆÜ˜!×ÒÙà��FŠAñ	 ð 	ŒC�‹F„{Ü˜‹{Ðà�ˆuˆr   c                ó.  € \        V\        4      '       gF   Ve8   VP                  V4      '       g!   \        V: RV : RVP                  : 24      hV^,
          0# V'       g   V0# \        4       pV F  pV\        WV^,           V4      ,          pK   	  V# )z*Recursive helper for :func:`dmp_validate`.z in z in not of type )Ú
isinstanceÚlistÚof_typeÚ	TypeErrorÚdtypeÚsetÚ_rec_validate)r
   r7   r1   r   Úlevelsr0   s   &&&&  r   rO   rO   ;  sz   € ä�aœ×ÒØŠ= §¡¨1§¢Ü»A»qÀ!Ç'Ã'ÐJÓKÐKà�A•ˆwˆßØˆsˆ
ä“ˆãˆAØ”m A¨!¨a­%°Ó3Õ3ŠFñ ð ˆr   c           	     óŽ   € V'       g   \        V 4      # V^,
          p\        V  Uu. uF  p\        W24      NK  	  upV4      # u upi )z(Recursive helper for :func:`_rec_strip`.)rD   rG   Ú
_rec_strip)r7   r3   Úwr0   s   &&  r   rR   rR   M  s<   € çÜ˜‹|Ðà	ˆA�€Aä±Ó4±¨A”z !Ö'±Ñ4°aÓ8Ð8ùÒ4s   ¦Ac                ó|   € \        W ^ V4      pVP                  4       pV'       g   \        W4      V3# \        R4      h)aH  
Return the number of levels in ``f`` and recursively strip it.

Examples
========

>>> from sympy.polys.densebasic import dmp_validate

>>> dmp_validate([[], [0, 1, 2], [1]])
([[1, 2], [1]], 1)

>>> dmp_validate([[1], 1])
Traceback (most recent call last):
...
ValueError: invalid data structure for a multivariate polynomial

z4invalid data structure for a multivariate polynomial)rO   ÚpoprR   Ú
ValueError)r
   r   rP   r   s   &&  r   Údmp_validaterW   W  sB   € ô$ ˜1  AÓ&€Fà�
‰
‹€AçÜ˜!Ó Ð"Ð"äØBóDð 	Dr   c                ó<   € \        \        \        V 4      4      4      # )zè
Compute ``x**n * f(1/x)``, i.e.: reverse ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_reverse

>>> f = ZZ.map([1, 2, 3, 0])

>>> dup_reverse(f)
[3, 2, 1]

)rD   rJ   Úreversedr%   s   &r   Údup_reverserZ   t  s   € ô  ”Tœ( 1›+Ó&Ó'Ð'r   c                ó   € \        V 4      # )zé
Create a new copy of a polynomial ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_copy

>>> f = ZZ.map([1, 2, 3, 0])

>>> dup_copy([1, 2, 3, 0])
[1, 2, 3, 0]

)rJ   r%   s   &r   Údup_copyr\   ‡  s   € ô  �‹7€Nr   c                óz   € V'       g   \        V 4      # V^,
          pV  Uu. uF  p\        W24      NK  	  up# u upi )zã
Create a new copy of a polynomial ``f`` in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_copy

>>> f = ZZ.map([[1], [1, 2]])

>>> dmp_copy(f, 1)
[[1], [1, 2]]

)rJ   Údmp_copy)r
   r   r3   r0   s   &&  r   r^   r^   š  s5   € ÷  Ü�A‹wˆà	ˆA�€Aá%&Ó(¡Q ŒX�aŽ^¡QÑ(Ð(ùÒ(s   ¡8c                ó   € \        V 4      # )a
  
Convert `f` into a tuple.

This is needed for hashing. This is similar to dup_copy().

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_copy

>>> f = ZZ.map([1, 2, 3, 0])

>>> dup_copy([1, 2, 3, 0])
[1, 2, 3, 0]

©r    r%   s   &r   Údup_to_tuplera   ²  s   € ô$ �‹8€Or   c                ó    a€ V'       g   \        V 4      # V^,
          o\         ;QJ d    . V3R lV  4       F  NK  	  5# ! V3R lV  4       4      # )a  
Convert `f` into a nested tuple of tuples.

This is needed for hashing.  This is similar to dmp_copy().

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_to_tuple

>>> f = ZZ.map([[1], [1, 2]])

>>> dmp_to_tuple(f, 1)
((1,), (1, 2))

c              3   ó<   <"  € T F  p\        VS4      x € K  	  R # 5ir-   )Údmp_to_tuple)r/   r0   r3   s   & €r   r4   Údmp_to_tuple.<locals>.<genexpr>Ý  s   øé € Ð/©Q¨”˜a ×#Ð#«Qùs   ƒr`   )r
   r   r3   s   &&@r   rd   rd   Ç  s<   ø€ ÷$ Ü�Q‹xˆØ	ˆA�€AçŒ5Ô/©QÓ/�5Ð/ˆ5Ô/©QÓ/Ó/Ð/r   c                ó^   € \        V  Uu. uF  q!P                  V4      NK  	  up4      # u upi )zÐ
Normalize univariate polynomial in the given domain.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_normal

>>> dup_normal([0, 1, 2, 3], ZZ)
[1, 2, 3]

)rD   Únormal©r
   r   r0   s   && r   Ú
dup_normalri   à  s'   € ô ©AÓ/©A q—x‘x –{©AÑ/Ó0Ð0ùÒ/ó   Š*c           
     ó�   € V'       g   \        W4      # V^,
          p\        V  Uu. uF  p\        WCV4      NK  	  upV4      # u upi )zÙ
Normalize a multivariate polynomial in the given domain.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_normal

>>> dmp_normal([[], [0, 1, 2]], 1, ZZ)
[[1, 2]]

)ri   rG   Ú
dmp_normal©r
   r   r   r3   r0   s   &&&  r   rl   rl   ñ  sA   € ÷ Ü˜!ÓÐà	ˆA�€Aä±AÓ7±A¨q”z !¨Ö*±AÑ7¸Ó;Ð;ùÒ7ó   ¦Ac           	     óv   € Ve	   W8X  d   V # \        V  Uu. uF  q2P                  W14      NK  	  up4      # u upi )a^  
Convert the ground domain of ``f`` from ``K0`` to ``K1``.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_convert

>>> R, x = ring("x", ZZ)

>>> dup_convert([R(1), R(2)], R.to_domain(), ZZ)
[1, 2]
>>> dup_convert([ZZ(1), ZZ(2)], ZZ, R.to_domain())
[1, 2]

)rD   Úconvert)r
   ÚK0ÚK1r0   s   &&& r   Údup_convertrs     s6   € ð& 
‚~˜"œ(Øˆä±aÓ9±a°Ÿ:™: aÖ,±aÑ9Ó:Ð:ùÒ9s   –6c                óª   € V'       g   \        WV4      # Ve	   W#8X  d   V # V^,
          p\        V  Uu. uF  p\        WTW#4      NK  	  upV4      # u upi )at  
Convert the ground domain of ``f`` from ``K0`` to ``K1``.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_convert

>>> R, x = ring("x", ZZ)

>>> dmp_convert([[R(1)], [R(2)]], 1, R.to_domain(), ZZ)
[[1], [2]]
>>> dmp_convert([[ZZ(1)], [ZZ(2)]], 1, ZZ, R.to_domain())
[[1], [2]]

)rs   rG   Údmp_convert)r
   r   rq   rr   r3   r0   s   &&&&  r   ru   ru      sQ   € ÷& Ü˜1 "Ó%Ð%Ø	‚~˜"œ(Øˆà	ˆA�€Aä¹!Ó=¹!°Q”{ 1¨Ö0¹!Ñ=¸qÓAÐAùÒ=s   ³Ac                ó^   € \        V  Uu. uF  q!P                  V4      NK  	  up4      # u upi )a   
Convert the ground domain of ``f`` from SymPy to ``K``.

Examples
========

>>> from sympy import S
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_from_sympy

>>> dup_from_sympy([S(1), S(2)], ZZ) == [ZZ(1), ZZ(2)]
True

)rD   Ú
from_sympyrh   s   && r   Údup_from_sympyrx   =  s'   € ô ±Ó3±¨1—|‘| A–±Ñ3Ó4Ð4ùÒ3rj   c           
     ó�   € V'       g   \        W4      # V^,
          p\        V  Uu. uF  p\        WCV4      NK  	  upV4      # u upi )a  
Convert the ground domain of ``f`` from SymPy to ``K``.

Examples
========

>>> from sympy import S
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_from_sympy

>>> dmp_from_sympy([[S(1)], [S(2)]], 1, ZZ) == [[ZZ(1)], [ZZ(2)]]
True

)rx   rG   Údmp_from_sympyrm   s   &&&  r   rz   rz   O  sA   € ÷ Ü˜aÓ#Ð#à	ˆA�€Aä¹Ó;¹°1”~ a¨AÖ.¹Ñ;¸QÓ?Ð?ùÒ;rn   c                óž   € V^ 8  d   \        RV,          4      hV\        V 4      8¼  d   VP                  # V \        V 4      V,
          ,          # )zî
Return the ``n``-th coefficient of ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_nth

>>> f = ZZ.map([1, 2, 3])

>>> dup_nth(f, 0, ZZ)
3
>>> dup_nth(f, 4, ZZ)
0

ú 'n' must be non-negative, got %i)r:   r   r   r&   )r
   Únr   s   &&&r   Údup_nthr~   f  sD   € ð$ 	ˆ1„uÜÐ;¸aÕ?Ó@Ð@Ø	
Œc�!‹fŒØ�v‰vˆà”˜A“ Õ"Õ#Ð#r   c                óª   € V^ 8  d   \        RV,          4      hV\        V 4      8¼  d   \        V^,
          4      # V \        W4      V,
          ,          # )zý
Return the ``n``-th coefficient of ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_nth

>>> f = ZZ.map([[1], [2], [3]])

>>> dmp_nth(f, 0, 1, ZZ)
[3]
>>> dmp_nth(f, 4, 1, ZZ)
[]

r|   )r:   r   rF   r*   )r
   r}   r   r   s   &&&&r   Údmp_nthr€   €  sJ   € ð$ 	ˆ1„uÜÐ;¸aÕ?Ó@Ð@Ø	
Œc�!‹fŒÜ˜˜A�‹Ðà”˜AÓ! AÕ%Õ&Ð&r   c                óè   € TpV Fi  pV^ 8  d   \        RV,          4      hV\        V 4      8¼  d   VP                  u # \        W4      pV\        8X  d   RpWV,
          ,          V^,
          r@Kk  	  V # )z÷
Return the ground ``n``-th coefficient of ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_ground_nth

>>> f = ZZ.map([[1], [2, 3]])

>>> dmp_ground_nth(f, (0, 1), 1, ZZ)
2

z `n` must be non-negative, got %ir   )r:   r   r   r*   r$   )r
   ÚNr   r   r3   r}   Úds   &&&&   r   Údmp_ground_nthr„   š  sm   € ð  	
€AãˆØˆqŒ5ÜÐ?À!ÕCÓDÐDØ”#�a“&Œ[Ø—6‘6ŠMä˜1Ó ˆAØ”DŒyØ�Ø˜•U•8˜Q �UŠqñ ð €Hr   c                ól   € V'       d'   \        V 4      ^8w  d   R# V ^ ,          p V^,          pK.  V '       * # )z¿
Return ``True`` if ``f`` is zero in ``K[X]``.

Examples
========

>>> from sympy.polys.densebasic import dmp_zero_p

>>> dmp_zero_p([[[[[]]]]], 4)
True
>>> dmp_zero_p([[[[[1]]]]], 4)
False

F)r   r)   s   &&r   r(   r(   º  s.   € ÷ Üˆq‹6�QŒ;Ùàˆa�DˆØ	ˆQ�ŠàŒ5€Lr   c                ó4   € . p\        V 4       F  pV.pK  	  V# )z~
Return a multivariate zero.

Examples
========

>>> from sympy.polys.densebasic import dmp_zero

>>> dmp_zero(4)
[[[[[]]]]]

)Úrange)r   Úrr1   s   &  r   rF   rF   Ó  s%   € ð 	€Aä�1ŽXˆØˆCŠñ ð €Hr   c                ó.   € \        WP                  V4      # )zÃ
Return ``True`` if ``f`` is one in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_one_p

>>> dmp_one_p([[[ZZ(1)]]], 2, ZZ)
True

)Údmp_ground_pÚoner   s   &&&r   Ú	dmp_one_prŒ   è  s   € ô ˜Ÿ5™5 !Ó$Ð$r   c                ó.   € \        VP                  V 4      # )z®
Return a multivariate one over ``K``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_one

>>> dmp_one(2, ZZ)
[[[1]]]

)Ú
dmp_groundr‹   )r   r   s   &&r   Údmp_oner�   ù  s   € ô �a—e‘e˜QÓÐr   c                óº   € Ve   V'       g   \        W4      # V'       d'   \        V 4      ^8w  d   R# V ^ ,          p V^,          pK.  Vf   \        V 4      ^8*  # W.8H  # )zÆ
Return True if ``f`` is constant in ``K[X]``.

Examples
========

>>> from sympy.polys.densebasic import dmp_ground_p

>>> dmp_ground_p([[[3]]], 3, 2)
True
>>> dmp_ground_p([[[4]]], None, 2)
True

F)r(   r   )r
   r0   r   s   &&&r   rŠ   rŠ   
  sU   € ð 	‚}ŸQÜ˜!ÓÐç
Üˆq‹6�QŒ;ÙØˆa�DˆØ	ˆQ�Šà‚yÜ�1‹v˜‰{Ðà�C‰xˆr   c                ód   € V '       g   \        V4      # \        V^,           4       F  pV .p K  	  V # )z¤
Return a multivariate constant.

Examples
========

>>> from sympy.polys.densebasic import dmp_ground

>>> dmp_ground(3, 5)
[[[[[[3]]]]]]
>>> dmp_ground(1, -1)
1

)rF   r‡   )r0   r   r1   s   && r   rŽ   rŽ   (  s1   € ÷ Ü˜‹{Ðä�1�q•5Ž\ˆØˆCŠñ ð €Hr   c                óž   € V '       g   . # V^ 8  d   VP                   .V ,          # \        V 4       Uu. uF  p\        V4      NK  	  up# u upi )zè
Return a list of multivariate zeros.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_zeros

>>> dmp_zeros(3, 2, ZZ)
[[[[]]], [[[]]], [[[]]]]
>>> dmp_zeros(3, -1, ZZ)
[0, 0, 0]

)r   r‡   rF   )r}   r   r   r1   s   &&& r   Ú	dmp_zerosr“   @  sC   € ÷  Øˆ	àˆ1„uØ—‘ˆx˜�zÐä&+¨A¤hÓ0¡h ”˜!–¡hÑ0Ð0ùÒ0s   ³A
c                óŠ   € V'       g   . # V^ 8  d   V .V,          # \        V4       Uu. uF  p\        W4      NK  	  up# u upi )zû
Return a list of multivariate constants.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_grounds

>>> dmp_grounds(ZZ(4), 3, 2)
[[[[4]]], [[[4]]], [[[4]]]]
>>> dmp_grounds(ZZ(4), 3, -1)
[4, 4, 4]

)r‡   rŽ   )r0   r}   r   r1   s   &&& r   Údmp_groundsr•   Y  s?   € ÷  Øˆ	àˆ1„uØˆs�1�uˆä+0°¬8Ó5©8 a”˜AÖ!©8Ñ5Ð5ùÒ5s   ©A c                ó8   € VP                  \        WV4      4      # )a  
Return ``True`` if ``LC(f)`` is negative.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_negative_p

>>> dmp_negative_p([[ZZ(1)], [-ZZ(1)]], 1, ZZ)
False
>>> dmp_negative_p([[-ZZ(1)], [ZZ(1)]], 1, ZZ)
True

)Úis_negativer   r   s   &&&r   Údmp_negative_pr˜   r  ó   € ð  �=‰=œ q¨QÓ/Ó0Ð0r   c                ó8   € VP                  \        WV4      4      # )a  
Return ``True`` if ``LC(f)`` is positive.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_positive_p

>>> dmp_positive_p([[ZZ(1)], [-ZZ(1)]], 1, ZZ)
True
>>> dmp_positive_p([[-ZZ(1)], [ZZ(1)]], 1, ZZ)
False

)Úis_positiver   r   s   &&&r   Údmp_positive_prœ   …  r™   r   c                ó’  € V '       g   . # \        V P                  4       4      . r2\        V\        4      '       d@   \	        VRR4       F-  pVP                  V P                  WAP                  4      4       K/  	  MDVw  p\	        VRR4       F/  pVP                  V P                  V3VP                  4      4       K1  	  \        V4      # )a  
Create a ``K[x]`` polynomial from a ``dict``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_from_dict

>>> dup_from_dict({(0,): ZZ(7), (2,): ZZ(5), (4,): ZZ(1)}, ZZ)
[1, 0, 5, 0, 7]
>>> dup_from_dict({}, ZZ)
[]

r   )	r6   ÚkeysrI   Úintr‡   r   Úgetr   rD   ©r
   r   r}   ÚhÚks   &&   r   Údup_from_dictr¤   ˜  s›   € ÷  Øˆ	äˆq�v‰v‹x‹=˜"€qä�!”S×ÒÜ�q˜"˜bÖ!ˆAØ�H‰H�Q—U‘U˜1Ÿf™fÓ%Ö&ò "ð ‰ˆä�q˜"˜bÖ!ˆAØ�H‰H�Q—U‘U˜A˜4 §¡Ó(Ö)ñ "ô �Q‹<Ðr   c                óÜ   € V '       g   . # \        V P                  4       4      . r2\        VRR4       F-  pVP                  V P	                  WAP
                  4      4       K/  	  \        V4      # )zó
Create a ``K[x]`` polynomial from a raw ``dict``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_from_raw_dict

>>> dup_from_raw_dict({0: ZZ(7), 2: ZZ(5), 4: ZZ(1)}, ZZ)
[1, 0, 5, 0, 7]

r   )r6   rž   r‡   r   r    r   rD   r¡   s   &&   r   Údup_from_raw_dictr¦   ¹  sU   € ÷ Øˆ	äˆq�v‰v‹x‹=˜"€qä�1�b˜"ÖˆØ	�‰�—‘�qŸ&™&Ó!Ö"ñ ô �Q‹<Ðr   c                óò  € V'       g   \        W4      # V '       g   \        V4      # / pV P                  4        F.  w  rEV^ ,          VR,          rvWc9   d   WSV,          V&   K)  Wu/W6&   K0  	  \        VP	                  4       4      V^,
          . r©p\        VRR4       FO  pVP                  V4      pVe   V
P                  \        WYV4      4       K5  V
P                  \        V	4      4       KQ  	  \        W¡4      # )a  
Create a ``K[X]`` polynomial from a ``dict``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_from_dict

>>> dmp_from_dict({(0, 0): ZZ(3), (0, 1): ZZ(2), (2, 1): ZZ(1)}, 1, ZZ)
[[1, 0], [], [2, 3]]
>>> dmp_from_dict({}, 0, ZZ)
[]

ºé   NNr   )
r¤   rF   Úitemsr6   rž   r‡   r    r   Údmp_from_dictrG   )r
   r   r   Úcoeffsr!   ÚcoeffÚheadÚtailr}   r3   r¢   r£   s   &&&         r   r«   r«   Ò  sÐ   € ÷  Ü˜QÓ"Ð"ßÜ˜‹{Ðà€FàŸ™ž	‰ˆØ˜1•X˜u R�yˆdàŒ>Ø!&�4�L˜Óà!˜?ˆF‹Lñ "ô �&—+‘+“-Ó  ! a¥%¨ˆ!€Aä�1�b˜"ÖˆØ—
‘
˜1“ˆàÒØ�H‰H”] 5¨QÓ/Ö0à�H‰H”X˜a“[Ö!ñ ô �Q‹?Ðr   c                óî   € V '       g   V'       d   RVP                   /# \        V 4      ^,
          / rC\        ^ V^,           4       F,  pWV,
          ,          '       g   K  WV,
          ,          WE3&   K.  	  V# )zÉ
Convert ``K[x]`` polynomial to a ``dict``.

Examples
========

>>> from sympy.polys.densebasic import dup_to_dict

>>> dup_to_dict([1, 0, 5, 0, 7])
{(0,): 7, (2,): 5, (4,): 1}
>>> dup_to_dict([])
{}

©é    ©r   r   r‡   ©r
   r   r   r}   Úresultr£   s   &&&   r   Údup_to_dictr¶   þ  s[   € ÷ —Ø�a—f‘fˆ~Ðä�A“˜•
˜B€vä�1�a˜!•eŽ_ˆØ��U�8Ž8Ø �U�8ˆF�4‹Lñ ð €Mr   c                óì   € V '       g   V'       d   ^ VP                   /# \        V 4      ^,
          / rC\        ^ V^,           4       F+  pWV,
          ,          '       g   K  WV,
          ,          WE&   K-  	  V# )z·
Convert a ``K[x]`` polynomial to a raw ``dict``.

Examples
========

>>> from sympy.polys.densebasic import dup_to_raw_dict

>>> dup_to_raw_dict([1, 0, 5, 0, 7])
{0: 7, 2: 5, 4: 1}

r³   r´   s   &&&   r   Údup_to_raw_dictr¸     sY   € ÷ —Ø�1—6‘6ˆ{Ðä�A“˜•
˜B€vä�1�a˜!•eŽ_ˆØ��U�8Ž8Ø˜a�%�ˆF‹Iñ ð €Mr   c                óŽ  € V'       g   \        WVR7      # \        W4      '       d%   V'       d   RV^,           ,          VP                  /# \        W4      V^,
          / repV\        8X  d   Rp\        ^ V^,           4       FA  p\        WV,
          ,          V4      pVP                  4        F  w  ršW¦V3V	,           &   K  	  KC  	  V# )zÞ
Convert a ``K[X]`` polynomial to a ``dict````.

Examples
========

>>> from sympy.polys.densebasic import dmp_to_dict

>>> dmp_to_dict([[1, 0], [], [2, 3]], 1)
{(0, 0): 3, (0, 1): 2, (2, 1): 1}
>>> dmp_to_dict([], 0)
{}

r   r±   r   )r¶   r(   r   r*   r$   r‡   Údmp_to_dictrª   )r
   r   r   r   r}   r3   rµ   r£   r¢   Úexpr­   s   &&&&       r   rº   rº   2  s¥   € ÷ Ü˜1 dÔ+Ð+ä�!×ÒŸDØ�a˜!•e•˜aŸf™fÐ%Ð%ä˜aÓ# Q¨¥U¨Bˆ&€AàŒD„yØˆä�1�a˜!•eŽ_ˆÜ˜˜a�%� !Ó$ˆàŸ'™'ž)‰JˆCØ!&�A�4˜#•:Óó $ñ ð €Mr   c                óR  € V^ 8  g   V^ 8  g   W8”  g   W#8”  d   \        RV,          4      hW8X  d   V # \        W4      / reVP                  4        FH  w  rxVWgRV Wr,          3,           Wq^,           V ,           Wq,          3,           Wr^,           R ,           &   KJ  	  \        WcV4      # )ai  
Transform ``K[..x_i..x_j..]`` to ``K[..x_j..x_i..]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_swap

>>> f = ZZ.map([[[2], [1, 0]], []])

>>> dmp_swap(f, 0, 1, 2, ZZ)
[[[2], []], [[1, 0], []]]
>>> dmp_swap(f, 1, 2, 2, ZZ)
[[[1], [2, 0]], [[]]]
>>> dmp_swap(f, 0, 2, 2, ZZ)
[[[1, 0]], [[2, 0], []]]

z0 <= i < j <= %s expectedN)r:   rº   rª   r«   )	r
   r1   r2   r   r   ÚFÚHr»   r­   s	   &&&&&    r   Údmp_swapr¿   U  s«   € ð( 	ˆ1„u��A”˜œ !¤%ÜÐ4°qÕ8Ó9Ð9Ø	
ŒØˆä�qÓ˜b€qà—g‘g–i‰
ˆð &+ð 	
ˆbˆqˆ'�S•V�IÕ
Ø
�!�e�Aˆ,õà�6ˆ)õà˜a�%˜&�kõ"ó 	#ñ  ô
 ˜˜qÓ!Ð!r   c                óÔ   € \        W4      / rTVP                  4        F=  w  rg^ .\        V4      ,          p\        Wa4       F	  w  ršW˜V
&   K  	  Wu\	        V4      &   K?  	  \        WRV4      # )aH  
Return a polynomial in ``K[x_{P(1)},..,x_{P(n)}]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_permute

>>> f = ZZ.map([[[2], [1, 0]], []])

>>> dmp_permute(f, [1, 0, 2], 2, ZZ)
[[[2], []], [[1, 0], []]]
>>> dmp_permute(f, [1, 2, 0], 2, ZZ)
[[[1], []], [[2, 0], []]]

)rº   rª   r   Úzipr    r«   )r
   ÚPr   r   r½   r¾   r»   r­   Únew_expÚeÚps   &&&&       r   Údmp_permuterÆ   x  se   € ô$ �qÓ˜b€qà—g‘g–i‰
ˆØ�#”c˜#“h•,ˆä˜–K‰DˆAØ�A‹Jñ  ð "Œ%�‹.Óñ  ô ˜˜qÓ!Ð!r   c                ór   € \        V \        4      '       g   \        W4      # \        V4       F  pV .p K  	  V # )zÈ
Return a multivariate value nested ``l``-levels.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_nest

>>> dmp_nest([[ZZ(1)]], 2, ZZ)
[[[[1]]]]

)rI   rJ   rŽ   r‡   )r
   Úlr   r1   s   &&& r   Údmp_nestrÉ   —  s8   € ô �aœ×ÒÜ˜!ÓÐä�1ŽXˆØˆCŠñ ð €Hr   c           	     óò   € V'       g   V # V'       g8   V '       g   \        V4      # V^,
          pV  Uu. uF  p\        WT4      NK  	  up# V^,
          pV  Uu. uF  p\        WQWc4      NK  	  up# u upi u upi )z÷
Return a multivariate polynomial raised ``l``-levels.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_raise

>>> f = ZZ.map([[], [1, 2]])

>>> dmp_raise(f, 2, 1, ZZ)
[[[[]]], [[[1]], [[2]]]]

)rF   rŽ   Ú	dmp_raise)r
   rÈ   r   r   r£   r0   r3   s   &&&&   r   rË   rË   ®  sn   € ÷  ØˆçßÜ˜A“;Ðà��Eˆá+,Ó.©1 a”˜AÖ!©1Ñ.Ð.à	ˆA�€Aá,-Ó/©A qŒY�q˜QÖ"©AÑ/Ð/ùò	 /ùò 0s   ³A/ÁA4c                óÞ   € \        V 4      ^ 8:  d   ^V 3# ^ p\        \        V 4      4       F3  pW) ^,
          ,          '       g   K  \        W#4      pV^8X  g   K/  ^V 3u # 	  W RRV1,          3# )zñ
Map ``x**m`` to ``y`` in a polynomial in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_deflate

>>> f = ZZ.map([1, 0, 0, 1, 0, 0, 1])

>>> dup_deflate(f, ZZ)
(3, [1, 1, 1])

N)r&   r‡   r   r   )r
   r   r7   r1   s   &&  r   Údup_deflaterÍ   Î  sk   € ô  �!ƒ}˜ÔØ�!ˆtˆà	€Aä”3�q“6Ž]ˆØ��a•�yŒyÙä�‹Jˆà�Ž6Ø�a�4ŠKñ ð ‘�!��fˆ9Ðr   c                ó’  € \        W4      '       d   RV^,           ,          V 3# \        W4      p^ .V^,           ,          pVP                  4        F+  p\        V4       F  w  rg\	        WF,          V4      WF&   K  	  K-  	  \        V4       F  w  rhV'       d   K  ^WF&   K  	  \        V4      p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   W@3# / p	VP                  4        F6  w  r«\        W¤4       UUu. uF  w  rÈWÈ,          NK  	  pppW¹\        V4      &   K8  	  V\        W‘V4      3# u uppi )a  
Map ``x_i**m_i`` to ``y_i`` in a polynomial in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_deflate

>>> f = ZZ.map([[1, 0, 0, 2], [], [3, 0, 0, 4]])

>>> dmp_deflate(f, 1, ZZ)
((2, 3), [[1, 2], [3, 4]])

c              3   ó*   "  € T F	  q^8H  x € K  	  R# 5i©r©   NrB   ©r/   Úbs   & r   r4   Údmp_deflate.<locals>.<genexpr>  ó   é € Ð
™1�a�Ž6›1ùó   ‚FT)r©   )
r(   rº   rž   Ú	enumerater   r    Úallrª   rÁ   r«   )r
   r   r   r½   ÚBÚMr1   ÚmrÒ   r¾   ÚAr­   Úar‚   s   &&&           r   Údmp_deflaterÝ   ï  s  € ô  �!×ÒØ�Q˜•U�|˜QˆÐä�AÓ€AØ	
ˆˆQ��U�€Aà�V‰VŽXˆÜ˜a–L‰DˆAÜ˜�˜a“=ˆA‹Dó !ñ ô ˜!–‰ˆß‰qØˆA‹Dñ ô 	ˆa‹€Aç
ƒsÑ
™1Ó
‡s‡s‚sÑ
™1Ó
×ÒØˆtˆà
€Aà—G‘G–I‰ˆÜ!$ Q¤Ô,¡™˜ˆa�fˆf¡ˆÑ,ØŒ%�‹(‹ñ ð Œm˜A !Ó$Ð$Ð$ùó -s   ÄEc           
     óN  € ^ pV  Fs  p\        V4      ^ 8:  d   ^V 3u # ^ p\        \        V4      4       F5  pW5) ^,
          ,          '       g   K  \        WE4      pV^8X  g   K/  ^V 3u u # 	  \        W$4      pKu  	  T\	        V  Uu. uF  q3RRV1,          NK  	  up4      3# u upi )a(  
Map ``x**m`` to ``y`` in a set of polynomials in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_multi_deflate

>>> f = ZZ.map([1, 0, 2, 0, 3])
>>> g = ZZ.map([4, 0, 0])

>>> dup_multi_deflate((f, g), ZZ)
(2, ([1, 2, 3], [4, 0]))

N)r&   r‡   r   r   r    )Úpolysr   ÚGrÅ   r7   r1   s   &&    r   Údup_multi_deflaterá     sŸ   € ð" 	
€AãˆÜ�a‹=˜AÔØ�e�8ŠOàˆä”s˜1“v–ˆAØ�R˜!•V—9”9Ùä�Q“
ˆAà�AŽvØ˜%�x”ñ ô �‹JŠñ ð" Œe¡eÓ-¡e ™˜!˜—f�f¡eÑ-Ó.Ð.Ð.ùÒ-s   ÂB"
c                ó"  € V'       g   \        W4      w  r4V3V3# . ^ .V^,           ,          reV  Fo  p\        Wq4      p\        Wq4      '       g@   VP                  4        F+  p\	        V4       F  w  rš\        Wi,          V
4      Wi&   K  	  K-  	  VP                  V4       Kq  	  \	        V4       F  w  r›V'       d   K  ^Wi&   K  	  \        V4      p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   W`3# . pV Fj  p/ pVP                  4        F6  w  rÞ\        WÖ4       UUu. uF  w  rûWû,          NK  	  pppWì\        V4      &   K8  	  VP                  \        WÁV4      4       Kl  	  V\        V4      3# u uppi )a{  
Map ``x_i**m_i`` to ``y_i`` in a set of polynomials in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_multi_deflate

>>> f = ZZ.map([[1, 0, 0, 2], [], [3, 0, 0, 4]])
>>> g = ZZ.map([[1, 0, 2], [], [3, 0, 4]])

>>> dmp_multi_deflate((f, g), 1, ZZ)
((2, 1), ([[1, 0, 0, 2], [3, 0, 0, 4]], [[1, 0, 2], [3, 0, 4]]))

c              3   ó*   "  € T F	  q^8H  x € K  	  R# 5irÐ   rB   rÑ   s   & r   r4   Ú$dmp_multi_deflate.<locals>.<genexpr>i  rÔ   rÕ   FT)rá   rº   r(   rž   rÖ   r   r   r    r×   rª   rÁ   r«   )rß   r   r   rÙ   r¾   r½   rØ   rÅ   r
   r1   rÚ   rÒ   r¢   rÛ   r­   rÜ   r‚   s   &&&              r   Údmp_multi_deflaterå   B  sT  € ÷" Ü  Ó*‰ˆØˆt�Qˆwˆà�ˆs�A˜•E�{€qãˆÜ˜Óˆä˜!×ÒØ—V‘V–X�Ü% ažL‘D�AÜ ¥ a›=�A“Dó )ñ ð 	
�‰�Žñ ô ˜!–‰ˆß‰qØˆA‹Dñ ô 	ˆa‹€Aç
ƒsÑ
™1Ó
‡s‡s‚sÑ
™1Ó
×ÒØˆxˆà
€AãˆØˆàŸ™ž	‰HˆAÜ%(¨¤YÔ0¡Y™T˜Q�!—&�&¡YˆAÑ0ØŒe�A‹h‹Kñ "ð 	
�‰”˜q QÓ'Ö(ñ ð Œe�A‹hˆ;Ðùó 1s   Ä8F
c                ó  € V^ 8:  d   \        RV,          4      hV^8X  g	   V '       g   V # V ^ ,          .pV R,           F>  pVP                  VP                  .V^,
          ,          4       VP                  V4       K@  	  V# )zï
Map ``y`` to ``x**m`` in a polynomial in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_inflate

>>> f = ZZ.map([1, 1, 1])

>>> dup_inflate(f, 3, ZZ)
[1, 0, 0, 1, 0, 0, 1]

z'm' must be positive, got %sr¨   )r:   Úextendr   r   )r
   rÚ   r   rµ   r­   s   &&&  r   Údup_inflaterè   z  ss   € ð  	ˆA„vÜÐ7¸!Õ;Ó<Ð<ØˆA„v—QØˆà��dˆV€Fà�2—�ˆØ�‰�q—v‘v�h  A¥Õ&Ô'Ø�‰�eÖñ ð €Mr   c           
     ó¦  € V'       g   \        WV,          V4      # W,          ^ 8:  d   \        RW,          ,          4      hV^,
          V^,           reV  Uu. uF  p\        WqWVV4      NK  	  p pV ^ ,          .pV R,           FG  p	\        ^W,          4       F  p
VP	                  \        V4      4       K  	  VP	                  V	4       KI  	  V# u upi )z)Recursive helper for :func:`dmp_inflate`.z!all M[i] must be positive, got %sr¨   )rè   r:   Ú_rec_inflater‡   r   rF   )r7   rÙ   r3   r1   r   rS   r2   r0   rµ   r­   Ú_s   &&&&&      r   rê   rê   ˜  sµ   € çÜ˜1 �d AÓ&Ð&Ø…tˆq„yÜÐ<¸q½tÕCÓDÐDàˆq�5�!�a•%€qá/0Ó2©q¨!Œ,�q˜Q 1Ö
%©q€AÐ2à��dˆV€Fà�2—�ˆÜ�q˜!�$–ˆAØ�M‰Mœ( 1›+Ö&ñ  ð 	�‰�eÖñ	 ð €Mùò 	3s   ÁCc                óÌ   € V'       g   \        W^ ,          V4      # \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   V # \        WV^ V4      # )a  
Map ``y_i`` to ``x_i**k_i`` in a polynomial in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_inflate

>>> f = ZZ.map([[1, 2], [3, 4]])

>>> dmp_inflate(f, (2, 3), 1, ZZ)
[[1, 0, 0, 2], [], [3, 0, 0, 4]]

c              3   ó*   "  € T F	  q^8H  x € K  	  R# 5irÐ   rB   )r/   rÚ   s   & r   r4   Údmp_inflate.<locals>.<genexpr>Á  rÔ   rÕ   FT)rè   r×   rê   )r
   rÙ   r   r   s   &&&&r   Údmp_inflaterï   ®  sO   € ÷  Ü˜1 �d AÓ&Ð&ç
ƒsÑ
™1Ó
‡s‡s‚sÑ
™1Ó
×ÒØˆä˜A ! Q¨Ó*Ð*r   c                óæ  € V'       d   \        V RV4      '       d   . W3# . \        W4      rC\        ^ V^,           4       F<  pVP                  4        F  pWe,          '       g   K   K)  	  VP	                  V4       K>  	  V'       g   . W3# / p VP                  4        F1  w  rg\        V4      p\        V4       F  pWe K  	  Wp\        V4      &   K3  	  V\        V4      ,          pV\        WV4      V3# )a3  
Exclude useless levels from ``f``.

Return the levels excluded, the new excluded ``f``, and the new ``u``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_exclude

>>> f = ZZ.map([[[1]], [[1], [2]]])

>>> dmp_exclude(f, 2, ZZ)
([2], [[1], [1, 2]], 1)

N)rŠ   rº   r‡   rž   r   rª   rJ   rY   r    r   r«   )r
   r   r   ÚJr½   r2   r!   r­   s   &&&     r   Údmp_excluderò   Ç  sÖ   € ÷$ ”˜Q  a×(Ò(Ø�1ˆxˆàŒ{˜1Ó €qä�1�a˜!•eŽ_ˆØ—V‘V–XˆEØ�xŽxÚñ ð �H‰H�QŽKñ ÷ Ø�1ˆxˆà
€AàŸ™ž	‰ˆÜ�U“ˆä˜!–ˆAØ’ñ ð  Œ%�‹,‹ñ "ð ŒˆQ‹…K€AàŒm˜A !Ó$ aÐ'Ð'r   c                ó  € V'       g   V # \        W4      / rVP                  4        F8  w  rV\        V4      pV F  pVP                  V^ 4       K  	  W`\	        V4      &   K:  	  V\        V4      ,          p\        WV4      # )zä
Include useless levels in ``f``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_include

>>> f = ZZ.map([[1], [1, 2]])

>>> dmp_include(f, [2], 1, ZZ)
[[[1]], [[1], [2]]]

)rº   rª   rJ   Úinsertr    r   r«   )r
   rñ   r   r   r½   r!   r­   r2   s   &&&&    r   Údmp_includerõ   ÷  st   € ÷  Øˆä�qÓ˜b€qàŸ™ž	‰ˆÜ�U“ˆãˆAØ�L‰L˜˜AÖñ ð  Œ%�‹,‹ñ "ð ŒˆQ‹…K€Aä˜˜qÓ!Ð!r   c                óN  € \        W4      / r@VP                  ^,
          pV P                  4        FL  w  rgVP                  4       pVP                  4        F#  w  r‰V'       d   W”W†,           &   K  W”Wh,           &   K%  	  KN  	  W,           ^,           p
\	        WJVP
                  4      V
3# )a  
Convert ``f`` from ``K[X][Y]`` to ``K[X,Y]``.

Examples
========

>>> from sympy.polys.rings import ring
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_inject

>>> R, x,y = ring("x,y", ZZ)

>>> dmp_inject([R(1), x + 2], 0, R.to_domain())
([[[1]], [[1], [2]]], 2)
>>> dmp_inject([R(1), x + 2], 0, R.to_domain(), front=True)
([[[1]], [[1, 2]]], 2)

)rº   Úngensrª   Úto_dictr«   Údom)r
   r   r   Úfrontr¢   r3   Úf_monomr7   Úg_monomr0   rS   s   &&&&       r   Ú
dmp_injectrý     sˆ   € ô& �qÓ˜b€qà	�‰�!�€Aà—g‘g–i‰
ˆØ�I‰I‹KˆàŸ'™'ž)‰JˆGßØ'(�'Õ#Ó$à'(�'Õ#Ó$ó	 $ñ  ð 	
���	€Aä˜˜qŸu™uÓ% qÐ(Ð(r   c                óh  € \        W4      / r@VP                  pWP                  ,
          ^,           pV P                  4        F8  w  rxV'       d
   VRV WuR r©M
Wu) R VRV)  r©W¤9   d   W„V
,          V	&   K3  W˜/WJ&   K:  	  VP                  4        F  w  rxV! V4      WG&   K  	  \        WF^,
          V4      # )zÜ
Convert ``f`` from ``K[X,Y]`` to ``K[X][Y]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_eject

>>> dmp_eject([[[1]], [[1], [2]]], 2, ZZ['x', 'y'])
[1, x + 2]

N)rº   r÷   rª   r«   )r
   r   r   rú   r¢   r}   r3   r!   r0   rü   rû   s   &&&&       r   Ú	dmp_ejectrÿ   >  s¯   € ô �qÓ˜b€qà	�‰€AØ	�G‰G��a�€Aà—G‘G–I‰ˆßØ$ R a˜y¨%°¨)‘Wà$ R S˜z¨5°°1°"¨:�WàŒ<Ø"#ˆg�J�wÓà!˜ˆA‹Jñ ð —G‘G–I‰ˆÙ�Q“4ˆ‹ñ ô ˜ �E 1Ó%Ð%r   c                ó˜   € \        W4      '       g	   V '       g   ^ V 3# ^ p\        V 4       F  pV'       g   V^,          pK   M	  W RV)  3# )zè
Remove GCD of terms from ``f`` in ``K[x]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_terms_gcd

>>> f = ZZ.map([1, 0, 1, 0, 0])

>>> dup_terms_gcd(f, ZZ)
(2, [1, 0, 1])

N)r   rY   )r
   r   r1   r0   s   &&  r   Údup_terms_gcdr  b  sL   € ô  ˆa‡|‚|Ÿ1Ø�!ˆtˆà	€Aä�aŽ[ˆßØ��FŠAáñ	 ð ��!�ˆfˆ9Ðr   c                ó¨  € \        WV4      '       g   \        W4      '       d   RV^,           ,          V 3# \        W4      p\        \	        VP                  4       4      !  p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   W@3# / p VP                  4        F  w  rVW`\        WT4      &   K  	  V\        WV4      3# )a   
Remove GCD of terms from ``f`` in ``K[X]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_terms_gcd

>>> f = ZZ.map([[1, 0], [1, 0, 0], [], []])

>>> dmp_terms_gcd(f, 1, ZZ)
((2, 1), [[1], [1, 0]])

c              3   ó*   "  € T F	  q^ 8H  x € K  	  R# 5i)r²   NrB   )r/   r7   s   & r   r4   Ú dmp_terms_gcd.<locals>.<genexpr>–  rÔ   rÕ   FTr±   )
r   r(   rº   r   rJ   rž   r×   rª   r   r«   )r
   r   r   r½   rà   r!   r­   s   &&&    r   Údmp_terms_gcdr  €  s«   € ô  �Q˜1×Ò¤¨A×!1Ò!1Ø�Q˜•U�|˜QˆÐä�AÓ€AÜ”d˜1Ÿ6™6›8“nÑ%€Aç
ƒsÑ
™1Ó
‡s‡s‚sÑ
™1Ó
×ÒØˆtˆà
€AàŸ™ž	‰ˆØ$)Œ,�uÓ
 Ó!ñ "ð Œm˜A !Ó$Ð$Ð$r   c           
     ó<  € \        W4      . rCV'       gB   \        V 4       F0  w  rVV'       g   K  VP                  W#V,
          3,           V34       K2  	  V# V^,
          p\        V 4       F.  w  rVVP                  \	        WgW#V,
          3,           4      4       K0  	  V# )z,Recursive helper for :func:`dmp_list_terms`.)r*   rÖ   r   rç   Ú_rec_list_terms)r7   r3   r!   rƒ   Útermsr1   r0   rS   s   &&&     r   r  r  ¡  s†   € ä˜!Ó €uçÜ˜a–L‰DˆAßÙà�L‰L˜% q¥5 (Õ*¨AÐ.Ö/ñ	 !ð €Lð ��Eˆä˜a–L‰DˆAØ�L‰Lœ¨¨u¸A½°xÕ/?Ó@ÖAñ !ð €Lr   c                óš   € R p\        WR4      pV'       g   RV^,           ,          VP                  3.# Vf   V# V! V\        V4      4      # )aŒ  
List all non-zero terms from ``f`` in the given order ``order``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_list_terms

>>> f = ZZ.map([[1, 1], [2, 3]])

>>> dmp_list_terms(f, 1, ZZ)
[((1, 1), 1), ((1, 0), 1), ((0, 1), 2), ((0, 0), 3)]
>>> dmp_list_terms(f, 1, ZZ, order='grevlex')
[((1, 1), 1), ((1, 0), 1), ((0, 1), 2), ((0, 0), 3)]

c                 ó(   a€ \        V V3R  lRR7      # )c                 ó"   <€ S! V ^ ,          4      # r±   rB   )ÚtermÚOs   &€r   Ú<lambda>Ú.dmp_list_terms.<locals>.sort.<locals>.<lambda>Ç  s   ø€ ©a°°Qµ¬jr   T)ÚkeyÚreverse)Úsorted)r  r  s   &fr   ÚsortÚdmp_list_terms.<locals>.sortÆ  s   ø€ Ü�eÔ!8À$ÔGÐGr   rB   r±   )r  r   r   )r
   r   r   Úorderr  r  s   &&&&  r   Údmp_list_termsr  ´  sO   € ò$Hô ˜A "Ó%€EçØ�q˜1•u•˜qŸv™vÐ&Ð'Ð'à‚}Øˆá�Eœ<¨Ó.Ó/Ð/r   c                ó>  € \        V 4      \        V4      reWV8w  dJ   WV8”  d#   VP                  .WV,
          ,          V,           pM!VP                  .We,
          ,          V ,           p . p\        W4       F  w  r‰VP                  V! W‰.VO5!  4       K   	  \	        V4      # )a  
Apply ``h`` to pairs of coefficients of ``f`` and ``g``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_apply_pairs

>>> h = lambda x, y, z: 2*x + y - z

>>> dup_apply_pairs([1, 2, 3], [3, 2, 1], h, (1,), ZZ)
[4, 5, 6]

)r   r   rÁ   r   rD   )
r
   r7   r¢   Úargsr   r}   rÚ   rµ   rÜ   rÒ   s
   &&&&&     r   Údup_apply_pairsr  Ô  s�   € ô  ˆq‹6”3�q“6€qà„vØŒ5Ø—‘�˜!�%Õ  1Õ$‰Aà—‘�˜!�%Õ  1Õ$ˆAà€Fä�A–	‰ˆØ�‰‘a˜�n˜t“nÖ%ñ ô �VÓÐr   c                ó`  € V'       g   \        WW#V4      # \        V 4      \        V4      V^,
          r‡pWg8w  d:   Wg8”  d   \        Wg,
          W…4      V,           pM\        Wv,
          W…4      V ,           p . p	\        W4       F!  w  r«V	P	                  \        W«W#W…4      4       K#  	  \        W”4      # )a#  
Apply ``h`` to pairs of coefficients of ``f`` and ``g``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dmp_apply_pairs

>>> h = lambda x, y, z: 2*x + y - z

>>> dmp_apply_pairs([[1], [2, 3]], [[3], [2, 1]], h, (1,), 1, ZZ)
[[4], [5, 6]]

)r  r   r“   rÁ   r   Údmp_apply_pairsrG   )r
   r7   r¢   r  r   r   r}   rÚ   r3   rµ   rÜ   rÒ   s   &&&&&&      r   r  r  ô  s”   € ÷  Ü˜q Q¨aÓ0Ð0ä�!‹f”c˜!“f˜a !�eˆ!€Aà„vØŒ5Ü˜!�% Ó&¨Õ*‰Aä˜!�% Ó&¨Õ*ˆAà€Fä�A–	‰ˆØ�‰”o a¨A°QÓ:Ö;ñ ô �VÓÐr   c                ó  € \        V 4      pWA8¼  d
   WA,
          pM^ pWB8¼  d
   WB,
          pM^ pWV p V '       d,   V ^ ,          VP                  8X  d   V P                  ^ 4       K3  V '       g   . # WP                  .V,          ,           # )z=Take a continuous subsequence of terms of ``f`` in ``K[x]``. )r   r   rU   )r
   rÚ   r}   r   r£   rÙ   r‚   s   &&&&   r   Ú	dup_slicer    sl   € äˆA‹€Aà„vØ�E‰àˆØ„vØ�E‰àˆà	ˆAˆ€Aç
��!•˜Ÿ™”Ø	�‰ˆaŽçØˆ	à—F‘F�8˜A•:�~Ðr   c                ó   € \        WV^ W44      # )z=Take a continuous subsequence of terms of ``f`` in ``K[X]``. )Údmp_slice_in)r
   rÚ   r}   r   r   s   &&&&&r   Ú	dmp_slicer   /  s   € ä˜˜a  AÓ)Ð)r   c                ót  € V^ 8  g   W48”  d   \        RV: RV: RV: 24      hV'       g   \        WW%4      # \        W4      / r`V P                  4        FU  w  rxWs,          p	W‘8  g   W’8¼  d   VRV R,           Ws^,           R ,           pWv9   d   Wg;;,          V,          uu&   KQ  W†V&   KW  	  \	        WdV4      # )zHTake a continuous subsequence of terms of ``f`` in ``x_j`` in ``K[X]``. Ú-z <= j < r9   Nr±   )r:   r  rº   rª   r«   )
r
   rÚ   r}   r2   r   r   r7   r!   r­   r£   s
   &&&&&&    r   r  r  4  s¡   € àˆ1„u�”Ý»QÃÂ1ÐEÓFÐFçÜ˜˜qÓ$Ð$ä�qÓ˜b€qàŸ™ž	‰ˆØ�HˆàŒ5�A”FØ˜"˜1�I Õ$ u°­U¨V }Õ4ˆEàŒ:Ø�H˜Õ�Hàˆe‹Hñ "ô ˜˜qÓ!Ð!r   c           	     ó
  € \        ^ V ^,           4       Uu. uF'  qCP                  \        P                  ! W4      4      NK)  	  ppV^ ,          '       g+   VP                  \        P                  ! W4      4      V^ &   K9  V# u upi )zô
Return a polynomial of degree ``n`` with coefficients in ``[a, b]``.

Examples
========

>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.densebasic import dup_random

>>> dup_random(3, -10, 10, ZZ) #doctest: +SKIP
[-2, -8, 9, -4]

)r‡   rp   ÚrandomÚrandint)r}   rÜ   rÒ   r   rë   r
   s   &&&&  r   Ú
dup_randomr&  L  sa   € ô 49¸¸AÀ½E´?ÓD±?¨a�)‰)”F—N’N 1Ó(Ö
)±?€AÐDà��dŒdØ�y‰yœŸš¨Ó-Ó.ˆˆ!‹à€Hùò 	Es   –-B r-   )NF)F)VÚ__doc__Ú
sympy.corer   Úsympy.polys.monomialsr   r   Úsympy.polys.orderingsr   r$  Úfloatr$   r   r   r   r   r   r   r   r   r"   r&   r*   r.   r;   r=   r@   rD   rG   rO   rR   rW   rZ   r\   r^   ra   rd   ri   rl   rs   ru   rx   rz   r~   r€   r„   r(   rF   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&  rB   r   r   Ú<module>r,     s°  ðÙ Kõ ß <Ý .ã ñ ˆVƒ}€òò,ð* Ð €ˆØÐ €ˆòò.ò.&ò<ò.ò66ò&ò4,òò*ò6òBò$9ôDò:(ò&ò&)ò0ò*0ò21ò"<ò,;ò2Bò:5ò$@ò.$ò4'ò4ò@ò2ò*%ò" ò"ò<ò01ò26ò21ò&1ò&òBò2)ôXô6ô2 òF "òF"ò>ò.0ò@òB)%òX$/òN5òpò<ò,+ò2-(ò`"ôD")ôJ!&òHò<%òBô&0ò@ò@  òFò0*ò
"ô0r   