§
    OŠtjrŒ  ã                   ó  — d Z ddlmZ ddlmZmZ ddlmZ ddlZ e	d¦  «        Z
d„ Zd„ ZexZZexZZd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdOd„Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd „ Z(d!„ Z)d"„ Z*d#„ Z+d$„ Z,d%„ Z-d&„ Z.d'„ Z/d(„ Z0d)„ Z1d*„ Z2d+„ Z3d,„ Z4d-„ Z5d.„ Z6d/„ Z7d0„ Z8d1„ Z9dPd3„Z:dPd4„Z;dPd5„Z<d6„ Z=d7„ Z>d8„ Z?d9„ Z@d:„ ZAd;„ ZBd<„ ZCd=„ ZDd>„ ZEd?„ ZFd@„ ZGdA„ ZHdB„ ZIdQdC„ZJdQdD„ZKdE„ ZLdF„ ZMdG„ ZNdOdH„ZOdI„ ZPdJ„ ZQdK„ ZRdL„ ZSdM„ ZTdN„ ZUdS )RzEBasic tools for dense recursive polynomials in ``K[x]`` or ``K[X]``. é    )Úigcd)Úmonomial_minÚmonomial_div)Úmonomial_keyNz-infc                 ó$   — | s|j         S | d         S )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

    r   ©Úzero©ÚfÚKs     úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/densebasic.pyÚpoly_LCr      s   € ð  ð ØŒvˆà�Œtˆó    c                 ó$   — | s|j         S | d         S )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ˆà�Œuˆr   c                 óT   — |rt          | |¦  «        } |dz  }|°t          | |¦  «        S )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�a‰LŒLˆØ	ˆQ‰ˆð ð õ �!�Q‰<Œ<Ðr   c                 óT   — |rt          | |¦  «        } |dz  }|°t          | |¦  «        S )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

    r   )Údmp_TCÚdup_TCr   s      r   Údmp_ground_TCr   T   r   r   c                 ó*  — g }|r4|                      t          | ¦  «        dz
  ¦  «         | d         |dz
  }} |°4| s|                      d¦  «         n%|                      t          | ¦  «        dz
  ¦  «         t          |¦  «        t          | |¦  «        fS )a  
    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)

    r   r   )ÚappendÚlenÚtupler   )r   r   r   Úmonoms       r   Údmp_true_LTr$   k   s˜   € ð  €Eà
ð Ø�Š•S˜‘V”V˜a‘ZÑ Ô Ð Ø�Œt�Q˜‘Uˆ1ˆð ð ð ð !Ø�Š�Q‰Œˆˆà�Š•S˜‘V”V˜a‘ZÑ Ô Ð å�‰<Œ<�  1™œÐ%Ð%r   c                 ó8   — | st           S t          | ¦  «        dz
  S )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

    r   )Úninfr!   ©r   s    r   Ú
dup_degreer(   ‰   s!   € ð$ ð ÝˆÝˆq‰6Œ6�A‰:Ðr   c                 óT   — t          | |¦  «        rt          S t          | ¦  «        dz
  S )ay  
    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

    r   )Ú
dmp_zero_pr&   r!   ©r   r   s     r   Ú
dmp_degreer,       s+   € õ* �!�QÑÔð Ýˆå�1‰vŒv˜‰zÐr   c                 ó„   ‡‡‡— ‰‰k    rt          | ‰¦  «        S ‰dz
  ‰dz   cŠŠt          ˆˆˆfd„| D ¦   «         ¦  «        S )z4Recursive helper function for :func:`dmp_degree_in`.r   c              3   ó<   •K  — | ]}t          |‰‰‰¦  «        V — Œd S ©N)Ú_rec_degree_in)Ú.0ÚcÚiÚjÚvs     €€€r   ú	<genexpr>z!_rec_degree_in.<locals>.<genexpr>Â   s1   øè è € Ð5Ð5¨a�~˜a  A qÑ)Ô)Ð5Ð5Ð5Ð5Ð5Ð5r   )r,   Úmax)Úgr5   r3   r4   s    ```r   r0   r0   »   sZ   øøø€ àˆA‚v€vÝ˜!˜QÑÔÐàˆq‰5�!�a‘%€D€A€qåÐ5Ð5Ð5Ð5Ð5Ð5°1Ð5Ñ5Ô5Ñ5Ô5Ð5r   c                 óŒ   — |st          | |¦  «        S |dk     s||k    rt          d|›d|›�¦  «        ‚t          | |d|¦  «        S )a6  
    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

    r   z
0 <= j <= ú expected, got )r,   Ú
IndexErrorr0   )r   r4   r   s      r   Údmp_degree_inr<   Å   s\   € ð$ ð  Ý˜!˜QÑÔÐØˆ1‚u€u��A’�Ýˆj¸A¸A¸A¸q¸qÐAÑBÔBÐBå˜!˜Q  1Ñ%Ô%Ð%r   c                 ó¦   — t          ||         t          | |¦  «        ¦  «        ||<   |dk    r!|dz
  |dz   }}| D ]}t          ||||¦  «         ŒdS dS )z-Recursive helper for :func:`dmp_degree_list`.r   r   N)r7   r,   Ú_rec_degree_list)r8   r5   r3   Údegsr2   s        r   r>   r>   ß   st   € å�$�q”'�: a¨Ñ+Ô+Ñ,Ô,€Dˆ�Gàˆ1‚u€uØ�1‰u�a˜!‘eˆ1ˆàð 	,ð 	,ˆAÝ˜Q  1 dÑ+Ô+Ð+Ð+ð	 €uð	,ð 	,r   c                 ó`   — t           g|dz   z  }t          | |d|¦  «         t          |¦  «        S )a  
    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   r   r?   s      r   Údmp_degree_listrA   ê   s3   € õ  ˆ6�1�q‘5‰>€DÝ�Q˜˜1˜dÑ#Ô#Ð#Ý�‰;Œ;Ðr   c                 óN   — | r| d         r| S d}| D ]}|r n|dz  }Œ| |d…         S )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]

    r   r   N© )r   r3   Úcfs      r   Ú	dup_striprE   ÿ   sU   € ð ð ��!”ð Øˆà	€Aàð ð ˆØð 	ØˆEà�‰FˆAˆAàˆQˆRˆRŒ5€Lr   c                 óæ   — |st          | ¦  «        S t          | |¦  «        r| S d|dz
  }}| D ]}t          ||¦  «        s n|dz  }Œ|t          | ¦  «        k    rt          |¦  «        S | |d…         S )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]]

    r   r   N)rE   r*   r!   Údmp_zero)r   r   r3   r5   r2   s        r   Ú	dmp_striprH     s•   € ð ð Ý˜‰|Œ|Ðå�!�QÑÔð Øˆàˆa�!‰e€q€Aàð ð ˆÝ˜!˜QÑÔð 	ØˆEà�‰FˆAˆAà�C�‰FŒF‚{€{Ý˜‰{Œ{Ðà���Œuˆr   c                 ó  — t          |t          ¦  «        s9|�1|                     |¦  «        st          |›d| ›d|j        ›�¦  «        ‚|dz
  hS |s|hS t          ¦   «         }|D ]}|t          | ||dz   |¦  «        z  }Œ|S )z*Recursive helper for :func:`dmp_validate`.Nz in z in not of type r   )Ú
