§
    OŠtj–g  ã                  óö   — d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlmZ erdd	lmZmZ dd
lmZ ddlmZ ddlmZmZ d"d„Z G d„ d¦  «        Zd#d„Zd#d„Zd$d„Z G d„ d ¦  «        Zd!S )%zð
Puiseux rings. These are used by the ring_series module to represented
truncated Puiseux series. Elements of a Puiseux ring are like polynomials
except that the exponents can be negative or rational rather than just
non-negative integers.
é    )Úannotations©ÚQQ)ÚPolyRingÚPolyElement)ÚAdd)ÚMul)ÚgcdÚlcm)ÚTYPE_CHECKING)ÚAnyÚUnpack)ÚExpr)ÚDomain)ÚIterableÚIteratorÚsymbolsústr | list[Expr]Údomainr   Úreturnú3tuple[PuiseuxRing, Unpack[tuple[PuiseuxPoly, ...]]]c                ó8   — t          | |¦  «        }|f|j        z   S )ac  Construct a Puiseux ring.

    This function constructs a Puiseux ring with the given symbols and domain.

    >>> from sympy.polys.domains import QQ
    >>> from sympy.polys.puiseux import puiseux_ring
    >>> R, x, y = puiseux_ring('x y', QQ)
    >>> R
    PuiseuxRing((x, y), QQ)
    >>> p = 5*x**QQ(1,2) + 7/y
    >>> p
    7*y**(-1) + 5*x**(1/2)
    )ÚPuiseuxRingÚgens)r   r   Úrings      úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/puiseux.pyÚpuiseux_ringr   '   s"   € õ  �w Ñ'Ô'€DØˆ7�T”YÑÐó    c                  ób   — e Zd ZdZdd„Zd d	„Zd!d„Zd"d„Zd#d„Zd$d„Z	d%d„Z
d&d„Zd&d„Zd'd„ZdS )(r   aÄ  Ring of Puiseux polynomials.

    A Puiseux polynomial is a truncated Puiseux series. The exponents of the
    monomials can be negative or rational numbers. This ring is used by the
    ring_series module:

    >>> from sympy.polys.domains import QQ
    >>> from sympy.polys.puiseux import puiseux_ring
    >>> from sympy.polys.ring_series import rs_exp, rs_nth_root
    >>> ring, x, y = puiseux_ring('x y', QQ)
    >>> f = x**2 + y**3
    >>> f
    y**3 + x**2
    >>> f.diff(x)
    2*x
    >>> rs_exp(x, x, 5)
    1 + x + 1/2*x**2 + 1/6*x**3 + 1/24*x**4

    Importantly the Puiseux ring can represent truncated series with negative
    and fractional exponents:

    >>> f = 1/x + 1/y**2
    >>> f
    x**(-1) + y**(-2)
    >>> f.diff(x)
    -1*x**(-2)

    >>> rs_nth_root(8*x + x**2 + x**3, 3, x, 5)
    2*x**(1/3) + 1/12*x**(4/3) + 23/288*x**(7/3) + -139/20736*x**(10/3)

    See Also
    ========

    sympy.polys.ring_series.rs_series
    PuiseuxPoly
    r   r   r   r   c                ó|  ‡ — t          ||¦  «        }|j        }|j        }|‰ _        |‰ _        |j        ‰ _        t          ˆ fd„|j        D ¦   «         ¦  «        ‰ _        |‰ _        ‰                      |j        ¦  «        ‰ _        ‰                      |j	        ¦  «        ‰ _	        |j
        ‰ _
        |j        ‰ _        d S )Nc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS © )Ú	from_poly)Ú.0ÚgÚselfs     €r   ú
<listcomp>z(PuiseuxRing.__init__.<locals>.<listcomp>k   s%   ø€ ÐEÐEÐE°˜4Ÿ>š>¨!Ñ,Ô,ÐEÐEÐEr   )r   r   ÚngensÚ	poly_ringr   Útupler   r#   ÚzeroÚoneÚ
zero_monomÚmonomial_mul)r&   r   r   r)   r(   s   `    r   Ú__init__zPuiseuxRing.__init__`   s«   ø€ å˜W fÑ-Ô-ˆ	àÔ!ˆØ”ˆà"ˆŒØˆŒà Ô(ˆŒÝÐEÐEÐEÐE°i´nÐEÑEÔEÑFÔFˆŒ	ØˆŒ
à—N’N 9¤>Ñ2Ô2ˆŒ	Ø—>’> )¤-Ñ0Ô0ˆŒà#Ô.ˆŒØ%Ô2ˆÔÐÐr   r   Ústrc                ó(   — d| j         › d| j        › d�S )NzPuiseuxRing(z, ú))r   r   ©r&   s    r   Ú__repr__zPuiseuxRing.__repr__t   s   € Ø<˜dœlÐ<Ð<¨d¬kÐ<Ð<Ð<Ð<r   Úotherr   Úboolc                óz   — t          |t          ¦  «        st          S | j        |j        k    o| j        |j        k    S ©N)Ú
isinstancer   ÚNotImplementedr   r   ©r&   r5   s     r   Ú__eq__zPuiseuxRing.__eq__w   s7   € Ý˜%¥Ñ-Ô-ð 	"Ý!Ð!ØŒ|˜uœ}Ò,ÐL°´ÀÄÒ1LÐLr   Úpolyr   ÚPuiseuxPolyc                ó"   — t          || ¦  «        S )aJ  Create a Puiseux polynomial from a polynomial.

        >>> from sympy.polys.domains import QQ
        >>> from sympy.polys.rings import ring
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R1, x1 = ring('x', QQ)
        >>> R2, x2 = puiseux_ring('x', QQ)
        >>> R2.from_poly(x1**2)
        x**2
        )r>   )r&   r=   s     r   r#   zPuiseuxRing.from_poly|   s   € õ ˜4 Ñ&Ô&Ð&r   Útermsúdict[tuple[int, ...], Any]c                ó8   — t                                || ¦  «        S )a  Create a Puiseux polynomial from a dictionary of terms.

        >>> from sympy.polys.domains import QQ
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x = puiseux_ring('x', QQ)
        >>> R.from_dict({(QQ(1,2),): QQ(3)})
        3*x**(1/2)
        )r>   Ú	from_dict)r&   r@   s     r   rC   zPuiseuxRing.from_dict‰   s   € õ ×$Ò$ U¨DÑ1Ô1Ð1r   ÚnÚintc                óR   — |                       |                      |¦  «        ¦  «        S )zëCreate a Puiseux polynomial from an integer.

        >>> from sympy.polys.domains import QQ
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x = puiseux_ring('x', QQ)
        >>> R.from_int(3)
        3
        )r#   r)   ©r&   rD   s     r   Úfrom_intzPuiseuxRing.from_int”   s"   € ð �~Š~˜dŸnšn¨QÑ/Ô/Ñ0Ô0Ð0r   Úargc                ó6   — | j                              |¦  «        S )a  Create a new element of the domain.

        >>> from sympy.polys.domains import QQ
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x = puiseux_ring('x', QQ)
        >>> R.domain_new(3)
        3
        >>> QQ.of_type(_)
        True
        )r)   Ú
domain_new©r&   rI   s     r   rK   zPuiseuxRing.domain_newŸ   s   € ð Œ~×(Ò(¨Ñ-Ô-Ð-r   c                ó\   — |                       | j                             |¦  «        ¦  «        S )a-  Create a new element from a ground element.

        >>> from sympy.polys.domains import QQ
        >>> from sympy.polys.puiseux import puiseux_ring, PuiseuxPoly
        >>> R, x = puiseux_ring('x', QQ)
        >>> R.ground_new(3)
        3
        >>> isinstance(_, PuiseuxPoly)
        True
        )r#   r)   Ú
