Ë
    7^(hB…  ã                   óÔ  — d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZ ddlmZmZ d„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ 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)„ Z7d*„ Z8d+„ Z9d,„ Z:d-„ Z;d.„ Z<d/„ Z=d0„ Z>d1„ Z?d2„ Z@d3„ ZAd4„ ZBd5„ ZCd6„ ZDd7„ ZEd8„ ZFd9„ ZGd:„ ZHd;„ ZId<„ ZJd=„ ZKd>„ ZLd?„ ZMd@„ ZNdA„ ZOdB„ ZPdC„ ZQyD)EzEArithmetics for dense recursive polynomials in ``K[x]`` or ``K[X]``. é    )Ú	dup_sliceÚdup_LCÚdmp_LCÚ
dup_degreeÚ
dmp_degreeÚ	dup_stripÚ	dmp_stripÚ
dmp_zero_pÚdmp_zeroÚ	dmp_one_pÚdmp_oneÚ
dmp_groundÚ	dmp_zeros)ÚExactQuotientFailedÚPolynomialDivisionFailedc                 óÞ   — |s| S t        | «      }||z
  dz
  }||dz
  k(  rt        | d   |z   g| dd z   «      S ||k\  r|g|j                  g||z
  z  z   | z   S | d| | |   |z   gz   | |dz   d z   S )zÓ
    Add ``c*x**i`` to ``f`` in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_add_term(x**2 - 1, ZZ(2), 4)
    2*x**4 + x**2 - 1

    é   r   N©Úlenr   Úzero©ÚfÚcÚiÚKÚnÚms         úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/polys/densearith.pyÚdup_add_termr      sŸ   € ñ ØˆäˆA‹€AØ	ˆA‰�‰	€AàˆA�‰E‚zÜ˜!˜A™$ ™(˜ a¨¨ eÑ+Ó,Ð,à�Š6Ø�3˜!Ÿ&™&˜ 1 q¡5Ñ)Ñ)¨AÑ-Ð-à�R�a�5˜A˜a™D 1™H˜:Ñ%¨¨!¨a©%¨&¨	Ñ1Ð1ó    c                 ó<  — |st        | |||«      S |dz
  }t        ||«      r| S t        | «      }||z
  dz
  }||dz
  k(  r"t        t	        | d   |||«      g| dd z   |«      S ||k\  r|gt        ||z
  ||«      z   | z   S | d| t	        | |   |||«      gz   | |dz   d z   S )zÝ
    Add ``c(x_2..x_u)*x_0**i`` to ``f`` in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_add_term(x*y + 1, 2, 2)
    2*x**2 + x*y + 1

    r   r   N)r   r
   r   r	   Údmp_addr   ©r   r   r   Úur   Úvr   r   s           r   Údmp_add_termr&   +   sÓ   € ñ Ü˜A˜q ! QÓ'Ð'à	ˆA‰€Aä�!�QÔØˆäˆA‹€AØ	ˆA‰�‰	€AàˆA�‰E‚zÜœ' ! A¡$¨¨1¨aÓ0Ð1°A°a°b°EÑ9¸1Ó=Ð=à�Š6Ø�3œ 1 q¡5¨!¨QÓ/Ñ/°!Ñ3Ð3à�R�a�5œG A a¡D¨!¨Q°Ó2Ð3Ñ3°a¸¸A¹¸°iÑ?Ð?r    c                 óà   — |s| S t        | «      }||z
  dz
  }||dz
  k(  rt        | d   |z
  g| dd z   «      S ||k\  r| g|j                  g||z
  z  z   | z   S | d| | |   |z
  gz   | |dz   d z   S )zÚ
    Subtract ``c*x**i`` from ``f`` in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_sub_term(2*x**4 + x**2 - 1, ZZ(2), 4)
    x**2 - 1

    r   r   Nr   r   s         r   Údup_sub_termr(   M   s¡   € ñ ØˆäˆA‹€AØ	ˆA‰�‰	€AàˆA�‰E‚zÜ˜!˜A™$ ™(˜ a¨¨ eÑ+Ó,Ð,à�Š6Ø�B�4˜1Ÿ6™6˜( A¨¡EÑ*Ñ*¨QÑ.Ð.à�R�a�5˜A˜a™D 1™H˜:Ñ%¨¨!¨a©%¨&¨	Ñ1Ð1r    c                 óT  — |st        | | ||«      S |dz
  }t        ||«      r| S t        | «      }||z
  dz
  }||dz
  k(  r"t        t	        | d   |||«      g| dd z   |«      S ||k\  r"t        |||«      gt        ||z
  ||«      z   | z   S | d| t	        | |   |||«      gz   | |dz   d z   S )zä
    Subtract ``c(x_2..x_u)*x_0**i`` from ``f`` in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_sub_term(2*x**2 + x*y + 1, 2, 2)
    x*y + 1

    r   r   N)r   r
   r   r	   Údmp_subÚdmp_negr   r#   s           r   Údmp_sub_termr,   j   sß   € ñ Ü˜A ˜r 1 aÓ(Ð(à	ˆA‰€Aä�!�QÔØˆäˆA‹€AØ	ˆA‰�‰	€AàˆA�‰E‚zÜœ' ! A¡$¨¨1¨aÓ0Ð1°A°a°b°EÑ9¸1Ó=Ð=à�Š6Ü˜A˜q !Ó$Ð%¬	°!°a±%¸¸AÓ(>Ñ>ÀÑBÐBà�R�a�5œG A a¡D¨!¨Q°Ó2Ð3Ñ3°a¸¸A¹¸°iÑ?Ð?r    c                 ó`   — |r| sg S | D �cg c]  }||z  ‘Œ	 c}|j                   g|z  z   S c c}w )zÖ
    Multiply ``f`` by ``c*x**i`` in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_mul_term(x**2 - 1, ZZ(3), 2)
    3*x**4 - 3*x**2

    ©r   )r   r   r   r   Úcfs        r   Údup_mul_termr0   Œ   s5   € ñ ‘AØˆ	à"#Ö%˜B��a“Ò%¨¯©¨°©