isinstanceÚlistÚof_typeÚ	TypeErrorÚdtypeÚsetÚ_rec_validate)r   r8   r3   r   Úlevelsr2   s         r   rP   rP   ;  s�   € å�a�ÑÔð Øˆ= §¢¨1¡¤ˆ=Ý¸A¸A¸A¸q¸q¸qÀ!Ä'À'ÐJÑKÔKÐKà�A‘ˆwˆØð Øˆsˆ
å‘”ˆàð 	4ð 	4ˆAØ•m A q¨!¨a©%°Ñ3Ô3Ñ3ˆFˆFàˆr   c                 óh   ‡— |st          | ¦  «        S |dz
  Št          ˆfd„| D ¦   «         |¦  «        S )z(Recursive helper for :func:`_rec_strip`.r   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rC   )Ú
_rec_strip)r1   r2   Úws     €r   ú
<listcomp>z_rec_strip.<locals>.<listcomp>T  s#   ø€ Ð4Ð4Ð4¨A•z ! QÑ'Ô'Ð4Ð4Ð4r   )rE   rH   )r8   r5   rU   s     @r   rT   rT   M  sE   ø€ àð Ý˜‰|Œ|Ðà	ˆA‰€AåÐ4Ð4Ð4Ð4°Ð4Ñ4Ô4°aÑ8Ô8Ð8r   c                 ó”   — t          | | d|¦  «        }|                     ¦   «         }|st          | |¦  «        |fS t          d¦  «        ‚)at  
    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

    r   z4invalid data structure for a multivariate polynomial)rP   ÚpoprT   Ú
ValueError)r   r   rQ   r   s       r   Údmp_validaterZ   W  sZ   € õ$ ˜1˜a  AÑ&Ô&€Fà�
Š
‰Œ€Aàð DÝ˜!˜QÑÔ Ð"Ð"åØBñDô Dð 	Dr   c                 óT   — t          t          t          | ¦  «        ¦  «        ¦  «        S )a  
    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]

    )rE   rK   Úreversedr'   s    r   Údup_reverser]   t  s    € õ  •T�( 1™+œ+Ñ&Ô&Ñ'Ô'Ð'r   c                 ó    — t          | ¦  «        S )a  
    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]

    ©rK   r'   s    r   Údup_copyr`   ‡  s   € õ  �‰7Œ7€Nr   c                 óL   ‡— |st          | ¦  «        S |dz
  Šˆfd„| D ¦   «         S )a  
    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]]

    r   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rC   )Údmp_copy©r1   r2   r5   s     €r   rV   zdmp_copy.<locals>.<listcomp>¯  s!   ø€ Ð(Ð(Ð( �X�a˜‰^Œ^Ð(Ð(Ð(r   r_   ©r   r   r5   s     @r   rc   rc   š  s;   ø€ ð  ð Ý�A‰wŒwˆà	ˆA‰€Aà(Ð(Ð(Ð( QÐ(Ñ(Ô(Ð(r   c                 ó    — t          | ¦  «        S )a2  
    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_tuplerh   ²  s   € õ$ �‰8Œ8€Or   c                 óf   ‡— |st          | ¦  «        S |dz
  Št          ˆfd„| D ¦   «         ¦  «        S )aG  
    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))

    r   c              3   ó8   •K  — | ]}t          |‰¦  «        V — Œd S r/   )Údmp_to_tuplerd   s     €r   r6   zdmp_to_tuple.<locals>.<genexpr>Ý  s-   øè è € Ð/Ð/¨•˜a Ñ#Ô#Ð/Ð/Ð/Ð/Ð/Ð/r   rg   re   s     @r   rk   rk   Ç  sD   ø€ ð$ ð Ý�Q‰xŒxˆØ	ˆA‰€AåÐ/Ð/Ð/Ð/¨QÐ/Ñ/Ô/Ñ/Ô/Ð/r   c                 ó:   ‡— t          ˆfd„| D ¦   «         ¦  «        S )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]

    c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rC   )Únormal©r1   r2   r   s     €r   rV   zdup_normal.<locals>.<listcomp>î  s#   ø€ Ð/Ð/Ð/ q�q—x’x ‘{”{Ð/Ð/Ð/r   ©rE   r
   s    `r   Ú
dup_normalrq   à  s(   ø€ õ Ð/Ð/Ð/Ð/¨AÐ/Ñ/Ô/Ñ0Ô0Ð0r   c                 ón   ‡‡— |st          | ‰¦  «        S |dz
  Št          ˆˆfd„| D ¦   «         |¦  «        S )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]]

    r   c                 ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS rC   )Ú
dmp_normal©r1   r2   r   r5   s     €€r   rV   zdmp_normal.<locals>.<listcomp>  s%   ø€ Ð7Ð7Ð7¨q•z ! Q¨Ñ*Ô*Ð7Ð7Ð7r   )rq   rH   ©r   r   r   r5   s     `@r   rt   rt   ñ  sO   øø€ ð ð  Ý˜!˜QÑÔÐà	ˆA‰€AåÐ7Ð7Ð7Ð7Ð7°AÐ7Ñ7Ô7¸Ñ;Ô;Ð;r   c                 óR   ‡‡— ‰�‰‰k    r| S t          ˆˆfd„| D ¦   «         ¦  «        S )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]

    Nc                 ó<   •— g | ]}‰                      |‰¦  «        ‘ŒS rC   )Úconvert)r1   r2   ÚK0ÚK1s     €€r   rV   zdup_convert.<locals>.<listcomp>  s'   ø€ Ð9Ð9Ð9°˜2Ÿ:š: a¨Ñ,Ô,Ð9Ð9Ð9r   rp   )r   rz   r{   s    ``r   Údup_convertr|     s>   øø€ ð& 
€~˜" š(˜(ØˆåÐ9Ð9Ð9Ð9Ð9°aÐ9Ñ9Ô9Ñ:Ô:Ð:r   c                 óˆ   ‡‡‡— |st          | ‰‰¦  «        S ‰�‰‰k    r| S |dz
  Št          ˆˆˆfd„| D ¦   «         |¦  «        S )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 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]]

    Nr   c                 ó4   •— g | ]}t          |‰‰‰¦  «        ‘ŒS rC   )Údmp_convert)r1   r2   rz   r{   r5   s     €€€r   rV   zdmp_convert.<locals>.<listcomp>:  s'   ø€ Ð=Ð=Ð=°Q•{ 1 a¨¨RÑ0Ô0Ð=Ð=Ð=r   )r|   rH   )r   r   rz   r{   r5   s     ``@r   r   r      sg   øøø€ ð& ð &Ý˜1˜b "Ñ%Ô%Ð%Ø	€~˜" š(˜(Øˆà	ˆA‰€AåÐ=Ð=Ð=Ð=Ð=Ð=¸!Ð=Ñ=Ô=¸qÑAÔAÐAr   c                 ó:   ‡— t          ˆfd„| D ¦   «         ¦  «        S )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

    c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rC   )Ú