ground_newrL   s     r   rN   zPuiseuxRing.ground_new¬   s&   € ð �~Š~˜dœn×7Ò7¸Ñ<Ô<Ñ=Ô=Ð=r   c                ó¦   — t          |t          ¦  «        r|                      |¦  «        S |                      |                      |¦  «        ¦  «        S )a  Coerce an element into the ring.

        >>> from sympy.polys.domains import QQ
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x = puiseux_ring('x', QQ)
        >>> R(3)
        3
        >>> R({(QQ(1,2),): QQ(3)})
        3*x**(1/2)
        )r9   ÚdictrC   r#   r)   rL   s     r   Ú__call__zPuiseuxRing.__call__¹   sF   € õ �c�4Ñ Ô ð 	7Ø—>’> #Ñ&Ô&Ð&à—>’> $§.¢.°Ñ"5Ô"5Ñ6Ô6Ð6r   Úxc                ó6   — | j                              |¦  «        S )a  Return the index of a generator.

        >>> from sympy.polys.domains import QQ
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x, y = puiseux_ring('x y', QQ)
        >>> R.index(x)
        0
        >>> R.index(y)
        1
        )r   Úindex)r&   rR   s     r   rT   zPuiseuxRing.indexÉ   s   € ð Œy�Š˜qÑ!Ô!Ð!r   N)r   r   r   r   ©r   r0   ©r5   r   r   r6   )r=   r   r   r>   )r@   rA   r   r>   ©rD   rE   r   r>   )rI   r   r   r   )rI   r   r   r>   )rR   r>   r   rE   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/   r4   r<   r#   rC   rH   rK   rN   rQ   rT   r"   r   r   r   r   ;   së   € € € € € ð#ð #ðH3ð 3ð 3ð 3ð(=ð =ð =ð =ðMð Mð Mð Mð
'ð 'ð 'ð 'ð	2ð 	2ð 	2ð 	2ð	1ð 	1ð 	1ð 	1ð.ð .ð .ð .ð>ð >ð >ð >ð7ð 7ð 7ð 7ð "ð "ð "ð "ð "ð "r   r   r=   r   ÚmonomúIterable[int]c                óŠ   ‡‡— | j         }|j        Š|                     ˆˆfd„|                      ¦   «         D ¦   «         ¦  «        S )Nc                ó0   •— i | ]\  }} ‰|‰¦  «        |“ŒS r"   r"   )r$   ÚmÚcÚdivr\   s      €€r   ú
<dictcomp>z#_div_poly_monom.<locals>.<dictcomp>Ú   ó)   ø€ ÐEÐEÐE±°°1˜3˜3˜q %™=œ=¨!ÐEÐEÐEr   )r   Úmonomial_divrC   r@   )r=   r\   r   rb   s    ` @r   Ú_div_poly_monomrf   ×   óE   øø€ ØŒ9€DØ
Ô
€CØ�>Š>ÐEÐEÐEÐEÐE¸¿
º
¹¼ÐEÑEÔEÑFÔFÐFr   c                óŠ   ‡‡— | j         }|j        Š|                     ˆˆfd„|                      ¦   «         D ¦   «         ¦  «        S )Nc                ó0   •— i | ]\  }} ‰|‰¦  «        |“ŒS r"   r"   )r$   r`   ra   r\   Úmuls      €€r   rc   z#_mul_poly_monom.<locals>.<dictcomp>à   rd   r   )r   r.   rC   r@   )r=   r\   r   rj   s    ` @r   Ú_mul_poly_monomrk   Ý   rg   r   rb   útuple[int, ...]c                óP   — t          d„ t          | |¦  «        D ¦   «         ¦  «        S )Nc              3  ó&   K  — | ]\  }}||z
  V — Œd S r8   r"   ©r$   ÚmiÚdis      r   ú	<genexpr>z_div_monom.<locals>.<genexpr>ä   s*   è è € Ð7Ð7™V˜R ��b‘Ð7Ð7Ð7Ð7Ð7Ð7r   ©r*   Úzip)r\   rb   s     r   Ú
_div_monomru   ã   s'   € ÝÐ7Ð7¥s¨5°#¡¤Ð7Ñ7Ô7Ñ7Ô7Ð7r   c                  ó  — e Zd ZU dZded<   ded<   ded<   ded<   dLd
„ZedMd„¦   «         ZedMd„¦   «         ZdNd„Z	edOd„¦   «         Z
edPd„¦   «         ZedQd„¦   «         ZdRd„ZdSd„ZdTd„ZdUd„ZdVd „ZdTd!„ZdWd#„ZedXd$„¦   «         ZdYd&„ZedZd)„¦   «         Zd[d+„Zd\d-„Zd]d/„Zd^d0„Zd^d1„Zd_d2„Zd_d3„Zd_d4„Zd_d5„Z d_d6„Z!d_d7„Z"d_d8„Z#d_d9„Z$d_d:„Z%d`d;„Z&dad=„Z'd`d>„Z(dad?„Z)dad@„Z*d`dA„Z+dadB„Z,dadC„Z-dbdE„Z.dbdF„Z/dcdG„Z0d^dH„Z1dddJ„Z2dKS )er>   aR  Puiseux polynomial. Represents a truncated Puiseux series.

    See the :class:`PuiseuxRing` class for more information.

    >>> from sympy import QQ
    >>> from sympy.polys.puiseux import puiseux_ring
    >>> R, x, y = puiseux_ring('x, y', QQ)
    >>> p = 5*x**2 + 7*y**3
    >>> p
    7*y**3 + 5*x**2

    The internal representation of a Puiseux polynomial wraps a normal
    polynomial. To support negative powers the polynomial is considered to be
    divided by a monomial.

    >>> p2 = 1/x + 1/y**2
    >>> p2.monom # x*y**2
    (1, 2)
    >>> p2.poly
    x + y**2
    >>> (y**2 + x) / (x*y**2) == p2
    True

    To support fractional powers the polynomial is considered to be a function
    of ``x**(1/nx), y**(1/ny), ...``. The representation keeps track of a
    monomial and a list of exponent denominators so that the polynomial can be
    used to represent both negative and fractional powers.

    >>> p3 = x**QQ(1,2) + y**QQ(2,3)
    >>> p3.ns
    (2, 3)
    >>> p3.poly
    x + y**2

    See Also
    ========

    sympy.polys.puiseux.PuiseuxRing
    sympy.polys.rings.PolyElement
    r   r   r   r=   útuple[int, ...] | Noner\   Únsr   c                ó2   — |                       ||d d ¦  «        S r8   )Ú_new)Úclsr=   r   s      r   Ú__new__zPuiseuxPoly.__new__  s   € Ø�xŠx˜˜d D¨$Ñ/Ô/Ð/r   c                óh   — |                       |||¦  «        \  }}}|                      ||||¦  «        S r8   )Ú
