U
    9%e ^                     @   s\  d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
mZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZ ddlmZmZmZmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ G dd deZ,G dd deZ-G dd deZ.G dd deZ/G dd deZ0G dd deZ1edd Z2dS ) z$ Riemann zeta and related function.     )Add)cacheit)ArgumentIndexError
expand_mulFunction)piIInteger)Eq)S)Dummy)sympify)	bernoulli	factorialgenocchiharmonic)re
unpolarifyAbs
polar_lift)log	exp_polarexp)ceilingfloor)sqrt)	Piecewise)Polyc                   @   s:   e Zd ZdZdd ZdddZdd Zd	d
 Zdd ZdS )lerchphia^  
    Lerch transcendent (Lerch phi function).

    Explanation
    ===========

    For $\operatorname{Re}(a) > 0$, $|z| < 1$ and $s \in \mathbb{C}$, the
    Lerch transcendent is defined as

    .. math :: \Phi(z, s, a) = \sum_{n=0}^\infty \frac{z^n}{(n + a)^s},

    where the standard branch of the argument is used for $n + a$,
    and by analytic continuation for other values of the parameters.

    A commonly used related function is the Lerch zeta function, defined by

    .. math:: L(q, s, a) = \Phi(e^{2\pi i q}, s, a).

    **Analytic Continuation and Branching Behavior**

    It can be shown that

    .. math:: \Phi(z, s, a) = z\Phi(z, s, a+1) + a^{-s}.

    This provides the analytic continuation to $\operatorname{Re}(a) \le 0$.

    Assume now $\operatorname{Re}(a) > 0$. The integral representation

    .. math:: \Phi_0(z, s, a) = \int_0^\infty \frac{t^{s-1} e^{-at}}{1 - ze^{-t}}
                                \frac{\mathrm{d}t}{\Gamma(s)}

    provides an analytic continuation to $\mathbb{C} - [1, \infty)$.
    Finally, for $x \in (1, \infty)$ we find

    .. math:: \lim_{\epsilon \to 0^+} \Phi_0(x + i\epsilon, s, a)
             -\lim_{\epsilon \to 0^+} \Phi_0(x - i\epsilon, s, a)
             = \frac{2\pi i \log^{s-1}{x}}{x^a \Gamma(s)},

    using the standard branch for both $\log{x}$ and
    $\log{\log{x}}$ (a branch of $\log{\log{x}}$ is needed to
    evaluate $\log{x}^{s-1}$).
    This concludes the analytic continuation. The Lerch transcendent is thus
    branched at $z \in \{0, 1, \infty\}$ and
    $a \in \mathbb{Z}_{\le 0}$. For fixed $z, a$ outside these
    branch points, it is an entire function of $s$.

    Examples
    ========

    The Lerch transcendent is a fairly general function, for this reason it does
    not automatically evaluate to simpler functions. Use ``expand_func()`` to
    achieve this.

    If $z=1$, the Lerch transcendent reduces to the Hurwitz zeta function:

    >>> from sympy import lerchphi, expand_func
    >>> from sympy.abc import z, s, a
    >>> expand_func(lerchphi(1, s, a))
    zeta(s, a)

    More generally, if $z$ is a root of unity, the Lerch transcendent
    reduces to a sum of Hurwitz zeta functions:

    >>> expand_func(lerchphi(-1, s, a))
    zeta(s, a/2)/2**s - zeta(s, a/2 + 1/2)/2**s

    If $a=1$, the Lerch transcendent reduces to the polylogarithm:

    >>> expand_func(lerchphi(z, s, 1))
    polylog(s, z)/z

    More generally, if $a$ is rational, the Lerch transcendent reduces
    to a sum of polylogarithms:

    >>> from sympy import S
    >>> expand_func(lerchphi(z, s, S(1)/2))
    2**(s - 1)*(polylog(s, sqrt(z))/sqrt(z) -
                polylog(s, sqrt(z)*exp_polar(I*pi))/sqrt(z))
    >>> expand_func(lerchphi(z, s, S(3)/2))
    -2**s/z + 2**(s - 1)*(polylog(s, sqrt(z))/sqrt(z) -
                          polylog(s, sqrt(z)*exp_polar(I*pi))/sqrt(z))/z

    The derivatives with respect to $z$ and $a$ can be computed in
    closed form:

    >>> lerchphi(z, s, a).diff(z)
    (-a*lerchphi(z, s, a) + lerchphi(z, s - 1, a))/z
    >>> lerchphi(z, s, a).diff(a)
    -s*lerchphi(z, s + 1, a)

    See Also
    ========

    polylog, zeta

    References
    ==========

    .. [1] Bateman, H.; Erdelyi, A. (1953), Higher Transcendental Functions,
           Vol. I, New York: McGraw-Hill. Section 1.11.
    .. [2] https://dlmf.nist.gov/25.14
    .. [3] https://en.wikipedia.org/wiki/Lerch_transcendent

    c                    s  | j \ dkrt S jrdkrtd}t|    |dd|  }tj}t D ]}||| 7 }||	| }qf|