Ñ2Ð2ùÒ%s   ‹+c           	      óÔ   — |st        | |||«      S |dz
  }t        | |«      r| S t        ||«      rt        |«      S | D �cg c]  }t        ||||«      ‘Œ c}t	        |||«      z   S c c}w )zí
    Multiply ``f`` by ``c(x_2..x_u)*x_0**i`` in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_mul_term(x**2*y + x, 3*y, 2)
    3*x**4*y**2 + 3*x**3*y

    r   )r0   r
   r   Údmp_mulr   )r   r   r   r$   r   r%   r/   s          r   Údmp_mul_termr3       sq   € ñ Ü˜A˜q ! QÓ'Ð'à	ˆA‰€Aä�!�QÔØˆÜ�!�QÔÜ˜‹{Ðà01Ö3¨"”˜˜Q  1Õ%Ò3´iÀÀ1ÀaÓ6HÑHÐHùÒ3s   ¿A%c                 ó   — t        | |d|«      S )zð
    Add an element of the ground domain to ``f``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_add_ground(x**3 + 2*x**2 + 3*x + 4, ZZ(4))
    x**3 + 2*x**2 + 3*x + 8

    r   )r   ©r   r   r   s      r   Údup_add_groundr6   »   ó   € ô ˜˜1˜a Ó#Ð#r    c                 ó:   — t        | t        ||dz
  «      d||«      S )zô
    Add an element of the ground domain to ``f``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_add_ground(x**3 + 2*x**2 + 3*x + 4, ZZ(4))
    x**3 + 2*x**2 + 3*x + 8

    r   r   )r&   r   ©r   r   r$   r   s       r   Údmp_add_groundr:   Ì   ó"   € ô ˜œ: a¨¨Q©Ó/°°A°qÓ9Ð9r    c                 ó   — t        | |d|«      S )zó
    Subtract an element of the ground domain from ``f``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_sub_ground(x**3 + 2*x**2 + 3*x + 4, ZZ(4))
    x**3 + 2*x**2 + 3*x

    r   )r(   r5   s      r   Údup_sub_groundr=   Ý   r7   r    c                 ó:   — t        | t        ||dz
  «      d||«      S )z÷
    Subtract an element of the ground domain from ``f``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_sub_ground(x**3 + 2*x**2 + 3*x + 4, ZZ(4))
    x**3 + 2*x**2 + 3*x

    r   r   )r,   r   r9   s       r   Údmp_sub_groundr?   î   r;   r    c                 ó>   — |r| sg S | D �cg c]  }||z  ‘Œ	 c}S c c}w )zâ
    Multiply ``f`` by a constant value in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_mul_ground(x**2 + 2*x - 1, ZZ(3))
    3*x**2 + 6*x - 3

    © ©r   r   r   r/   s       r   Údup_mul_groundrC   ÿ   s&   € ñ ‘AØˆ	à"#Ö%˜B��a“Ò%Ð%ùÒ%s   ‹c           	      ól   — |st        | ||«      S |dz
  }| D �cg c]  }t        ||||«      ‘Œ c}S c c}w )zÚ
    Multiply ``f`` by a constant value in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_mul_ground(2*x + 2*y, ZZ(3))
    6*x + 6*y

    r   )rC   Údmp_mul_ground©r   r   r$   r   r%   r/   s         r   rE   rE     s>   € ñ Ü˜a  AÓ&Ð&à	ˆA‰€Aà34Ö6¨RŒ^˜B  1 aÕ(Ò6Ð6ùÒ6ó   ™1c                 ó¶   — |st        d«      ‚| s| S |j                  r | D �cg c]  }|j                  ||«      ‘Œ c}S | D �cg c]  }||z  ‘Œ	 c}S c c}w c c}w )a)  
    Quotient by a constant in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ, QQ

    >>> R, x = ring("x", ZZ)
    >>> R.dup_quo_ground(3*x**2 + 2, ZZ(2))
    x**2 + 1

    >>> R, x = ring("x", QQ)
    >>> R.dup_quo_ground(3*x**2 + 2, QQ(2))
    3/2*x**2 + 1

    úpolynomial division)ÚZeroDivisionErrorÚis_FieldÚquorB   s       r   Údup_quo_groundrM   )  sZ   € ñ$ ÜÐ 5Ó6Ð6ÙØˆà‡z‚zØ()Ö+ "�—‘�r˜1•Ò+Ð+à#$Ö&˜R��q“Ò&Ð&ùò ,ùâ&s   ¢AÁAc           	      ól   — |st        | ||«      S |dz
  }| D �cg c]  }t        ||||«      ‘Œ c}S c c}w )a=  
    Quotient by a constant in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ, QQ

    >>> R, x,y = ring("x,y", ZZ)
    >>> R.dmp_quo_ground(2*x**2*y + 3*x, ZZ(2))
    x**2*y + x

    >>> R, x,y = ring("x,y", QQ)
    >>> R.dmp_quo_ground(2*x**2*y + 3*x, QQ(2))
    x**2*y + 3/2*x

    r   )rM   Údmp_quo_groundrF   s         r   rO   rO   F  s>   € ñ$ Ü˜a  AÓ&Ð&à	ˆA‰€Aà34Ö6¨RŒ^˜B  1 aÕ(Ò6Ð6ùÒ6rG   c                 ón   — |st        d«      ‚| s| S | D �cg c]  }|j                  ||«      ‘Œ c}S c c}w )zÔ
    Exact quotient by a constant in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, QQ
    >>> R, x = ring("x", QQ)

    >>> R.dup_exquo_ground(x**2 + 2, QQ(2))
    1/2*x**2 + 1

    rI   )rJ   ÚexquorB   s       r   Údup_exquo_groundrR   `  s9   € ñ ÜÐ 5Ó6Ð6ÙØˆà&'Ö) ˆQ�W‰W�R˜�^Ò)Ð)ùÒ)s   –2c           	      ól   — |st        | ||«      S |dz
  }| D �cg c]  }t        ||||«      ‘Œ c}S c c}w )zÞ
    Exact quotient by a constant in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, QQ
    >>> R, x,y = ring("x,y", QQ)

    >>> R.dmp_exquo_ground(x**2*y + 2*x, QQ(2))
    1/2*x**2*y + x

    r   )rR   Údmp_exquo_groundrF   s         r   rT   rT   v  s?   € ñ Ü  1 aÓ(Ð(à	ˆA‰€Aà56Ö8¨rÔ˜b ! Q¨Õ*Ò8Ð8ùÒ8rG   c                 ó0   — | s| S | |j                   g|z  z   S )zÓ
    Efficiently multiply ``f`` by ``x**n`` in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_lshift(x**2 + 1, 2)
    x**4 + x**2

    r.   ©r   r   r   s      r   Ú
dup_lshiftrW   Œ  s    € ñ Øˆà�A—F‘F�8˜A‘:‰~Ðr    c                 ó   — | d|  S )a  
    Efficiently divide ``f`` by ``x**n`` in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_rshift(x**4 + x**2, 2)
    x**2 + 1
    >>> R.dup_rshift(x**4 + x**2 + 2, 2)
    x**2 + 1

    NrA   rV   s      r   Ú
dup_rshiftrY      s   € ð  ˆSˆqˆbˆ6€Mr    c                 óJ   — | D �cg c]  }|j                  |«      ‘Œ c}S c c}w )zÂ
    Make all coefficients positive in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_abs(x**2 - 1)
    x**2 + 1

    )Úabs©r   r   Úcoeffs      r   Údup_absr^   ³  s    € ð ()Ö*˜eˆQ�U‰U�5�\Ò*Ð*ùÒ*s   … c                 óh   — |st        | |«      S |dz
  }| D �cg c]  }t        |||«      ‘Œ c}S c c}w )zÊ
    Make all coefficients positive in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_abs(x**2*y - x)
    x**2*y + x

    r   )r^   Údmp_abs©r   r$   r   r%   r/   s        r   r`   r`   Ä  ó9   € ñ Ü�q˜!‹}Ðà	ˆA‰€Aà)*Ö, 2ŒW�R˜˜AÕÒ,Ð,ùÒ,ó   ˜/c                 ó.   — | D �cg c]  }| ‘Œ c}S c c}w )z¸
    Negate a polynomial in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_neg(x**2 - 1)
    -x**2 + 1

    rA   r\   s      r   Údup_negre   Ú  s   € ð "#Ö$˜ˆeŠVÒ$Ð$ùÒ$s   …
c                 óh   — |st        | |«      S |dz
  }| D �cg c]  }t        |||«      ‘Œ c}S c c}w )zÀ
    Negate a polynomial in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_neg(x**2*y - x)
    -x**2*y + x

    r   )re   r+   ra   s        r   r+   r+   ë  rb   rc   c                 óP  — | s|S |s| S t        | «      }t        |«      }||k(  r+t        t        | |«      D ��cg c]
  \  }}||z   ‘Œ c}}«      S t        ||z
  «      }||kD  r| d| | |d } }n
|d| ||d }}|t        | |«      D ��cg c]
  \  }}||z   ‘Œ c}}z   S c c}}w c c}}w )zÄ
    Add dense polynomials in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_add(x**2 - 1, x - 2)
    x**2 + x - 3

    N)r   r   Úzipr[   ©	r   Úgr   ÚdfÚdgÚaÚbÚkÚhs	            r   Údup_addrq     s½   € ñ ØˆÙØˆä	�A‹€BÜ	�A‹€Bà	ˆR‚xÜ¬S°°A«Y×8¡T Q¨˜1˜q›5Ó8Ó9Ð9ä��R‘‹Lˆà�Š7Ø�R�a�5˜!˜A˜B˜%ˆq‰Aà�R�a�5˜!˜A˜B˜%ˆqˆAà¤s¨1¨a£y×2™t˜q !�Q˜“UÓ2Ñ2Ð2ùó 9ùó 3s   ¸B
ÂB"c                 ó®  — |st        | ||«      S t        | |«      }|dk  r|S t        ||«      }|dk  r| S |dz
  }||k(  r5t        t        | |«      D ��cg c]  \  }}t	        ||||«      ‘Œ c}}|«      S t        ||z
  «      }	||kD  r| d|	 | |	d } }
n
|d|	 ||	d }}
|
t        | |«      D ��cg c]  \  }}t	        ||||«      ‘Œ c}}z   S c c}}w c c}}w )zÖ
    Add dense polynomials in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_add(x**2 + y, x**2*y + x)
    x**2*y + x**2 + x + y

    r   r   N)rq   r   r	   rh   r"   r[   ©r   rj   r$   r   rk   rl   r%   rm   rn   ro   rp   s              r   r"   r"   $  sø   € ñ Ü�q˜!˜QÓÐä	�A�qÓ	€Bà	ˆA‚vØˆä	�A�qÓ	€Bà	ˆA‚vØˆà	ˆA‰€Aà	ˆR‚xÜ¼3¸qÀ!»9×F±4°1°aœ7 1 a¨¨AÕ.ÓFÈÓJÐJä��R‘‹Lˆà�Š7Ø�R�a�5˜!˜A˜B˜%ˆq‰Aà�R�a�5˜!˜A˜B˜%ˆqˆAà´S¸¸A³Y×@©T¨Q°”W˜Q  1 aÕ(Ó@Ñ@Ð@ùó Gùó As   ÁC
Â-Cc                 óx  — | st        ||«      S |s| S t        | «      }t        |«      }||k(  r+t        t        | |«      D ��cg c]
  \  }}||z
  ‘Œ c}}«      S t	        ||z
  «      }||kD  r| d| | |d } }nt        |d| |«      ||d }}|t        | |«      D ��cg c]
  \  }}||z
  ‘Œ c}}z   S c c}}w c c}}w )zÉ
    Subtract dense polynomials in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_sub(x**2 - 1, x - 2)
    x**2 - x + 1

    N)re   r   r   rh   r[   ri   s	            r   Údup_subru   N  sË   € ñ Ü�q˜!‹}ÐÙØˆä	�A‹€BÜ	�A‹€Bà	ˆR‚xÜ¬S°°A«Y×8¡T Q¨˜1˜q›5Ó8Ó9Ð9ä��R‘‹Lˆà�Š7Ø�R�a�5˜!˜A˜B˜%ˆq‰Aä˜1˜R˜a˜5 !Ó$ a¨¨ eˆqˆAà¤s¨1¨a£y×2™t˜q !�Q˜“UÓ2Ñ2Ð2ùó 9ùó 3s   ÁB0
ÂB6c                 óÚ  — |st        | ||«      S t        | |«      }|dk  rt        |||«      S t        ||«      }|dk  r| S |dz
  }||k(  r5t        t	        | |«      D ��cg c]  \  }}t        ||||«      ‘Œ c}}|«      S t        ||z
  «      }	||kD  r| d|	 | |	d } }
nt        |d|	 ||«      ||	d }}
|
t	        | |«      D ��cg c]  \  }}t        ||||«      ‘Œ c}}z   S c c}}w c c}}w )zÜ
    Subtract dense polynomials in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_sub(x**2 + y, x**2*y + x)
    -x**2*y + x**2 - x + y

    r   r   N)ru   r   r+   r	   rh   r*   r[   rs   s              r   r*   r*   q  s  € ñ Ü�q˜!˜QÓÐä	�A�qÓ	€Bà	ˆA‚vÜ�q˜!˜QÓÐä	�A�qÓ	€Bà	ˆA‚vØˆà	ˆA‰€Aà	ˆR‚xÜ¼3¸qÀ!»9×F±4°1°aœ7 1 a¨¨AÕ.ÓFÈÓJÐJä��R‘‹Lˆà�Š7Ø�R�a�5˜!˜A˜B˜%ˆq‰Aä˜1˜R˜a˜5 ! QÓ'¨¨1¨2¨ˆqˆAà´S¸¸A³Y×@©T¨Q°”W˜Q  1 aÕ(Ó@Ñ@Ð@ùó Gùó As   ÁC!
ÃC'c                 ó2   — t        | t        |||«      |«      S )zá
    Returns ``f + g*h`` where ``f, g, h`` are in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_add_mul(x**2 - 1, x - 2, x + 2)
    2*x**2 - 5

    )rq   Údup_mul©r   rj   rp   r   s       r   Údup_add_mulrz   ›  ó   € ô �1”g˜a  AÓ&¨Ó*Ð*r    c           	      ó6   — t        | t        ||||«      ||«      S )zç
    Returns ``f + g*h`` where ``f, g, h`` are in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_add_mul(x**2 + y, x, x + 2)
    2*x**2 + 2*x + y

    )r"   r2   ©r   rj   rp   r$   r   s        r   Údmp_add_mulr~   ¬  ó    € ô �1”g˜a  A qÓ)¨1¨aÓ0Ð0r    c                 ó2   — t        | t        |||«      |«      S )zØ
    Returns ``f - g*h`` where ``f, g, h`` are in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_sub_mul(x**2 - 1, x - 2, x + 2)
    3

    )ru   rx   ry   s       r   Údup_sub_mulr�   ½  r{   r    c           	      ó6   — t        | t        ||||«      ||«      S )zß
    Returns ``f - g*h`` where ``f, g, h`` are in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_sub_mul(x**2 + y, x, x + 2)
    -2*x + y

    )r*   r2   r}   s        r   Údmp_sub_mulrƒ   Î  r   r    c           
      óH  — | |k(  rt        | |«      S | r|sg S t        | «      }t        |«      }t        ||«      dz   }|dk  s|j                  s}g }t	        d||z   dz   «      D ][  }|j
                  }t	        t        d||z
  «      t        ||«      dz   «      D ]  }	|| |	   |||	z
     z  z  }Œ |j                  |«       Œ] t        |«      S |dz  }
t        | d|
|«      t        |d|
|«      }}t        t        | |
||«      |
|«      }t        t        ||
||«      |
|«      }t        |||«      t        |||«      }}t        t        |||«      t        |||«      |«      }t        |t        |||«      |«      }t        t        |t        ||
|«      |«      t        |d|
z  |«      |«      S )zÂ
    Multiply dense polynomials in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_mul(x - 2, x + 2)
    x**2 - 4

    r   éd   r   é   )Údup_sqrr   ÚmaxÚis_ExactÚranger   ÚminÚappendr   r   rY   rx   rq   ru   rW   )r   rj   r   rk   rl   r   rp   r   r]   ÚjÚn2ÚflÚglÚfhÚghÚloÚhiÚmids                     r   rx   rx   ß  s¹  € ð 	ˆA‚vÜ�q˜!‹}Ðá‘!Øˆ	ä	�A‹€BÜ	�A‹€BäˆB�‹�a‰€Aàˆ3‚w�a—j’jØˆä�q˜"˜r™' A™+Ó&ò 	ˆAØ—F‘FˆEäœ3˜q ! b¡&›>¬3¨r°1«:¸©>Ó:ò '�Ø˜˜1™˜a  A¡™h™Ñ&‘ð'ð �H‰H�U�Oð	ô ˜‹|Ðð
 �‰Tˆä˜1˜a  QÓ'¬°1°a¸¸QÓ)?ˆBˆäœ	 ! R¨¨AÓ.°°AÓ6ˆÜœ	 ! R¨¨AÓ.°°AÓ6ˆä˜˜R Ó#¤W¨R°°QÓ%7ˆBˆä”g˜b " aÓ(¬'°"°b¸!Ó*<¸aÓ@ˆÜ�cœ7 2 r¨1Ó-¨qÓ1ˆä”w˜r¤:¨c°2°qÓ#9¸1Ó=Ü! " a¨¡d¨AÓ.°ó3ð 	3r    c                 ó¸  — |st        | ||«      S | |k(  rt        | ||«      S t        | |«      }|dk  r| S t        ||«      }|dk  r|S g |dz
  }}t        d||z   dz   «      D ]l  }t	        |«      }	t        t        d||z
  «      t        ||«      dz   «      D ]%  }
t        |	t        | |
   |||
z
     ||«      ||«      }	Œ' |j                  |	«       Œn t        ||«      S )zÆ
    Multiply dense polynomials in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_mul(x*y + 1, x)
    x**2*y + x

    r   r   )rx   Údmp_sqrr   rŠ   r   rˆ   r‹   r"   r2   rŒ   r	   )r   rj   r$   r   rk   rl   rp   r%   r   r]   r�   s              r   r2   r2     sþ   € ñ Ü�q˜!˜QÓÐàˆA‚vÜ�q˜!˜QÓÐä	�A�qÓ	€Bà	ˆA‚vØˆä	�A�qÓ	€Bà	ˆA‚vØˆàˆq�1‰u€q€Aä�1�b˜2‘g ‘kÓ"ò ˆÜ˜“ˆä”s˜1˜a "™f“~¤s¨2¨q£z°A¡~Ó6ò 	HˆAÜ˜E¤7¨1¨Q©4°°1°q±5±¸1¸aÓ#@À!ÀQÓG‰Eð	Hð 	
�‰��ðô �Q˜‹?Ðr    c                 óz  — t        | «      dz
  g }}t        dd|z  dz   «      D ]Œ  }|j                  }t        d||z
  «      }t	        ||«      }||z
  dz   }||dz  z   dz
  }t        ||dz   «      D ]  }	|| |	   | ||	z
     z  z  }Œ ||z  }|dz  r| |dz      }
||
dz  z  }|j                  |«       ŒŽ t        |«      S )zÅ
    Square dense polynomials in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_sqr(x**2 + 1)
    x**4 + 2*x**2 + 1

    r   r   r†   )r   rŠ   r   rˆ   r‹   rŒ   r   )r   r   rk   rp   r   r   ÚjminÚjmaxr   r�   Úelems              r   r‡   r‡   C  sì   € ô �‹F�Q‰J˜ˆ€Bä�1�a˜‘d˜Q‘hÓò ˆØ�F‰Fˆä�1�a˜"‘f‹~ˆÜ�1�b‹zˆà�4‰K˜!‰Oˆà�a˜1‘f‰}˜qÑ ˆä�t˜T A™XÓ&ò 	ˆAØ��1‘�a˜˜A™‘h‘Ñ‰Að	ð 	
ˆQ‰ˆàˆqŠ5Ø�T˜A‘X‘;ˆDØ��q‘‰LˆAà	�‰��ð'ô* �Q‹<Ðr    c                 ó  — |st        | |«      S t        | |«      }|dk  r| S g |dz
  }}t        dd|z  dz   «      D ]½  }t        |«      }t	        d||z
  «      }t        ||«      }	|	|z
  dz   }
||
dz  z   dz
  }	t        ||	dz   «      D ]%  }t        |t        | |   | ||z
     ||«      ||«      }Œ' t        | |d«      ||«      }|
dz  r!t        | |	dz      ||«      }t        ||||«      }|j                  |«       Œ¿ t        ||«      S )zð
    Square dense polynomials in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_sqr(x**2 + x*y + y**2)
    x**4 + 2*x**3*y + 3*x**2*y**2 + 2*x*y**3 + y**4

    r   r   r†   )r‡   r   rŠ   r   rˆ   r‹   r"   r2   rE   r—   rŒ   r	   )r   r$   r   rk   rp   r%   r   r   r™   rš   r   r�   r›   s                r   r—   r—   k  s7  € ñ Ü�q˜!‹}Ðä	�A�qÓ	€Bà	ˆA‚vØˆàˆq�1‰u€q€Aä�1�a˜‘d˜Q‘hÓò ˆÜ�Q‹Kˆä�1�a˜"‘f‹~ˆÜ�1�b‹zˆà�4‰K˜!‰Oˆà�a˜1‘f‰}˜qÑ ˆä�t˜T A™XÓ&ò 	@ˆAÜ˜œ7 1 Q¡4¨¨1¨q©5©°1°aÓ8¸!¸QÓ?‰Að	@ô ˜1™a ›d A qÓ)ˆàˆqŠ5Ü˜1˜T A™X™;¨¨1Ó-ˆDÜ˜˜4  AÓ&ˆAà	�‰��ð'ô* �Q˜‹?Ðr    c                 óä   — |s|j                   gS |dk  rt        d«      ‚|dk(  s| r| |j                   gk(  r| S |j                   g}	 |dz  |}}|dz  rt        || |«      }|s	 |S t        | |«      } Œ+)zÕ
    Raise ``f`` to the ``n``-th power in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_pow(x - 2, 3)
    x**3 - 6*x**2 + 12*x - 8

    r   ú+Cannot raise polynomial to a negative powerr   r†   )ÚoneÚ
ValueErrorrx   r‡   )r   r   r   rj   r   s        r   Údup_powr¡   ›  sŽ   € ñ Ø—‘ˆwˆØˆ1‚uÜÐFÓGÐGØˆA‚v‘Q˜! §¡˜wš,Øˆà	
�‰ˆ€Aà
Ø�!‰t�Qˆ1ˆàˆqŠ5Ü˜˜1˜aÓ ˆAáØð €Hô �A�q‹Mˆð r    c                 ó  — |st        | ||«      S |st        ||«      S |dk  rt        d«      ‚|dk(  st        | |«      st	        | ||«      r| S t        ||«      }	 |dz  |}}|dz  rt        || ||«      }|s	 |S t        | ||«      } Œ-)zæ
    Raise ``f`` to the ``n``-th power in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_pow(x*y + 1, 3)
    x**3*y**3 + 3*x**2*y**2 + 3*x*y + 1

    r   rž   r   r†   )r¡   r   r    r
   r   r2   r—   )r   r   r$   r   rj   r   s         r   Údmp_powr£   À  s¬   € ñ Ü�q˜!˜QÓÐáÜ�q˜!‹}ÐØˆ1‚uÜÐFÓGÐGØˆA‚v”˜A˜qÔ!¤Y¨q°!°QÔ%7Øˆä��1‹€Aà
Ø�!‰t�Qˆ1ˆàˆqŠ5Ü˜˜1˜a Ó#ˆAáØð €Hô �A�q˜!Óˆð r    c                 óÔ  — t        | «      }t        |«      }g | |}}}|st        d«      ‚||k  r||fS ||z
  dz   }t        ||«      }		 t        ||«      }
||z
  |dz
  }}t        ||	|«      }t	        ||
||«      }t        ||	|«      }t        ||
||«      }t        |||«      }|t        |«      }}||k  rn||k  st        | ||«      ‚Œ|	|z  }t        |||«      }t        |||«      }||fS )zÍ
    Polynomial pseudo-division in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_pdiv(x**2 + 1, 2*x - 4)
    (2*x + 4, 20)

    rI   r   )r   rJ   r   rC   r   r0   ru   r   )r   rj   r   rk   rl   ÚqÚrÚdrÚNÚlc_gÚlc_rr�   ÚQÚRÚGÚ_drr   s                    r   Údup_pdivr¯   è  s%  € ô 
�A‹€BÜ	�A‹€Bà�1�bˆ"€q€AáÜÐ 5Ó6Ð6Ø	ˆbŠØ�!ˆtˆà
ˆR‰�!‰€AÜ�!�Q‹<€Dà
Ü�a˜‹|ˆØ�B‰w˜˜A™ˆ1ˆä˜1˜d AÓ&ˆÜ˜˜D ! QÓ'ˆä˜1˜d AÓ&ˆÜ˜˜D ! QÓ'ˆÜ�A�q˜!Óˆà”j “mˆRˆà�Š7ØØ�s’(Ü*¨1¨a°Ó3Ð3ð! ð$ 	ˆa‰€Aä�q˜!˜QÓ€AÜ�q˜!˜QÓ€Aàˆaˆ4€Kr    c                 óp  — t        | «      }t        |«      }| |}}|st        d«      ‚||k  r|S ||z
  dz   }t        ||«      }	 t        ||«      }	||z
  |dz
  }}
t        |||«      }t	        ||	|
|«      }t        |||«      }|t        |«      }}||k  rn||k  st        | ||«      ‚Œdt        |||z  |«      S )zÃ
    Polynomial pseudo-remainder in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_prem(x**2 + 1, 2*x - 4)
    20

    rI   r   )r   rJ   r   rC   r0   ru   r   )r   rj   r   rk   rl   r¦   r§   r¨   r©   rª   r�   r¬   r­   r®   s                 r   Údup_premr±     sä   € ô 
�A‹€BÜ	�A‹€Bàˆr€r€AáÜÐ 5Ó6Ð6Ø	ˆbŠØˆà
ˆR‰�!‰€AÜ�!�Q‹<€Dà
Ü�a˜‹|ˆØ�B‰w˜˜A™ˆ1ˆä˜1˜d AÓ&ˆÜ˜˜D ! QÓ'ˆÜ�A�q˜!Óˆà”j “mˆRˆà�Š7ØØ�s’(Ü*¨1¨a°Ó3Ð3ð ô ˜!˜T 1™W aÓ(Ð(r    c                 ó"   — t        | ||«      d   S )a   
    Polynomial exact pseudo-quotient in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_pquo(x**2 - 1, 2*x - 2)
    2*x + 2

    >>> R.dup_pquo(x**2 + 1, 2*x - 4)
    2*x + 4

    r   )r¯   ©r   rj   r   s      r   Údup_pquor´   J  s   € ô" �A�q˜!Ó˜QÑÐr    c                 óB   — t        | ||«      \  }}|s|S t        | |«      ‚)a\  
    Polynomial pseudo-quotient in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_pexquo(x**2 - 1, 2*x - 2)
    2*x + 2

    >>> R.dup_pexquo(x**2 + 1, 2*x - 4)
    Traceback (most recent call last):
    ...
    ExactQuotientFailed: [2, -4] does not divide [1, 0, 1]

    )r¯   r   ©r   rj   r   r¥   r¦   s        r   Ú
dup_pexquor·   ^  s+   € ô& �A�q˜!Ó�D€A€qáØˆä! ! QÓ'Ð'r    c                 ó>  — |st        | ||«      S t        | |«      }t        ||«      }|dk  rt        d«      ‚t        |«      | |}}}||k  r||fS ||z
  dz   }	t	        ||«      }
	 t	        ||«      }||z
  |	dz
  }	}t        ||
d||«      }t        |||||«      }t        ||
d||«      }t        |||||«      }t        ||||«      }|t        ||«      }}||k  rn||k  st        | ||«      ‚Œ‡t        |
|	|dz
  |«      }t        ||d||«      }t        ||d||«      }||fS )zß
    Polynomial pseudo-division in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_pdiv(x**2 + x*y, 2*x + 2)
    (2*x + 2*y - 2, -4*y + 4)

    r   rI   r   )
r¯   r   rJ   r   r   r3   r&   r*   r   r£   )r   rj   r$   r   rk   rl   r¥   r¦   r§   r¨   r©   rª   r�   r«   r¬   r­   r®   r   s                     r   Údmp_pdivr¹   y  si  € ñ Ü˜˜1˜aÓ Ð ä	�A�qÓ	€BÜ	�A�qÓ	€Bà	ˆA‚vÜÐ 5Ó6Ð6ä˜‹{˜A˜rˆ"€q€Aà	ˆB‚wØ�!ˆtˆà
ˆR‰�!‰€AÜ�!�Q‹<€Dà
Ü�a˜‹|ˆØ�B‰w˜˜A™ˆ1ˆä˜˜D ! Q¨Ó*ˆÜ˜˜D ! Q¨Ó*ˆä˜˜D ! Q¨Ó*ˆÜ˜˜D ! Q¨Ó*ˆÜ�A�q˜!˜QÓˆà”j  AÓ&ˆRˆà�Š7ØØ�s’(Ü*¨1¨a°Ó3Ð3ð! ô$ 	��a˜˜Q™ Ó"€Aä�Q˜˜1˜a Ó#€AÜ�Q˜˜1˜a Ó#€Aàˆaˆ4€Kr    c                 óÂ  — |st        | ||«      S t        | |«      }t        ||«      }|dk  rt        d«      ‚| |}}||k  r|S ||z
  dz   }t        ||«      }		 t        ||«      }
||z
  |dz
  }}t	        ||	d||«      }t	        ||
|||«      }t        ||||«      }|t        ||«      }}||k  rn||k  st        | ||«      ‚Œit        |	||dz
  |«      }t	        ||d||«      S )zÏ
    Polynomial pseudo-remainder in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_prem(x**2 + x*y, 2*x + 2)
    -4*y + 4

    r   rI   r   )r±   r   rJ   r   r3   r*   r   r£   )r   rj   r$   r   rk   rl   r¦   r§   r¨   r©   rª   r�   r¬   r­   r®   r   s                   r   Údmp_premr»   ²  s  € ñ Ü˜˜1˜aÓ Ð ä	�A�qÓ	€BÜ	�A�qÓ	€Bà	ˆA‚vÜÐ 5Ó6Ð6àˆr€r€Aà	ˆB‚wØˆà
ˆR‰�!‰€AÜ�!�Q‹<€Dà
Ü�a˜‹|ˆØ�B‰w˜˜A™ˆ1ˆä˜˜D ! Q¨Ó*ˆÜ˜˜D ! Q¨Ó*ˆÜ�A�q˜!˜QÓˆà”j  AÓ&ˆRˆà�Š7ØØ�s’(Ü*¨1¨a°Ó3Ð3ð ô 	��a˜˜Q™ Ó"€Aä˜˜1˜a  AÓ&Ð&r    c                 ó$   — t        | |||«      d   S )a.  
    Polynomial exact pseudo-quotient in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> f = x**2 + x*y
    >>> g = 2*x + 2*y
    >>> h = 2*x + 2

    >>> R.dmp_pquo(f, g)
    2*x

    >>> R.dmp_pquo(f, h)
    2*x + 2*y - 2

    r   )r¹   ©r   rj   r$   r   s       r   Údmp_pquor¾   å  s   € ô* �A�q˜!˜QÓ Ñ"Ð"r    c                 óX   — t        | |||«      \  }}t        ||«      r|S t        | |«      ‚)a�  
    Polynomial pseudo-quotient in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> f = x**2 + x*y
    >>> g = 2*x + 2*y
    >>> h = 2*x + 2

    >>> R.dmp_pexquo(f, g)
    2*x

    >>> R.dmp_pexquo(f, h)
    Traceback (most recent call last):
    ...
    ExactQuotientFailed: [[2], [2]] does not divide [[1], [1, 0], []]

    )r¹   r
   r   ©r   rj   r$   r   r¥   r¦   s         r   Ú
dmp_pexquorÁ   ý  s4   € ô. �A�q˜!˜QÓ�D€A€qä�!�QÔØˆä! ! QÓ'Ð'r    c                 ó€  — t        | «      }t        |«      }g | |}}}|st        d«      ‚||k  r||fS t        ||«      }	 t        ||«      }	|	|z  r	 ||fS |j                  |	|«      }
||z
  }t	        ||
||«      }t        ||
||«      }t        |||«      }|t        |«      }}||k  r	 ||fS ||k  st        | ||«      ‚Œ€)z×
    Univariate division with remainder over a ring.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_rr_div(x**2 + 1, 2*x - 4)
    (0, x**2 + 1)

    rI   )r   rJ   r   rQ   r   r0   ru   r   ©r   rj   r   rk   rl   r¥   r¦   r§   r©   rª   r   r�   rp   r®   s                 r   Ú
dup_rr_divrÄ     sø   € ô 
�A‹€BÜ	�A‹€Bà�1�bˆ"€q€AáÜÐ 5Ó6Ð6Ø	ˆbŠØ�!ˆtˆä�!�Q‹<€Dà
Ü�a˜‹|ˆà�$Š;Øð  ˆaˆ4€Kð �G‰G�D˜$ÓˆØ�‰Gˆä˜˜A˜q !Ó$ˆÜ˜˜A˜q !Ó$ˆÜ�A�q˜!Óˆà”j “mˆRˆà�Š7Øð ˆaˆ4€Kð �s’(Ü*¨1¨a°Ó3Ð3ð% r    c                 óØ  — |st        | ||«      S t        | |«      }t        ||«      }|dk  rt        d«      ‚t        |«      | |}}}||k  r||fS t	        ||«      |dz
  }
}		 t	        ||«      }t        ||	|
|«      \  }}t        ||
«      s	 ||fS ||z
  }t        |||||«      }t        |||||«      }t        ||||«      }|t        ||«      }}||k  r	 ||fS ||k  st        | ||«      ‚ŒŠ)zá
    Multivariate division with remainder over a ring.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_rr_div(x**2 + x*y, 2*x + 2)
    (0, x**2 + x*y)

    r   rI   r   )rÄ   r   rJ   r   r   Ú
dmp_rr_divr
   r&   r3   r*   r   ©r   rj   r$   r   rk   rl   r¥   r¦   r§   r©   r%   rª   r   r¬   r�   rp   r®   s                    r   rÆ   rÆ   M  ó0  € ñ Ü˜!˜Q Ó"Ð"ä	�A�qÓ	€BÜ	�A�qÓ	€Bà	ˆA‚vÜÐ 5Ó6Ð6ä˜‹{˜A˜rˆ"€q€Aà	ˆB‚wØ�!ˆtˆä�Q˜‹l˜A ™Eˆ!€Dà
Ü�a˜‹|ˆÜ˜$  a¨Ó+‰ˆˆ1ä˜!˜QÔØð ˆaˆ4€Kð �‰Gˆä˜˜A˜q ! QÓ'ˆÜ˜˜A˜q ! QÓ'ˆÜ�A�q˜!˜QÓˆà”j  AÓ&ˆRˆà�Š7Øð ˆaˆ4€Kð �s’(Ü*¨1¨a°Ó3Ð3ð% r    c                 óÔ  — t        | «      }t        |«      }g | |}}}|st        d«      ‚||k  r||fS t        ||«      }	 t        ||«      }	|j                  |	|«      }
||z
  }t	        ||
||«      }t        ||
||«      }t        |||«      }|t        |«      }}||k  r	 ||fS ||k(  r/|j                  s#t        |dd «      }t        |«      }||k  r	 ||fS ||k  st        | ||«      ‚Œª)zÙ
    Polynomial division with remainder over a field.

    Examples
    ========

    >>> from sympy.polys import ring, QQ
    >>> R, x = ring("x", QQ)

    >>> R.dup_ff_div(x**2 + 1, 2*x - 4)
    (1/2*x + 1, 5)

    rI   r   N)
r   rJ   r   rQ   r   r0   ru   r‰   r   r   rÃ   s                 r   Ú
dup_ff_divrÊ   ‚  s  € ô 
�A‹€BÜ	�A‹€Bà�1�bˆ"€q€AáÜÐ 5Ó6Ð6Ø	ˆbŠØ�!ˆtˆä�!�Q‹<€Dà
Ü�a˜‹|ˆà�G‰G�D˜$ÓˆØ�‰Gˆä˜˜A˜q !Ó$ˆÜ˜˜A˜q !Ó$ˆÜ�A�q˜!Óˆà”j “mˆRˆà�Š7Øð ˆaˆ4€Kð �3ŠY˜qŸzšzä˜!˜A˜B˜%Ó ˆAÜ˜A“ˆBØ�BŠwØð ˆaˆ4€Kð �s’(Ü*¨1¨a°Ó3Ð3ð+ r    c                 óØ  — |st        | ||«      S t        | |«      }t        ||«      }|dk  rt        d«      ‚t        |«      | |}}}||k  r||fS t	        ||«      |dz
  }
}		 t	        ||«      }t        ||	|
|«      \  }}t        ||
«      s	 ||fS ||z
  }t        |||||«      }t        |||||«      }t        ||||«      }|t        ||«      }}||k  r	 ||fS ||k  st        | ||«      ‚ŒŠ)zî
    Polynomial division with remainder over a field.

    Examples
    ========

    >>> from sympy.polys import ring, QQ
    >>> R, x,y = ring("x,y", QQ)

    >>> R.dmp_ff_div(x**2 + x*y, 2*x + 2)
    (1/2*x + 1/2*y - 1/2, -y + 1)

    r   rI   r   )rÊ   r   rJ   r   r   Ú
dmp_ff_divr
   r&   r3   r*   r   rÇ   s                    r   rÌ   rÌ   ¶  rÈ   r    c                 óN   — |j                   rt        | ||«      S t        | ||«      S )a.  
    Polynomial division with remainder in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ, QQ

    >>> R, x = ring("x", ZZ)
    >>> R.dup_div(x**2 + 1, 2*x - 4)
    (0, x**2 + 1)

    >>> R, x = ring("x", QQ)
    >>> R.dup_div(x**2 + 1, 2*x - 4)
    (1/2*x + 1, 5)

    )rK   rÊ   rÄ   r³   s      r   Údup_divrÎ   ë  s)   € ð$ 	‡z‚zÜ˜!˜Q Ó"Ð"ä˜!˜Q Ó"Ð"r    c                 ó"   — t        | ||«      d   S )a  
    Returns polynomial remainder in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ, QQ

    >>> R, x = ring("x", ZZ)
    >>> R.dup_rem(x**2 + 1, 2*x - 4)
    x**2 + 1

    >>> R, x = ring("x", QQ)
    >>> R.dup_rem(x**2 + 1, 2*x - 4)
    5

    r   ©rÎ   r³   s      r   Údup_remrÑ     ó   € ô$ �1�a˜Ó˜AÑÐr    c                 ó"   — t        | ||«      d   S )a  
    Returns exact polynomial quotient in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ, QQ

    >>> R, x = ring("x", ZZ)
    >>> R.dup_quo(x**2 + 1, 2*x - 4)
    0

    >>> R, x = ring("x", QQ)
    >>> R.dup_quo(x**2 + 1, 2*x - 4)
    1/2*x + 1

    r   rÐ   r³   s      r   Údup_quorÔ     rÒ   r    c                 óB   — t        | ||«      \  }}|s|S t        | |«      ‚)aW  
    Returns polynomial quotient in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_exquo(x**2 - 1, x - 1)
    x + 1

    >>> R.dup_exquo(x**2 + 1, 2*x - 4)
    Traceback (most recent call last):
    ...
    ExactQuotientFailed: [2, -4] does not divide [1, 0, 1]

    )rÎ   r   r¶   s        r   Ú	dup_exquorÖ   -  s+   € ô& �1�a˜Ó�D€A€qáØˆä! ! QÓ'Ð'r    c                 óR   — |j                   rt        | |||«      S t        | |||«      S )aK  
    Polynomial division with remainder in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ, QQ

    >>> R, x,y = ring("x,y", ZZ)
    >>> R.dmp_div(x**2 + x*y, 2*x + 2)
    (0, x**2 + x*y)

    >>> R, x,y = ring("x,y", QQ)
    >>> R.dmp_div(x**2 + x*y, 2*x + 2)
    (1/2*x + 1/2*y - 1/2, -y + 1)

    )rK   rÌ   rÆ   r½   s       r   Údmp_divrØ   H  s-   € ð$ 	‡z‚zÜ˜!˜Q  1Ó%Ð%ä˜!˜Q  1Ó%Ð%r    c                 ó$   — t        | |||«      d   S )a)  
    Returns polynomial remainder in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ, QQ

    >>> R, x,y = ring("x,y", ZZ)
    >>> R.dmp_rem(x**2 + x*y, 2*x + 2)
    x**2 + x*y

    >>> R, x,y = ring("x,y", QQ)
    >>> R.dmp_rem(x**2 + x*y, 2*x + 2)
    -y + 1

    r   ©rØ   r½   s       r   Údmp_remrÛ   `  ó   € ô$ �1�a˜˜AÓ˜qÑ!Ð!r    c                 ó$   — t        | |||«      d   S )a2  
    Returns exact polynomial quotient in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ, QQ

    >>> R, x,y = ring("x,y", ZZ)
    >>> R.dmp_quo(x**2 + x*y, 2*x + 2)
    0

    >>> R, x,y = ring("x,y", QQ)
    >>> R.dmp_quo(x**2 + x*y, 2*x + 2)
    1/2*x + 1/2*y - 1/2

    r   rÚ   r½   s       r   Údmp_quorÞ   u  rÜ   r    c                 óX   — t        | |||«      \  }}t        ||«      r|S t        | |«      ‚)aˆ  
    Returns polynomial quotient in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> f = x**2 + x*y
    >>> g = x + y
    >>> h = 2*x + 2

    >>> R.dmp_exquo(f, g)
    x

    >>> R.dmp_exquo(f, h)
    Traceback (most recent call last):
    ...
    ExactQuotientFailed: [[2], [2]] does not divide [[1], [1, 0], []]

    )rØ   r
   r   rÀ   s         r   Ú	dmp_exquorà   Š  s4   € ô. �1�a˜˜AÓ�D€A€qä�!�QÔØˆä! ! QÓ'Ð'r    c                 óH   — | s|j                   S t        t        | |«      «      S )zÍ
    Returns maximum norm of a polynomial in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_max_norm(-x**2 + 2*x - 3)
    3

    )r   rˆ   r^   ©r   r   s     r   Údup_max_normrã   ©  ó!   € ñ Ø�v‰vˆä”7˜1˜a“=Ó!Ð!r    c                 óV   ‡‡— |st        | ‰«      S |dz
  Št        ˆˆfd„| D «       «      S )zÏ
    Returns maximum norm of a polynomial in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_max_norm(2*x*y - x - 3)
    3

    r   c              3   ó8   •K  — | ]  }t        |‰‰«      –— Œ y ­w©N)Údmp_max_norm©Ú.0r   r   r%   s     €€r   ú	<genexpr>zdmp_max_norm.<locals>.<genexpr>Ð  s   øè ø€ Ò0¨Œ|˜A˜q !×$Ñ0ùó   ƒ)rã   rˆ   ©r   r$   r   r%   s     `@r   rè   rè   ½  s/   ù€ ñ Ü˜A˜qÓ!Ð!à	ˆA‰€AäÔ0¨aÔ0Ó0Ð0r    c                 óH   — | s|j                   S t        t        | |«      «      S )zË
    Returns l1 norm of a polynomial in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_l1_norm(2*x**3 - 3*x**2 + 1)
    6

    )r   Úsumr^   râ   s     r   Údup_l1_normrð   Ó  rä   r    c                 óV   ‡‡— |st        | ‰«      S |dz
  Št        ˆˆfd„| D «       «      S )zÉ
    Returns l1 norm of a polynomial in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_l1_norm(2*x*y - x - 3)
    6

    r   c              3   ó8   •K  — | ]  }t        |‰‰«      –— Œ y ­wrç   )Údmp_l1_normré   s     €€r   rë   zdmp_l1_norm.<locals>.<genexpr>ú  s   øè ø€ Ò/¨Œ{˜1˜a ×#Ñ/ùrì   )rð   rï   rí   s     `@r   ró   ró   ç  s/   ù€ ñ Ü˜1˜aÓ Ð à	ˆA‰€AäÔ/¨QÔ/Ó/Ð/r    c                 óZ   — t        | D �cg c]  }|dz  ‘Œ	 c}|j                  «      S c c}w )zÜ
    Returns squared l2 norm of a polynomial in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_l2_norm_squared(2*x**3 - 3*x**2 + 1)
    14

    r†   )rï   r   r\   s      r   Údup_l2_norm_squaredrõ   ý  s'   € ô  aÖ(˜U��q“Ò(¨!¯&©&Ó1Ð1ùÒ(s   Š(c                 óV   ‡‡— |st        | ‰«      S |dz
  Št        ˆˆfd„| D «       «      S )zÚ
    Returns squared l2 norm of a polynomial in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_l2_norm_squared(2*x*y - x - 3)
    14

    r   c              3   ó8   •K  — | ]  }t        |‰‰«      –— Œ y ­wrç   )Údmp_l2_norm_squaredré   s     €€r   rë   z&dmp_l2_norm_squared.<locals>.<genexpr>!  s   øè ø€ Ò7°Ô" 1 a¨×+Ñ7ùrì   )rõ   rï   rí   s     `@r   rø   rø     s/   ù€ ñ Ü" 1 aÓ(Ð(à	ˆA‰€AäÔ7°QÔ7Ó7Ð7r    c                 ó\   — | s|j                   gS | d   }| dd D ]  }t        |||«      }Œ |S )zØ
    Multiply together several polynomials in ``K[x]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x = ring("x", ZZ)

    >>> R.dup_expand([x**2 - 1, x, 2])
    2*x**3 - 2*x

    r   r   N)rŸ   rx   )Úpolysr   r   rj   s       r   Ú