_normalizeÚ_new_raw)r{   r   r=   r\   rx   s        r   rz   zPuiseuxPoly._new  s7   € ð Ÿ.š.¨¨u°bÑ9Ô9‰ˆˆe�RØ�|Š|˜D $¨¨rÑ2Ô2Ð2r   c                ór   — t                                | ¦  «        }||_        ||_        ||_        ||_        |S r8   )Úobjectr|   r   r=   r\   rx   )r{   r   r=   r\   rx   Úobjs         r   r   zPuiseuxPoly._new_raw$  s6   € õ �nŠn˜SÑ!Ô!ˆØˆŒØˆŒØˆŒ	ØˆŒØˆ
r   r5   r   r6   c                óê   — t          |t          ¦  «        r0| j        |j        k    o| j        |j        k    o| j        |j        k    S | j        €!| j        €| j                             |¦  «        S t          S r8   )r9   r>   r=   r\   rx   r<   r:   r;   s     r   r<   zPuiseuxPoly.__eq__3  ss   € Ý�e�[Ñ)Ô)ð 		"à”	˜UœZÒ'ð (Ø”J %¤+Ò-ð(à”G˜uœxÒ'ðð
 ŒZÐ D¤G OØ”9×#Ò# EÑ*Ô*Ð*å!Ð!r   úBtuple[PolyElement, tuple[int, ...] | None, tuple[int, ...] | None]c                ó¶  — |€|€|d d fS |�‡d„ |                      ¦   «         D ¦   «         }t          d„ t          ||¦  «        D ¦   «         ¦  «        rt          ||¦  «        }d }n/t	          |¦  «        r t          ||¦  «        }t          ||¦  «        }|��@|                     ¦   «         \  }\  }|                     ¦   «         }|�|ndgt          |¦  «        z  }g }	g }
g }t          ||||¦  «        D ]w\  }}}}|dk    rt          ||¦  «        }nt          |||¦  «        }|	 
                    ||z  ¦  «         |
 
                    ||z  ¦  «         | 
                    ||z  ¦  «         Œxt	          d„ |D ¦   «         ¦  «        r|                     |¦  «        }|}|�t          |
¦  «        }t          d„ |	D ¦   «         ¦  «        rd }nt          |	¦  «        }|||fS )Nc                ó.   — g | ]}t          |d ¦  «        ‘ŒS )r   ©Úmax)r$   Úds     r   r'   z*PuiseuxPoly._normalize.<locals>.<listcomp>J  s    € Ð;Ð;Ð; !•C˜˜1‘I”IÐ;Ð;Ð;r   c              3  ó(   K  — | ]\  }}||k    V — Œd S r8   r"   )r$   rq   rp   s      r   rr   z)PuiseuxPoly._normalize.<locals>.<genexpr>K  s*   è è € Ð;Ð;¡  B�2˜’8Ð;Ð;Ð;Ð;Ð;Ð;r   r   c              3  ó"   K  — | ]
}|d k    V — ŒdS ©é   Nr"   )r$   Úinfls     r   rr   z)PuiseuxPoly._normalize.<locals>.<genexpr>b  s&   è è € Ð3Ð3 �4˜!’8Ð3Ð3Ð3Ð3Ð3Ð3r   c              3  ó"   K  — | ]
}|d k    V — ŒdS rŒ   r"   ©r$   rD   s     r   rr   z)PuiseuxPoly._normalize.<locals>.<genexpr>j  s&   è è € Ð*Ð*˜a�1˜’6Ð*Ð*Ð*Ð*Ð*Ð*r   )Útail_degreesÚallrt   rf   Úanyru   ÚdeflateÚdegreesÚlenr
   ÚappendÚinflater*   )r{   r=   r\   rx   ÚdegsÚ	factors_dÚpoly_dr•   Úmonom_dÚns_newÚ	monom_newÚ
inflationsÚfiÚnirq   rp   r%   s                    r   r~   zPuiseuxPoly._normalize?  s  € ð ˆ=˜R˜ZØ˜˜tÐ#Ð#àÐØ;Ð; t×'8Ò'8Ñ':Ô':Ð;Ñ;Ô;ˆDÝÐ;Ð;­#¨d°EÑ*:Ô*:Ð;Ñ;Ô;Ñ;Ô;ð 0Ý& t¨UÑ3Ô3�Ø��Ý�T‘”ð 0Ý& t¨TÑ2Ô2�Ý" 5¨$Ñ/Ô/�à‰>Ø"&§,¢,¡.¤.ÑˆI‘x˜Ø—l’l‘n”nˆGØ$Ð0�e�e°q°c½CÀ¹L¼LÑ6HˆGØˆFØˆIØˆJÝ"% i°°W¸gÑ"FÔ"Fð +ð +‘��B˜˜BØ˜’7�7Ý˜B ™œ�A�Aå˜B  B™œ�AØ—’˜b A™gÑ&Ô&Ð&Ø× Ò   q¡Ñ)Ô)Ð)Ø×!Ò! "¨¡'Ñ*Ô*Ð*Ð*åÐ3Ð3¨
Ð3Ñ3Ô3Ñ3Ô3ð 4ØŸš¨
Ñ3Ô3�àˆDàÐ Ý˜iÑ(Ô(�åÐ*Ð* 6Ð*Ñ*Ô*Ñ*Ô*ð #Ø��å˜6‘]”]�à�U˜BˆÐr   rl   Údmonomútuple[Any, ...]c                ó0  — |�*|�(t          d„ t          |||¦  «        D ¦   «         ¦  «        S |�'t          d„ t          ||¦  «        D ¦   «         ¦  «        S |�'t          d„ t          ||¦  «        D ¦   «         ¦  «        S t          d„ |D ¦   «         ¦  «        S )Nc              3  óD   K  — | ]\  }}}t          ||z
  |¦  «        V — Œd S r8   r   ©r$   rp   rq   r¡   s       r   rr   z-PuiseuxPoly._monom_fromint.<locals>.<genexpr>y  s4   è è € ÐRÐR©Z¨R°°R�˜B ™G R™œÐRÐRÐRÐRÐRÐRr   c              3  ó@   K  — | ]\  }}t          ||z
  ¦  «        V — Œd S r8   r   ro   s      r   rr   z-PuiseuxPoly._monom_fromint.<locals>.<genexpr>{  s0   è è € ÐFÐF©¨¨R�˜B ™G™œÐFÐFÐFÐFÐFÐFr   c              3  ó<   K  — | ]\  }}t          ||¦  «        V — Œd S r8   r   ©r$   rp   r¡   s      r   rr   z-PuiseuxPoly._monom_fromint.<locals>.<genexpr>}  s.   è è € ÐAÐA©¨¨B�˜B ™œÐAÐAÐAÐAÐAÐAr   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r8   r   ©r$   rp   s     r   rr   z-PuiseuxPoly._monom_fromint.<locals>.<genexpr>  s(   è è € Ð0Ð0 B�˜B™œÐ0Ð0Ð0Ð0Ð0Ð0r   rs   ©r{   r\   r¢   rx   s       r   Ú_monom_fromintzPuiseuxPoly._monom_fromintq  s«   € ð Ð " .ÝÐRÐR½3¸uÀfÈbÑ;QÔ;QÐRÑRÔRÑRÔRÐRØÐÝÐFÐFµ3°u¸fÑ3EÔ3EÐFÑFÔFÑFÔFÐFØˆ^ÝÐAÐAµ#°e¸R±.´.ÐAÑAÔAÑAÔAÐAåÐ0Ð0¨%Ð0Ñ0Ô0Ñ0Ô0Ð0r   c                ó0  — |�*|�(t          d„ t          |||¦  «        D ¦   «         ¦  «        S |�'t          d„ t          ||¦  «        D ¦   «         ¦  «        S |�'t          d„ t          ||¦  «        D ¦   «         ¦  «        S t          d„ |D ¦   «         ¦  «        S )Nc              3  óR   K  — | ]"\  }}}t          ||z  j        |z   ¦  «        V — Œ#d S r8   ©rE   Ú	numeratorr¦   s       r   rr   z+PuiseuxPoly._monom_toint.<locals>.<genexpr>‰  sM   è è € ð ð Ù2<°"°b¸"•�R˜"‘WÔ'¨"Ñ,Ñ-Ô-ðð ð ð ð ð r   c              3  óJ   K  — | ]\  }}t          |j        |z   ¦  «        V — Œd S r8   r°   ro   s      r   rr   z+PuiseuxPoly._monom_toint.<locals>.<genexpr>�  s5   è è € ÐQÐQ±F°B¸�˜Rœ\¨BÑ.Ñ/Ô/ÐQÐQÐQÐQÐQÐQr   c              3  óJ   K  — | ]\  }}t          ||z  j        ¦  «        V — Œd S r8   r°   r©   s      r   rr   z+PuiseuxPoly._monom_toint.<locals>.<genexpr>�  s5   è è € ÐOÐO±f°b¸"�˜b 2™gÔ0Ñ1Ô1ÐOÐOÐOÐOÐOÐOr   c              3  ó>   K  — | ]}t          |j        ¦  «        V — Œd S r8   r°   r«   s     r   rr   z+PuiseuxPoly._monom_toint.<locals>.<genexpr>‘  s,   è è € Ð;Ð;¨r�˜Rœ\Ñ*Ô*Ð;Ð;Ð;Ð;Ð;Ð;r   rs   r¬   s       r   Ú_monom_tointzPuiseuxPoly._monom_toint�  s¿   € ð Ð " .Ýð ð Ý@CÀEÈ6ÐSUÑ@VÔ@Vðñ ô ñ ô ð ð ÐÝÐQÐQ½cÀ%ÈÑ>PÔ>PÐQÑQÔQÑQÔQÐQØˆ^ÝÐOÐOÅÀEÈ2ÁÄÐOÑOÔOÑOÔOÐOåÐ;Ð;°UÐ;Ñ;Ô;Ñ;Ô;Ð;r   úIterator[tuple[Any, ...]]c              #  ó�   K  — | j         | j        }}| j                             ¦   «         D ]}|                      |||¦  «        V — ŒdS )a@  Iterate over the monomials of a Puiseux polynomial.

        >>> from sympy import QQ
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x, y = puiseux_ring('x, y', QQ)
        >>> p = 5*x**2 + 7*y**3
        >>> list(p.itermonoms())
        [(2, 0), (0, 3)]
        >>> p[(2, 0)]
        5
        N)r\   rx   r=   Ú