|S  jrtj}tj} dkrt  krƈd8  8    }t fddtD  }nH dkrBt  d  7   }t fddtD  }t j jg\}tdt t  }	d  }
t|	}g }tD ]J}t|	| |
 ttrjf |||| |
 |   q||d   t|   S ttrj d tt  js&dtt fkrƈdkrBtddg\ndtkr^tdd	g\nHt kr|tdd	g\n*j d dt t  }t|j|jg\t fd
dtD  S t S )N   r   tc                    s&   g | ]}|    |   qS  r!   .0kanszr!   e/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/functions/special/zeta_functions.py
<listcomp>   s     z.lerchphi._eval_expand_func.<locals>.<listcomp>c                    s,   g | ]$}d  |   | d    qS r   r!   r"   r%   r!   r*   r+      s           c                    sB   g | ]:}t d t t |     t|    qS )r-   )r   r   r   zetar"   )r&   pqr(   r!   r*   r+      s   )argsr0   
is_Integerr   r   r   ZeroreversedZ
all_coeffsdiffsubsZis_RationalOner   r   ranger1   r2   r   r   r   r   polylog
isinstance_eval_expand_funcappendr   r   )selfhintsr    startrescaddmulmZzetrootZup_zetZaddargsr$   argr!   )r&   r'   r1   r2   r(   r)   r*   r=      sf    

"
 4

zlerchphi._eval_expand_funcr   c                 C   s^   | j \}}}|dkr*| t||d | S |dkrVt||d ||t|||  | S td S )N   r   )r3   r   r   )r?   argindexr)   r(   r&   r!   r!   r*   fdiff   s    $zlerchphi.fdiffc                 C   s   |   }||r|S | S d S N)r=   has)r?   targetrB   r!   r!   r*   _eval_rewrite_helper   s    
zlerchphi._eval_rewrite_helperc                 K   s
   |  tS rL   )rO   r0   r?   r)   r(   r&   kwargsr!   r!   r*   _eval_rewrite_as_zeta   s    zlerchphi._eval_rewrite_as_zetac                 K   s
   |  tS rL   )rO   r;   rP   r!   r!   r*   _eval_rewrite_as_polylog   s    z!lerchphi._eval_rewrite_as_polylogN)r   )	__name__