dup_expandrû   $  sE   € ñ Ø—‘ˆwˆàˆa‰€Aà�1�2ˆYò ˆÜ�A�q˜!Ó‰ðð €Hr    c                 ó\   — | st        ||«      S | d   }| dd D ]  }t        ||||«      }Œ |S )zï
    Multiply together several polynomials in ``K[X]``.

    Examples
    ========

    >>> from sympy.polys import ring, ZZ
    >>> R, x,y = ring("x,y", ZZ)

    >>> R.dmp_expand([x**2 + y**2, x + 1])
    x**3 + x**2 + x*y**2 + y**2

    r   r   N)r   r2   )rú   r$   r   r   rj   s        r   Ú
dmp_expandrý   =  sH   € ñ Ü�q˜!‹}Ðàˆa‰€Aà�1�2ˆYò  ˆÜ�A�q˜!˜QÓ‰ð ð €Hr    N)RÚ__doc__Úsympy.polys.densebasicr   r   r   r   r   r   r	   r
   r   r   r   r   r   Úsympy.polys.polyerrorsr   r   r   r&   r(   r,   r0   r3   r6   r:   r=   r?   rC   rE   rM   rO   rR   rT   rW   rY   r^   r`   re   r+   rq   r"   ru   r*   rz   r~   r�   rƒ   rx   r2   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ý   rA   r    r   ú<module>r     s{  ðÙ K÷÷ ÷ õ ÷ Sò2ò:@òD2ò:@òD3ò(Iò6$ò":ò"$ò":ò"&ò(7ò,'ò:7ò4*ò,9ò,ò(ò&+ò"-ò,%ò"-ò, 3òF'AòT 3òF'AòT+ò"1ò"+ò"1ò"63òr(òV%òP-ò`"òJ%òP2òj*)òZ ò((ò66òr0'òf#ò0(ò>.òb2òj1òh2òj#ò0ò*ò*(ò6&ò0"ò*"ò*(ò>"ò(1ò,"ò(0ò,2ò"8ò,ó2r    