itermonomsr­   )r&   r\   rx   r`   s       r   r¸   zPuiseuxPoly.itermonoms“  s]   è è € ð ”J ¤ˆrˆØ”×%Ò%Ñ'Ô'ð 	4ð 	4ˆAØ×%Ò% a¨°Ñ3Ô3Ð3Ð3Ð3Ð3ð	4ð 	4r   úlist[tuple[Any, ...]]c                óD   — t          |                      ¦   «         ¦  «        S )z7Return a list of the monomials of a Puiseux polynomial.)Úlistr¸   r3   s    r   ÚmonomszPuiseuxPoly.monoms£  s   € å�D—O’OÑ%Ô%Ñ&Ô&Ð&r   ú%Iterator[tuple[tuple[Any, ...], Any]]c                ó*   — |                       ¦   «         S r8   )r¸   r3   s    r   Ú__iter__zPuiseuxPoly.__iter__§  s   € Ø�ŠÑ Ô Ð r   c                ó^   — |                       || j        | j        ¦  «        }| j        |         S r8   )rµ   r\   rx   r=   )r&   r\   s     r   Ú__getitem__zPuiseuxPoly.__getitem__ª  s*   € Ø×!Ò! %¨¬°T´WÑ=Ô=ˆØŒy˜ÔÐr   rE   c                ó*   — t          | j        ¦  «        S r8   )r–   r=   r3   s    r   Ú__len__zPuiseuxPoly.__len__®  s   € Ý�4”9‰~Œ~Ðr   c              #  óž   K  — | j         | j        }}| j                             ¦   «         D ]"\  }}|                      |||¦  «        }||fV — Œ#dS )a%  Iterate over the terms of a Puiseux polynomial.

        >>> from sympy import QQ
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x, y = puiseux_ring('x, y', QQ)
        >>> p = 5*x**2 + 7*y**3
        >>> list(p.iterterms())
        [((2, 0), 5), ((0, 3), 7)]
        N)r\   rx   r=   Ú	itertermsr­   )r&   r\   rx   r`   ÚcoeffÚmqs         r   rÅ   zPuiseuxPoly.iterterms±  sf   è è € ð ”J ¤ˆrˆØœ	×+Ò+Ñ-Ô-ð 	ð 	‰HˆAˆuØ×$Ò$ Q¨¨rÑ2Ô2ˆBØ�e�)ˆOˆOˆOˆOð	ð 	r   ú!list[tuple[tuple[Any, ...], Any]]c                óD   — t          |                      ¦   «         ¦  «        S )z3Return a list of the terms of a Puiseux polynomial.)r»   rÅ   r3   s    r   r@   zPuiseuxPoly.termsÀ  ó   € å�D—N’NÑ$Ô$Ñ%Ô%Ð%r   c                ó   — | j         j        S )z7Return True if the Puiseux polynomial is a single term.)r=   Úis_termr3   s    r   rÌ   zPuiseuxPoly.is_termÄ  s   € ð ŒyÔ Ð r   rA   c                óD   — t          |                      ¦   «         ¦  «        S )z;Return a dictionary representation of a Puiseux polynomial.)rP   rÅ   r3   s    r   Úto_dictzPuiseuxPoly.to_dictÉ  rÊ   r   r@   údict[tuple[Any, ...], Any]c                ó  ‡ ‡‡	— dg|j         z  }dg|j         z  }|D ]6}d„ t          ||¦  «        D ¦   «         }d„ t          ||¦  «        D ¦   «         }Œ7t          |¦  «        sdŠn't          d„ t          ||¦  «        D ¦   «         ¦  «        Št	          d„ |D ¦   «         ¦  «        rdŠ	nt          |¦  «        Š	ˆ ˆˆ	fd„|                     ¦   «         D ¦   «         }|j                             |¦  «        }‰                      ||‰‰	¦  «        S )	a^  Create a Puiseux polynomial from a dictionary of terms.

        >>> from sympy import QQ
        >>> from sympy.polys.puiseux import puiseux_ring, PuiseuxPoly
        >>> R, x = puiseux_ring('x', QQ)
        >>> PuiseuxPoly.from_dict({(QQ(1,2),): QQ(3)}, R)
        3*x**(1/2)
        >>> R.from_dict({(QQ(1,2),): QQ(3)})
        3*x**(1/2)
        r�   r   c                ó>   — g | ]\  }}t          ||j        ¦  «        ‘ŒS r"   )r   Údenominator)r$   rD   r`   s      r   r'   z)PuiseuxPoly.from_dict.<locals>.<listcomp>Þ  s(   € Ð@Ð@Ð@©D¨A¨q•#�a˜œÑ'Ô'Ð@Ð@Ð@r   c                ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r"   )Úmin©r$   r`   rD   s      r   r'   z)PuiseuxPoly.from_dict.<locals>.<listcomp>ß  s$   € Ð6Ð6Ð6¡  A•3�q˜!‘9”9Ð6Ð6Ð6r   Nc              3  óL   K  — | ]\  }}t          ||z  j        ¦  «         V — Œ d S r8   r°   rÕ   s      r   rr   z(PuiseuxPoly.from_dict.<locals>.<genexpr>ä  s8   è è € ÐKÐK±d°a¸�3  A¡Ô0Ñ1Ô1Ð1ÐKÐKÐKÐKÐKÐKr   c              3  ó"   K  — | ]
}|d k    V — ŒdS rŒ   r"   r�   s     r   rr   z(PuiseuxPoly.from_dict.<locals>.<genexpr>æ  s&   è è € Ð"Ð"˜!ˆq�AŠvÐ"Ð"Ð"Ð"Ð"Ð"r   c                óF   •— i | ]\  }}‰                      |‰‰¦  «        |“ŒS r"   )rµ   )r$   r`   rÆ   r{   r\   Úns_finals      €€€r   rc   z)PuiseuxPoly.from_dict.<locals>.<dictcomp>ë  s1   ø€ Ð]Ð]Ð]Á8À1Àe�3×#Ò# A u¨hÑ7Ô7¸Ð]Ð]Ð]r   )	r(   rt   r“   r*   r’   Úitemsr)   rC   rz   )
r{   r@   r   rx   ÚmonÚmoÚterms_pr=   r\   rÙ   s
   `       @@r   rC   zPuiseuxPoly.from_dictÍ  s)  øøø€ ð ˆS�4”:ÑˆØˆc�D”JÑˆØð 	7ð 	7ˆBØ@Ð@µC¸¸B±K´KÐ@Ñ@Ô@ˆBØ6Ð6­¨R°©¬Ð6Ñ6Ô6ˆCˆCå�3‰xŒxð 	LØˆEˆEåÐKÐK½cÀ#Àr¹l¼lÐKÑKÔKÑKÔKˆEåÐ"Ð"˜rÐ"Ñ"Ô"Ñ"Ô"ð 	!ØˆHˆHå˜R‘y”yˆHà]Ð]Ð]Ð]Ð]Ð]ÈuÏ{Ê{É}Ì}Ð]Ñ]Ô]ˆàŒ~×'Ò'¨Ñ0Ô0ˆà�xŠx˜˜d E¨8Ñ4Ô4Ð4r   r   c                óJ  — | j         }|j        }|j        }g }|                      ¦   «         D ]o\  }}|                     |¦  «        }g }t          |¦  «        D ]#\  }	}
|                     ||	         |
z  ¦  «         Œ$|                     t          |g|¢R Ž ¦  «         Œpt          |Ž S )aO  Convert a Puiseux polynomial to :class:`~sympy.core.expr.Expr`.

        >>> from sympy import QQ, Expr
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x = puiseux_ring('x', QQ)
        >>> p = 5*x**2 + 7*x**3
        >>> p.as_expr()
        7*x**3 + 5*x**2
        >>> isinstance(_, Expr)
        True
        )	r   r   r   rÅ   Úto_sympyÚ	enumerater—   r	   r   )r&   r   Údomr   r@   r\   rÆ   Ú
coeff_exprÚmonoms_exprÚir`   s              r   Úas_exprzPuiseuxPoly.as_exprñ  sº   € ð ŒyˆØŒkˆØ”,ˆØˆØ ŸNšNÑ,Ô,ð 	8ð 	8‰LˆE�5ØŸš eÑ,Ô,ˆJØˆKÝ! %Ñ(Ô(ð 4ð 4‘��1Ø×"Ò" 7¨1¤:°¡?Ñ3Ô3Ð3Ð3Ø�LŠL�˜ZÐ6¨+Ð6Ð6Ð6Ñ7Ô7Ð7Ð7Ý�Eˆ{Ðr   r0   c                ó  ‡— dd„Š| j         }|j        }d„ |j        D ¦   «         }g }t          |                      ¦   «         ¦  «        D ]¬\  }}d                     ˆfd	„t          ||¦  «        D ¦   «         ¦  «        }||j        k    r.|r|                     |¦  «         ŒW|                     d
¦  «         Œm|s#|                     t          |¦  «        ¦  «         Œ’|                     |› d|› �¦  «         Œ­d                     |¦  «        S )NÚbaser0   ÚexprE   r   c                ób   — |dk    r| S |dk    rt          |¦  «        |k    r| › d|› �S | › d|› d�S )Nr�   r   z**z**(r2   )rE   )rç   rè   s     r   Úformat_powerz*PuiseuxPoly.__repr__.<locals>.format_power  sR   € Ø�aŠxˆxØ�Ø˜’��c #™hœh¨#šo˜oØÐ'Ð' #Ð'Ð'Ð'àÐ)Ð) 3Ð)Ð)Ð)Ð)r   c                ó,   — g | ]}t          |¦  «        ‘ŒS r"   )r0   )r$   Úss     r   r'   z(PuiseuxPoly.__repr__.<locals>.<listcomp>  s   € Ð-Ð-Ð-˜1•�A‘”Ð-Ð-Ð-r   Ú*c              3  ó:   •K  — | ]\  }}|¯ ‰||¦  «        V — Œd S r8   r"   )r$   rì   Úerê   s      €r   rr   z'PuiseuxPoly.__repr__.<locals>.<genexpr>  s9   øè è € Ð VÐ V¹¸¸1ÐTUÐ V  ¨a°Ñ!3Ô!3Ð VÐ VÐ VÐ VÐ VÐ Vr   Ú1z + )rç   r0   rè   rE   r   r0   )
r   r   r   Úsortedr@   Újoinrt   r,   r—   r0   )	r&   r   rá   ÚsymsÚ	terms_strr\   rÆ   Ú	monom_strrê   s	           @r   r4   zPuiseuxPoly.__repr__	  s3  ø€ ð	*ð 	*ð 	*ð 	*ð ŒyˆØŒkˆà-Ð- ¤Ð-Ñ-Ô-ˆØˆ	Ý" 4§:¢:¡<¤<Ñ0Ô0ð 
	9ð 
	9‰LˆE�5ØŸšÐ VÐ VÐ VÐ VÅÀDÈ%Ñ@PÔ@PÐ VÑ VÔ VÑVÔVˆIØ˜œÒÐØð *Ø×$Ò$ YÑ/Ô/Ð/Ð/à×$Ò$ SÑ)Ô)Ð)Ð)Øð 9Ø× Ò ¥ U¡¤Ñ,Ô,Ð,Ð,à× Ò  EÐ!7Ð!7¨IÐ!7Ð!7Ñ8Ô8Ð8Ð8à�zŠz˜)Ñ$Ô$Ð$r   úOtuple[PolyElement, PolyElement, tuple[int, ...] | None, tuple[int, ...] | None]c                óœ  — | j         | j        | j        }}}|j         |j        |j        }}}||k    r||k    r||||fS ||k    r|}�nd|�Ú|�Øt          d„ t	          ||¦  «        D ¦   «         ¦  «        }d„ t	          ||¦  «        D ¦   «         }	d„ t	          ||¦  «        D ¦   «         }