from_sympyro   s     €r   rV   z"dup_from_sympy.<locals>.<listcomp>L  s#   ø€ Ð3Ð3Ð3¨1�q—|’| A‘”Ð3Ð3Ð3r   rp   r
   s    `r   Údup_from_sympyrƒ   =  s(   ø€ õ Ð3Ð3Ð3Ð3°Ð3Ñ3Ô3Ñ4Ô4Ð4r   c                 ón   ‡‡— |st          | ‰¦  «        S |dz
  Št          ˆˆfd„| D ¦   «         |¦  «        S )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

    r   c                 ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS rC   )Údmp_from_sympyru   s     €€r   rV   z"dmp_from_sympy.<locals>.<listcomp>c  s%   ø€ Ð;Ð;Ð;°1•~ a¨¨AÑ.Ô.Ð;Ð;Ð;r   )rƒ   rH   rv   s     `@r   r†   r†   O  sO   øø€ ð ð $Ý˜a Ñ#Ô#Ð#à	ˆA‰€AåÐ;Ð;Ð;Ð;Ð;¸Ð;Ñ;Ô;¸QÑ?Ô?Ð?r   c                 ó–   — |dk     rt          d|z  ¦  «        ‚|t          | ¦  «        k    r|j        S | t          | ¦  «        |z
           S )a  
    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

    r   ú 'n' must be non-negative, got %i)r;   r!   r	   r(   )r   Únr   s      r   Údup_nthrŠ   f  sM   € ð$ 	ˆ1‚u€uÝÐ;¸aÑ?Ñ@Ô@Ð@Ø	
�c�!‰fŒfŠˆØŒvˆà•˜A‘” Ñ"Ô#Ð#r   c                 ó®   — |dk     rt          d|z  ¦  «        ‚|t          | ¦  «        k    rt          |dz
  ¦  «        S | t          | |¦  «        |z
           S )a)  
    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   )r;   r!   rG   r,   )r   r‰   r   r   s       r   Údmp_nthrŒ   €  sZ   € ð$ 	ˆ1‚u€uÝÐ;¸aÑ?Ñ@Ô@Ð@Ø	
�c�!‰fŒfŠˆÝ˜˜A™‰ŒÐà•˜A˜qÑ!Ô! AÑ%Ô&Ð&r   c                 óÖ   — |}|D ]c}|dk     rt          d|z  ¦  «        ‚|t          | ¦  «        k    r	|j        c S t          | |¦  «        }|t          k    rd}| ||z
           |dz
  }} Œd| S )a  
    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

    r   z `n` must be non-negative, got %ir   r   )r;   r!   r	   r,   r&   )r   ÚNr   r   r5   r‰   Úds          r   Údmp_ground_nthr�   š  sˆ   € ð  	
€Aàð 	#ð 	#ˆØˆqŠ5ˆ5ÝÐ?À!ÑCÑDÔDÐDØ•#�a‘&”&Š[ˆ[Ø”6ˆMˆMˆMå˜1˜aÑ Ô ˆAØ•DŠyˆyØ�Ø�Q˜‘U”8˜Q ™UˆqˆAˆAà€Hr   c                 óT   — |r$t          | ¦  «        dk    rdS | d         } |dz  }|°$|  S )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

    r   Fr   )r!   r+   s     r   r*   r*   º  sE   € ð ð Ýˆq‰6Œ6�QŠ;ˆ;Ø�5àˆaŒDˆØ	ˆQ‰ˆð ð ð ˆ5€Lr   c                 ó4   — g }t          | ¦  «        D ]}|g}Œ|S )zš
    Return a multivariate zero.

    Examples
    ========

    >>> from sympy.polys.densebasic import dmp_zero

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

    ©Úrange)r   Úrr3   s      r   rG   rG   Ó  s,   € ð 	€Aå�1‰XŒXð ð ˆØˆCˆˆà€Hr   c                 ó.   — t          | |j        |¦  «        S )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   € õ ˜˜1œ5 !Ñ$Ô$Ð$r   c                 ó,   — t          |j        | ¦  «        S )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˜QÑÔÐr   c                 ó®   — |�|st          | |¦  «        S |r$t          | ¦  «        dk    rdS | d         } |dz  }|°$|€t          | ¦  «        dk    S | |gk    S )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

    Nr   Fr   )r*   r!   )r   r2   r   s      r   r—   r—   
  sw   € ð 	€}˜Q€}Ý˜!˜QÑÔÐà
ð Ýˆq‰6Œ6�QŠ;ˆ;Ø�5ØˆaŒDˆØ	ˆQ‰ˆð	 ð ð 	€yÝ�1‰vŒv˜Š{Ðà�Q�CŠxˆr   c                 óX   — | st          |¦  «        S t          |dz   ¦  «        D ]}| g} Œ| S )zÈ
    Return a multivariate constant.

    Examples
    ========

    >>> from sympy.polys.densebasic import dmp_ground

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

    r   )rG   r”   )r2   r   r3   s      r   r›   r›   (  s?   € ð ð Ý˜‰{Œ{Ðå�1�q‘5‰\Œ\ð ð ˆØˆCˆˆà€Hr   c                 ód   ‡— | sg S ‰dk     r|j         g| z  S ˆfd„t          | ¦  «        D ¦   «         S )a  
    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   c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS rC   ©rG   )r1   r3   r   s     €r   rV   zdmp_zeros.<locals>.<listcomp>V  s   ø€ Ð0Ð0Ð0 •˜!‘”Ð0Ð0Ð0r   )r	   r”   )r‰   r   r   s    ` r   Ú	dmp_zerosr¢   @  sI   ø€ ð  ð Øˆ	àˆ1‚u€uØ”ˆx˜‰zÐà0Ð0Ð0Ð0¥e¨A¡h¤hÐ0Ñ0Ô0Ð0r   c                 ó^   ‡ ‡— |sg S ‰dk     r‰ g|z  S ˆ ˆfd„t          |¦  «        D ¦   «         S )a#  
    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   c                 ó0   •— g | ]}t          ‰‰¦  «        ‘ŒS rC   ©r›   )r1   r3   r2   r   s     €€r   rV   zdmp_grounds.<locals>.<listcomp>o  s#   ø€ Ð5Ð5Ð5 a•˜A˜qÑ!Ô!Ð5Ð5Ð5r   r“   )r2   r‰   r   s   ` `r   Údmp_groundsr¦   Y  sJ   øø€ ð  ð Øˆ	àˆ1‚u€uØˆs�1‰uˆà5Ð5Ð5Ð5Ð5­5°©8¬8Ð5Ñ5Ô5Ð5r   c                 óJ   — |                      t          | ||¦  «        ¦  «        S )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Ô0Ð0r   c                 óJ   — |                      t          | ||¦  «        ¦  «        S )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                 ó¬  — | sg S t          |                      ¦   «         ¦  «        g }}t          |t          ¦  «        rCt	          |dd¦  «        D ]0}|                     |                      ||j        ¦  «        ¦  «         Œ1nG|\  }t	          |dd¦  «        D ]1}|                     |                      |f|j        ¦  «        ¦  «         Œ2t          |¦  «        S )a5  
    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   )	r7   ÚkeysrJ   Úintr”   r    Úgetr	   rE   ©r   r   r‰   ÚhÚks        r   Údup_from_dictrµ   ˜  sÖ   € ð  ð Øˆ	åˆq�vŠv‰xŒx‰=Œ=˜"€q€Aå�!•SÑÔð *Ý�q˜"˜bÑ!Ô!ð 	'ð 	'ˆAØ�HŠH�Q—U’U˜1˜aœfÑ%Ô%Ñ&Ô&Ð&Ð&ð	'ð ‰ˆå�q˜"˜bÑ!Ô!ð 	*ð 	*ˆAØ�HŠH�Q—U’U˜A˜4 ¤Ñ(Ô(Ñ)Ô)Ð)Ð)å�Q‰<Œ<Ðr   c                 óò   — | sg S t          |                      ¦   «         ¦  «        g }}t          |dd¦  «        D ]0}|                     |                      ||j        ¦  «        ¦  «         Œ1t          |¦  «        S )a  
    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   )r7   r¯   r”   r    r±   r	   rE   r²   s        r   Údup_from_raw_dictr·   ¹  st   € ð ð Øˆ	åˆq�vŠv‰xŒx‰=Œ=˜"€q€Aå�1�b˜"ÑÔð #ð #ˆØ	�Š�—’�q˜!œ&Ñ!Ô!Ñ"Ô"Ð"Ð"å�Q‰<Œ<Ðr   c                 ó&  — |st          | |¦  «        S | st          |¦  «        S i }|                      ¦   «         D ].\  }}|d         |dd…         }}||v r|||         |<   Œ'||i||<   Œ/t          |                     ¦   «         ¦  «        |dz
  g }
}	}t          |dd¦  «        D ]`}|                     |¦  «        }|�%|
                     t          ||	|¦  «        ¦  «         Œ>|
                     t          |	¦  «        ¦  «         Œat          |