__module____qualname____doc__r=   rK   rO   rR   rS   r!   r!   r!   r*   r      s   iA
	r   c                       sP   e Zd ZdZedd ZdddZdd Zd	d
 Zdd Z	d fdd	Z
  ZS )r;   a  
    Polylogarithm function.

    Explanation
    ===========

    For $|z| < 1$ and $s \in \mathbb{C}$, the polylogarithm is
    defined by

    .. math:: \operatorname{Li}_s(z) = \sum_{n=1}^\infty \frac{z^n}{n^s},

    where the standard branch of the argument is used for $n$. It admits
    an analytic continuation which is branched at $z=1$ (notably not on the
    sheet of initial definition), $z=0$ and $z=\infty$.

    The name polylogarithm comes from the fact that for $s=1$, the
    polylogarithm is related to the ordinary logarithm (see examples), and that

    .. math:: \operatorname{Li}_{s+1}(z) =
                    \int_0^z \frac{\operatorname{Li}_s(t)}{t} \mathrm{d}t.

    The polylogarithm is a special case of the Lerch transcendent:

    .. math:: \operatorname{Li}_{s}(z) = z \Phi(z, s, 1).

    Examples
    ========

    For $z \in \{0, 1, -1\}$, the polylogarithm is automatically expressed
    using other functions:

    >>> from sympy import polylog
    >>> from sympy.abc import s
    >>> polylog(s, 0)
    0
    >>> polylog(s, 1)
    zeta(s)
    >>> polylog(s, -1)
    -dirichlet_eta(s)

    If $s$ is a negative integer, $0$ or $1$, the polylogarithm can be
    expressed using elementary functions. This can be done using
    ``expand_func()``:

    >>> from sympy import expand_func
    >>> from sympy.abc import z
    >>> expand_func(polylog(1, z))
    -log(1 - z)
    >>> expand_func(polylog(0, z))
    z/(1 - z)

    The derivative with respect to $z$ can be computed in closed form:

    >>> polylog(s, z).diff(z)
    polylog(s - 1, z)/z

    The polylogarithm can be expressed in terms of the lerch transcendent:

    >>> from sympy import lerchphi
    >>> polylog(s, z).rewrite(lerchphi)
    z*lerchphi(z, s, 1)

    See Also
    ========

    zeta, lerchphi

    c                 C   s   |j rZ|tjkrt|S |tjkr,t| S |tjkr<tjS |dkrZt }||krZ|| S |jrftjS |	tj}|r~t|S |dkr|tjkr|d|  S |tjkr|d| d  S |jr|d|  S |
tt r|st|tjkdk r| |t|S d S )Nr-   Fr   T)	is_numberr   r9   r0   ZNegativeOnedirichlet_etar5   _dilogtableis_zeroequalsrM   r   r   r   r   )clsr(   r)   Z
dilogtablezoner!   r!   r*   eval$  s2    