|                     |	¦  «        }|                     |
¦  «        }|�'t          d„ t	          ||	¦  «        D ¦   «         ¦  «        }|�'t          d„ t	          ||
¦  «        D ¦   «         ¦  «        }nˆ|�A|}|                     |¦  «        }|�'t          d„ t	          ||¦  «        D ¦   «         ¦  «        }nE|�A|}|                     |¦  «        }|�'t          d„ t	          ||¦  «        D ¦   «         ¦  «        }nJ ‚||k    r|}n”|�f|�dt          d
„ t	          ||¦  «        D ¦   «         ¦  «        }t          |t          ||¦  «        ¦  «        }t          |t          ||¦  «        ¦  «        }n,|�|}t          ||¦  «        }n|�|}t          ||¦  «        }nJ ‚||||fS )z7Bring two Puiseux polynomials to a common monom and ns.Nc              3  ó<   K  — | ]\  }}t          ||¦  «        V — Œd S r8   )r   )r$   Ún1Ún2s      r   rr   z%PuiseuxPoly._unify.<locals>.<genexpr>5  s.   è è € Ð?Ð?¡v r¨2•s˜2˜r‘{”{Ð?Ð?Ð?Ð?Ð?Ð?r   c                ó   — g | ]
\  }}||z  ‘ŒS r"   r"   )r$   rD   rù   s      r   r'   z&PuiseuxPoly._unify.<locals>.<listcomp>6  ó    € Ð4Ð4Ð4™e˜a �!�r‘'Ð4Ð4Ð4r   c                ó   — g | ]
\  }}||z  ‘ŒS r"   r"   )r$   rD   rú   s      r   r'   z&PuiseuxPoly._unify.<locals>.<listcomp>7  rü   r   c              3  ó&   K  — | ]\  }}||z  V — Œd S r8   r"   ©r$   r`   Úfs      r   rr   z%PuiseuxPoly._unify.<locals>.<genexpr>;  ó*   è è € ÐAÐA©¨¨A˜q 1™uÐAÐAÐAÐAÐAÐAr   c              3  ó&   K  — | ]\  }}||z  V — Œd S r8   r"   rÿ   s      r   rr   z%PuiseuxPoly._unify.<locals>.<genexpr>=  r  r   c              3  ó&   K  — | ]\  }}||z  V — Œd S r8   r"   rÕ   s      r   rr   z%PuiseuxPoly._unify.<locals>.<genexpr>B  r  r   c              3  ó&   K  — | ]\  }}||z  V — Œd S r8   r"   rÕ   s      r   rr   z%PuiseuxPoly._unify.<locals>.<genexpr>G  r  r   Fc              3  ó<   K  — | ]\  }}t          ||¦  «        V — Œd S r8   r‡   )r$   Úm1Úm2s      r   rr   z%PuiseuxPoly._unify.<locals>.<genexpr>N  s.   è è € ÐHÐH©&¨"¨b�#˜b "™+œ+ÐHÐHÐHÐHÐHÐHr   )r=   r\   rx   r*   rt   r˜   rk   ru   )r&   r5   Úpoly1Úmonom1Úns1Úpoly2Úmonom2Úns2rx   Úf1Úf2r\   s               r   Ú_unifyzPuiseuxPoly._unify&  sŠ  € ð "œY¨¬
°D´G�sˆvˆØ"œZ¨¬°e´h�sˆvˆà�VÒÐ  s¢
 
