o
    3Ih                     @   sH   d Z ddlmZ ddlmZ ddlmZ ddlmZ eddd Z	dS )	zZ
This module implements the Residue function and related tools for working
with residues.
    )Mul)S)sympify)timethisresiduec                 C   s   ddl m} ddlm} t| } |dkr| ||| } dD ]}| j||d}||r2| dkr4 nq||	 |}|j
rC|j}n|g}tj}|D ]+}	|	|\}
}t| }|tj|fv sl|jrf|jjsltd| |d| krv||
7 }qK|S )a  
    Finds the residue of ``expr`` at the point x=x0.

    The residue is defined as the coefficient of ``1/(x-x0)`` in the power series
    expansion about ``x=x0``.

    Examples
    ========

    >>> from sympy import Symbol, residue, sin
    >>> x = Symbol("x")
    >>> residue(1/x, x, 0)
    1
    >>> residue(1/x**2, x, 0)
    0
    >>> residue(2/sin(x), x, 0)
    2

    This function is essential for the Residue Theorem [1].

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Residue_theorem
    r   )Order)collect)r                      )nzterm of unexpected form: %sr	   )sympy.series.orderr   sympy.simplify.radsimpr   r   subsnserieshasgetnremoveOis_Addargsr   Zeroas_coeff_mulr   Oneis_Powexp
is_IntegerNotImplementedError)exprxx0r   r   r   sr   resargcm r(   U/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sympy/series/residues.pyr      s0   'N)
__doc__sympy.core.mulr   sympy.core.singletonr   sympy.core.sympifyr   sympy.utilities.timeutilsr   r   r(   r(   r(   r)   <module>   s    