|¦  «        S )aF  
    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)
    []

    r   r   Nr   )
rµ   rG   Úitemsr7   r¯   r”   r±   r    Údmp_from_dictrH   )r   r   r   Úcoeffsr#   ÚcoeffÚheadÚtailr‰   r5   r³   r´   s               r   rº   rº   Ò  s)  € ð  ð #Ý˜Q Ñ"Ô"Ð"Øð Ý˜‰{Œ{Ðà€FàŸš™	œ	ð +ð +‰ˆˆuØ˜1”X˜u Q R Rœyˆdˆà�6ˆ>ˆ>Ø!&ˆF�4ŒL˜ÑÐà! 5˜?ˆF�4‰LˆLå�&—+’+‘-”-Ñ Ô  ! a¡%¨ˆ!€q€Aå�1�b˜"ÑÔð "ð "ˆØ—
’
˜1‘”ˆàÐØ�HŠH•] 5¨!¨QÑ/Ô/Ñ0Ô0Ð0Ð0à�HŠH•X˜a‘[”[Ñ!Ô!Ð!Ð!å�Q˜‰?Œ?Ðr   Fc                 ó¨   — | s|r	d|j         iS t          | ¦  «        dz
  i }}t          d|dz   ¦  «        D ]}| ||z
           r| ||z
           ||f<   Œ|S )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   r   r	   r‰   Úresultr´   s         r   Údup_to_dictrÄ   þ  sv   € ð ð �ð Ø�a”fˆ~Ðå�A‘”˜‘
˜B€v€Aå�1�a˜!‘e‰_Œ_ð $ð $ˆØˆQ�‰UŒ8ð 	$Ø˜Q ™Uœ8ˆF�A�4‰Løà€Mr   c                 ó¦   — | s|r	d|j         iS t          | ¦  «        dz
  i }}t          d|dz   ¦  «        D ]}| ||z
           r| ||z
           ||<   Œ|S )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   rÁ   rÂ   s         r   Údup_to_raw_dictrÆ     st   € ð ð �ð Ø�1”6ˆ{Ðå�A‘”˜‘
˜B€v€Aå�1�a˜!‘e‰_Œ_ð !ð !ˆØˆQ�‰UŒ8ð 	!Ø˜!˜a™%œˆF�1‰Iøà€Mr   c                 ó\  — |st          | ||¬¦  «        S t          | |¦  «        r|rd|dz   z  |j        iS t          | |¦  «        |dz
  i }}}|t          k    rd}t          d|dz   ¦  «        D ]>}t          | ||z
           |¦  «        }|                     ¦   «         D ]\  }	}
|
||f|	z   <   ŒŒ?|S )a  
    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,   r&   r”   Údmp_to_dictr¹   )r   r   r   r	   r‰   r5   rÃ   r´   r³   Úexpr¼   s              r   rÈ   rÈ   2  sä   € ð ð ,Ý˜1˜a dÐ+Ñ+Ô+Ð+å�!�QÑÔð &˜Dð &Ø�a˜!‘e‘˜aœfÐ%Ð%å˜a Ñ#Ô# Q¨¡U¨Bˆ&€q€Aà�D‚y€yØˆå�1�a˜!‘e‰_Œ_ð 'ð 'ˆÝ˜˜!˜a™%œ !Ñ$Ô$ˆàŸ'š'™)œ)ð 	'ð 	'‰JˆC�Ø!&ˆF�A�4˜#‘:ÑÐð	'ð €Mr   c                 óZ  — |dk     s|dk     s||k    s||k    rt          d|z  ¦  «        ‚||k    r| S t          | |¦  «        i }}|                     ¦   «         D ]B\  }}|||d|…         ||         fz   ||dz   |…         z   ||         fz   ||dz   d…         z   <   ŒCt          |||¦  «        S )a�  
    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], []]]

    r   z0 <= i < j <= %s expectedNr   )r;   rÈ   r¹   rº   )	r   r3   r4   r   r   ÚFÚHrÉ   r¼   s	            r   Údmp_swaprÍ   U  sè   € ð( 	ˆ1‚u€u��A’�˜˜Qš˜ ! a¢% %ÝÐ4°qÑ8Ñ9Ô9Ð9Ø	
ˆaŠˆØˆå�q˜!ÑÔ˜b€q€Aà—g’g‘i”ið +ð +‰
ˆˆUð &+ð 	
ˆ#ˆbˆqˆbŒ'�S˜”V�IÑ
Ø
ˆa�!‰e�AˆgŒ,ñàˆqŒ6ˆ)ñà˜!˜a™%˜&˜&”kñ"ñ 	#ð 	#õ ˜˜A˜qÑ!Ô!Ð!r   c                 óü   — t          | |¦  «        i }}|                     ¦   «         D ]E\  }}dgt          |¦  «        z  }t          ||¦  «        D ]
\  }	}
|	||
<   Œ||t	          |¦  «        <   ŒFt          |||¦  «        S )at  
    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¹   r!   Úzipr"   rº   )r   ÚPr   r   rË   rÌ   rÉ   r¼   Únew_expÚeÚps              r   Údmp_permuterÔ   x  sŽ   € õ$ �q˜!ÑÔ˜b€q€Aà—g’g‘i”ið "ð "‰