Ø˜% ¨Ð,Ð,à�#Š:ˆ:ØˆB‰BØˆ_  ÝÐ?Ð?µ°S¸#±´Ð?Ñ?Ô?Ñ?Ô?ˆBØ4Ð4¥s¨2¨s¡|¤|Ð4Ñ4Ô4ˆBØ4Ð4¥s¨2¨s¡|¤|Ð4Ñ4Ô4ˆBØ—M’M "Ñ%Ô%ˆEØ—M’M "Ñ%Ô%ˆEØÐ!ÝÐAÐAµ°V¸R±´ÐAÑAÔAÑAÔA�ØÐ!ÝÐAÐAµ°V¸R±´ÐAÑAÔAÑAÔA�øØˆ_ØˆBØ—M’M "Ñ%Ô%ˆEØÐ!ÝÐAÐAµ°V¸R±´ÐAÑAÔAÑAÔA�øØˆ_ØˆBØ—M’M "Ñ%Ô%ˆEØÐ!ÝÐAÐAµ°V¸R±´ÐAÑAÔAÑAÔA�øà�5à�VÒÐØˆEˆEØÐ FÐ$6ÝÐHÐHµC¸ÀÑ4GÔ4GÐHÑHÔHÑHÔHˆEÝ# E­:°e¸VÑ+DÔ+DÑEÔEˆEÝ# E­:°e¸VÑ+DÔ+DÑEÔEˆEˆEØÐØˆEÝ# E¨6Ñ2Ô2ˆEˆEØÐØˆEÝ# E¨6Ñ2Ô2ˆEˆEà�5à�e˜U BÐ&Ð&r   c                ó   — | S r8   r"   r3   s    r   Ú__pos__zPuiseuxPoly.__pos__\  s   € Øˆr   c                ó\   — |                       | j        | j         | j        | j        ¦  «        S r8   ©r   r   r=   r\   rx   r3   s    r   Ú__neg__zPuiseuxPoly.__neg___  s$   € Ø�}Š}˜TœY¨¬¨
°D´JÀÄÑHÔHÐHr   c                ó®  — t          |t          ¦  «        r4| j        |j        k    rt          d¦  «        ‚|                      |¦  «        S | j        j        }t          |t          ¦  «        r;|                      |                     t          |¦  «        t          ¦  «        ¦  «        S | 
                    |¦  «        r|                      |¦  «        S t          S )Nz3Cannot add Puiseux polynomials from different rings)r9   r>   r   Ú