&zpolylog.evalr   c                 C   s,   | j \}}|dkr$t|d || S td S )Nr-   r   )r3   r;   r   )r?   rJ   r(   r)   r!   r!   r*   rK   K  s    
zpolylog.fdiffc                 K   s   |t ||d S Nr   r   )r?   r(   r)   rQ   r!   r!   r*   _eval_rewrite_as_lerchphiQ  s    z!polylog._eval_rewrite_as_lerchphic                 K   sz   | j \}}|dkr td|  S |jrp|dkrptd}|d|  }t| D ]}||| }qLt|||S t||S )Nr   r   u)	r3   r   r4   r   r:   r7   r   r8   r;   )r?   r@   r(   r)   rc   rA   _r!   r!   r*   r=   T  s    
zpolylog._eval_expand_funcc                 C   s   | j d }|jrdS d S )Nr   Tr3   r[   )r?   r)   r!   r!   r*   _eval_is_zero`  s    
zpolylog._eval_is_zeror   c              	      s  ddl m} | j\}}||d}|tjkrJ|j|dt|jrBdndd}|j	rz|
|\}	}
W n ttfk
r   |  Y S X |
jrt||
 }||| |}||||| }|tjkr|S |}|g}td|D ]}||9 }||||   qt| | S tt| ||||S )Nr   )Order-+)dirr-   )Zsympy.series.orderrg   r3   r8   r   NaNlimitr   is_negativer[   leadterm
ValueErrorNotImplementedErroris_positiver   _eval_nseriesZremoveOr5   r:   r>   r   superr;   )r?   xr'   logxcdirrg   nur)   Zz0rd   r   Znewnortermr(   r$   	__class__r!   r*   rr   e  s.    



zpolylog._eval_nseries)r   )r   )rT   rU   rV   rW   classmethodr_   rK   rb   r=   rf   rr   __classcell__r!   r!   r{   r*   r;      s   E
&
r;   c                       sh   e Zd ZdZedddZdddZddd	Zdd
dZdd Z	dd Z
dddZd fdd	Z  ZS )r0   a
  
    Hurwitz zeta function (or Riemann zeta function).

    Explanation
    ===========

    For $\operatorname{Re}(a) > 0$ and $\operatorname{Re}(s) > 1$, this
    function is defined as

    .. math:: \zeta(s, a) = \sum_{n=0}^\infty \frac{1}{(n + a)^s},

    where the standard choice of argument for $n + a$ is used. For fixed
    $a$ not a nonpositive integer the Hurwitz zeta function admits a
    meromorphic continuation to all of $\mathbb{C}$; it is an unbranched
    function with a simple pole at $s = 1$.

    The Hurwitz zeta function is a special case of the Lerch transcendent:

    .. math:: \zeta(s, a) = \Phi(1, s, a).

    This formula defines an analytic continuation for all possible values of
    $s$ and $a$ (also $\operatorname{Re}(a) < 0$), see the documentation of
    :class:`lerchphi` for a description of the branching behavior.

    If no value is passed for $a$ a default value of $a = 1$ is assumed,
    yielding the Riemann zeta function.

    Examples
    ========

    For $a = 1$ the Hurwitz zeta function reduces to the famous Riemann
    zeta function:

    .. math:: \zeta(s, 1) = \zeta(s) = \sum_{n=1}^\infty \frac{1}{n^s}.

    >>> from sympy import zeta
    >>> from sympy.abc import s
    >>> zeta(s, 1)
    zeta(s)
    >>> zeta(s)
    zeta(s)

    The Riemann zeta function can also be expressed using the Dirichlet eta
    function:

    >>> from sympy import dirichlet_eta
    >>> zeta(s).rewrite(dirichlet_eta)
    dirichlet_eta(s)/(1 - 2**(1 - s))

    The Riemann zeta function at nonnegative even and negative integer
    values is related to the Bernoulli numbers and polynomials:

    >>> zeta(2)
    pi**2/6
    >>> zeta(4)
    pi**4/90
    >>> zeta(0)
    -1/2
    >>> zeta(-1)
    -1/12
    >>> zeta(-4)
    0

    The specific formulae are:

    .. math:: \zeta(2n) = -\frac{(2\pi i)^{2n} B_{2n}}{2(2n)!}
    .. math:: \zeta(-n,a) = -\frac{B_{n+1}(a)}{n+1}

    No closed-form expressions are known at positive odd integers, but
    numerical evaluation is possible:

    >>> zeta(3).n()
    1.20205690315959

    The derivative of $\zeta(s, a)$ with respect to $a$ can be computed:

    >>> from sympy.abc import a
    >>> zeta(s, a).diff(a)
    -s*zeta(s + 1, a)

    However the derivative with respect to $s$ has no useful closed form
    expression:

    >>> zeta(s, a).diff(s)
    Derivative(zeta(s, a), s)

    The Hurwitz zeta function can be expressed in terms of the Lerch
    transcendent, :class:`~.lerchphi`:

    >>> from sympy import lerchphi
    >>> zeta(s, a).rewrite(lerchphi)
    lerchphi(1, s, a)

    See Also
    ========

    dirichlet_eta, lerchphi, polylog

    References
    ==========

    .. [1] https://dlmf.nist.gov/25.11
    .. [2] https://en.wikipedia.org/wiki/Hurwitz_zeta_function

    Nc                 C   s$  |t jkr| |S |t jks&|t jkr,t jS |t jkr<t jS |t jkrLt jS |t jkr\t jS |j}|d krpt j}|r|jrtd| ||d  S |t jkr|r|j	rdt
 t |  t| dt|  S nT|r|jr|jr| |t|d | S |jr |jr |jdks|jdkr t jS d S )Nr   r-   F)r   r9   rk   ComplexInfinityInfinityr5   r4   is_nonpositiver   is_evenr   r   r   rq   r   
is_integer)r]   r(   r&   Zsintr!   r!   r*   r_     s4    






(z	zeta.evalr   c                 K   sV   |dkr@|j r@|jr@|jr@dt t |  t| dt|  S td| ||d  S )Nr   r-   )r   Zis_nonnegativer   r   r   r   r   r?   r(   r&   rQ   r!   r!   r*   _eval_rewrite_as_bernoulli  s    &zzeta._eval_rewrite_as_bernoullic                 K   s.   |dkr| S | j d }t|ddd|    S )Nr   r   r-   )r3   rY   r   r!   r!   r*   _eval_rewrite_as_dirichlet_eta  s    
z#zeta._eval_rewrite_as_dirichlet_etac                 K   s   t d||S r`   ra   r   r!   r!   r*   rb     s    zzeta._eval_rewrite_as_lerchphic                 C   s"   | j d d j}|d k	r| S d S )Nr   r   re   )r?   Z
arg_is_oner!   r!   r*   _eval_is_finite  s    zzeta._eval_is_finitec                 K   sn   | j d }t| j dkr"| j d ntj}|jrj|jrJt|t|d | S |jrj|jdksd|jdkrjtj	S | S )Nr   r   F)
r3   lenr   r9   r   rq   r0   r   r   rk   )r?   r@   r(   r&   r!   r!   r*   r=   #  s    
zzeta._eval_expand_funcc                 C   sL   t | jdkr| j\}}n| jd \}}|dkrD| t|d | S td S )Nr-   r,   r   )r   r3   r0   r   )r?   rJ   r(   r&   r!   r!   r*   rK   .  s    z
zeta.fdiffr   c                    s|   t | jdkr| j\}}n| jtjf \}}z||\}}W n tk
rV   |  Y S X |jrh|jshttt	| 
|||S )Nr-   )r   r3   r   r9   rn   rp   rm   rq   rs   r0   _eval_as_leading_term)r?   rt   ru   rv   r(   r&   rC   er{   r!   r*   r   8  s    
zzeta._eval_as_leading_term)N)r   )r   )r   )r   )Nr   )rT   rU   rV   rW   r}   r_   r   r   rb   r   r=   rK   r   r~   r!   r!   r{   r*   r0     s   j




r0   c                   @   s>   e Zd ZdZedddZdddZejfdd	Z	d
d Z
dS )rY   a  
    Dirichlet eta function.

    Explanation
    ===========

    For $\operatorname{Re}(s) > 0$ and $0 < x \le 1$, this function is defined as

    .. math:: \eta(s, a) = \sum_{n=0}^\infty \frac{(-1)^n}{(n+a)^s}.

    It admits a unique analytic continuation to all of $\mathbb{C}$ for any
    fixed $a$ not a nonpositive integer. It is an entire, unbranched function.

    It can be expressed using the Hurwitz zeta function as

    .. math:: \eta(s, a) = \zeta(s,a) - 2^{1-s} \zeta\left(s, \frac{a+1}{2}\right)

    and using the generalized Genocchi function as

    .. math:: \eta(s, a) = \frac{G(1-s, a)}{2(s-1)}.

    In both cases the limiting value of $\log2 - \psi(a) + \psi\left(\frac{a+1}{2}\right)$
    is used when $s = 1$.

    Examples
    ========

    >>> from sympy import dirichlet_eta, zeta
    >>> from sympy.abc import s
    >>> dirichlet_eta(s).rewrite(zeta)
    Piecewise((log(2), Eq(s, 1)), ((1 - 2**(1 - s))*zeta(s), True))

    See Also
    ========

    zeta

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Dirichlet_eta_function
    .. [2] Peter Luschny, "An introduction to the Bernoulli function",
           https://arxiv.org/abs/2009.06743

    Nc                 C   s   |t jkr| |S |d krT|dkr*tdS t|}|tsPddd|   | S d S |dkrddlm} td|| ||d d  S t||}t||d d }|ts|ts|dd|  |  S d S )Nr   r-   r   digamma)r   r9   r   r0   rM   'sympy.functions.special.gamma_functionsr   )r]   r(   r&   r)   r   Zz1Zz2r!   r!   r*   r_   x  s     

 