ˆˆUØ�#•c˜#‘h”h‘,ˆå˜˜Q‘K”Kð 	ð 	‰DˆAˆqØˆG�A‰JˆJà!ˆ�%�‰.Œ.ÑÐå˜˜A˜qÑ!Ô!Ð!r   c                 óz   — t          | t          ¦  «        st          | |¦  «        S t          |¦  «        D ]}| g} Œ| S )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]]]]

    )rJ   rK   r›   r”   )r   Úlr   r3   s       r   Údmp_nestr×   —  sI   € õ �a�ÑÔð  Ý˜!˜QÑÔÐå�1‰XŒXð ð ˆØˆCˆˆà€Hr   c                 óˆ   ‡‡‡‡— ‰s| S |s$| st          ‰¦  «        S ‰dz
  Šˆfd„| D ¦   «         S |dz
  Šˆˆˆfd„| D ¦   «         S )a  
    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]]]]

    r   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rC   r¥   )r1   r2   r´   s     €r   rV   zdmp_raise.<locals>.<listcomp>Ç  s#   ø€ Ð.Ð.Ð. a•˜A˜qÑ!Ô!Ð.Ð.Ð.r   c                 ó4   •— g | ]}t          |‰‰‰¦  «        ‘ŒS rC   )Ú	dmp_raise)r1   r2   r   rÖ   r5   s     €€€r   rV   zdmp_raise.<locals>.<listcomp>Ë  s'   ø€ Ð/Ð/Ð/ q�Y�q˜!˜Q Ñ"Ô"Ð/Ð/Ð/r   r¡   )r   rÖ   r   r   r´   r5   s    ` `@@r   rÛ   rÛ   ®  s}   øøøø€ ð  ð Øˆàð /Øð 	Ý˜A‘;”;Ðà�‰Eˆà.Ð.Ð.Ð.¨1Ð.Ñ.Ô.Ð.à	ˆA‰€Aà/Ð/Ð/Ð/Ð/Ð/¨AÐ/Ñ/Ô/Ð/r   c                 óÞ   — t          | ¦  «        dk    rd| fS d}t          t          | ¦  «        ¦  «        D ]+}| | dz
           sŒt          ||¦  «        }|dk    rd| fc S Œ,|| dd|…         fS )a  
    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])

    r   r   N)r(   r”   r!   r   )r   r   r8   r3   s       r   Údup_deflaterÝ   Î  s‘   € õ  �!�}„}˜ÒÐØ�!ˆtˆà	€Aå•3�q‘6”6‰]Œ]ð ð ˆØ�!��a‘Œyð 	Øå��A‰JŒJˆà�Š6ˆ6Ø�a�4ˆKˆKˆKð ð ˆa���!�Œfˆ9Ðr   c                 ó8  — t          | |¦  «        r
d|dz   z  | fS t          | |¦  «        }dg|dz   z  }|                     ¦   «         D ]0}t          |¦  «        D ]\  }}t	          ||         |¦  «        ||<   ŒŒ1t          |¦  «        D ]\  }}|sd||<   Œt          |¦  «        }t          d„ |D ¦   «         ¦  «        r|| fS i }	|                     ¦   «         D ]1\  }
}d„ t          |
|¦  «        D ¦   «         }||	t          |¦  «        <   Œ2|t          |	||¦  «        fS )a5  
    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]])

    )r   r   r   c              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   NrC   ©r1   Úbs     r   r6   zdmp_deflate.<locals>.<genexpr>  ó&   è è € Ð
Ð
�aˆ1�Š6Ð
Ð
Ð
Ð
Ð
Ð
r   c                 ó   — g | ]
\  }}||z  ‘ŒS rC   rC   ©r1   Úarâ   s      r   rV   zdmp_deflate.<locals>.<listcomp>  s    € Ð,Ð,Ð,™˜˜Aˆa�1‰fÐ,Ð,Ð,r   )
r*   rÈ   r¯   Ú	enumerater   r"   Úallr¹   rÏ   rº   )r   r   r   rË   ÚBÚMr3   Úmrâ   rÌ   ÚAr¼   rŽ   s                r   Údmp_deflaterí   ï  sU  € õ  �!�QÑÔð Ø�Q˜‘U‰|˜QˆÐå�A�qÑÔ€AØ	
ˆˆQ�‰U‰€Aà�VŠV‰XŒXð !ð !ˆÝ˜a‘L”Lð 	!ð 	!‰DˆAˆqÝ˜˜!œ˜a‘=”=ˆAˆa‰DˆDð	!õ ˜!‘”ð ð ‰ˆˆ1Øð 	ØˆAˆa‰Døåˆa‰Œ€Aå
Ð
Ð
˜1Ð
Ñ
Ô
ÑÔð Ø�!ˆtˆà
€Aà—G’G‘I”Ið ð ‰ˆˆ5Ø,Ð,¥ Q¨¡¤Ð,Ñ,Ô,ˆØˆ�%�‰(Œ(‰ˆà�m˜A˜q !Ñ$Ô$Ð$Ð$r   c                 ó6  ‡— dŠ| D ]w}t          |¦  «        dk    rd| fc S d}t          t          |¦  «        ¦  «        D ]-}|| dz
           sŒt          ||¦  «        }|dk    rd| fc c S Œ.t          ‰|¦  «        ŠŒx‰t	          ˆfd„| D ¦   «         ¦  «        fS )aP  
    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]))

    r   r   c                 ó&   •— g | ]}|d d ‰…         ‘ŒS r/   rC   )r1   rÓ   ÚGs     €r   rV   z%dup_multi_deflate.<locals>.<listcomp>?  s#   ø€ Ð-Ð-Ð- �a˜˜˜!˜”fÐ-Ð-Ð-r   )r(   r”   r!   r   r"   )Úpolysr   rÓ   r8   r3   rð   s        @r   Údup_multi_deflaterò     sÑ   ø€ ð" 	