ValueErrorÚ_addr   rE   Ú_add_groundÚconvert_fromr   Úof_typer:   ©r&   r5   r   s      r   Ú__add__zPuiseuxPoly.__add__b  s¸   € Ý�e�[Ñ)Ô)ð 	$ØŒy˜EœJÒ&Ð&Ý Ð!VÑWÔWÐWØ—9’9˜UÑ#Ô#Ð#Ø”Ô!ˆÝ�e�SÑ!Ô!ð 	"Ø×#Ò# F×$7Ò$7½¸5¹	¼	Å2Ñ$FÔ$FÑGÔGÐGØ�^Š^˜EÑ"Ô"ð 	"Ø×#Ò# EÑ*Ô*Ð*å!Ð!r   c                ó  — | j         j        }t          |t          ¦  «        r;|                      |                     t          |¦  «        t          ¦  «        ¦  «        S |                     |¦  «        r|                      |¦  «        S t          S r8   )	r   r   r9   rE   r  r  r   r  r:   r  s      r   Ú__radd__zPuiseuxPoly.__radd__o  óv   € Ø”Ô!ˆÝ�e�SÑ!Ô!ð 	"Ø×#Ò# F×$7Ò$7½¸5¹	¼	Å2Ñ$FÔ$FÑGÔGÐGØ�^Š^˜EÑ"Ô"ð 	"Ø×#Ò# EÑ*Ô*Ð*å!Ð!r   c                ó®  — t          |t          ¦  «        r4| j        |j        k    rt          d¦  «        ‚|                      |¦  «        S | j        j        }t          |t          ¦  «        r;|                      |                     t          |¦  «        t          ¦  «        ¦  «        S | 
                    |¦  «        r|                      |¦  «        S t          S )Nz8Cannot subtract Puiseux polynomials from different rings)r9   r>   r   r  Ú_subr   rE   Ú_sub_groundr  r   r  r:   r  s      r   Ú__sub__zPuiseuxPoly.__sub__x  óÀ   € Ý�e�[Ñ)Ô)ð 	$ØŒy˜EœJÒ&Ð&Ý ØNñô ð ð —9’9˜UÑ#Ô#Ð#Ø”Ô!ˆÝ�e�SÑ!Ô!ð 	"Ø×#Ò# F×$7Ò$7½¸5¹	¼	Å2Ñ$FÔ$FÑGÔGÐGØ�^Š^˜EÑ"Ô"ð 	"Ø×#Ò# EÑ*Ô*Ð*å!Ð!r   c                ó  — | j         j        }t          |t          ¦  «        r;|                      |                     t          |¦  «        t          ¦  «        ¦  «        S |                     |¦  «        r|                      |¦  «        S t          S r8   )	r   r   r9   rE   Ú_rsub_groundr  r   r  r:   r  s      r   Ú__rsub__zPuiseuxPoly.__rsub__‡  sv   € Ø”Ô!ˆÝ�e�SÑ!Ô!ð 	"Ø×$Ò$ V×%8Ò%8½¸E¹¼ÅBÑ%GÔ%GÑHÔHÐHØ�^Š^˜EÑ"Ô"ð 	"Ø×$Ò$ UÑ+Ô+Ð+å!Ð!r   c                ó®  — t          |t          ¦  «        r4| j        |j        k    rt          d¦  «        ‚|                      |¦  «        S | j        j        }t          |t          ¦  «        r;|                      |                     t          |¦  «        t          ¦  «        ¦  «        S | 
                    |¦  «        r|                      |¦  «        S t          S )Nz8Cannot multiply Puiseux polynomials from different rings)r9   r>   r   r  Ú_mulr   rE   Ú_mul_groundr  r   r  r:   r  s      r   Ú__mul__zPuiseuxPoly.__mul__�  r%  r   c                ó  — | j         j        }t          |t          ¦  «        r;|                      |                     t          |¦  «        t          ¦  «        ¦  «        S |                     |¦  «        r|                      |¦  «        S t          S r8   )	r   r   r9   rE   r+  r  r   r  r:   r  s      r   Ú__rmul__zPuiseuxPoly.__rmul__Ÿ  r   r   c                óî   — t          |t          ¦  «        r1|dk    r|                      |¦  «        S |                      | ¦  «        S t	          j        |¦  «        r|                      |¦  «        S t          S )Nr   )r9   rE   Ú	_pow_pintÚ	_pow_nintr   r  Ú_pow_rationalr:   r;   s     r   Ú__pow__zPuiseuxPoly.__pow__¨  so   € Ý�e�SÑ!Ô!ð 	"Ø˜ŠzˆzØ—~’~ eÑ,Ô,Ð,à—~’~ u fÑ-Ô-Ð-ÝŒZ˜ÑÔð 	"Ø×%Ò% eÑ,Ô,Ð,å!Ð!r   c                óÔ  — t          |t          ¦  «        rF| j        |j        k    rt          d¦  «        ‚|                      |                     ¦   «         ¦  «        S | j        j        }t          |t          ¦  «        r<|                      | 	                    t          d|¦  «        t          ¦  «        ¦  «        S |                     |¦  «        r|                      |¦  «        S t          S )Nz6Cannot divide Puiseux polynomials from different ringsr�   )r9   r>   r   r  r*  Ú_invr   rE   r+  r  r   r  Ú_div_groundr:   r  s      r   Ú__truediv__zPuiseuxPoly.__truediv__³  sÊ   € Ý�e�[Ñ)Ô)ð 	+ØŒy˜EœJÒ&Ð&Ý ØLñô ð ð —9’9˜UŸZšZ™\œ\Ñ*Ô*Ð*Ø”Ô!ˆÝ�e�SÑ!Ô!ð 	"Ø×#Ò# F×$7Ò$7½¸1¸e¹¼ÅbÑ$IÔ$IÑJÔJÐJØ�^Š^˜EÑ"Ô"ð 	"Ø×#Ò# EÑ*Ô*Ð*å!Ð!r   c                ót  — t          |t          ¦  «        rW|                      ¦   «                              | j        j                             t          |¦  «        t          ¦  «        ¦  «        S | j        j                             |¦  «        r'|                      ¦   «                              |¦  «        S t          S r8   )
r9   rE   r5  r+  r   r   r  r   r  r:   r;   s     r   Ú__rtruediv__zPuiseuxPoly.__rtruediv__Â  s‰   € Ý�e�SÑ!Ô!ð 	"Ø—9’9‘;”;×*Ò*¨4¬9Ô+;×+HÒ+HÍÈEÉÌÕTVÑ+WÔ+WÑXÔXÐXØŒYÔ×%Ò% eÑ,Ô,ð 	"Ø—9’9‘;”;×*Ò*¨5Ñ1Ô1Ð1å!Ð!r   c                óv   — |                       |¦  «        \  }}}}|                      | j        ||z   ||¦  «        S r8   ©r  rz   r   ©r&   r5   r  r  r\   rx   s         r   r  zPuiseuxPoly._addÊ  ó:   € Ø"&§+¢+¨eÑ"4Ô"4Ñˆˆu�e˜RØ�yŠy˜œ E¨E¡M°5¸"Ñ=Ô=Ð=r   Úgroundc                ó\   — |                       | j                             |¦  «        ¦  «        S r8   )r  r   rN   ©r&   r>  s     r   r  zPuiseuxPoly._add_groundÎ  ó$   € Ø�yŠy˜œ×-Ò-¨fÑ5Ô5Ñ6Ô6Ð6r   c                óv   — |                       |¦  «        \  }}}}|                      | j        ||z
  ||¦  «        S r8   r;  r<  s         r   r"  zPuiseuxPoly._subÑ  r=  r   c                ó\   — |                       | j                             |¦  «        ¦  «        S r8   )r"  r   rN   r@  s     r   r#  zPuiseuxPoly._sub_groundÕ  rA  r   c                ó\   — | j                              |¦  «                             | ¦  «        S r8   )r   rN   r"  r@  s     r   r'  zPuiseuxPoly._rsub_groundØ  s&   € ØŒy×#Ò# FÑ+Ô+×0Ò0°Ñ6Ô6Ð6r   c                ó¬   — |                       |¦  «        \  }}}}|�t          d„ |D ¦   «         ¦  «        }|                      | j        ||z  ||¦  «        S )Nc              3  ó    K  — | ]	}d |z  V — Œ