zdirichlet_eta.evalr   c                 K   s   ddl m} |dkrDttdt|dfddd|   t| dfS ttd|| ||d d  t|dft||dd|  t||d d   dfS )Nr   r   r   r-   T)r   r   r   r   r
   r0   r?   r(   r&   rQ   r   r!   r!   r*   rR     s    0**z#dirichlet_eta._eval_rewrite_as_zetac                 K   sV   ddl m} ttd|| ||d d  t|dftd| |d|d   dfS )Nr   r   r-   r   T)r   r   r   r   r
   r   r   r!   r!   r*   _eval_rewrite_as_genocchi  s    *z'dirichlet_eta._eval_rewrite_as_genocchic                 C   s(   t dd | jD r$| t|S d S )Nc                 s   s   | ]}|j V  qd S rL   )rX   )r#   ir!   r!   r*   	<genexpr>  s     z,dirichlet_eta._eval_evalf.<locals>.<genexpr>)allr3   Zrewriter0   _eval_evalf)r?   precr!   r!   r*   r     s    zdirichlet_eta._eval_evalf)N)r   )rT   rU   rV   rW   r}   r_   rR   r   r9   r   r   r!   r!   r!   r*   rY   I  s   .
rY   c                   @   s$   e Zd ZdZedd Zdd ZdS )
riemann_xia  
    Riemann Xi function.

    Examples
    ========

    The Riemann Xi function is closely related to the Riemann zeta function.
    The zeros of Riemann Xi function are precisely the non-trivial zeros
    of the zeta function.

    >>> from sympy import riemann_xi, zeta
    >>> from sympy.abc import s
    >>> riemann_xi(s).rewrite(zeta)
    s*(s - 1)*gamma(s/2)*zeta(s)/(2*pi**(s/2))

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Riemann_Xi_function

    c                 C   sd   ddl m} t|}|tjtjfkr*tjS t|ts`||d  ||d  | dt|d    S d S Nr   )gammar   r-   )	r   r   r0   r   r5   r9   Halfr<   r   )r]   r(   r   r)   r!   r!   r*   r_     s    
zriemann_xi.evalc                 K   s<   ddl m} ||d  ||d  t| dt|d    S r   )r   r   r0   r   )r?   r(   rQ   r   r!   r!   r*   rR     s    z riemann_xi._eval_rewrite_as_zetaN)rT   rU   rV   rW   r}   r_   rR   r!   r!   r!   r*   r     s   
	r   c                   @   s   e Zd ZdZedddZdS )	stieltjesa  
    Represents Stieltjes constants, $\gamma_{k}$ that occur in
    Laurent Series expansion of the Riemann zeta function.

    Examples
    ========

    >>> from sympy import stieltjes
    >>> from sympy.abc import n, m
    >>> stieltjes(n)
    stieltjes(n)

    The zero'th stieltjes constant:

    >>> stieltjes(0)
    EulerGamma
    >>> stieltjes(0, 1)
    EulerGamma

    For generalized stieltjes constants:

    >>> stieltjes(n, m)
    stieltjes(n, m)

    Constants are only defined for integers >= 0:

    >>> stieltjes(-1)
    zoo

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Stieltjes_constants

    Nc                 C   s   |d k	r2t |}|tjkr tjS |jr2|jr2tjS |jrz|tjkrHtjS |dk rVtjS |jsbtjS |tjkrz|dkrztjS |j	rtjS |j
r|dkrtjS |jdkrtjS d S )Nr   r`   F)r   r   rk   r4   r   r   Z	is_Numberr5   Z
EulerGammaZis_extended_negativer[   r   )r]   r'   r&   r!   r!   r*   r_     s*    