€Aàð ð ˆÝ�a‰=Œ=˜AÒÐØ�e�8ˆOˆOˆOàˆå•s˜1‘v”v‘”ð 	 ð 	 ˆAØ�a�R˜!‘V”9ð Øå�Q˜‘
”
ˆAà�AŠvˆvØ˜%�x�����ð õ ��A‰JŒJˆˆà�eÐ-Ð-Ð-Ð- eÐ-Ñ-Ô-Ñ.Ô.Ð.Ð.r   c                 óâ  — |st          | |¦  «        \  }}|f|fS g dg|dz   z  }}| D ]|}t          ||¦  «        }t          ||¦  «        sE|                     ¦   «         D ]0}t	          |¦  «        D ]\  }	}
t          ||	         |
¦  «        ||	<   ŒŒ1|                     |¦  «         Œ}t	          |¦  «        D ]\  }	}|sd||	<   Œt          |¦  «        }t          d„ |D ¦   «         ¦  «        r|| fS g }|D ]n}i }| 	                    ¦   «         D ]1\  }}d„ t          ||¦  «        D ¦   «         }||t          |¦  «        <   Œ2|                     t          |||¦  «        ¦  «         Œo|t          |¦  «        fS )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]]))

    r   r   c              3   ó"   K  — | ]
}|d k    V — ŒdS rà   rC   rá   s     r   r6   z$dmp_multi_deflate.<locals>.<genexpr>i  rã   r   c                 ó   — g | ]
\  }}||z  ‘ŒS rC   rC   rå   s      r   rV   z%dmp_multi_deflate.<locals>.<listcomp>r  s    € Ð0Ð0Ð0™T˜Q �!�q‘&Ð0Ð0Ð0r   )rò   rÈ   r*   r¯   rç   r   r    r"   rè   r¹   rÏ   rº   )rñ   r   r   rê   rÌ   rË   ré   rÓ   r   r3   rë   râ   r³   rì   r¼   rŽ   s                   r   Údmp_multi_deflaterö   B  s»  € ð" ð Ý  ¨Ñ*Ô*‰ˆˆ1Øˆt�Qˆwˆà�ˆs�A˜‘E‰{€q€Aàð ð ˆÝ˜˜1ÑÔˆå˜!˜QÑÔð 	)Ø—V’V‘X”Xð )ð )�Ý% a™LœLð )ð )‘D�A�qÝ  !¤ a™=œ=�A�a‘D�Dð)ð 	
�Š�‰Œˆˆå˜!‘”ð ð ‰ˆˆ1Øð 	ØˆAˆa‰Døåˆa‰Œ€Aå
Ð
Ð
˜1Ð
Ñ
Ô
ÑÔð Ø�%ˆxˆà
€Aàð )ð )ˆØˆàŸš™	œ	ð 	 ð 	 ‰HˆAˆuØ0Ð0¥S¨¨A¡Y¤YÐ0Ñ0Ô0ˆAØˆA�e�A‰hŒh‰KˆKà	�Š•˜q ! QÑ'Ô'Ñ(Ô(Ð(Ð(à�e�A‰hŒhˆ;Ðr   c                 óâ   — |dk    rt          d|z  ¦  «        ‚|dk    s| s| S | d         g}| dd…         D ]8}|                     |j        g|dz
  z  ¦  «         |                     |¦  «         Œ9|S )a  
    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]

    r   z'm' must be positive, got %sr   N)r;   Úextendr	   r    )r   rë   r   rÃ   r¼   s        r   Údup_inflaterù   z  sŽ   € ð  	ˆA‚v€vÝÐ7¸!Ñ;Ñ<Ô<Ð<ØˆA‚v€v�Q€vØˆà�ŒdˆV€Fà�1�2�2”ð ð ˆØ�Š�q”v�h  A¡Ñ&Ñ'Ô'Ð'Ø�Š�eÑÔÐÐà€Mr   c                 óŒ  ‡‡‡‡	— |st          | ‰|         ‰¦  «        S ‰|         dk    rt          d‰|         z  ¦  «        ‚|dz
  |dz   cŠ	Šˆˆˆˆ	fd„| D ¦   «         } | d         g}| dd…         D ]R}t          d‰|         ¦  «        D ]$}|                     t	          ‰	¦  «        ¦  «         Œ%|                     |¦  «         ŒS|S )z)Recursive helper for :func:`dmp_inflate`.r   z!all M[i] must be positive, got %sr   c           	      ó6   •— g | ]}t          |‰‰‰‰¦  «        ‘ŒS rC   )Ú_rec_inflate)r1   r2   r   rê   r4   rU   s     €€€€r   rV   z _rec_inflate.<locals>.<listcomp>¡  s)   ø€ Ð2Ð2Ð2¨!�,�q˜!˜Q  1Ñ
%Ô
%Ð2Ð2Ð2r   N)rù   r;   r”   r    rG   )
r8   rê   r5   r3   r   rÃ   r¼   Ú_r4   rU   s
    `  `   @@r   rü   rü   ˜  sð   øøøø€ àð 'Ý˜1˜a œd AÑ&Ô&Ð&Øˆ„tˆq‚y€yÝÐ<¸qÀ¼tÑCÑDÔDÐDàˆq‰5�!�a‘%€D€A€qà2Ð2Ð2Ð2Ð2Ð2Ð2¨qÐ2Ñ2Ô2€Aà�ŒdˆV€Fà�1�2�2”ð ð ˆÝ�q˜!˜Aœ$‘”ð 	'ð 	'ˆAØ�MŠM�( 1™+œ+Ñ&Ô&Ð&Ð&à�Š�eÑÔÐÐà€Mr   c                 ó�   — |st          | |d         |¦  «        S t          d„ |D ¦   «         ¦  «        r| S t          | ||d|¦  «        S )a3  
    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]]

    r   c              3   ó"   K  — | ]
}|d k    V — ŒdS rà   rC   )r1   rë   s     r   r6   zdmp_inflate.<locals>.<genexpr>Á  rã   r   )rù   rè   rü   )r   rê   r   r   s       r   Údmp_inflater   ®  s\   € ð  ð 'Ý˜1˜a œd AÑ&Ô&Ð&å
Ð
Ð
˜1Ð
Ñ
Ô
ÑÔð +Øˆå˜A˜q ! Q¨Ñ*Ô*Ð*r   c                 óì  — |rt          | d|¦  «        rg | |fS g t          | |¦  «        }}t          d|dz   ¦  «        D ]8}|                     ¦   «         D ]}||         r nŒ|                     |¦  «         Œ9|sg | |fS i } |                     ¦   «         D ];\  }}t          |¦  «        }t          |¦  «        D ]}||= Œ|| t          |¦  «        <   Œ<|t          |¦  «        z  }|t          | ||¦  «        |fS )a[  
    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)

    Nr   r   )r—   rÈ   r”   r¯   r    r¹   rK   r\   r"   r!   rº   )r   r   r   ÚJrË   r4   r#   r¼   s           r   Údmp_excluder  Ç  s,  € ð$ ð •˜Q  aÑ(Ô(ð Ø�1�aˆxˆà�{˜1˜aÑ Ô €q€Aå�1�a˜!‘e‰_Œ_ð ð ˆØ—V’V‘X”Xð 	ð 	ˆEØ�QŒxð Ø�ðð �HŠH�Q‰KŒKˆKøàð Ø�1�aˆxˆà
€AàŸš™	œ	ð  ð  ‰ˆˆuÝ�U‘”ˆå˜!‘”ð 	ð 	ˆAØ�a��àˆ�%�‰,Œ,‰ˆà�ˆQ‰Œ�K€Aà�m˜A˜q !Ñ$Ô$ aÐ'Ð'r   c                 ó   — |s| S t          | |¦  «        i } }|                     ¦   «         D ]A\  }}t          |¦  «        }|D ]}|                     |d¦  «         Œ|| t	          |¦  «        <   ŒB|t          |¦  «        z  }t          | ||¦  «        S )a  
    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È   r¹   rK   Úinsertr"   r!   rº   )r   r  r   r   rË   r#   r¼   r4   s           r   Údmp_includer  ÷  s¢   € ð  ð Øˆå�q˜!ÑÔ˜b€q€AàŸš™	œ	ð  ð  ‰ˆˆuÝ�U‘”ˆàð 	ð 	ˆAØ�LŠL˜˜AÑÔÐÐàˆ�%�‰,Œ,‰ˆà�ˆQ‰Œ�K€Aå˜˜A˜qÑ!Ô!Ð!r   c                 ó0  — t          | |¦  «        i }} |j        dz
  }|                      ¦   «         D ]F\  }}|                     ¦   «         }|                     ¦   «         D ]\  }}	|r	|	|||z   <   Œ|	|||z   <   ŒŒG||z   dz   }