dS )é   Nr"   )r$   rï   s     r   rr   z#PuiseuxPoly._mul.<locals>.<genexpr>Þ  s&   è è € Ð/Ð/ A˜!˜a™%Ð/Ð/Ð/Ð/Ð/Ð/r   )r  r*   rz   r   r<  s         r   r*  zPuiseuxPoly._mulÛ  s\   € Ø"&§+¢+¨eÑ"4Ô"4Ñˆˆu�e˜RØÐÝÐ/Ð/¨Ð/Ñ/Ô/Ñ/Ô/ˆEØ�yŠy˜œ E¨E¡M°5¸"Ñ=Ô=Ð=r   c                ó`   — |                       | j        | j        |z  | j        | j        ¦  «        S r8   r  r@  s     r   r+  zPuiseuxPoly._mul_groundá  ó'   € Ø�}Š}˜TœY¨¬	°FÑ(:¸D¼JÈÌÑPÔPÐPr   c                ó`   — |                       | j        | j        |z  | j        | j        ¦  «        S r8   r  r@  s     r   r6  zPuiseuxPoly._div_groundä  rI  r   rD   c                ó°   ‡— ‰dk    sJ ‚| j         }|�t          ˆfd„|D ¦   «         ¦  «        }|                      | j        | j        ‰z  || j        ¦  «        S )Nr   c              3  ó"   •K  — | ]	}|‰z  V — Œ
d S r8   r"   rÕ   s     €r   rr   z(PuiseuxPoly._pow_pint.<locals>.<genexpr>ë  s'   øè è € Ð/Ð/ A˜!˜a™%Ð/Ð/Ð/Ð/Ð/Ð/r   )r\   r*   rz   r   r=   rx   )r&   rD   r\   s    ` r   r0  zPuiseuxPoly._pow_pintç  sa   ø€ Ø�AŠvˆvˆvˆvØ”
ˆØÐÝÐ/Ð/Ð/Ð/¨Ð/Ñ/Ô/Ñ/Ô/ˆEØ�yŠy˜œ D¤I¨q¡L°%¸¼ÑAÔAÐAr   c                óP   — |                       ¦   «                              |¦  «        S r8   )r5  r0  rG   s     r   r1  zPuiseuxPoly._pow_nintî  s   € Ø�yŠy‰{Œ{×$Ò$ QÑ'Ô'Ð'r   c                ó:  ‡— | j         st          d¦  «        ‚|                      ¦   «         \  \  }}| j        j        }|                     |¦  «        st          d¦  «        ‚t          ˆfd„|D ¦   «         ¦  «        }| j                             ||j        i¦  «        S )Nz0Only monomials can be raised to a rational powerc              3  ó"   •K  — | ]	}|‰z  V — Œ
d S r8   r"   rÕ   s     €r   rr   z,PuiseuxPoly._pow_rational.<locals>.<genexpr>ø  s'   øè è € Ð+Ð+ �a˜!‘eÐ+Ð+Ð+Ð+Ð+Ð+r   )	rÌ   r  r@   r   r   Úis_oner*   rC   r,   )r&   rD   r\   rÆ   r   s    `   r   r2  zPuiseuxPoly._pow_rationalñ  sž   ø€ ØŒ|ð 	QÝÐOÑPÔPÐPØŸ:š:™<œ<Ñ‰ˆ%�Ø”Ô!ˆØ�}Š}˜UÑ#Ô#ð 	QÝÐOÑPÔPÐPÝÐ+Ð+Ð+Ð+ UÐ+Ñ+Ô+Ñ+Ô+ˆØŒy×"Ò" E¨6¬:Ð#6Ñ7Ô7Ð7r   c                óB  — | j         st          d¦  «        ‚|                      ¦   «         \  \  }}| j        j        }|j        s$|                     |¦  «        st          d¦  «        ‚t          d„ |D ¦   «         ¦  «        }d|z  }| j                             ||i¦  «        S )NzOnly terms can be invertedz"Cannot invert non-unit coefficientc              3  ó   K  — | ]}| V — Œd S r8   r"   )r$   r`   s     r   rr   z#PuiseuxPoly._inv.<locals>.<genexpr>  s$   è è € Ð(Ð(˜Q�q�bÐ(Ð(Ð(Ð(Ð(Ð(r   r�   )	rÌ   r  r@   r   r   Úis_FieldrP  r*   rC   )r&   r\   rÆ   r   s       r   r5  zPuiseuxPoly._invû  s¦   € ØŒ|ð 	;ÝÐ9Ñ:Ô:Ð:ØŸ:š:™<œ<Ñ‰ˆ%�Ø”Ô!ˆØŒð 	C v§}¢}°UÑ';Ô';ð 	CÝÐAÑBÔBÐBÝÐ(Ð( %Ð(Ñ(Ô(Ñ(Ô(ˆØ�E‘	ˆØŒy×"Ò" E¨5 >Ñ2Ô2Ð2r   rR   c                ó  — | j         }|                     |¦  «        }i }|                      ¦   «         D ]C\  }}||         }|r4t          |¦  «        }||xx         dz  cc<   ||z  |t	          |¦  «        <   ŒD ||¦  «        S )a:  Differentiate a Puiseux polynomial with respect to a variable.

        >>> from sympy import QQ
        >>> from sympy.polys.puiseux import puiseux_ring
        >>> R, x, y = puiseux_ring('x, y', QQ)
        >>> p = 5*x**2 + 7*y**3
        >>> p.diff(x)
        10*x
        >>> p.diff(y)
        21*y**2
        r�   )r   rT   rÅ   r»   r*   )	r&   rR   r   rä   r%   ÚexpvrÆ   rD   rï   s	            r   ÚdiffzPuiseuxPoly.diff  sŽ   € ð ŒyˆØ�JŠJ�q‰MŒMˆØˆØŸ>š>Ñ+Ô+ð 	(ð 	(‰KˆD�%Ø�Q”ˆAØð (Ý˜‘J”J�Ø�!��”˜‘	��‘Ø# a™i�•%˜‘(”(‘øØˆt�A‰wŒwˆr   N)r=   r   r   r   r   r>   )
r   r   r=   r   r\   rw   rx   rw   r   r>   rV   )r=   r   r\   rw   rx   rw   r   r„   )r\   rl   r¢   rw   rx   rw   r   r£   )r\   r£   r¢   rw   rx   rw   r   rl   )r   r¶   )r   r¹   )r   r½   )r\   rl   r   r   )r   rE   )r   rÈ   )r   r6   )r   rA   )r@   rÏ   r   r   r   r>   )r   r   rU   )r5   r>   r   rö   )r   r>   )r5   r   r   r>   )r5   r>   r   r>   )r>  r   r   r>   rW   )rD   r   r   r>   )rR   r>   r   r>   )3rX   rY   rZ   r[   Ú__annotations__r|   Úclassmethodrz   r   r<   r~   r­   rµ   r¸   r¼   r¿   rÁ   rÃ   rÅ   r@   ÚpropertyrÌ   rÎ   rC   rå   r4   r  r  r  r  r  r$  r(  r,  r.  r3  r7  r9  r  r  r"  r#  r'  r*  r+  r6  r0  r1  r2  r5  rV  r"   r   r   r>   r>   ç   s*  € € € € € € ð'ð 'ðR ÐÐÑØÐÐÑØ!Ð!Ð!Ñ!ØÐÐÑð0ð 0ð 0ð 0ð ð3ð 3ð 3ñ „[ð3ð ðð ð ñ „[ðð
"ð 
"ð 
"ð 
"ð ð/ð /ð /ñ „[ð/ðb ð1ð 1ð 1ñ „[ð1ð ð<ð <ð <ñ „[ð<ð"4ð 4ð 4ð 4ð 'ð 'ð 'ð 'ð!ð !ð !ð !ð ð  ð  ð  ðð ð ð ðð ð ð ð&ð &ð &ð &ð ð!ð !ð !ñ „Xð!ð&ð &ð &ð &ð ð!5ð !5ð !5ñ „[ð!5ðFð ð ð ð0%ð %ð %ð %ð:4'ð 4'ð 4'ð 4'ðlð ð ð ðIð Ið Ið Ið"ð "ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð	"ð 	"ð 	"ð 	"ð"ð "ð "ð "ð"ð "ð "ð "ð>ð >ð >ð >ð7ð 7ð 7ð 7ð>ð >ð >ð >ð7ð 7ð 7ð 7ð7ð 7ð 7ð 7ð>ð >ð >ð >ðQð Qð Qð QðQð Qð Qð QðBð Bð Bð Bð(ð (ð (ð (ð8ð 8ð 8ð 8ð	3ð 	3ð 	3ð 	3ðð ð ð ð ð r   r>   N)r   r   r   r   r   r   )r=   r   r\   r]   r   r   )r\   r]   rb   r]   r   rl   )r[   Ú
__future__r   Úsympy.polys.domainsr   Úsympy.polys.ringsr   r   Úsympy.core.addr   Úsympy.core.mulr	   Úsympy.external.gmpyr
   r   Útypingr   r   r   Úsympy.core.exprr   r   Úcollections.abcr   r   r   r   rf   rk   ru   r>   r"   r   r   ú<module>rc     sÀ  ððð ð& #Ð "Ð "Ð "Ð "Ð "à "Ð "Ð "Ð "Ð "Ð "Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (ð !Ð  Ð  Ð  Ð  Ð  ð ð 3Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø$Ð$Ð$Ð$Ð$Ð$Ø*Ð*Ð*Ð*Ð*Ð*Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ðð ð ð ð(Y"ð Y"ð Y"ð Y"ð Y"ñ Y"ô Y"ð Y"ðxGð Gð Gð GðGð Gð Gð Gð8ð 8ð 8ð 8ðtð tð tð tð tñ tô tð tð tð tr   