zstieltjes.eval)N)rT   rU   rV   rW   r}   r_   r!   r!   r!   r*   r     s   $r   c                   C   s  t jtd d tdd d  tdtd d tt td  tdd  d td  d ttdd d d d  tdd  d td  d ttdd d d  dtd d td d ttdd d d  tdd d td d ttdd d d  ttt j td d	  t t t j td d	  dt td d
 tt j  tt d td  dt td d
 tt j  tt d td  dt d tdd  d tt td d  dtd  d  tt j  iS )Nr-      r/      r      
   rI   0         `   )r   r   r   r   r	   r   r   ZCatalanr!   r!   r!   r*   rZ     s.       ( $ " "   ( (
 >rZ   N)3rW   Zsympy.core.addr   Zsympy.core.cacher   Zsympy.core.functionr   r   r   Zsympy.core.numbersr   r   r	   Zsympy.core.relationalr
   Zsympy.core.singletonr   Zsympy.core.symbolr   Zsympy.core.sympifyr   Z%sympy.functions.combinatorial.numbersr   r   r   r   Z$sympy.functions.elementary.complexesr   r   r   r   Z&sympy.functions.elementary.exponentialr   r   r   Z#sympy.functions.elementary.integersr   r   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.functions.elementary.piecewiser   Zsympy.polys.polytoolsr   r   r;   r0   rY   r   r   rZ   r!   r!   r!   r*   <module>   s4    G - @S'B