t	          ||
|j        ¦  «        |
fS )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   )rÈ   Úngensr¹   Úto_dictrº   Údom)r   r   r   Úfrontr³   r5   Úf_monomr8   Úg_monomr2   rU   s              r   Ú
dmp_injectr    s¾   € õ& �q˜!ÑÔ˜b€q€Aà	Œ�!‰€Aà—g’g‘i”ið )ð )‰
ˆ�Ø�IŠI‰KŒKˆàŸ'š'™)œ)ð 	)ð 	)‰JˆG�QØð )Ø'(��'˜GÑ#Ñ$Ð$à'(��'˜GÑ#Ñ$Ð$ð		)ð 	
ˆA‰�‰	€Aå˜˜A˜qœuÑ%Ô% qÐ(Ð(r   c                 ó‚  — t          | |¦  «        i }} |j        }||j        z
  dz   }|                      ¦   «         D ]I\  }}|r|d|…         ||d…         }
}	n|| d…         |d| …         }
}	|
|v r|||
         |	<   ŒB|	|i||
<   ŒJ|                     ¦   «         D ]\  }} ||¦  «        ||<   Œt          ||dz
  |¦  «        S )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]

    r   N)rÈ   r  r¹   rº   )r   r   r   r  r³   r‰   r5   r#   r2   r  r  s              r   Ú	dmp_ejectr  >  sõ   € õ �q˜!ÑÔ˜b€q€Aà	Œ€AØ	ˆAŒG‰�a‰€Aà—G’G‘I”Ið 	&ð 	&‰ˆˆqØð 	6Ø$ R a Rœy¨%°°°¬)�WˆGˆGà$ a R S Sœz¨5°°1°"°¬:�WˆGà�aˆ<ˆ<Ø"#ˆAˆgŒJ�wÑÐà! 1˜ˆAˆg‰JˆJà—G’G‘I”Ið ð ‰ˆˆqØ�1�Q‘4”4ˆˆ%‰ˆå˜˜A ™E 1Ñ%Ô%Ð%r   c                 ó€   — t          | |¦  «        s| sd| fS d}t          | ¦  «        D ]
}|s|dz  }Œ
 || d| …         fS )a  
    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])

    r   r   N)r   r\   )r   r   r3   r2   s       r   Údup_terms_gcdr  b  sh   € õ  ˆa��|„|ð ˜1ð Ø�!ˆtˆà	€Aå�a‰[Œ[ð ð ˆØð 	Ø�‰FˆAˆAààˆa��!��Œfˆ9Ðr   c                 ó†  — t          | ||¦  «        st          | |¦  «        r
d|dz   z  | fS t          | |¦  «        }t          t	          |                     ¦   «         ¦  «        Ž }t          d„ |D ¦   «         ¦  «        r|| fS i } |                     ¦   «         D ]\  }}|| t          ||¦  «        <   Œ|t          | ||¦  «        fS )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]])

    rÀ   r   c              3   ó"   K  — | ]
}|d k    V — ŒdS )r   NrC   )r1   r8   s     r   r6   z dmp_terms_gcd.<locals>.<genexpr>–  rã   r   )
r   r*   rÈ   r   rK   r¯   rè   r¹   r   rº   )r   r   r   rË   rð   r#   r¼   s          r   Údmp_terms_gcdr  €  sØ   € õ  �Q˜˜1ÑÔð ¥¨A¨qÑ!1Ô!1ð Ø�Q˜‘U‰|˜QˆÐå�A�qÑÔ€AÝ•d˜1Ÿ6š6™8œ8‘n”nÐ%€Aå
Ð
Ð
˜1Ð
Ñ
Ô
ÑÔð Ø�!ˆtˆà
€AàŸš™	œ	ð *ð *‰ˆˆuØ$)ˆ�,�u˜aÑ
 Ô
 Ñ!Ð!à�m˜A˜q !Ñ$Ô$Ð$Ð$r   c           
      ó&  — t          | |¦  «        g }}|s7t          | ¦  «        D ]&\  }}|sŒ|                     |||z
  fz   |f¦  «         Œ'nE|dz
  }t          | ¦  «        D ]0\  }}|                     t	          |||||z
  fz   ¦  «        ¦  «         Œ1|S )z,Recursive helper for :func:`dmp_list_terms`.r   )r,   rç   r    rø   Ú_rec_list_terms)r8   r5   r#   r�   Útermsr3   r2   rU   s           r   r  r  ¡  sÃ   € å˜!˜QÑÔ €u€Aàð 
BÝ˜a‘L”Lð 	0ð 	0‰DˆAˆqØð Øà�LŠL˜% 1 q¡5 (Ñ*¨AÐ.Ñ/Ô/Ð/Ð/ð		0ð �‰Eˆå˜a‘L”Lð 	Bð 	B‰DˆAˆqØ�LŠL�¨¨A¨u¸¸A¹°xÑ/?Ñ@Ô@ÑAÔAÐAÐAà€Lr   c                 óˆ   — d„ }t          | |d¦  «        }|sd|dz   z  |j        fgS |€|S  ||t          |¦  «        ¦  «        S )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                 ó.   ‡— t          | ˆfd„d¬¦  «        S )Nc                 ó&   •—  ‰| d         ¦  «        S )Nr   rC   )ÚtermÚOs    €r   ú<lambda>z.dmp_list_terms.<locals>.sort.<locals>.<lambda>Ç  s   ø€ ¨a¨a°°Q´©j¬j€ r   T)ÚkeyÚreverse)Úsorted)r  r  s    `r   Úsortzdmp_list_terms.<locals>.sortÆ  s"   ø€ Ý�eÐ!8Ð!8Ð!8Ð!8À$ÐGÑGÔGÐGr   rC   rÀ   r   )r  r	   r   )r   r   r   Úorderr"  r  s         r   Údmp_list_termsr$  ´  sk   € ð$Hð Hð Hõ ˜A˜q "Ñ%Ô%€Eàð (Ø�q˜1‘u‘˜qœvÐ&Ð'Ð'à€}Øˆàˆt�E�<¨Ñ.Ô.Ñ/Ô/Ð/r   c                 ó$  — t          | ¦  «        t          |¦  «        }}||k    r)||k    r|j        g||z
  z  |z   }n|j        g||z
  z  | z   } g }t          | |¦  «        D ]"\  }}	|                      |||	g|¢R Ž ¦  «         Œ#t	          |¦  «        S )a8  
    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    rE   )
r   r8   r³   Úargsr   r‰   rë   rÃ   ræ   râ   s
             r   Údup_apply_pairsr'  Ô  s®   € õ  ˆq‰6Œ6•3�q‘6”6€q€AàˆA‚v€vØˆqŠ5ˆ5Ø”�˜!˜a™%Ñ  1Ñ$ˆAˆAà”�˜!˜a™%Ñ  1Ñ$ˆAà€Få�A�q‘	”	ð &ð &‰ˆˆ1Ø�Š�a�a˜˜1�n˜t�n�n�nÑ%Ô%Ð%Ð%å�VÑÔÐr   c                 ó†  — |st          | ||||¦  «        S t          | ¦  «        t          |¦  «        |dz
  }}}||k    r5||k    rt          ||z
  ||¦  «        |z   }nt          ||z
  ||¦  «        | z   } g }	t          | |¦  «        D ],\  }
}|	                     t          |
|||||¦  «        ¦  «         Œ-t          |	|¦  «        S )aG  
    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Ï   r    Údmp_apply_pairsrH   )r   r8   r³   r&  r   r   r‰   rë   r5   rÃ   ræ   râ   s               r   r)  r)  ô  sÞ   € ð  ð 1Ý˜q ! Q¨¨aÑ0Ô0Ð0å�!‰fŒf•c˜!‘f”f˜a !™eˆ!€q€AàˆA‚v€vØˆqŠ5ˆ5Ý˜!˜a™%  AÑ&Ô&¨Ñ*ˆAˆAå˜!˜a™%  AÑ&Ô&¨Ñ*ˆAà€Få�A�q‘	”	ð <ð <‰ˆˆ1Ø�Š•o a¨¨A¨t°Q¸Ñ:Ô:Ñ;Ô;Ð;Ð;å�V˜QÑÔÐr   c                 ó  — t          | ¦  «        }||k    r||z
  }nd}||k    r||z
  }nd}| ||…         } | r9| d         |j        k    r(|                      d¦  «         | r| d         |j        k    °(| sg S | |j        g|z  z   S )z=Take a continuous subsequence of terms of ``f`` in ``K[x]``. r   )r!   r	   rX   )r   rë   r‰   r   r´   rê   rŽ   s          r   Ú	dup_slicer+    sª   € åˆA‰Œ€AàˆA‚v€vØ�‰EˆˆàˆØˆA‚v€vØ�‰Eˆˆàˆà	ˆ!ˆAˆ#Œ€Aà
ð ��!”˜œ’�Ø	�Šˆa‰Œˆð ð ��!”˜œ’�ð ð Øˆ	à�A”F�8˜A‘:‰~Ðr   c                 ó*   — t          | ||d||¦  «        S )z=Take a continuous subsequence of terms of ``f`` in ``K[X]``. r   )Údmp_slice_in)r   rë   r‰   r   r   s        r   Ú	dmp_slicer.  /  s   € å˜˜1˜a  A qÑ)Ô)Ð)r   c                 ó~  — |dk     s||k    rt          d|›d|›d|›�¦  «        ‚|st          | |||¦  «        S t          | |¦  «        i }} |                      ¦   «         D ]N\  }}||         }	|	|k     s|	|k    r|d|…         dz   ||dz   d…         z   }||v r||xx         |z  cc<   ŒI|||<   ŒOt	          |||¦  «        S )zHTake a continuous subsequence of terms of ``f`` in ``x_j`` in ``K[X]``. r   ú-z <= j < r:   NrÀ   r   )r;   r+  rÈ   r¹   rº   )
r   rë   r‰   r4   r   r   r8   r#   r¼   r´   s
             r   r-  r-  4  sù   € àˆ1‚u€u��A’�Ýˆj¸Q¸Q¸QÀÀÀÀ1À1ÐEÑFÔFÐFàð %Ý˜˜A˜q !Ñ$Ô$Ð$å�q˜!ÑÔ˜b€q€AàŸš™	œ	ð 	ð 	‰ˆˆuØ�!ŒHˆàˆqŠ5ˆ5�A˜’F�FØ˜"˜1˜"”I Ñ$ u¨Q°©U¨V¨V¤}Ñ4ˆEà�Aˆ:ˆ:ØˆeˆHˆHŒH˜ÑˆHˆH‰HˆHàˆAˆe‰HˆHå˜˜A˜qÑ!Ô!Ð!r   c                 óÄ   ‡‡‡— ˆˆˆfd„t          d| dz   ¦  «        D ¦   «         }|d         s3‰                     t          j        ‰‰¦  «        ¦  «        |d<   |d         ¯3|S )a  
    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]

    c                 ó`   •— g | ]*}‰                      t          j        ‰‰¦  «        ¦  «        ‘Œ+S rC   )ry   ÚrandomÚrandint)r1   rý   r   ræ   râ   s     €€€r   rV   zdup_random.<locals>.<listcomp>Z  s1   ø€ ÐDÐDÐD¨aˆ!�)Š)•F”N 1 aÑ(Ô(Ñ
)Ô
)ÐDÐDÐDr   r   r   )r”   ry   r3  r4  )r‰   ræ   râ   r   r   s    ``` r   Ú
dup_randomr5  L  su   øøø€ ð 	EÐDÐDÐDÐDÐDµ5¸¸AÀ¹E±?´?ÐDÑDÔD€Aà�Œdð /Ø�yŠy�œ¨¨1Ñ-Ô-Ñ.Ô.ˆˆ!‰ð �Œdð /ð €Hr   r/   )NF)F)VÚ__doc__Ú
sympy.corer   Úsympy.polys.monomialsr   r   Úsympy.polys.orderingsr   r3  Úfloatr&   r   r   r   r   r   r   r   r   r$   r(   r,   r0   r<   r>   rA   rE   rH   rP   rT   rZ   r]   r`   rc   rh   rk   rq   rt   r|   r   rƒ   r†   rŠ   rŒ   r�   r*   rG   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-  r5  rC   r   r   ú<module>r;     sê  ðØ KÐ Kð Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø .Ð .Ð .Ð .Ð .Ð .à €€€ð €uˆV�}„}€ðð ð ð,ð ð ð* Ð €ˆØÐ €ˆðð ð ð.ð ð ð.&ð &ð &ð<ð ð ð.ð ð ð66ð 6ð 6ð&ð &ð &ð4,ð ,ð ,ðð ð ð*ð ð ð6ð ð ðBð ð ð$9ð 9ð 9ðDð Dð Dð Dð:(ð (ð (ð&ð ð ð&)ð )ð )ð0ð ð ð*0ð 0ð 0ð21ð 1ð 1ð"<ð <ð <ð,;ð ;ð ;ð2Bð Bð Bð:5ð 5ð 5ð$@ð @ð @ð.$ð $ð $ð4'ð 'ð 'ð4ð ð ð@ð ð ð2ð ð ð*%ð %ð %ð" ð  ð  ð"ð ð ð<ð ð ð01ð 1ð 1ð26ð 6ð 6ð21ð 1ð 1ð&1ð 1ð 1ð&ð ð ðBð ð ð2)ð )ð )ðXð ð ð ð6ð ð ð ð2 ð  ð  ð  ðF "ð  "ð  "ðF"ð "ð "ð>ð ð ð.0ð 0ð 0ð@ð ð ðB)%ð )%ð )%ðX$/ð $/ð $/ðN5ð 5ð 5ðpð ð ð<ð ð ð,+ð +ð +ð2-(ð -(ð -(ð`"ð "ð "ðD")ð ")ð ")ð ")ðJ!&ð !&ð !&ð !&ðHð ð ð<%ð %ð %ðBð ð ð&0ð 0ð 0ð 0ð@ð ð ð@  ð   ð   ðFð ð ð0*ð *ð *ð
"ð "ð "ð0ð ð ð ð r   