§
    ]²Åjº3 ã                   ó€  — d 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
 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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#m$Z$ ddl%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 dBd„Z6 G d„ de¦  «        Z7 G d„ de¦  «        Z8 G d„ de¦  «        Z9 G d„ de¦  «        Z: G d„ de¦  «        Z; G d „ d!e¦  «        Z< G d"„ d#e¦  «        Z= G d$„ d%e¦  «        Z> G d&„ d'e¦  «        Z?d(„ Z@ G d)„ d*e¦  «        ZA G d+„ d,e¦  «        ZB G d-„ d.e¦  «        ZC G d/„ d0eC¦  «        ZD G d1„ d2eC¦  «        ZE G d3„ d4eC¦  «        ZF G d5„ d6eC¦  «        ZG G d7„ d8e¦  «        ZH G d9„ d:eH¦  «        ZI G d;„ d<eH¦  «        ZJ G d=„ d>e¦  «        ZK G d?„ d@e¦  «        ZLdAS )Cz� This module contains various functions that are special cases
    of incomplete gamma functions. It should probably be renamed. é    )Ú
EulerGamma)ÚAdd)Úcacheit)ÚFunctionÚArgumentIndexErrorÚ
expand_mul)ÚIÚpiÚRational)Úis_eq)ÚPow)ÚS)ÚDummyÚuniquely_named_symbol)Úsympify)Ú	factorialÚ
factorial2ÚRisingFactorial)Ú
polar_liftÚreÚ
unpolarify)ÚceilingÚfloor)ÚsqrtÚroot)ÚexpÚlogÚ	exp_polar)ÚcoshÚsinh)ÚcosÚsinÚsinc)ÚhyperÚmeijergTc                 óR  — | j         d         j        r/|rd|d<    | j        |fi |¤Žt          j        fS | t          j        fS |r/ | j         d         j        |fi |¤Ž                     ¦   «         \  }}n"| j         d                              ¦   «         \  }}|                      |t          |z  z   ¦  «        |                      |t          |z  z
  ¦  «        z   dz  }|                      |t          |z  z   ¦  «        |                      |t          |z  z
  ¦  «        z
  dt          z  z  }||fS )Nr   FÚcomplexé   )ÚargsÚis_extended_realÚexpandr   ÚZeroÚas_real_imagÚfuncr	   )ÚselfÚdeepÚhintsÚxÚyr   Úims          úXC:\Projects\Historical\venv\Lib\site-packages\sympy/functions/special/error_functions.pyÚreal_to_real_as_real_imagr6      s"  € Ø„y�„|Ô$ð "Øð 	"Ø$ˆE�)ÑØ�D”K Ð.Ð.¨Ð.Ð.µ´Ð7Ð7à�!œ&�>Ð!Øð +Ø"ˆtŒy˜Œ|Ô" 4Ð1Ð1¨5Ð1Ð1×>Ò>Ñ@Ô@‰ˆˆ1ˆ1àŒy˜Œ|×(Ò(Ñ*Ô*‰ˆˆ1Ø
�)Š)�A�˜!™‘GÑ
Ô
˜tŸyšy¨­Q¨q©S©Ñ1Ô1Ñ
1°1Ñ	4€BØ
�)Š)�A�˜!™‘GÑ
Ô
˜tŸyšy¨­Q¨q©S©Ñ1Ô1Ñ
1°Aµa±CÑ	8€BØ�ˆ8€Oó    c                   óÎ   ‡ — e Zd ZdZdZdd„Zdd„Zed„ ¦   «         Ze	e
d„ ¦   «         ¦   «         Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zdd„Zˆ fd„ZeZˆ xZS )Úerfa.  
    The Gauss error function.

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

    This function is defined as:

    .. math ::
        \mathrm{erf}(x) = \frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} \mathrm{d}t.

    Examples
    ========

    >>> from sympy import I, oo, erf
    >>> from sympy.abc import z

    Several special values are known:

    >>> erf(0)
    0
    >>> erf(oo)
    1
    >>> erf(-oo)
    -1
    >>> erf(I*oo)
    oo*I
    >>> erf(-I*oo)
    -oo*I

    In general one can pull out factors of -1 and $I$ from the argument:

    >>> erf(-z)
    -erf(z)

    The error function obeys the mirror symmetry:

    >>> from sympy import conjugate
    >>> conjugate(erf(z))
    erf(conjugate(z))

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(erf(z), z)
    2*exp(-z**2)/sqrt(pi)

    We can numerically evaluate the error function to arbitrary precision
    on the whole complex plane:

    >>> erf(4).evalf(30)
    0.999999984582742099719981147840

    >>> erf(-4*I).evalf(30)
    -1296959.73071763923152794095062*I

    See Also
    ========

    erfc: Complementary error function.
    erfi: Imaginary error function.
    erf2: Two-argument error function.
    erfinv: Inverse error function.
    erfcinv: Inverse Complementary error function.
    erf2inv: Inverse two-argument error function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Error_function
    .. [2] https://dlmf.nist.gov/7
    .. [3] https://mathworld.wolfram.com/Erf.html
    .. [4] https://functions.wolfram.com/GammaBetaErf/Erf

    Té   c                 óš   — |dk    r6dt          | j        d         dz   ¦  «        z  t          t          ¦  «        z  S t	          | |¦  «        ‚©Nr:   r(   r   ©r   r)   r   r
   r   ©r/   Úargindexs     r5   Úfdiffz	erf.fdiff   sF   € Ø�qŠ=ˆ=Ø•S˜$œ) Aœ,¨™/Ð)Ñ*Ô*Ñ*­4µ©8¬8Ñ3Ð3å$ T¨8Ñ4Ô4Ð4r7   c                 ó   — t           S ©z8
        Returns the inverse of this function.

        ©Úerfinvr>   s     r5   Úinversezerf.inverse†   s	   € õ
 ˆr7   c                 ó´  — |j         ra|t          j        u rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |j        rt          j        S t          |t          ¦  «        r|j        d         S t          |t          ¦  «        rt          j        |j        d         z
  S |j        rt          j        S t          |t          ¦  «        r|j        d         j        r|j        d         S |                     t          ¦  «        }|t          j        t          j        fv r|S |                     ¦   «         r | | ¦  «         S d S ©Nr   r:   )Ú	is_Numberr   ÚNaNÚInfinityÚOneÚNegativeInfinityÚNegativeOneÚis_zeror,   Ú
isinstancerD   r)   ÚerfcinvÚerf2invÚextract_multiplicativelyr	   Úcould_extract_minus_sign©ÚclsÚargÚts      r5   Úevalzerf.eval�   s>  € àŒ=ð 	Ø•a”eˆ|ˆ|Ý”u�Ø�œ
Ð"Ð"Ý”u�Ø�Ô*Ð*Ð*Ý”}Ð$Ø”ð Ý”v�å�c�6Ñ"Ô"ð 	 Ø”H˜Q”KÐå�c�7Ñ#Ô#ð 	'Ý”5˜3œ8 Aœ;Ñ&Ð&àŒ;ð 	Ý”6ˆMõ �c�7Ñ#Ô#ð 	¨¬°¬Ô(;ð 	Ø”8˜A”;Ðð ×(Ò(­Ñ+Ô+ˆØ•”�QÔ/Ð0Ð0Ð0ØˆJð ×'Ò'Ñ)Ô)ð 	Ø�C˜˜‘I”I�:Ðð	ð 	r7   c                 óv  — | dk     s	| dz  dk    rt           j        S t          |¦  «        }t          | dz
  t          d¦  «        z  ¦  «        }t	          |¦  «        dk    r|d          |dz  z  | dz
  z  | |z  z  S dt           j        |z  z  || z  z  | t          |¦  «        z  t          t          ¦  «        z  z  S ©Nr   r(   r:   éþÿÿÿ)	r   r,   r   r   ÚlenrM   r   r   r
   ©Únr2   Úprevious_termsÚks       r5   Útaylor_termzerf.taylor_term¯   s·   € ð ˆqŠ5ˆ5�A˜‘E˜Q’J�JÝ”6ˆMå˜‘
”
ˆAÝ�q˜1‘u�a ™dœd‘lÑ#Ô#ˆAÝ�>Ñ"Ô" QÒ&Ð&Ø& rÔ*Ð*¨Q°©TÑ1°Q¸±UÑ;¸Q¸q¹SÑAÐAà�œ¨Ñ)Ñ)¨A¨q©DÑ0°!µI¸a±L´L±.ÅÅbÁÄÑ2IÑJÐJr7   c                 óf   — |                       | j        d                              ¦   «         ¦  «        S ©Nr   ©r.   r)   Ú	conjugate©r/   s    r5   Ú_eval_conjugatezerf._eval_conjugate¼   ó&   € Ø�yŠy˜œ 1œ×/Ò/Ñ1Ô1Ñ2Ô2Ð2r7   c                 ó&   — | j         d         j        S rc   ©r)   r*   rf   s    r5   Ú_eval_is_realzerf._eval_is_real¿   ó   € ØŒy˜Œ|Ô,Ð,r7   c                 óN   — | j         d         j        rdS | j         d         j        S ©Nr   T)r)   Ú	is_finiter*   rf   s    r5   Ú_eval_is_finitezerf._eval_is_finiteÂ   s'   € ØŒ9�QŒ<Ô!ð 	1Ø�4à”9˜Q”<Ô0Ð0r7   c                 ó&   — | j         d         j        S rc   ©r)   rN   rf   s    r5   Ú_eval_is_zerozerf._eval_is_zeroÈ   ó   € ØŒy˜Œ|Ô#Ð#r7   c                 ó°   — ddl m} t          |dz  ¦  «        |z  t          j         |t          j        |dz  ¦  «        t          t          ¦  «        z  z
  z  S ©Nr   ©Ú
uppergammar(   ©Ú'sympy.functions.special.gamma_functionsrx   r   r   rK   ÚHalfr
   ©r/   ÚzÚkwargsrx   s       r5   Ú_eval_rewrite_as_uppergammazerf._eval_rewrite_as_uppergammaË   sQ   € ØFÐFÐFÐFÐFÐFÝ�A�q‘D‰zŒz˜!‰|�QœU Z Zµ´¸¸1¹Ñ%=Ô%=½dÅ2¹h¼hÑ%FÑFÑGÐGr7   c                 óÒ   — t           j        t          z
  |z  t          t          ¦  «        z  }t           j        t          z   t          |¦  «        t          t          |¦  «        z  z
  z  S ©N©r   rK   r	   r   r
   ÚfresnelcÚfresnels©r/   r}   r~   rV   s       r5   Ú_eval_rewrite_as_fresnelszerf._eval_rewrite_as_fresnelsÏ   óB   € ÝŒu•q‰y˜!‰m�D¥™HœHÑ$ˆÝ”�‘	�H S™MœM­A­h°s©m¬m©OÑ;Ñ<Ð<r7   c                 óÒ   — t           j        t          z
  |z  t          t          ¦  «        z  }t           j        t          z   t          |¦  «        t          t          |¦  «        z  z
  z  S r�   r‚   r…   s       r5   Ú_eval_rewrite_as_fresnelczerf._eval_rewrite_as_fresnelcÓ   r‡   r7   c           
      ó”   — |t          t          ¦  «        z  t          t          j        gg dgt          dd¦  «        g|dz  ¦  «        z  S ©Nr   éÿÿÿÿr(   ©r   r
   r%   r   r{   r   ©r/   r}   r~   s      r5   Ú_eval_rewrite_as_meijergzerf._eval_rewrite_as_meijerg×   s<   € Ø••b‘”‰z�'¥1¤6 (¨B°°µh¸rÀ1±o´oÐ5FÈÈ1ÉÑMÔMÑMÐMr7   c                 ó”   — d|z  t          t          ¦  «        z  t          t          j        gdt          j        z  g|dz   ¦  «        z  S ©Nr(   é   ©r   r
   r$   r   r{   rŽ   s      r5   Ú_eval_rewrite_as_hyperzerf._eval_rewrite_as_hyperÚ   s9   € Ø�‰s•4�‘8”8‰|�E¥1¤6 (¨Q­q¬v©X¨J¸¸A¹¸Ñ>Ô>Ñ>Ð>r7   c                 ó˜   — t          |dz  ¦  «        |z  |t          t          j        |dz  ¦  «        z  t          t          ¦  «        z  z
  S ©Nr(   ©r   Úexpintr   r{   r
   rŽ   s      r5   Ú_eval_rewrite_as_expintzerf._eval_rewrite_as_expintÝ   s;   € Ý�A�q‘D‰zŒz˜!‰|˜a¥¥q¤v¨q°!©tÑ 4Ô 4Ñ4µT½"±X´XÑ=Ñ=Ð=r7   Nc                 ó  — ddl m} |rV |||t          j        ¦  «        }|t          j        u r1t          j        t          | ¦  «        t          |dz   ¦  «        z  z   S t          j        t          |¦  «        t          |dz   ¦  «        z  z
  S )Nr   )Úlimitr(   )	Úsympy.series.limitsr›   r   rJ   rL   rM   Ú_erfsr   rK   )r/   r}   Úlimitvarr~   r›   Úlims         r5   Ú_eval_rewrite_as_tractablezerf._eval_rewrite_as_tractableà   s‰   € Ø-Ð-Ð-Ð-Ð-Ð-Øð 	<Ø�%˜˜8¥Q¤ZÑ0Ô0ˆCØ•aÔ(Ð(Ð(Ý”}¥u¨a¨R¡y¤yµ°a¸±d°U±´Ñ';Ñ;Ð;ÝŒu•u˜Q‘x”x¥ Q¨¡T E¡
¤
Ñ*Ñ*Ð*r7   c                 ó:   — t           j        t          |¦  «        z
  S r�   )r   rK   ÚerfcrŽ   s      r5   Ú_eval_rewrite_as_erfczerf._eval_rewrite_as_erfcè   s   € ÝŒu•t˜A‘w”w‰Ðr7   c                 óB   — t            t          t           |z  ¦  «        z  S r�   ©r	   ÚerfirŽ   s      r5   Ú_eval_rewrite_as_erfizerf._eval_rewrite_as_erfië   s   € Ýˆr•$•q˜‘s‘)”)‰|Ðr7   r   c                 óN  — | j         d                              |||¬¦  «        }|                     |d¦  «        }|t          j        u r |                     |d|dk    rdnd¬¦  «        }||j        v r!|j        rd|z  t          t          ¦  «        z  S |  
                    |¦  «        S )Nr   ©ÚlogxÚcdirrŒ   ú-ú+©Údirr(   )r)   Úas_leading_termÚsubsr   ÚComplexInfinityr›   Úfree_symbolsrN   r   r
   r.   ©r/   r2   rª   r«   rV   Úarg0s         r5   Ú_eval_as_leading_termzerf._eval_as_leading_termî   s�   € ØŒi˜Œl×*Ò*¨1°4¸dÐ*ÑCÔCˆØ�xŠx˜˜1‰~Œ~ˆà•1Ô$Ð$Ð$Ø—9’9˜Q ¨d°bªj¨j s s¸c�9ÑBÔBˆDØ�Ô Ð Ð  T¤\Ð Ø�S‘5��b™œ‘>Ð!à—9’9˜T‘?”?Ð"r7   c                 ó@  •‡— ddl m} |d         }|t          j        t          j        fv rÊ| j        d         Š	 ‰                     |¦  «        \  }}n# t          t          f$ r | cY S w xY w| }|j	        r€t          ||z  ¦  «        }	ˆfd„t          |	¦  «        D ¦   «          |d‰|	z  z  |¦  «        gz   }
t          j        t          ‰dz   ¦  «        t          t          ¦  «        z  t!          |
Ž z  z
  S t#          t$          | ¦  «                             ||||¦  «        S )Nr   ©ÚOrderc                 ó~   •— g | ]9}t           j        |z  t          d |z  dz
  ¦  «        z  ‰d |z  dz   z  d |z  z  z  ‘Œ:S ©r(   r:   )r   rM   r   ©Ú.0r`   r}   s     €r5   ú
<listcomp>z%erf._eval_aseries.<locals>.<listcomp>  s`   ø€ ð +ð +ð +Øõ ”] AÑ%­
°1°Q±3¸±7Ñ(;Ô(;Ñ;¸qÀ1ÀQÁ3ÈÁ7¹|ÈaÐQRÉdÑ?RÑSð +ð +ð +r7   r:   r(   )Úsympy.series.orderr¹   r   rJ   rL   r)   ÚleadtermÚ
ValueErrorÚNotImplementedErrorÚis_positiver   ÚrangerK   r   r   r
   r   Úsuperr9   Ú_eval_aseries)r/   r^   Úargs0r2   rª   r¹   ÚpointÚ_ÚexÚnewnÚsr}   Ú	__class__s              @€r5   rÆ   zerf._eval_aseriesù   sD  øø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆà•Q”Z¥Ô!3Ð4Ð4Ð4Ø”	˜!”ˆAðØŸ
š
 1™œ‘��2�2øÝÕ 3Ð4ð ð ð Ø���ðøøøð �ˆBØŒ~ð ?Ý˜q ™t‘}”}�ð+ð +ð +ð +Ý# D™kœkð+ñ +ô +Ø.3¨e°A°a¸±g±I¸qÑ.AÔ.AÐ-BñC�å”u¥ Q¨¡T E¡
¤
­4µ©8¬8Ñ 3µs¸A°wÑ>Ñ>Ð>å•S˜$ÑÔ×-Ò-¨a°¸¸4Ñ@Ô@Ð@s   ¹A ÁA(Á'A(©r:   r�   rc   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
unbranchedr@   rE   ÚclassmethodrX   Ústaticmethodr   ra   rg   rk   rp   rs   r   r†   r‰   r�   r”   r™   r    r£   r§   r¶   rÆ   r6   r-   Ú__classcell__©rÍ   s   @r5   r9   r9   0   sš  ø€ € € € € ðJð JðX €Jð5ð 5ð 5ð 5ðð ð ð ð ðð ñ „[ððB Øð	Kð 	Kñ „Wñ „\ð	Kð3ð 3ð 3ð-ð -ð -ð1ð 1ð 1ð$ð $ð $ðHð Hð Hð=ð =ð =ð=ð =ð =ðNð Nð Nð?ð ?ð ?ð>ð >ð >ð+ð +ð +ð +ðð ð ðð ð ð	#ð 	#ð 	#ð 	#ðAð Að Að Að Að* -€L€L€L€L€Lr7   r9   c                   ó¾   — e Zd ZdZdZdd„Zdd„Zed„ ¦   «         Ze	e
d„ ¦   «         ¦   «         Zd„ Zd	„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„ZeZd„ Zd
S )r¢   a&  
    Complementary Error Function.

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

    The function is defined as:

    .. math ::
        \mathrm{erfc}(x) = \frac{2}{\sqrt{\pi}} \int_x^\infty e^{-t^2} \mathrm{d}t

    Examples
    ========

    >>> from sympy import I, oo, erfc
    >>> from sympy.abc import z

    Several special values are known:

    >>> erfc(0)
    1
    >>> erfc(oo)
    0
    >>> erfc(-oo)
    2
    >>> erfc(I*oo)
    -oo*I
    >>> erfc(-I*oo)
    oo*I

    The error function obeys the mirror symmetry:

    >>> from sympy import conjugate
    >>> conjugate(erfc(z))
    erfc(conjugate(z))

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(erfc(z), z)
    -2*exp(-z**2)/sqrt(pi)

    It also follows

    >>> erfc(-z)
    2 - erfc(z)

    We can numerically evaluate the complementary error function to arbitrary
    precision on the whole complex plane:

    >>> erfc(4).evalf(30)
    0.0000000154172579002800188521596734869

    >>> erfc(4*I).evalf(30)
    1.0 - 1296959.73071763923152794095062*I

    See Also
    ========

    erf: Gaussian error function.
    erfi: Imaginary error function.
    erf2: Two-argument error function.
    erfinv: Inverse error function.
    erfcinv: Inverse Complementary error function.
    erf2inv: Inverse two-argument error function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Error_function
    .. [2] https://dlmf.nist.gov/7
    .. [3] https://mathworld.wolfram.com/Erfc.html
    .. [4] https://functions.wolfram.com/GammaBetaErf/Erfc

    Tr:   c                 óš   — |dk    r6dt          | j        d         dz   ¦  «        z  t          t          ¦  «        z  S t	          | |¦  «        ‚)Nr:   r[   r   r(   r=   r>   s     r5   r@   z
erfc.fdiff`  sF   € Ø�qŠ=ˆ=Ø•c˜4œ9 Qœ<¨™?Ð*Ñ+Ô+Ñ+­Dµ©H¬HÑ4Ð4å$ T¨8Ñ4Ô4Ð4r7   c                 ó   — t           S rB   ©rP   r>   s     r5   rE   zerfc.inversef  s	   € õ
 ˆr7   c                 ó  — |j         rG|t          j        u rt          j        S |t          j        u rt          j        S |j        rt          j        S t          |t          ¦  «        rt          j        |j	        d         z
  S t          |t          ¦  «        r|j	        d         S |j        rt          j        S |                     t          ¦  «        }|t          j        t          j        fv r| S |                     ¦   «         rd | | ¦  «        z
  S d S )Nr   r(   )rH   r   rI   rJ   r,   rN   rK   rO   rD   r)   rP   rR   r	   rL   rS   rT   s      r5   rX   z	erfc.evalm  sü   € àŒ=ð 	Ø•a”eˆ|ˆ|Ý”u�Ø�œ
Ð"Ð"Ý”v�Ø”ð Ý”u�å�c�6Ñ"Ô"ð 	'Ý”5˜3œ8 Aœ;Ñ&Ð&å�c�7Ñ#Ô#ð 	Ø”8˜A”;ÐàŒ;ð 	Ý”5ˆLð ×(Ò(­Ñ+Ô+ˆØ•”�QÔ/Ð0Ð0Ð0Ø�4ˆKð ×'Ò'Ñ)Ô)ð 	!Ø�s�s˜C˜4‘y”y‘=Ð ð	!ð 	!r7   c                 óš  — | dk    rt           j        S | dk     s	| dz  dk    rt           j        S t          |¦  «        }t	          | dz
  t          d¦  «        z  ¦  «        }t          |¦  «        dk    r|d          |dz  z  | dz
  z  | |z  z  S dt           j        |z  z  || z  z  | t          |¦  «        z  t          t          ¦  «        z  z  S rZ   )
r   rK   r,   r   r   r\   rM   r   r   r
   r]   s       r5   ra   zerfc.taylor_term‰  sÇ   € ð �Š6ˆ6Ý”5ˆLØ�ŠUˆU�a˜!‘e˜q’j�jÝ”6ˆMå˜‘
”
ˆAÝ�q˜1‘u�a ™dœd‘lÑ#Ô#ˆAÝ�>Ñ"Ô" QÒ&Ð&Ø& rÔ*Ð*¨Q°©TÑ1°Q¸±UÑ;¸Q¸q¹SÑAÐAà�!œ-¨Ñ*Ñ*¨Q°©TÑ1°1µY¸q±\´\±>Å$ÅrÁ(Ä(Ñ3JÑKÐKr7   c                 óf   — |                       | j        d                              ¦   «         ¦  «        S rc   rd   rf   s    r5   rg   zerfc._eval_conjugate˜  rh   r7   c                 ó&   — | j         d         j        S rc   rj   rf   s    r5   rk   zerfc._eval_is_real›  rl   r7   Nc                 ób   — |                       t          ¦  «                              dd|¬¦  «        S ©NÚ	tractableT)r0   rž   ©Úrewriter9   ©r/   r}   rž   r~   s       r5   r    zerfc._eval_rewrite_as_tractablež  ó)   € Ø�|Š|�CÑ Ô ×(Ò(¨¸4È(Ð(ÑSÔSÐSr7   c                 ó:   — t           j        t          |¦  «        z
  S r�   )r   rK   r9   rŽ   s      r5   Ú_eval_rewrite_as_erfzerfc._eval_rewrite_as_erf¡  s   € ÝŒu•s˜1‘v”v‰~Ðr7   c                 óZ   — t           j        t          t          t          |z  ¦  «        z  z   S r�   )r   rK   r	   r¦   rŽ   s      r5   r§   zerfc._eval_rewrite_as_erfi¤  s   € ÝŒu•q��a ™c™œ‘{Ñ"Ð"r7   c                 óì   — t           j        t          z
  |z  t          t          ¦  «        z  }t           j        t           j        t          z   t          |¦  «        t          t          |¦  «        z  z
  z  z
  S r�   r‚   r…   s       r5   r†   zerfc._eval_rewrite_as_fresnels§  sI   € ÝŒu•q‰y˜!‰m�D¥™HœHÑ$ˆÝŒu�œ¥™	¥H¨S¡M¤MµAµh¸s±m´m±OÑ$CÑDÑDÐDr7   c                 óì   — t           j        t          z
  |z  t          t          ¦  «        z  }t           j        t           j        t          z   t          |¦  «        t          t          |¦  «        z  z
  z  z
  S r�   r‚   r…   s       r5   r‰   zerfc._eval_rewrite_as_fresnelc«  sI   € ÝŒu•Q‰w˜‰k�$�r™(œ(Ñ"ˆÝŒu�œ¥™	¥H¨S¡M¤MµAµh¸s±m´m±OÑ$CÑDÑDÐDr7   c                 ó®   — t           j        |t          t          ¦  «        z  t	          t           j        gg dgt          dd¦  «        g|dz  ¦  «        z  z
  S r‹   )r   rK   r   r
   r%   r{   r   rŽ   s      r5   r�   zerfc._eval_rewrite_as_meijerg¯  sF   € ÝŒu�q��b™œ‘z¥'­1¬6¨(°B¸¸½hÀrÈ1¹o¼oÐ=NÐPQÐSTÑPTÑ"UÔ"UÑUÑUÐUr7   c                 ó®   — t           j        d|z  t          t          ¦  «        z  t	          t           j        gdt           j        z  g|dz   ¦  «        z  z
  S r‘   )r   rK   r   r
   r$   r{   rŽ   s      r5   r”   zerfc._eval_rewrite_as_hyper²  s@   € ÝŒu�q˜‘s�4¥™8œ8‘|¥E­1¬6¨(°Qµq´v±X°JÀÀAÁÀÑ$FÔ$FÑFÑFÐFr7   c                 óÊ   — ddl m} t          j        t	          |dz  ¦  «        |z  t          j         |t          j        |dz  ¦  «        t	          t          ¦  «        z  z
  z  z
  S rv   )rz   rx   r   rK   r   r{   r
   r|   s       r5   r   z erfc._eval_rewrite_as_uppergammaµ  sX   € ØFÐFÐFÐFÐFÐFÝŒu•t˜A˜q™D‘z”z !‘|¥Q¤U¨Z¨Z½¼ÀÀ1ÁÑ-EÔ-EÅdÍ2ÁhÄhÑ-NÑ%NÑOÑOÐOr7   c                 ó²   — t           j        t          |dz  ¦  «        |z  z
  |t          t           j        |dz  ¦  «        z  t          t
          ¦  «        z  z   S r–   )r   rK   r   r˜   r{   r
   rŽ   s      r5   r™   zerfc._eval_rewrite_as_expint¹  sB   € ÝŒu•t˜A˜q™D‘z”z !‘|Ñ# a­­q¬v°q¸!±tÑ(<Ô(<Ñ&<½TÅ"¹X¼XÑ&EÑEÐEr7   c                 ó6   — |                       t          ¦  «        S r�   rã   ©r/   r1   s     r5   Ú_eval_expand_funczerfc._eval_expand_func¼  ó   € Ø�|Š|�CÑ Ô Ð r7   r   c                 ó   — | j         d                              |||¬¦  «        }|                     |d¦  «        }|t          j        u r |                     |d|dk    rdnd¬¦  «        }|j        rt          j        S |                      |¦  «        S )Nr   r©   rŒ   r¬   r­   r®   )	r)   r°   r±   r   r²   r›   rN   rK   r.   r´   s         r5   r¶   zerfc._eval_as_leading_term¿  s…   € ØŒi˜Œl×*Ò*¨1°4¸dÐ*ÑCÔCˆØ�xŠx˜˜1‰~Œ~ˆà•1Ô$Ð$Ð$Ø—9’9˜Q ¨d°bªj¨j s s¸c�9ÑBÔBˆDØŒ<ð 	#Ý”5ˆLà—9’9˜T‘?”?Ð"r7   c                 ód   — t           j        t          | j        Ž                      ||||¦  «        z
  S r�   )r   rK   r9   r)   rÆ   )r/   r^   rÇ   r2   rª   s        r5   rÆ   zerfc._eval_aseriesÌ  s)   € ÝŒu•s˜DœI�×4Ò4°Q¸¸qÀ$ÑGÔGÑGÐGr7   rÎ   r�   rc   )rÏ   rÐ   rÑ   rÒ   rÓ   r@   rE   rÔ   rX   rÕ   r   ra   rg   rk   r    rè   r§   r†   r‰   r�   r”   r   r™   rò   r¶   r6   r-   rÆ   © r7   r5   r¢   r¢     s‘  € € € € € ðJð JðX €Jð5ð 5ð 5ð 5ðð ð ð ð ð!ð !ñ „[ð!ð6 ØðLð Lñ „Wñ „\ðLð3ð 3ð 3ð-ð -ð -ðTð Tð Tð Tðð ð ð#ð #ð #ðEð Eð EðEð Eð EðVð Vð VðGð Gð GðPð Pð PðFð Fð Fð!ð !ð !ð	#ð 	#ð 	#ð 	#ð -€LðHð Hð Hð Hð Hr7   r¢   c                   óÆ   ‡ — e Zd ZdZdZdd„Zed„ ¦   «         Zee	d„ ¦   «         ¦   «         Z
d„ Zd„ Zd	„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZdd„Zˆ fd„Zˆ xZS )r¦   aí  
    Imaginary error function.

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

    The function erfi is defined as:

    .. math ::
        \mathrm{erfi}(x) = \frac{2}{\sqrt{\pi}} \int_0^x e^{t^2} \mathrm{d}t

    Examples
    ========

    >>> from sympy import I, oo, erfi
    >>> from sympy.abc import z

    Several special values are known:

    >>> erfi(0)
    0
    >>> erfi(oo)
    oo
    >>> erfi(-oo)
    -oo
    >>> erfi(I*oo)
    I
    >>> erfi(-I*oo)
    -I

    In general one can pull out factors of -1 and $I$ from the argument:

    >>> erfi(-z)
    -erfi(z)

    >>> from sympy import conjugate
    >>> conjugate(erfi(z))
    erfi(conjugate(z))

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(erfi(z), z)
    2*exp(z**2)/sqrt(pi)

    We can numerically evaluate the imaginary error function to arbitrary
    precision on the whole complex plane:

    >>> erfi(2).evalf(30)
    18.5648024145755525987042919132

    >>> erfi(-2*I).evalf(30)
    -0.995322265018952734162069256367*I

    See Also
    ========

    erf: Gaussian error function.
    erfc: Complementary error function.
    erf2: Two-argument error function.
    erfinv: Inverse error function.
    erfcinv: Inverse Complementary error function.
    erf2inv: Inverse two-argument error function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Error_function
    .. [2] https://mathworld.wolfram.com/Erfi.html
    .. [3] https://functions.wolfram.com/GammaBetaErf/Erfi

    Tr:   c                 ó˜   — |dk    r5dt          | j        d         dz  ¦  «        z  t          t          ¦  «        z  S t	          | |¦  «        ‚r<   r=   r>   s     r5   r@   z
erfi.fdiff  sC   € Ø�qŠ=ˆ=Ø•S˜œ 1œ q™Ñ)Ô)Ñ)­$­r©(¬(Ñ2Ð2å$ T¨8Ñ4Ô4Ð4r7   c                 ó®  — |j         rG|t          j        u rt          j        S |j        rt          j        S |t          j        u rt          j        S |j        rt          j        S |                     ¦   «         r | | ¦  «         S |                     t          ¦  «        }|�²|t          j        u rt          S t          |t          ¦  «        rt          |j        d         z  S t          |t          ¦  «        r"t          t          j        |j        d         z
  z  S t          |t          ¦  «        r)|j        d         j        rt          |j        d         z  S d S d S d S rG   )rH   r   rI   rN   r,   rJ   rS   rR   r	   rO   rD   r)   rP   rK   rQ   ©rU   r}   Únzs      r5   rX   z	erfi.eval"  s?  € àŒ;ð 	"Ø•A”EˆzˆzÝ”u�Ø”ð "Ý”v�Ø•a”j��Ý”zÐ!àŒ9ð 	Ý”6ˆMð ×%Ò%Ñ'Ô'ð 	Ø�C˜˜‘G”G�8ˆOð ×'Ò'­Ñ*Ô*ˆØˆ>Ø•Q”ZÐÐÝ�Ý˜"�fÑ%Ô%ð $Ý˜œ œ‘|Ð#Ý˜"�gÑ&Ô&ð .Ý�!œ% "¤'¨!¤*Ñ,Ñ-Ð-å˜"�gÑ&Ô&ð $¨2¬7°1¬:Ô+=ð $Ý˜œ œ‘|Ð#ð ˆ>ð$ð $ð $ð $r7   c                 óT  — | dk     s	| dz  dk    rt           j        S t          |¦  «        }t          | dz
  t          d¦  «        z  ¦  «        }t	          |¦  «        dk    r|d         |dz  z  | dz
  z  | |z  z  S d|| z  z  | t          |¦  «        z  t          t          ¦  «        z  z  S rZ   )r   r,   r   r   r\   r   r   r
   r]   s       r5   ra   zerfi.taylor_term@  s§   € ð ˆqŠ5ˆ5�A˜‘E˜Q’J�JÝ”6ˆMå˜‘
”
ˆAÝ�q˜1‘u�a ™dœd‘lÑ#Ô#ˆAÝ�>Ñ"Ô" QÒ&Ð&Ø% bÔ)¨A¨q©DÑ0°A¸±EÑ:¸A¸a¹CÑ@Ð@à˜1˜a™4‘x ¥9¨Q¡<¤<¡µµR±´Ñ!8Ñ9Ð9r7   c                 óf   — |                       | j        d                              ¦   «         ¦  «        S rc   rd   rf   s    r5   rg   zerfi._eval_conjugateM  rh   r7   c                 ó&   — | j         d         j        S rc   rj   rf   s    r5   Ú_eval_is_extended_realzerfi._eval_is_extended_realP  rl   r7   c                 ó&   — | j         d         j        S rc   rr   rf   s    r5   rs   zerfi._eval_is_zeroS  rt   r7   Nc                 ób   — |                       t          ¦  «                              dd|¬¦  «        S rá   rã   rå   s       r5   r    zerfi._eval_rewrite_as_tractableV  ræ   r7   c                 óB   — t            t          t           |z  ¦  «        z  S r�   )r	   r9   rŽ   s      r5   rè   zerfi._eval_rewrite_as_erfY  s   € Ýˆr•#•a˜‘c‘(”(‰{Ðr7   c                 óP   — t           t          t           |z  ¦  «        z  t           z
  S r�   )r	   r¢   rŽ   s      r5   r£   zerfi._eval_rewrite_as_erfc\  s   € Ý••a˜‘c‘”‰{�Q‰Ðr7   c                 óÒ   — t           j        t          z   |z  t          t          ¦  «        z  }t           j        t          z
  t          |¦  «        t          t          |¦  «        z  z
  z  S r�   r‚   r…   s       r5   r†   zerfi._eval_rewrite_as_fresnels_  r‡   r7   c                 óÒ   — t           j        t          z   |z  t          t          ¦  «        z  }t           j        t          z
  t          |¦  «        t          t          |¦  «        z  z
  z  S r�   r‚   r…   s       r5   r‰   zerfi._eval_rewrite_as_fresnelcc  r‡   r7   c           
      ó–   — |t          t          ¦  «        z  t          t          j        gg dgt          dd¦  «        g|dz   ¦  «        z  S r‹   r�   rŽ   s      r5   r�   zerfi._eval_rewrite_as_meijergg  s>   € Ø••b‘”‰z�'¥1¤6 (¨B°°µh¸rÀ1±o´oÐ5FÈÈAÉÈÑNÔNÑNÐNr7   c                 ó’   — d|z  t          t          ¦  «        z  t          t          j        gdt          j        z  g|dz  ¦  «        z  S r‘   r“   rŽ   s      r5   r”   zerfi._eval_rewrite_as_hyperj  s7   € Ø�‰s•4�‘8”8‰|�E¥1¤6 (¨Q­q¬v©X¨J¸¸1¹Ñ=Ô=Ñ=Ð=r7   c                 ó´   — ddl m} t          |dz   ¦  «        |z   |t          j        |dz   ¦  «        t          t
          ¦  «        z  t          j        z
  z  S rv   )rz   rx   r   r   r{   r
   rK   r|   s       r5   r   z erfi._eval_rewrite_as_uppergammam  sU   € ØFÐFÐFÐFÐFÐFÝ�Q˜‘T�E‰{Œ{˜1‰}˜j˜j­¬°!°Q±$°Ñ7Ô7½½R¹¼Ñ@Å1Ä5ÑHÑIÐIr7   c                 óœ   — t          |dz   ¦  «        |z  |t          t          j        |dz   ¦  «        z  t          t          ¦  «        z  z
  S r–   r—   rŽ   s      r5   r™   zerfi._eval_rewrite_as_expintq  s?   € Ý�Q˜‘T�E‰{Œ{˜1‰}˜q¥­¬°°A±°Ñ!6Ô!6Ñ6µt½B±x´xÑ?Ñ?Ð?r7   c                 ó6   — |                       t          ¦  «        S r�   rã   rñ   s     r5   rò   zerfi._eval_expand_funct  ró   r7   r   c                 ó*  — | j         d                              |||¬¦  «        }|                     |d¦  «        }||j        v r!|j        rd|z  t          t          ¦  «        z  S |j        r|                      |¦  «        S |                      |¦  «        S )Nr   r©   r(   )	r)   r°   r±   r³   rN   r   r
   ro   r.   r´   s         r5   r¶   zerfi._eval_as_leading_termy  s†   € ØŒi˜Œl×*Ò*¨1°4¸dÐ*ÑCÔCˆØ�xŠx˜˜1‰~Œ~ˆà�Ô Ð Ð  T¤\Ð Ø�S‘5��b™œ‘>Ð!ØŒ^ð 	#Ø—9’9˜T‘?”?Ð"Ø�yŠy˜‰~Œ~Ðr7   c                 ó€  •‡— ddl m} |d         }|t          j        u rv| j        d         Šˆfd„t          |¦  «        D ¦   «          |d‰|z  z  |¦  «        gz   }t           t          ‰dz  ¦  «        t          t          ¦  «        z  t          |Ž z  z   S t          t          | ¦  «                             ||||¦  «        S )Nr   r¸   c                 ó^   •— g | ])}t          d |z  dz
  ¦  «        d |z  ‰d |z  dz   z  z  z  ‘Œ*S r»   )r   r¼   s     €r5   r¾   z&erfi._eval_aseries.<locals>.<listcomp>‰  sS   ø€ ð 'ð 'ð 'Øõ ˜A˜a™C !™GÑ$Ô$¨¨1©¨q°1°Q±3¸±7©|Ñ(;Ñ<ð 'ð 'ð 'r7   r:   r(   )r¿   r¹   r   rJ   r)   rÄ   r	   r   r   r
   r   rÅ   r¦   rÆ   ©
r/   r^   rÇ   r2   rª   r¹   rÈ   rÌ   r}   rÍ   s
           @€r5   rÆ   zerfi._eval_aseriesƒ  sÓ   øø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆà•A”JÐÐØ”	˜!”ˆAð'ð 'ð 'ð 'Ý" 1™XœXð'ñ 'ô 'Ø*/¨%°°!°Q±$±¸Ñ*:Ô*:Ð);ñ<ˆAå�2�˜Q ™T™œ¥4­¡8¤8Ñ+­s°A¨wÑ6Ñ6Ð6å•T˜4Ñ Ô ×.Ò.¨q°%¸¸DÑAÔAÐAr7   rÎ   r�   rc   )rÏ   rÐ   rÑ   rÒ   rÓ   r@   rÔ   rX   rÕ   r   ra   rg   rÿ   rs   r    rè   r£   r†   r‰   r�   r”   r   r™   rò   r6   r-   r¶   rÆ   rÖ   r×   s   @r5   r¦   r¦   Ð  s™  ø€ € € € € ðGð GðR €Jð5ð 5ð 5ð 5ð ð$ð $ñ „[ð$ð: Øð	:ð 	:ñ „Wñ „\ð	:ð3ð 3ð 3ð-ð -ð -ð$ð $ð $ðTð Tð Tð Tðð ð ðð ð ð=ð =ð =ð=ð =ð =ðOð Oð Oð>ð >ð >ðJð Jð Jð@ð @ð @ð!ð !ð !ð -€Lðð ð ð ð
Bð 
Bð 
Bð 
Bð 
Bð 
Bð 
Bð 
Bð 
Br7   r¦   c                   ó|   — e Zd ZdZd„ Ze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S )Úerf2a?  
    Two-argument error function.

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

    This function is defined as:

    .. math ::
        \mathrm{erf2}(x, y) = \frac{2}{\sqrt{\pi}} \int_x^y e^{-t^2} \mathrm{d}t

    Examples
    ========

    >>> from sympy import oo, erf2
    >>> from sympy.abc import x, y

    Several special values are known:

    >>> erf2(0, 0)
    0
    >>> erf2(x, x)
    0
    >>> erf2(x, oo)
    1 - erf(x)
    >>> erf2(x, -oo)
    -erf(x) - 1
    >>> erf2(oo, y)
    erf(y) - 1
    >>> erf2(-oo, y)
    erf(y) + 1

    In general one can pull out factors of -1:

    >>> erf2(-x, -y)
    -erf2(x, y)

    The error function obeys the mirror symmetry:

    >>> from sympy import conjugate
    >>> conjugate(erf2(x, y))
    erf2(conjugate(x), conjugate(y))

    Differentiation with respect to $x$, $y$ is supported:

    >>> from sympy import diff
    >>> diff(erf2(x, y), x)
    -2*exp(-x**2)/sqrt(pi)
    >>> diff(erf2(x, y), y)
    2*exp(-y**2)/sqrt(pi)

    See Also
    ========

    erf: Gaussian error function.
    erfc: Complementary error function.
    erfi: Imaginary error function.
    erfinv: Inverse error function.
    erfcinv: Inverse Complementary error function.
    erf2inv: Inverse two-argument error function.

    References
    ==========

    .. [1] https://functions.wolfram.com/GammaBetaErf/Erf2/

    c                 óú   — | j         \  }}|dk    r+dt          |dz   ¦  «        z  t          t          ¦  «        z  S |dk    r+dt          |dz   ¦  «        z  t          t          ¦  «        z  S t	          | |¦  «        ‚)Nr:   r[   r(   )r)   r   r   r
   r   ©r/   r?   r2   r3   s       r5   r@   z
erf2.fdiffÖ  sq   € ØŒy‰ˆˆ1Ø�qŠ=ˆ=Ø•c˜1˜a™4˜%‘j”j‘=¥¥b¡¤Ñ)Ð)Ø˜Š]ˆ]Ø•S˜!˜Q™$˜‘Z”Z‘<¥¥R¡¤Ñ(Ð(å$ T¨8Ñ4Ô4Ð4r7   c                 óÂ  — t           j        t           j        t           j        f}|t           j        u s|t           j        u rt           j        S ||k    rt           j        S ||v s||v rt          |¦  «        t          |¦  «        z
  S t          |t          ¦  «        r|j        d         |k    r|j        d         S |j	        s#|j	        s|j
        r|j        s|j
        r&|j        rt          |¦  «        t          |¦  «        z
  S |                     ¦   «         }|                     ¦   «         }|r|r | | | ¦  «         S |s|rt          |¦  «        t          |¦  «        z
  S d S rG   )r   rJ   rL   r,   rI   r9   rO   rQ   r)   rN   r*   Úis_infiniterS   )rU   r2   r3   ÚchkÚsign_xÚsign_ys         r5   rX   z	erf2.evalß  s]  € åŒz�1Ô-­q¬vÐ6ˆØ•”ˆ:ˆ:˜�aœe˜˜Ý”5ˆLØ�!ŠVˆVÝ”6ˆMØ�#ˆXˆX˜˜c˜˜Ý�q‘6”6�C ™FœF‘?Ð"å�a�Ñ!Ô!ð 	 a¤f¨Q¤i°1¢n nØ”6˜!”9ÐàŒ9ð 	#˜œ	ð 	# QÔ%7ð 	#¸A¼Mð 	#ØÔ"ð	#Ø'(¤}ð	#å�q‘6”6�C ™FœF‘?Ð"ð ×+Ò+Ñ-Ô-ˆØ×+Ò+Ñ-Ô-ˆØð 	!�vð 	!Ø�C˜˜˜Q˜B‘K”K�<ÐØð 	!˜ð 	!Ý�q‘6”6�#˜a™&œ&‘=Ð ð	!ð 	!r7   c                 ó¢   — |                       | j        d                              ¦   «         | j        d                              ¦   «         ¦  «        S rG   rd   rf   s    r5   rg   zerf2._eval_conjugateø  s:   € Ø�yŠy˜œ 1œ×/Ò/Ñ1Ô1°4´9¸Q´<×3IÒ3IÑ3KÔ3KÑLÔLÐLr7   c                 óJ   — | j         d         j        o| j         d         j        S rG   rj   rf   s    r5   rÿ   zerf2._eval_is_extended_realû  s   € ØŒy˜Œ|Ô,ÐN°´¸1´Ô1NÐNr7   c                 ó@   — t          |¦  «        t          |¦  «        z
  S r�   ©r9   ©r/   r2   r3   r~   s       r5   rè   zerf2._eval_rewrite_as_erfþ  s   € Ý�1‰vŒv�˜A™œ‰Ðr7   c                 ó@   — t          |¦  «        t          |¦  «        z
  S r�   ©r¢   r  s       r5   r£   zerf2._eval_rewrite_as_erfc  s   € Ý�A‰wŒw�˜a™œÑ Ð r7   c                 óp   — t           t          t           |z  ¦  «        t          t           |z  ¦  «        z
  z  S r�   r¥   r  s       r5   r§   zerf2._eval_rewrite_as_erfi  s&   € Ý•$•q˜‘s‘)”)�D¥ 1¡™IœIÑ%Ñ&Ð&r7   c                 ó    — t          |¦  «                             t          ¦  «        t          |¦  «                             t          ¦  «        z
  S r�   )r9   rä   r„   r  s       r5   r†   zerf2._eval_rewrite_as_fresnels  ó1   € Ý�1‰vŒv�~Š~�hÑ'Ô'­#¨a©&¬&¯.ª.½Ñ*BÔ*BÑBÐBr7   c                 ó    — t          |¦  «                             t          ¦  «        t          |¦  «                             t          ¦  «        z
  S r�   )r9   rä   rƒ   r  s       r5   r‰   zerf2._eval_rewrite_as_fresnelc
  r!  r7   c                 ó    — t          |¦  «                             t          ¦  «        t          |¦  «                             t          ¦  «        z
  S r�   )r9   rä   r%   r  s       r5   r�   zerf2._eval_rewrite_as_meijerg  s1   € Ý�1‰vŒv�~Š~�gÑ&Ô&­¨Q©¬¯ª½Ñ)@Ô)@Ñ@Ð@r7   c                 ó    — t          |¦  «                             t          ¦  «        t          |¦  «                             t          ¦  «        z
  S r�   )r9   rä   r$   r  s       r5   r”   zerf2._eval_rewrite_as_hyper  s1   € Ý�1‰vŒv�~Š~�eÑ$Ô$¥s¨1¡v¤v§~¢~µeÑ'<Ô'<Ñ<Ð<r7   c                 óT  — ddl m} t          |dz  ¦  «        |z  t          j         |t          j        |dz  ¦  «        t          t          ¦  «        z  z
  z  t          |dz  ¦  «        |z  t          j         |t          j        |dz  ¦  «        t          t          ¦  «        z  z
  z  z
  S rv   ry   )r/   r2   r3   r~   rx   s        r5   r   z erf2._eval_rewrite_as_uppergamma  s”   € ØFÐFÐFÐFÐFÐFÝ�Q˜‘T‘
”
˜1‘�aœe j jµ´¸¸A¹Ñ&>Ô&>½tÅB¹x¼xÑ&GÑGÑHÝ��A‘‰JŒJ�q‰L�!œ% * *­Q¬V°Q¸±TÑ":Ô":½4Å¹8¼8Ñ"CÑCÑDñEð 	Fr7   c                 ó    — t          |¦  «                             t          ¦  «        t          |¦  «                             t          ¦  «        z
  S r�   )r9   rä   r˜   r  s       r5   r™   zerf2._eval_rewrite_as_expint  s1   € Ý�1‰vŒv�~Š~�fÑ%Ô%­¨A©¬¯ªµvÑ(>Ô(>Ñ>Ð>r7   c                 ó6   — |                       t          ¦  «        S r�   rã   rñ   s     r5   rò   zerf2._eval_expand_func  ró   r7   c                 ó   — t          | j        Ž S r�   )r   r)   rf   s    r5   rs   zerf2._eval_is_zero  s   € Ý�d”iÐ Ð r7   N)rÏ   rÐ   rÑ   rÒ   r@   rÔ   rX   rg   rÿ   rè   r£   r§   r†   r‰   r�   r”   r   r™   rò   rs   rö   r7   r5   r  r  �  s   € € € € € ðBð BðJ5ð 5ð 5ð ð!ð !ñ „[ð!ð0Mð Mð MðOð Oð Oðð ð ð!ð !ð !ð'ð 'ð 'ðCð Cð CðCð Cð CðAð Að Að=ð =ð =ðFð Fð Fð
?ð ?ð ?ð!ð !ð !ð!ð !ð !ð !ð !r7   r  c                   óD   — e Zd ZdZd	d„Zd	d„Zed„ ¦   «         Zd„ Zd„ Z	dS )
rD   aR  
    Inverse Error Function. The erfinv function is defined as:

    .. math ::
        \mathrm{erf}(x) = y \quad \Rightarrow \quad \mathrm{erfinv}(y) = x

    Examples
    ========

    >>> from sympy import erfinv
    >>> from sympy.abc import x

    Several special values are known:

    >>> erfinv(0)
    0
    >>> erfinv(1)
    oo

    Differentiation with respect to $x$ is supported:

    >>> from sympy import diff
    >>> diff(erfinv(x), x)
    sqrt(pi)*exp(erfinv(x)**2)/2

    We can numerically evaluate the inverse error function to arbitrary
    precision on [-1, 1]:

    >>> erfinv(0.2).evalf(30)
    0.179143454621291692285822705344

    See Also
    ========

    erf: Gaussian error function.
    erfc: Complementary error function.
    erfi: Imaginary error function.
    erf2: Two-argument error function.
    erfcinv: Inverse Complementary error function.
    erf2inv: Inverse two-argument error function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Error_function#Inverse_functions
    .. [2] https://functions.wolfram.com/GammaBetaErf/InverseErf/

    r:   c                 óÒ   — |dk    rRt          t          ¦  «        t          |                      | j        d         ¦  «        dz  ¦  «        z  t
          j        z  S t          | |¦  «        ‚©Nr:   r   r(   ©r   r
   r   r.   r)   r   r{   r   r>   s     r5   r@   zerfinv.fdiffT  sR   € Ø�qŠ=ˆ=Ý�‘8”8�C §	¢	¨$¬)°A¬,Ñ 7Ô 7¸Ñ :Ñ;Ô;Ñ;½A¼FÑBÐBå$ T¨8Ñ4Ô4Ð4r7   c                 ó   — t           S rB   r  r>   s     r5   rE   zerfinv.inverseZ  s	   € õ
 ˆ
r7   c                 óö  — |t           j        u rt           j        S |t           j        u rt           j        S |j        rt           j        S |t           j        u rt           j        S t          |t          ¦  «        r|j
        d         j        r|j
        d         S |j        rt           j        S |                     d¦  «        }|�5t          |t          ¦  «        r"|j
        d         j        r|j
        d          S d S d S d S ©Nr   rŒ   )r   rI   rM   rL   rN   r,   rK   rJ   rO   r9   r)   r*   rR   rú   s      r5   rX   zerfinv.evala  sß   € à•”ˆ:ˆ:Ý”5ˆLØ•!”-ÐÐÝÔ%Ð%ØŒYð 	Ý”6ˆMØ•!”%ˆZˆZÝ”:Ðå�a�ÑÔð 	 !¤&¨¤)Ô"<ð 	Ø”6˜!”9ÐàŒ9ð 	Ý”6ˆMð ×'Ò'¨Ñ+Ô+ˆØˆ>�z¨"­cÑ2Ô2ˆ>¸¼À¼
Ô7Tˆ>Ø”G˜A”J�;Ðð ˆ>ˆ>ˆ>ˆ>ˆ>r7   c                 ó&   — t          d|z
  ¦  «        S ©Nr:   rÛ   rŽ   s      r5   Ú_eval_rewrite_as_erfcinvzerfinv._eval_rewrite_as_erfcinvw  s   € Ý�a˜‘c‰lŒlÐr7   c                 ó&   — | j         d         j        S rc   rr   rf   s    r5   rs   zerfinv._eval_is_zeroz  rt   r7   NrÎ   )
rÏ   rÐ   rÑ   rÒ   r@   rE   rÔ   rX   r2  rs   rö   r7   r5   rD   rD   !  s€   € € € € € ð/ð /ðd5ð 5ð 5ð 5ðð ð ð ð ðð ñ „[ðð*ð ð ð$ð $ð $ð $ð $r7   rD   c                   óJ   — e Zd ZdZd
d„Zd
d„Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d	S )rP   a´  
    Inverse Complementary Error Function. The erfcinv function is defined as:

    .. math ::
        \mathrm{erfc}(x) = y \quad \Rightarrow \quad \mathrm{erfcinv}(y) = x

    Examples
    ========

    >>> from sympy import erfcinv
    >>> from sympy.abc import x

    Several special values are known:

    >>> erfcinv(1)
    0
    >>> erfcinv(0)
    oo

    Differentiation with respect to $x$ is supported:

    >>> from sympy import diff
    >>> diff(erfcinv(x), x)
    -sqrt(pi)*exp(erfcinv(x)**2)/2

    See Also
    ========

    erf: Gaussian error function.
    erfc: Complementary error function.
    erfi: Imaginary error function.
    erf2: Two-argument error function.
    erfinv: Inverse error function.
    erf2inv: Inverse two-argument error function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Error_function#Inverse_functions
    .. [2] https://functions.wolfram.com/GammaBetaErf/InverseErfc/

    r:   c                 óÔ   — |dk    rSt          t          ¦  «         t          |                      | j        d         ¦  «        dz  ¦  «        z  t
          j        z  S t          | |¦  «        ‚r+  r,  r>   s     r5   r@   zerfcinv.fdiff«  sT   € Ø�qŠ=ˆ=Ý�‘H”H�9�S §¢¨4¬9°Q¬<Ñ!8Ô!8¸!Ñ!;Ñ<Ô<Ñ<½Q¼VÑCÐCå$ T¨8Ñ4Ô4Ð4r7   c                 ó   — t           S rB   r  r>   s     r5   rE   zerfcinv.inverse±  s	   € õ
 ˆr7   c                 óÞ   — |t           j        u rt           j        S |j        rt           j        S |t           j        u rt           j        S |dk    rt           j        S |j        rt           j        S d S r–   )r   rI   rN   rJ   rK   r,   rL   ©rU   r}   s     r5   rX   zerfcinv.eval¸  sf   € à•”ˆ:ˆ:Ý”5ˆLØŒYð 	&Ý”:ÐØ•!”%ˆZˆZÝ”6ˆMØ�!ŠVˆVÝÔ%Ð%àŒ9ð 	Ý”:Ðð	ð 	r7   c                 ó&   — t          d|z
  ¦  «        S r1  rC   rŽ   s      r5   Ú_eval_rewrite_as_erfinvzerfcinv._eval_rewrite_as_erfinvÆ  s   € Ý�a˜‘c‰{Œ{Ðr7   c                 ó,   — | j         d         dz
  j        S rG   rr   rf   s    r5   rs   zerfcinv._eval_is_zeroÉ  s   € Ø”	˜!”˜qÑ Ô)Ð)r7   c                 ó&   — | j         d         j        S rc   rr   rf   s    r5   Ú_eval_is_infinitezerfcinv._eval_is_infiniteÌ  rt   r7   NrÎ   )rÏ   rÐ   rÑ   rÒ   r@   rE   rÔ   rX   r:  rs   r=  rö   r7   r5   rP   rP   ~  s�   € € € € € ð)ð )ðX5ð 5ð 5ð 5ðð ð ð ð ðð ñ „[ððð ð ð*ð *ð *ð$ð $ð $ð $ð $r7   rP   c                   ó4   — e Zd ZdZd„ Zed„ ¦   «         Zd„ ZdS )rQ   a2  
    Two-argument Inverse error function. The erf2inv function is defined as:

    .. math ::
        \mathrm{erf2}(x, w) = y \quad \Rightarrow \quad \mathrm{erf2inv}(x, y) = w

    Examples
    ========

    >>> from sympy import erf2inv, oo
    >>> from sympy.abc import x, y

    Several special values are known:

    >>> erf2inv(0, 0)
    0
    >>> erf2inv(1, 0)
    1
    >>> erf2inv(0, 1)
    oo
    >>> erf2inv(0, y)
    erfinv(y)
    >>> erf2inv(oo, y)
    erfcinv(-y)

    Differentiation with respect to $x$ and $y$ is supported:

    >>> from sympy import diff
    >>> diff(erf2inv(x, y), x)
    exp(-x**2 + erf2inv(x, y)**2)
    >>> diff(erf2inv(x, y), y)
    sqrt(pi)*exp(erf2inv(x, y)**2)/2

    See Also
    ========

    erf: Gaussian error function.
    erfc: Complementary error function.
    erfi: Imaginary error function.
    erf2: Two-argument error function.
    erfinv: Inverse error function.
    erfcinv: Inverse complementary error function.

    References
    ==========

    .. [1] https://functions.wolfram.com/GammaBetaErf/InverseErf2/

    c                 ó6  — | j         \  }}|dk    r,t          |                      ||¦  «        dz  |dz  z
  ¦  «        S |dk    rHt          t          ¦  «        t
          j        z  t          |                      ||¦  «        dz  ¦  «        z  S t          | |¦  «        ‚)Nr:   r(   )r)   r   r.   r   r
   r   r{   r   r  s       r5   r@   zerf2inv.fdiff  s‡   € ØŒy‰ˆˆ1Ø�qŠ=ˆ=Ý�t—y’y  1‘~”~ qÑ(¨¨A©Ñ-Ñ.Ô.Ð.Ø˜Š]ˆ]Ý�‘8”8�AœF‘?¥3 t§y¢y°°1¡~¤~°qÑ'8Ñ#9Ô#9Ñ9Ð9å$ T¨8Ñ4Ô4Ð4r7   c                 ó&  — |t           j        u s|t           j        u rt           j        S |j        r|j        rt           j        S |j        r|t           j        u rt           j        S |t           j        u r|j        rt           j        S |j        rt          |¦  «        S |t           j        u rt          | ¦  «        S |j        r|S |t           j        u rt          |¦  «        S |j        r"|j        rt           j        S t          |¦  «        S |j        r|S d S r�   )r   rI   rN   r,   rK   rJ   rD   rP   )rU   r2   r3   s      r5   rX   zerf2inv.eval  s  € à•”ˆ:ˆ:˜�aœe˜˜Ý”5ˆLØŒYð 	˜1œ9ð 	Ý”6ˆMØŒYð 	˜1¥¤˜:˜:Ý”:ÐØ•!”%ˆZˆZ˜AœIˆZÝ”5ˆLØŒYð 	Ý˜!‘9”9ÐØ•!”*ˆ_ˆ_Ý˜A˜2‘;”;ÐØŒYð 	ØˆHØ•!”*ˆ_ˆ_Ý˜!‘9”9ÐàŒ9ð 	!ØŒyð !Ý”v�å˜a‘y”yÐ ØŒ9ð 	ØˆHð	ð 	r7   c                 ó>   — | j         \  }}|j        r	|j        rdS d S d S )NTrr   )r/   r2   r3   s      r5   rs   zerf2inv._eval_is_zero(  s9   € ØŒy‰ˆˆ1ØŒ9ð 	˜œð 	Ø�4ð	ð 	ð 	ð 	r7   N)rÏ   rÐ   rÑ   rÒ   r@   rÔ   rX   rs   rö   r7   r5   rQ   rQ   Ð  sX   € € € € € ð0ð 0ðf5ð 5ð 5ð ðð ñ „[ðð4ð ð ð ð r7   rQ   c                   ó�   ‡ — e Zd ZdZed„ ¦   «         Zdd„Zd„ Zd„ Zd„ Z	d„ Z
d	„ ZeZeZeZdd„Zd„ Zdˆ fd„	Zdˆ fd„	Zˆ fd„Zˆ xZS )ÚEia	  
    The classical exponential integral.

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

    For use in SymPy, this function is defined as

    .. math:: \operatorname{Ei}(x) = \sum_{n=1}^\infty \frac{x^n}{n\, n!}
                                     + \log(x) + \gamma,

    where $\gamma$ is the Euler-Mascheroni constant.

    If $x$ is a polar number, this defines an analytic function on the
    Riemann surface of the logarithm. Otherwise this defines an analytic
    function in the cut plane $\mathbb{C} \setminus (-\infty, 0]$.

    **Background**

    The name exponential integral comes from the following statement:

    .. math:: \operatorname{Ei}(x) = \int_{-\infty}^x \frac{e^t}{t} \mathrm{d}t

    If the integral is interpreted as a Cauchy principal value, this statement
    holds for $x > 0$ and $\operatorname{Ei}(x)$ as defined above.

    Examples
    ========

    >>> from sympy import Ei, polar_lift, exp_polar, I, pi
    >>> from sympy.abc import x

    >>> Ei(-1)
    Ei(-1)

    This yields a real value:

    >>> Ei(-1).n(chop=True)
    -0.219383934395520

    On the other hand the analytic continuation is not real:

    >>> Ei(polar_lift(-1)).n(chop=True)
    -0.21938393439552 + 3.14159265358979*I

    The exponential integral has a logarithmic branch point at the origin:

    >>> Ei(x*exp_polar(2*I*pi))
    Ei(x) + 2*I*pi

    Differentiation is supported:

    >>> Ei(x).diff(x)
    exp(x)/x

    The exponential integral is related to many other special functions.
    For example:

    >>> from sympy import expint, Shi
    >>> Ei(x).rewrite(expint)
    -expint(1, x*exp_polar(I*pi)) - I*pi
    >>> Ei(x).rewrite(Shi)
    Chi(x) + Shi(x)

    See Also
    ========

    expint: Generalised exponential integral.
    E1: Special case of the generalised exponential integral.
    li: Logarithmic integral.
    Li: Offset logarithmic integral.
    Si: Sine integral.
    Ci: Cosine integral.
    Shi: Hyperbolic sine integral.
    Chi: Hyperbolic cosine integral.
    uppergamma: Upper incomplete gamma function.

    References
    ==========

    .. [1] https://dlmf.nist.gov/6.6
    .. [2] https://en.wikipedia.org/wiki/Exponential_integral
    .. [3] Abramowitz & Stegun, section 5: https://web.archive.org/web/20201128173312/http://people.math.sfu.ca/~cbm/aands/page_228.htm

    c                 ó6  — |j         rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |j         rt          j        S |                     ¦   «         \  }}|r%t          |¦  «        dt          z  t          z  |z  z   S d S r–   )	rN   r   rL   rJ   r,   Úextract_branch_factorrC  r	   r
   ©rU   r}   rû   r^   s       r5   rX   zEi.eval‰  s”   € àŒ9ð 	ÝÔ%Ð%Ø•!”*ˆ_ˆ_Ý”:ÐØ•!Ô$Ð$Ð$Ý”6ˆMàŒ9ð 	&ÝÔ%Ð%à×'Ò'Ñ)Ô)‰ˆˆAØð 	%Ý�b‘6”6˜A�a™C¥™F 1™HÑ$Ð$ð	%ð 	%r7   r:   c                 ó†   — t          | j        d         ¦  «        }|dk    rt          |¦  «        |z  S t          | |¦  «        ‚rG   )r   r)   r   r   ©r/   r?   rV   s      r5   r@   zEi.fdiff™  s>   € Ý˜œ 1œÑ&Ô&ˆØ�qŠ=ˆ=Ý�s‘8”8˜C‘<Ðå$ T¨8Ñ4Ô4Ð4r7   c                 óà   — | j         d         t          d¦  «        z  j        r8t          j        | |¦  «        t
          t          z                       |¦  «        z   S t          j        | |¦  «        S r/  )r)   r   rÃ   r   Ú_eval_evalfr	   r
   ©r/   Úprecs     r5   rJ  zEi._eval_evalf   s\   € ØŒI�aŒL� B™œÑ'Ô4ð 	OÝÔ'¨¨dÑ3Ô3µq½±t×6HÒ6HÈÑ6NÔ6NÑNÐNÝÔ# D¨$Ñ/Ô/Ð/r7   c                 óh   — ddl m}  |dt          d¦  «        |z  ¦  «         t          t          z  z
  S )Nr   rw   rŒ   )rz   rx   r   r	   r
   r|   s       r5   r   zEi._eval_rewrite_as_uppergamma¥  s?   € ØFÐFÐFÐFÐFÐFð �
˜1�j¨™nœn¨QÑ.Ñ/Ô/Ð/µ!µB±$Ñ6Ð6r7   c                 ód   — t          dt          d¦  «        |z  ¦  «         t          t          z  z
  S )Nr:   rŒ   )r˜   r   r	   r
   rŽ   s      r5   r™   zEi._eval_rewrite_as_expint«  s)   € Ý�q�* R™.œ.¨Ñ*Ñ+Ô+Ð+­aµ©dÑ2Ð2r7   c                 ó˜   — t          |t          ¦  «        rt          |j        d         ¦  «        S t          t	          |¦  «        ¦  «        S rc   )rO   r   Úlir)   r   rŽ   s      r5   Ú_eval_rewrite_as_lizEi._eval_rewrite_as_li®  s:   € Ý�a�ÑÔð 	!Ý�a”f˜Q”i‘=”=Ð õ
 •#�a‘&”&‰zŒzÐr7   c                 ó¬   — |j         r/t          |¦  «        t          |¦  «        z   t          t          z  z
  S t          |¦  «        t          |¦  «        z   S r�   )Úis_negativeÚShiÚChir	   r
   rŽ   s      r5   Ú_eval_rewrite_as_SizEi._eval_rewrite_as_Si·  sA   € ØŒ=ð 	#Ý�q‘6”6�C ™FœF‘?¥Q¥r¡TÑ)Ð)å�q‘6”6�C ™FœF‘?Ð"r7   Nc                 ó@   — t          |¦  «        t          |¦  «        z  S r�   )r   Ú_eisrå   s       r5   r    zEi._eval_rewrite_as_tractableÀ  s   € Ý�1‰vŒv�˜Q™œÑÐr7   c                 ó¦   — ddl m} t          t          d|g¦  «        j        ¦  «        } |t
          j        |z  |z  |t
          j        |f¦  «        S ©Nr   ©ÚIntegralrW   )Úsympy.integrals.integralsr\  r   r   Únamer   ÚExp1rL   ©r/   r}   r~   r\  rW   s        r5   Ú_eval_rewrite_as_IntegralzEi._eval_rewrite_as_IntegralÃ  sW   € Ø6Ð6Ð6Ð6Ð6Ð6ÝÕ'¨¨a¨SÑ1Ô1Ô6Ñ7Ô7ˆØˆx�œ ™	 !™ a­Ô);¸QÐ%?Ñ@Ô@Ð@r7   r   c                 ó   •— ddl m} | j        d                              |d¦  «        }| j        d                              ||¬¦  «        }|                     ||¦  «        }|j        rt|                     |¦  «        \  }}|€t          |¦  «        n|}t          |¦  «        ||z  z   t          z    ||¦  «        j
        rt          t          z  nt          j        z
  S t          ¦   «                              |||¬¦  «        S )Nr   )r   )r«   r©   )Úsympyr   r)   r›   r°   r¯   rN   Úas_coeff_exponentr   r   rS  r	   r
   r   r,   rÅ   r¶   )
r/   r2   rª   r«   r   Úx0rV   ÚcÚerÍ   s
            €r5   r¶   zEi._eval_as_leading_termÈ  sñ   ø€ ØÐÐÐÐÐØŒY�qŒ\×Ò  1Ñ%Ô%ˆØŒi˜Œl×*Ò*¨1°4Ð*Ñ8Ô8ˆØ�wŠw�q˜$ÑÔˆØŒ:ð 	:Ø×(Ò(¨Ñ+Ô+‰DˆAˆqØ!˜\•3�q‘6”6�6¨tˆDÝ�q‘6”6˜A˜d™F‘?¥ZÑ/Ø˜˜4™œÔ,Ð8••"‘�µ!´&ñ:ð :å‰wŒw×,Ò,¨Q°TÀÐ,ÑEÔEÐEr7   c                 óæ   •— | j         d                              |d¦  «        }|j        r& | j        | j         Ž }|                     |||¦  «        S t          ¦   «                              |||¦  «        S rc   )r)   r›   rN   rV  Ú_eval_nseriesrÅ   ©r/   r2   r^   rª   r«   re  ÚfrÍ   s          €r5   ri  zEi._eval_nseriesÔ  sk   ø€ ØŒY�qŒ\×Ò  1Ñ%Ô%ˆØŒ:ð 	/Ø(�Ô(¨$¬)Ð4ˆAØ—?’? 1 a¨Ñ.Ô.Ð.Ý‰wŒw×$Ò$ Q¨¨4Ñ0Ô0Ð0r7   c                 óD  •‡— ddl m} |d         }|t          j        u rX| j        d         Šˆfd„t          |¦  «        D ¦   «          |d‰|z  z  |¦  «        gz   }t          ‰¦  «        ‰z  t          |Ž z  S t          t          | ¦  «         
                    ||||¦  «        S )Nr   r¸   c                 ó:   •— g | ]}t          |¦  «        ‰|z  z  ‘ŒS rö   ©r   r¼   s     €r5   r¾   z$Ei._eval_aseries.<locals>.<listcomp>á  s(   ø€ Ð9Ð9Ð9¨1•˜1‘”  Q¡Ñ&Ð9Ð9Ð9r7   r:   )r¿   r¹   r   rJ   r)   rÄ   r   r   rÅ   rC  rÆ   r  s
           @€r5   rÆ   zEi._eval_aseriesÛ  s°   øø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆà•A”JÐÐØ”	˜!”ˆAØ9Ð9Ð9Ð9µ°a±´Ð9Ñ9Ô9Ø�U˜1˜Q ™T™6 1Ñ%Ô%Ð&ñ'ˆAå˜‘F”F˜1‘H¥ Q Ñ'Ð'å•R˜‰Œ×,Ò,¨Q°°q¸$Ñ?Ô?Ð?r7   rÎ   r�   rc   ©r   )rÏ   rÐ   rÑ   rÒ   rÔ   rX   r@   rJ  r   r™   rQ  rV  Ú_eval_rewrite_as_CiÚ_eval_rewrite_as_ChiÚ_eval_rewrite_as_Shir    ra  r¶   ri  rÆ   rÖ   r×   s   @r5   rC  rC  1  sD  ø€ € € € € ðTð Tðn ð%ð %ñ „[ð%ð5ð 5ð 5ð 5ð0ð 0ð 0ð
7ð 7ð 7ð3ð 3ð 3ðð ð ð#ð #ð #ð
 .ÐØ.ÐØ.Ðð ð  ð  ð  ðAð Að Að

Fð 
Fð 
Fð 
Fð 
Fð 
Fð1ð 1ð 1ð 1ð 1ð 1ð
@ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@ð 
@r7   rC  c                   ót   ‡ — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Z	d„ Z
e
Ze
Ze
Zdˆ fd	„	Zˆ fd
„Zd„ Zˆ xZS )r˜   a£  
    Generalized exponential integral.

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

    This function is defined as

    .. math:: \operatorname{E}_\nu(z) = z^{\nu - 1} \Gamma(1 - \nu, z),

    where $\Gamma(1 - \nu, z)$ is the upper incomplete gamma function
    (``uppergamma``).

    Hence for $z$ with positive real part we have

    .. math:: \operatorname{E}_\nu(z)
              =   \int_1^\infty \frac{e^{-zt}}{t^\nu} \mathrm{d}t,

    which explains the name.

    The representation as an incomplete gamma function provides an analytic
    continuation for $\operatorname{E}_\nu(z)$. If $\nu$ is a
    non-positive integer, the exponential integral is thus an unbranched
    function of $z$, otherwise there is a branch point at the origin.
    Refer to the incomplete gamma function documentation for details of the
    branching behavior.

    Examples
    ========

    >>> from sympy import expint, S
    >>> from sympy.abc import nu, z

    Differentiation is supported. Differentiation with respect to $z$ further
    explains the name: for integral orders, the exponential integral is an
    iterated integral of the exponential function.

    >>> expint(nu, z).diff(z)
    -expint(nu - 1, z)

    Differentiation with respect to $\nu$ has no classical expression:

    >>> expint(nu, z).diff(nu)
    -z**(nu - 1)*meijerg(((), (1, 1)), ((0, 0, 1 - nu), ()), z)

    At non-postive integer orders, the exponential integral reduces to the
    exponential function:

    >>> expint(0, z)
    exp(-z)/z
    >>> expint(-1, z)
    exp(-z)/z + exp(-z)/z**2

    At half-integers it reduces to error functions:

    >>> expint(S(1)/2, z)
    sqrt(pi)*erfc(sqrt(z))/sqrt(z)

    At positive integer orders it can be rewritten in terms of exponentials
    and ``expint(1, z)``. Use ``expand_func()`` to do this:

    >>> from sympy import expand_func
    >>> expand_func(expint(5, z))
    z**4*expint(1, z)/24 + (-z**3 + z**2 - 2*z + 6)*exp(-z)/24

    The generalised exponential integral is essentially equivalent to the
    incomplete gamma function:

    >>> from sympy import uppergamma
    >>> expint(nu, z).rewrite(uppergamma)
    z**(nu - 1)*uppergamma(1 - nu, z)

    As such it is branched at the origin:

    >>> from sympy import exp_polar, pi, I
    >>> expint(4, z*exp_polar(2*pi*I))
    I*pi*z**3/3 + expint(4, z)
    >>> expint(nu, z*exp_polar(2*pi*I))
    z**(nu - 1)*(exp(2*I*pi*nu) - 1)*gamma(1 - nu) + expint(nu, z)

    See Also
    ========

    Ei: Another related function called exponential integral.
    E1: The classical case, returns expint(1, z).
    li: Logarithmic integral.
    Li: Offset logarithmic integral.
    Si: Sine integral.
    Ci: Cosine integral.
    Shi: Hyperbolic sine integral.
    Chi: Hyperbolic cosine integral.
    uppergamma

    References
    ==========

    .. [1] https://dlmf.nist.gov/8.19
    .. [2] https://functions.wolfram.com/GammaBetaErf/ExpIntegralE/
    .. [3] https://en.wikipedia.org/wiki/Exponential_integral

    c           	      óÎ  — ddl m}m} t          |¦  «        }||k    rt	          ||¦  «        S |j        r|dk    s|j        s<d|z  j        r2t          t          ||dz
  z   |d|z
  |¦  «        z  ¦  «        ¦  «        S |                     ¦   «         \  }}|t          j	        u rd S |j
        rj|dk    sd S t	          ||¦  «        dt          z  t          z  |z  t          j        |dz
  z  z  t          |dz
  ¦  «        z  t          |¦  «        |dz
  z  z  z
  S t          dt          z  t          z  |z  |z  ¦  «        dz
  ||dz
  z  z   |d|z
  ¦  «        z  t	          ||¦  «        z   S )Nr   )Úgammarx   r(   r:   )rz   ru  rx   r   r˜   Ú
is_Integerr   rE  r   r,   Ú
is_integerr
   r	   rM   r   r   )rU   Únur}   ru  rx   Únu2r^   s          r5   rX   zexpint.evalP  sƒ  € àOÐOÐOÐOÐOÐOÐOÐOÝ˜‰nŒnˆØ�Š9ˆ9Ý˜#˜q‘>”>Ð!ØŒ=ð 	M˜R 1šW˜W¨R¬]˜WÀÀ"ÁÔ?P˜WÝ�j¨¨R°!©V©°Z°ZÀÀBÁÈÑ5JÔ5JÑ)JÑKÔKÑLÔLÐLð ×&Ò&Ñ(Ô(‰ˆˆ1Ø•”ˆ;ˆ;ØˆFØŒ=ð 	TØ˜’6�6Ø�Ý˜"˜a‘=”=Ø•B‘$•q‘&˜‘(�1œ=¨2°©6Ñ2Ñ2µ9¸RÀ!¹VÑ3DÔ3DÑDÅZÐPQÁ]Ä]ÐUWÐZ[ÑU[ÑE\Ñ\ñ]ð ]õ ˜�!™�B™˜r™	 !™Ñ$Ô$ qÑ(¨!¨b°1©f©+Ñ5°e°e¸AÀ¹F±m´mÑCÅfÈRÐQRÁmÄmÑSÐSr7   c           	      óÀ   — | j         \  }}|dk    r%||dz
  z   t          g ddgddd|z
  gg |¦  «        z  S |dk    rt          |dz
  |¦  «         S t          | |¦  «        ‚r+  )r)   r%   r˜   r   )r/   r?   rx  r}   s       r5   r@   zexpint.fdifff  sy   € Ø”	‰ˆˆAØ�qŠ=ˆ=Ø˜˜Q™‘K�<¥¨¨Q°¨F°Q¸¸1¸r¹6°NÀBÈÑ JÔ JÑJÐJØ˜Š]ˆ]Ý˜2 ™6 1Ñ%Ô%Ð%Ð%å$ T¨8Ñ4Ô4Ð4r7   c                 ó>   — ddl m} ||dz
  z   |d|z
  |¦  «        z  S )Nr   rw   r:   )rz   rx   )r/   rx  r}   r~   rx   s        r5   r   z"expint._eval_rewrite_as_uppergammao  s7   € ØFÐFÐFÐFÐFÐFØ�2˜‘6‰{˜:˜: a¨"¡f¨aÑ0Ô0Ñ0Ð0r7   c           	      óæ  ‡‡— ‰dk    r>t          |t          t           t          z  ¦  «        z  ¦  «         t          t          z  z
  S ‰j        r£‰dk    r�t          |¦  «         Š‰‰dz
  z  t          ‰dz
  ¦  «        z  t          |¦  «                             t           ¦  «        z  t          ‰¦  «        t          ‰dz
  ¦  «        z  t          ˆˆfd„t          ‰dz
  ¦  «        D ¦   «         Ž z  z   S | S )Nr:   c                 óF   •— g | ]}t          ‰|z
  d z
  ¦  «        ‰|z  z  ‘ŒS ©r(   rn  )r½   r`   rx  r2   s     €€r5   r¾   z.expint._eval_rewrite_as_Ei.<locals>.<listcomp>{  s2   ø€ ÐHÐHÐH°Q•i  Q¡¨¡
Ñ+Ô+¨A¨q©DÑ0ÐHÐHÐHr7   )rC  r   r	   r
   rv  r   r   ÚE1rä   r   r   rÄ   )r/   rx  r}   r~   r2   s    `  @r5   Ú_eval_rewrite_as_Eizexpint._eval_rewrite_as_Eis  sé   øø€ Ø�Š7ˆ7Ý�q�¥A 2¥b¡5Ñ)Ô)Ñ)Ñ*Ô*Ð*­Q­r©TÑ1Ð1ØŒ]ð 	˜r Ašv˜vå˜A‘”�ˆAØ�r˜A‘v‘;�y¨¨a©Ñ0Ô0Ñ0µ°A±´·²½rÑ1BÔ1BÑBÝ�A‘”•y  a¡Ñ(Ô(Ñ(ÝÐHÐHÐHÐHÐH½%ÀÀQÁ¹-¼-ÐHÑHÔHÐIñJñJð Jð ˆKr7   c                 óX   —  |                       t          ¦  «        j         t          fi |¤ŽS r�   )rä   rC  r˜   rñ   s     r5   rò   zexpint._eval_expand_func  s)   € Ø'ˆt�|Š|�BÑÔÔ'­Ð8Ð8°%Ð8Ð8Ð8r7   c                 óP   — |dk    r| S t          |¦  «        t          |¦  «        z
  S r1  )rT  rU  )r/   rx  r}   r~   s       r5   rV  zexpint._eval_rewrite_as_Si‚  s&   € Ø�Š7ˆ7ØˆKÝ�1‰vŒv�˜A™œ‰Ðr7   r   c                 ób  •— | j         d                              |¦  «        sl| j         d         }|dk    r& | j        | j         Ž }|                     |||¦  «        S |j        r,|dk    r& | j        | j         Ž }|                     |||¦  «        S t          ¦   «                              |||¦  «        S rG   )r)   ÚhasrV  ri  rv  r€  rÅ   )r/   r2   r^   rª   r«   rx  rk  rÍ   s          €r5   ri  zexpint._eval_nseriesŠ  s¯   ø€ ØŒy˜Œ|×Ò Ñ"Ô"ð 	3Ø”˜1”ˆBØ�QŠwˆwØ,�DÔ,¨d¬iÐ8�Ø—’ q¨!¨TÑ2Ô2Ð2Ø”ð 3 2¨¢6 6Ø,�DÔ,¨d¬iÐ8�Ø—’ q¨!¨TÑ2Ô2Ð2Ý‰wŒw×$Ò$ Q¨¨4Ñ0Ô0Ð0r7   c                 ód  •‡‡	— ddl m} |d         }| j        d         Š|t          j        u rZ| j        d         Š	ˆˆ	fd„t          |¦  «        D ¦   «          |d‰	|z  z  |¦  «        gz   }t          ‰	 ¦  «        ‰	z  t          |Ž z  S t          t          | ¦  «         
                    ||||¦  «        S )Nr   r¸   r:   c                 ó\   •— g | ](}t           j        |z  t          ‰|¦  «        z  ‰|z  z  ‘Œ)S rö   )r   rM   r   )r½   r`   rx  r}   s     €€r5   r¾   z(expint._eval_aseries.<locals>.<listcomp>œ  s8   ø€ ÐTÐTÐTÀa•” Ñ!¥O°B¸Ñ$:Ô$:Ñ:¸QÀ¹TÑAÐTÐTÐTr7   )r¿   r¹   r)   r   rJ   rÄ   r   r   rÅ   r˜   rÆ   )r/   r^   rÇ   r2   rª   r¹   rÈ   rÌ   rx  r}   rÍ   s           @@€r5   rÆ   zexpint._eval_aseries•  sÉ   øøø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆØŒY�qŒ\ˆà•A”JÐÐØ”	˜!”ˆAØTÐTÐTÐTÐTÍ5ÐQRÉ8Ì8ÐTÑTÔTÐX]ÐX]Ð^_Ð`aÐcdÑ`dÑ^dÐfgÑXhÔXhÐWiÑiˆAÝ˜˜‘G”G˜A‘I¥ a Ñ(Ð(å•V˜TÑ"Ô"×0Ò0°°E¸1¸dÑCÔCÐCr7   c                 óÈ   — ddl m} | j        \  }}t          t	          d|¦  «        j        ¦  «        } ||| z  t          | |z  ¦  «        z  |dt          j        f¦  «        S ©Nr   r[  rW   r:   )	r]  r\  r)   r   r   r^  r   r   rJ   )r/   r)   r~   r\  r^   r2   rW   s          r5   ra  z expint._eval_rewrite_as_Integral¡  sl   € Ø6Ð6Ð6Ð6Ð6Ð6ØŒy‰ˆˆ1ÝÕ'¨¨TÑ2Ô2Ô7Ñ8Ô8ˆØˆx˜˜A˜2™¥ Q B q¡D¡	¤	Ñ)¨A¨qµ!´*Ð+=Ñ>Ô>Ð>r7   ro  )rÏ   rÐ   rÑ   rÒ   rÔ   rX   r@   r   r€  rò   rV  rp  rq  rr  ri  rÆ   ra  rÖ   r×   s   @r5   r˜   r˜   è  sô   ø€ € € € € ðdð dðN ðTð Tñ „[ðTð*5ð 5ð 5ð1ð 1ð 1ð
ð 
ð 
ð9ð 9ð 9ðð ð ð .ÐØ.ÐØ.Ðð	1ð 	1ð 	1ð 	1ð 	1ð 	1ð
Dð 
Dð 
Dð 
Dð 
Dð?ð ?ð ?ð ?ð ?ð ?ð ?r7   r˜   c                 ó"   — t          d| ¦  «        S )a+  
    Classical case of the generalized exponential integral.

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

    This is equivalent to ``expint(1, z)``.

    Examples
    ========

    >>> from sympy import E1
    >>> E1(0)
    expint(1, 0)

    >>> E1(5)
    expint(1, 5)

    See Also
    ========

    Ei: Exponential integral.
    expint: Generalised exponential integral.
    li: Logarithmic integral.
    Li: Offset logarithmic integral.
    Si: Sine integral.
    Ci: Cosine integral.
    Shi: Hyperbolic sine integral.
    Chi: Hyperbolic cosine integral.

    r:   )r˜   )r}   s    r5   r  r  ¨  s   € õ@ �!�Q‰<Œ<Ðr7   c                   ó~   — e Zd ZdZed„ ¦   «         Zdd„Zd„ Zd„ Zd„ Z	d„ Z
d	„ ZeZd
„ ZeZd„ Zd„ Zdd„Zdd„Zd„ ZdS )rP  aà	  
    The classical logarithmic integral.

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

    For use in SymPy, this function is defined as

    .. math:: \operatorname{li}(x) = \int_0^x \frac{1}{\log(t)} \mathrm{d}t \,.

    Examples
    ========

    >>> from sympy import I, oo, li
    >>> from sympy.abc import z

    Several special values are known:

    >>> li(0)
    0
    >>> li(1)
    -oo
    >>> li(oo)
    oo

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(li(z), z)
    1/log(z)

    Defining the ``li`` function via an integral:
    >>> from sympy import integrate
    >>> integrate(li(z))
    z*li(z) - Ei(2*log(z))

    >>> integrate(li(z),z)
    z*li(z) - Ei(2*log(z))


    The logarithmic integral can also be defined in terms of ``Ei``:

    >>> from sympy import Ei
    >>> li(z).rewrite(Ei)
    Ei(log(z))
    >>> diff(li(z).rewrite(Ei), z)
    1/log(z)

    We can numerically evaluate the logarithmic integral to arbitrary precision
    on the whole complex plane (except the singular points):

    >>> li(2).evalf(30)
    1.04516378011749278484458888919

    >>> li(2*I).evalf(30)
    1.0652795784357498247001125598 + 3.08346052231061726610939702133*I

    We can even compute Soldner's constant by the help of mpmath:

    >>> from mpmath import findroot
    >>> findroot(li, 2)
    1.45136923488338

    Further transformations include rewriting ``li`` in terms of
    the trigonometric integrals ``Si``, ``Ci``, ``Shi`` and ``Chi``:

    >>> from sympy import Si, Ci, Shi, Chi
    >>> li(z).rewrite(Si)
    -log(I*log(z)) - log(1/log(z))/2 + log(log(z))/2 + Ci(I*log(z)) + Shi(log(z))
    >>> li(z).rewrite(Ci)
    -log(I*log(z)) - log(1/log(z))/2 + log(log(z))/2 + Ci(I*log(z)) + Shi(log(z))
    >>> li(z).rewrite(Shi)
    -log(1/log(z))/2 + log(log(z))/2 + Chi(log(z)) - Shi(log(z))
    >>> li(z).rewrite(Chi)
    -log(1/log(z))/2 + log(log(z))/2 + Chi(log(z)) - Shi(log(z))

    See Also
    ========

    Li: Offset logarithmic integral.
    Ei: Exponential integral.
    expint: Generalised exponential integral.
    E1: Special case of the generalised exponential integral.
    Si: Sine integral.
    Ci: Cosine integral.
    Shi: Hyperbolic sine integral.
    Chi: Hyperbolic cosine integral.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Logarithmic_integral
    .. [2] https://mathworld.wolfram.com/LogarithmicIntegral.html
    .. [3] https://dlmf.nist.gov/6
    .. [4] https://mathworld.wolfram.com/SoldnersConstant.html

    c                 óº   — |j         rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |j         rt          j        S d S r�   )rN   r   r,   rK   rL   rJ   r8  s     r5   rX   zli.eval/  sU   € àŒ9ð 	Ý”6ˆMØ•!”%ˆZˆZÝÔ%Ð%Ø•!”*ˆ_ˆ_Ý”:ÐØŒ9ð 	Ý”6ˆMð	ð 	r7   r:   c                 ó€   — | j         d         }|dk    rt          j        t          |¦  «        z  S t	          | |¦  «        ‚rG   ©r)   r   rK   r   r   rH  s      r5   r@   zli.fdiff:  ó9   € ØŒi˜ŒlˆØ�qŠ=ˆ=Ý”5�3˜s™8œ8Ñ#Ð#å$ T¨8Ñ4Ô4Ð4r7   c                 ó|   — | j         d         }|j        s'|                      |                     ¦   «         ¦  «        S d S rc   )r)   Úis_extended_negativer.   re   ©r/   r}   s     r5   rg   zli._eval_conjugateA  s<   € ØŒI�aŒLˆàÔ%ð 	,Ø—9’9˜QŸ[š[™]œ]Ñ+Ô+Ð+ð	,ð 	,r7   c                 ó@   — t          |¦  «        t          d¦  «        z   S r–   )ÚLirP  rŽ   s      r5   Ú_eval_rewrite_as_Lizli._eval_rewrite_as_LiG  ó   € Ý�!‰uŒu•r˜!‘u”u‰}Ðr7   c                 ó:   — t          t          |¦  «        ¦  «        S r�   )rC  r   rŽ   s      r5   r€  zli._eval_rewrite_as_EiJ  s   € Ý•#�a‘&”&‰zŒzÐr7   c           	      ó(  — ddl m}  |dt          |¦  «         ¦  «         t          j        t          t          |¦  «        ¦  «        t          t          j        t          |¦  «        z  ¦  «        z
  z  z   t          t          |¦  «         ¦  «        z
  S ©Nr   rw   )rz   rx   r   r   r{   rK   r|   s       r5   r   zli._eval_rewrite_as_uppergammaM  s   € ØFÐFÐFÐFÐFÐFØ�˜A¥ A¡¤˜wÑ'Ô'Ð'Ý”��C ™FœF™œ¥c­!¬%µ°A±´©,Ñ&7Ô&7Ñ7Ñ8ñ9Ý;>ÅÀAÁÄ¸w¹<¼<ñHð 	Ir7   c                 ó–  — t          t          t          |¦  «        z  ¦  «        t          t          t          t          |¦  «        z  ¦  «        z  z
  t          j        t          t          j        t          |¦  «        z  ¦  «        t          t          |¦  «        ¦  «        z
  z  z
  t          t          t          |¦  «        z  ¦  «        z
  S r�   )ÚCir	   r   ÚSir   r{   rK   rŽ   s      r5   rV  zli._eval_rewrite_as_SiR  s�   € Ý•1•S˜‘V”V‘8‘”�q¥¥A¥c¨!¡f¤f¡H¡¤™~Ñ-Ý”��AœE¥# a¡&¤&™LÑ)Ô)­Cµ°A±´©K¬KÑ7Ñ8ñ9Ý;>½qÅÀQÁÄ¹x¹=¼=ñIð 	Jr7   c                 ó  — t          t          |¦  «        ¦  «        t          t          |¦  «        ¦  «        z
  t          j        t          t          j        t          |¦  «        z  ¦  «        t          t          |¦  «        ¦  «        z
  z  z
  S r�   )rU  r   rT  r   r{   rK   rŽ   s      r5   rr  zli._eval_rewrite_as_ShiX  sW   € Ý•C˜‘F”F‘”�c¥# a¡&¤&™kœkÑ)­A¬FµC½¼½cÀ!¹f¼f¹Ñ4EÔ4EÍÍCÐPQÉFÌFÉÌÑ4SÑ,TÑTÐUr7   c           	      ó  — t          |¦  «        t          ddt          |¦  «        ¦  «        z  t          j        t          t          |¦  «        ¦  «        t          t          j        t          |¦  «        z  ¦  «        z
  z  z   t
          z   S )N)r:   r:   )r(   r(   )r   r$   r   r{   rK   r   rŽ   s      r5   r”   zli._eval_rewrite_as_hyper]  se   € Ý�A‘”•u˜V V­S°©V¬VÑ4Ô4Ñ4Ý”��C ™FœF™œ¥c­!¬%µ°A±´©,Ñ&7Ô&7Ñ7Ñ8ñ9Ý;EñFð 	Gr7   c                 ó&  — t          t          |¦  «         ¦  «         t          j        t          t          j        t          |¦  «        z  ¦  «        t          t          |¦  «        ¦  «        z
  z  z
  t	          ddt          |¦  «         ¦  «        z
  S )N)rö   rÎ   ))r   r   rö   )r   r   r{   rK   r%   rŽ   s      r5   r�   zli._eval_rewrite_as_meijerga  sg   € Ý•c˜!‘f”f�W‘”�¥¤­­A¬Eµ#°a±&´&©LÑ(9Ô(9½CÅÀAÁÄ¹K¼KÑ(GÑ HÑHÝ˜* lµS¸±V´V°GÑ<Ô<ñ=ð 	>r7   Nc                 ó@   — |t          t          |¦  «        ¦  «        z  S r�   )rX  r   rå   s       r5   r    zli._eval_rewrite_as_tractablee  s   € Ø•4�˜A™œ‘<”<ÑÐr7   r   c                 ó²   ‡— | j         d         Šˆfd„t          d|¦  «        D ¦   «         }t          t          t          ‰¦  «        ¦  «        z   t	          |Ž z   S )Nr   c                 óZ   •— g | ]'}t          ‰¦  «        |z  t          |¦  «        |z  z  ‘Œ(S rö   )r   r   r¼   s     €r5   r¾   z$li._eval_nseries.<locals>.<listcomp>j  s3   ø€ ÐCÐCÐC°!�c�!‰fŒf�q‰[�I a™LœL¨1Ñ,Ñ-ÐCÐCÐCr7   r:   )r)   rÄ   r   r   r   )r/   r2   r^   rª   r«   rÌ   r}   s         @r5   ri  zli._eval_nseriesh  sO   ø€ ØŒI�aŒLˆØCÐCÐCÐCµu¸QÀ±{´{ÐCÑCÔCˆÝ�C¥ A¡¤™KœKÑ'­#¨q¨'Ñ1Ð1r7   c                 ó2   — | j         d         }|j        rdS d S rn   rr   r‘  s     r5   rs   zli._eval_is_zerom  ó&   € ØŒI�aŒLˆØŒ9ð 	Ø�4ð	ð 	r7   rÎ   r�   ro  )rÏ   rÐ   rÑ   rÒ   rÔ   rX   r@   rg   r”  r€  r   rV  rp  rr  rq  r”   r�   r    ri  rs   rö   r7   r5   rP  rP  Ë  s  € € € € € ð`ð `ðF ðð ñ „[ðð5ð 5ð 5ð 5ð,ð ,ð ,ðð ð ðð ð ðIð Ið Ið
Jð Jð Jð .ÐðVð Vð Vð 0ÐðGð Gð Gð>ð >ð >ð ð  ð  ð  ð2ð 2ð 2ð 2ð
ð ð ð ð r7   rP  c                   óL   — e Zd ZdZed„ ¦   «         Zdd„Zd„ Zd„ Zdd„Z	dd
„Z
dS )r“  ab  
    The offset logarithmic integral.

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

    For use in SymPy, this function is defined as

    .. math:: \operatorname{Li}(x) = \operatorname{li}(x) - \operatorname{li}(2)

    Examples
    ========

    >>> from sympy import Li
    >>> from sympy.abc import z

    The following special value is known:

    >>> Li(2)
    0

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(Li(z), z)
    1/log(z)

    The shifted logarithmic integral can be written in terms of $li(z)$:

    >>> from sympy import li
    >>> Li(z).rewrite(li)
    li(z) - li(2)

    We can numerically evaluate the logarithmic integral to arbitrary precision
    on the whole complex plane (except the singular points):

    >>> Li(2).evalf(30)
    0

    >>> Li(4).evalf(30)
    1.92242131492155809316615998938

    See Also
    ========

    li: Logarithmic integral.
    Ei: Exponential integral.
    expint: Generalised exponential integral.
    E1: Special case of the generalised exponential integral.
    Si: Sine integral.
    Ci: Cosine integral.
    Shi: Hyperbolic sine integral.
    Chi: Hyperbolic cosine integral.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Logarithmic_integral
    .. [2] https://mathworld.wolfram.com/LogarithmicIntegral.html
    .. [3] https://dlmf.nist.gov/6

    c                 óx   — |t           j        u rt           j        S |t          d¦  «        k    rt           j        S d S r–   )r   rJ   r,   r8  s     r5   rX   zLi.eval³  s2   € à•”
ˆ?ˆ?Ý”:ÐØ•!�A‘$”$ŠYˆYÝ”6ˆMð ˆYr7   r:   c                 ó€   — | j         d         }|dk    rt          j        t          |¦  «        z  S t	          | |¦  «        ‚rG   r�  rH  s      r5   r@   zLi.fdiffº  rŽ  r7   c                 ó\   — |                       t          ¦  «                             |¦  «        S r�   )rä   rP  ÚevalfrK  s     r5   rJ  zLi._eval_evalfÁ  s"   € Ø�|Š|�BÑÔ×%Ò% dÑ+Ô+Ð+r7   c                 ó@   — t          |¦  «        t          d¦  «        z
  S r–   )rP  rŽ   s      r5   rQ  zLi._eval_rewrite_as_liÄ  r•  r7   Nc                 ó`   — |                       t          ¦  «                              dd¬¦  «        S )Nrâ   T)r0   )rä   rP  rå   s       r5   r    zLi._eval_rewrite_as_tractableÇ  s'   € Ø�|Š|�BÑÔ×'Ò'¨¸$Ð'Ñ?Ô?Ð?r7   r   c                 óN   —  | j         | j        Ž }|                     |||¦  «        S r�   )rQ  r)   ri  )r/   r2   r^   rª   r«   rk  s         r5   ri  zLi._eval_nseriesÊ  s)   € Ø$ˆDÔ$ d¤iÐ0ˆØ�Š˜q ! TÑ*Ô*Ð*r7   rÎ   r�   ro  )rÏ   rÐ   rÑ   rÒ   rÔ   rX   r@   rJ  rQ  r    ri  rö   r7   r5   r“  r“  r  s˜   € € € € € ð=ð =ð@ ðð ñ „[ðð5ð 5ð 5ð 5ð,ð ,ð ,ðð ð ð@ð @ð @ð @ð+ð +ð +ð +ð +ð +r7   r“  c                   óN   ‡ — e Zd ZdZed„ ¦   «         Zd	d„Zd„ Zd„ Zd
ˆ fd„	Z	ˆ xZ
S )ÚTrigonometricIntegralz) Base class for trigonometric integrals. c                 óÂ  — |t           j        u r| j        S |t           j        u r|                      ¦   «         S |t           j        u r|                      ¦   «         S |j        r| j        S |                     t          t          ¦  «        ¦  «        }|€3|                      d¦  «        dk    r|                     t          ¦  «        }|�|                      |d¦  «        S |                     t          t           ¦  «        ¦  «        }|�|                      |d¦  «        S |                     t          d¦  «        ¦  «        }|€.|                      d¦  «        dk    r|                     d¦  «        }|�|                      |¦  «        S |                     ¦   «         \  }}|dk    r||k    rd S dt          z  t          z  |z  |                      d¦  «        z   | |¦  «        z   S )Nr   r:   rŒ   r(   )r   r,   Ú_atzerorJ   Ú_atinfrL   Ú	_atneginfrN   rR   r   r	   Ú	_trigfuncÚ_IfactorÚ_minusfactorrE  r
   rF  s       r5   rX   zTrigonometricIntegral.evalÖ  s«  € à•”ˆ;ˆ;Ø”;ÐØ•!”*ˆ_ˆ_Ø—:’:‘<”<ÐØ•!Ô$Ð$Ð$Ø—=’=‘?”?Ð"àŒ9ð 	Ø”;Ðà×'Ò'­
µ1©¬Ñ6Ô6ˆØˆ:˜#Ÿ-š-¨Ñ*Ô*¨aÒ/Ð/Ø×+Ò+­AÑ.Ô.ˆBØˆ>Ø—<’<  AÑ&Ô&Ð&Ø×'Ò'­
µA°2©¬Ñ7Ô7ˆØˆ>Ø—<’<  BÑ'Ô'Ð'à×'Ò'­
°2©¬Ñ7Ô7ˆØˆ:˜#Ÿ-š-¨Ñ*Ô*¨aÒ/Ð/Ø×+Ò+¨BÑ/Ô/ˆBØˆ>Ø×#Ò# BÑ'Ô'Ð'à×'Ò'Ñ)Ô)‰ˆˆAØ�Š6ˆ6�b˜A’g�gØˆFØ•‰t•A‰v�a‰x˜Ÿš aÑ(Ô(Ñ(¨3¨3¨r©7¬7Ñ2Ð2r7   r:   c                 ó’   — t          | j        d         ¦  «        }|dk    r|                      |¦  «        |z  S t          | |¦  «        ‚rG   )r   r)   r²  r   rH  s      r5   r@   zTrigonometricIntegral.fdiffö  sE   € Ý˜œ 1œÑ&Ô&ˆØ�qŠ=ˆ=Ø—>’> #Ñ&Ô& sÑ*Ð*å$ T¨8Ñ4Ô4Ð4r7   c                 ó\   — |                       |¦  «                             t          ¦  «        S r�   )r™   rä   rC  rŽ   s      r5   r€  z)TrigonometricIntegral._eval_rewrite_as_Eiý  s$   € Ø×+Ò+¨AÑ.Ô.×6Ò6µrÑ:Ô:Ð:r7   c                 ó^   — ddl m} |                      |¦  «                             |¦  «        S r˜  )rz   rx   r™   rä   r|   s       r5   r   z1TrigonometricIntegral._eval_rewrite_as_uppergamma   s6   € ØFÐFÐFÐFÐFÐFØ×+Ò+¨AÑ.Ô.×6Ò6°zÑBÔBÐBr7   r   c                 ó2  •— | j         d                              |d¦  «        dk    r#t          ¦   «                              |||¦  «        S |                      |¦  «                             |||¦  «        }|                      d¦  «        dk    r|dz  }|                     t          d„ d¬¦  «        }|                      d¦  «        dk    r|t          t          |¦  «        z   z  }|                     || j         d         ¦  «                             |||¦  «        S )Nr   r:   c                 ó   — | |z  |z  S r�   rö   )rW   r^   s     r5   ú<lambda>z5TrigonometricIntegral._eval_nseries.<locals>.<lambda>  s   € ¸!¸Q¹$¸q¹&€ r7   F)Úsimultaneous)	r)   r±   rÅ   ri  r²  Úreplacer   r   r   )r/   r2   r^   rª   r«   Ú
baseseriesrÍ   s         €r5   ri  z#TrigonometricIntegral._eval_nseries  sù   ø€ àŒ9�QŒ<×Ò˜Q Ñ"Ô" aÒ'Ð'Ý‘7”7×(Ò(¨¨A¨tÑ4Ô4Ð4Ø—^’^ AÑ&Ô&×4Ò4°Q¸¸4Ñ@Ô@ˆ
Ø�>Š>˜!ÑÔ Ò!Ð!Ø˜!‰OˆJØ×'Ò'­Ð-@Ð-@ÈuÐ'ÑUÔUˆ
Ø�>Š>˜!ÑÔ Ò!Ð!Ø�*¥s¨1¡v¤vÑ-Ñ-ˆJØ�Š˜q $¤)¨A¤,Ñ/Ô/×=Ò=¸aÀÀDÑIÔIÐIr7   rÎ   ro  )rÏ   rÐ   rÑ   rÒ   rÔ   rX   r@   r€  r   ri  rÖ   r×   s   @r5   r­  r­  Ò  s�   ø€ € € € € Ø3Ð3ð ð3ð 3ñ „[ð3ð>5ð 5ð 5ð 5ð;ð ;ð ;ðCð Cð Cð
Jð 
Jð 
Jð 
Jð 
Jð 
Jð 
Jð 
Jð 
Jð 
Jr7   r­  c                   óª   ‡ — e Zd ZdZeZej        Ze	d„ ¦   «         Z
e	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Zd„ Zd„ ZeZdd
„Zˆ fd„Zd„ Zˆ xZS )r›  aø  
    Sine integral.

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

    This function is defined by

    .. math:: \operatorname{Si}(z) = \int_0^z \frac{\sin{t}}{t} \mathrm{d}t.

    It is an entire function.

    Examples
    ========

    >>> from sympy import Si
    >>> from sympy.abc import z

    The sine integral is an antiderivative of $sin(z)/z$:

    >>> Si(z).diff(z)
    sin(z)/z

    It is unbranched:

    >>> from sympy import exp_polar, I, pi
    >>> Si(z*exp_polar(2*I*pi))
    Si(z)

    Sine integral behaves much like ordinary sine under multiplication by ``I``:

    >>> Si(I*z)
    I*Shi(z)
    >>> Si(-z)
    -Si(z)

    It can also be expressed in terms of exponential integrals, but beware
    that the latter is branched:

    >>> from sympy import expint
    >>> Si(z).rewrite(expint)
    -I*(-expint(1, z*exp_polar(-I*pi/2))/2 +
         expint(1, z*exp_polar(I*pi/2))/2) + pi/2

    It can be rewritten in the form of sinc function (by definition):

    >>> from sympy import sinc
    >>> Si(z).rewrite(sinc)
    Integral(sinc(_t), (_t, 0, z))

    See Also
    ========

    Ci: Cosine integral.
    Shi: Hyperbolic sine integral.
    Chi: Hyperbolic cosine integral.
    Ei: Exponential integral.
    expint: Generalised exponential integral.
    sinc: unnormalized sinc function
    E1: Special case of the generalised exponential integral.
    li: Logarithmic integral.
    Li: Offset logarithmic integral.

    References
    ==========

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

    c                 ó*   — t           t          j        z  S r�   ©r
   r   r{   ©rU   s    r5   r°  z	Si._atinf[  s   € å•!”&‰yÐr7   c                 ó,   — t            t          j        z  S r�   rÀ  rÁ  s    r5   r±  zSi._atneginf_  s   € åˆs•1”6‰zÐr7   c                 ó"   — t          |¦  «         S r�   )r›  r8  s     r5   r´  zSi._minusfactorc  s   € å�1‘”ˆvˆr7   c                 ó6   — t           t          |¦  «        z  |z  S r�   )r	   rT  ©rU   r}   Úsigns      r5   r³  zSi._Ifactorg  s   € å•�Q‘”‰x˜‰}Ðr7   c                 óÂ   — t           dz  t          t          t          ¦  «        |z  ¦  «        t          t          t           ¦  «        |z  ¦  «        z
  dz  t          z  z   S r–   )r
   r  r   r	   rŽ   s      r5   r™   zSi._eval_rewrite_as_expintk  sG   € å�!‰t•r�*¥Q™-œ-¨™/Ñ*Ô*­Rµ
½A¸2±´¸qÑ0@Ñ-AÔ-AÑAÀ1ÑDÅQÑFÑFÐFr7   c                 óŒ   — ddl m} t          t          d|g¦  «        j        ¦  «        } |t          |¦  «        |d|f¦  «        S rZ  )r]  r\  r   r   r^  r#   r`  s        r5   ra  zSi._eval_rewrite_as_Integralo  sO   € Ø6Ð6Ð6Ð6Ð6Ð6ÝÕ'¨¨a¨SÑ1Ô1Ô6Ñ7Ô7ˆØˆx�˜Q™œ ! Q¨ Ñ+Ô+Ð+r7   Nr   c                 ó:  — | j         d                              |||¬¦  «        }|                     |d¦  «        }|t          j        u r.|                     |dt          |¦  «        j        rdnd¬¦  «        }|j        r|S |j	        s|  
                    |¦  «        S | S ©Nr   r©   r¬   r­   r®   ©r)   r°   r±   r   rI   r›   r   rS  rN   r  r.   r´   s         r5   r¶   zSi._eval_as_leading_termv  s–   € ØŒi˜Œl×*Ò*¨1°4¸dÐ*ÑCÔCˆØ�xŠx˜˜1‰~Œ~ˆà•1”5ˆ=ˆ=Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDØŒ<ð 	ØˆJØÔ!ð 	Ø—9’9˜T‘?”?Ð"àˆKr7   c                 óø  •‡	— ddl m} |d         }|t          j        u r²| j        d         Š	ˆ	fd„t          |dz  dz   ¦  «        D ¦   «          |d‰	|z  z  |¦  «        gz   }ˆ	fd„t          |dz  ¦  «        D ¦   «          |d‰	|z  z  |¦  «        gz   }t          dz  t          ‰	¦  «        t          |Ž z  z
  t          ‰	¦  «        t          |Ž z  z
  S t          t          | ¦  «                             ||||¦  «        S )Nr   r¸   c                 ól   •— g | ]0}t           j        |z  t          d |z  ¦  «        z  ‰d |z  dz   z  z  ‘Œ1S r»   ©r   rM   r   r¼   s     €r5   r¾   z$Si._eval_aseries.<locals>.<listcomp>Š  óP   ø€ ð .ð .ð .Øõ ” Ñ!¥I¨a°©c¡N¤NÑ2°Q¸¸1¹¸q¹±\ÑAð .ð .ð .r7   r(   r:   c                 ór   •— g | ]3}t           j        |z  t          d |z  dz   ¦  «        z  ‰d |dz   z  z  z  ‘Œ4S r»   rÎ  r¼   s     €r5   r¾   z$Si._eval_aseries.<locals>.<listcomp>Œ  óV   ø€ ð *ð *ð *Øõ ” Ñ!¥I¨a°©c°A©gÑ$6Ô$6Ñ6¸¸QÀÀAÁ¹Y¹ÑGð *ð *ð *r7   )r¿   r¹   r   rJ   r)   rÄ   r
   r!   r   r"   rÅ   r›  rÆ   )r/   r^   rÇ   r2   rª   r¹   rÈ   ÚpÚqr}   rÍ   s            @€r5   rÆ   zSi._eval_aseriesƒ  s4  øø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆð •A”JÐÐØ”	˜!”ˆAð.ð .ð .ð .Ý" 1 a¡4¨!¡8™_œ_ð.ñ .ô .Ø16°°q¸¸A¹±v¸qÑ1AÔ1AÐ0BñCˆAð*ð *ð *ð *Ý" 1 a¡4™[œ[ð*ñ *ô *Ø-2¨U°1°Q¸±T±6¸1Ñ-=Ô-=Ð,>ñ?ˆAå�a‘4�#˜a™&œ&¥ a ™.Ñ(­3¨q©6¬6µ#°q°'©>Ñ9Ð9õ •R˜‰Œ×,Ò,¨Q°°q¸$Ñ?Ô?Ð?r7   c                 ó2   — | j         d         }|j        rdS d S rn   rr   r‘  s     r5   rs   zSi._eval_is_zero“  r£  r7   rc   )rÏ   rÐ   rÑ   rÒ   r"   r²  r   r,   r¯  rÔ   r°  r±  r´  r³  r™   ra  Ú_eval_rewrite_as_sincr¶   rÆ   rs   rÖ   r×   s   @r5   r›  r›    s  ø€ € € € € ðDð DðL €IØŒf€Gàðð ñ „[ðð ðð ñ „[ðð ðð ñ „[ðð ðð ñ „[ððGð Gð Gð,ð ,ð ,ð
 7Ððð ð ð ð@ð @ð @ð @ð @ð ð ð ð ð ð ð r7   r›  c                   ó    ‡ — e Zd ZdZeZej        Ze	d„ ¦   «         Z
e	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Zd„ Zd„ Zdd
„Zˆ fd„Zˆ xZS )rš  aâ  
    Cosine integral.

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

    This function is defined for positive $x$ by

    .. math:: \operatorname{Ci}(x) = \gamma + \log{x}
                         + \int_0^x \frac{\cos{t} - 1}{t} \mathrm{d}t
           = -\int_x^\infty \frac{\cos{t}}{t} \mathrm{d}t,

    where $\gamma$ is the Euler-Mascheroni constant.

    We have

    .. math:: \operatorname{Ci}(z) =
        -\frac{\operatorname{E}_1\left(e^{i\pi/2} z\right)
               + \operatorname{E}_1\left(e^{-i \pi/2} z\right)}{2}

    which holds for all polar $z$ and thus provides an analytic
    continuation to the Riemann surface of the logarithm.

    The formula also holds as stated
    for $z \in \mathbb{C}$ with $\Re(z) > 0$.
    By lifting to the principal branch, we obtain an analytic function on the
    cut complex plane.

    Examples
    ========

    >>> from sympy import Ci
    >>> from sympy.abc import z

    The cosine integral is a primitive of $\cos(z)/z$:

    >>> Ci(z).diff(z)
    cos(z)/z

    It has a logarithmic branch point at the origin:

    >>> from sympy import exp_polar, I, pi
    >>> Ci(z*exp_polar(2*I*pi))
    Ci(z) + 2*I*pi

    The cosine integral behaves somewhat like ordinary $\cos$ under
    multiplication by $i$:

    >>> from sympy import polar_lift
    >>> Ci(polar_lift(I)*z)
    Chi(z) + I*pi/2
    >>> Ci(polar_lift(-1)*z)
    Ci(z) + I*pi

    It can also be expressed in terms of exponential integrals:

    >>> from sympy import expint
    >>> Ci(z).rewrite(expint)
    -expint(1, z*exp_polar(-I*pi/2))/2 - expint(1, z*exp_polar(I*pi/2))/2

    See Also
    ========

    Si: Sine integral.
    Shi: Hyperbolic sine integral.
    Chi: Hyperbolic cosine integral.
    Ei: Exponential integral.
    expint: Generalised exponential integral.
    E1: Special case of the generalised exponential integral.
    li: Logarithmic integral.
    Li: Offset logarithmic integral.

    References
    ==========

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

    c                 ó   — t           j        S r�   )r   r,   rÁ  s    r5   r°  z	Ci._atinfì  s	   € åŒvˆr7   c                 ó    — t           t          z  S r�   )r	   r
   rÁ  s    r5   r±  zCi._atneginfð  s   € å•‰tˆr7   c                 ó@   — t          |¦  «        t          t          z  z   S r�   ©rš  r	   r
   r8  s     r5   r´  zCi._minusfactorô  s   € å�!‰uŒu•q�‘t‰|Ðr7   c                 óL   — t          |¦  «        t          t          z  dz  |z  z   S r–   ©rU  r	   r
   rÅ  s      r5   r³  zCi._Ifactorø  s   € å�1‰vŒv��"™˜Q™˜t™Ñ#Ð#r7   c                 óž   — t          t          t          ¦  «        |z  ¦  «        t          t          t           ¦  «        |z  ¦  «        z    dz  S r–   )r  r   r	   rŽ   s      r5   r™   zCi._eval_rewrite_as_expintü  s<   € Ý•J�q‘M”M !‘OÑ$Ô$¥r­*µa°R©.¬.¸Ñ*:Ñ';Ô';Ñ;Ð<¸QÑ>Ð>r7   c                 óÒ   — ddl m} t          t          d|g¦  «        j        ¦  «        }t
          j        t          |¦  «        z    |dt          |¦  «        z
  |z  |d|f¦  «        z
  S rˆ  )	r]  r\  r   r   r^  r   r   r   r!   r`  s        r5   ra  zCi._eval_rewrite_as_Integralÿ  si   € Ø6Ð6Ð6Ð6Ð6Ð6ÝÕ'¨¨a¨SÑ1Ô1Ô6Ñ7Ô7ˆÝŒ|�c !™fœfÑ$ x x°µ3°q±6´6±¸1±¸qÀ!ÀQ¸iÑ'HÔ'HÑHÐHr7   Nr   c                 óÆ  — | j         d                              |||¬¦  «        }|                     |d¦  «        }|t          j        u r.|                     |dt          |¦  «        j        rdnd¬¦  «        }|j        rH| 	                    |¦  «        \  }}|€t          |¦  «        n|}t          |¦  «        ||z  z   t          z   S |j        r|                      |¦  «        S | S rÊ  ©r)   r°   r±   r   rI   r›   r   rS  rN   rd  r   r   ro   r.   ©r/   r2   rª   r«   rV   rµ   rf  rg  s           r5   r¶   zCi._eval_as_leading_term  óÓ   € ØŒi˜Œl×*Ò*¨1°4¸dÐ*ÑCÔCˆØ�xŠx˜˜1‰~Œ~ˆà•1”5ˆ=ˆ=Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDØŒ<ð 	Ø×(Ò(¨Ñ+Ô+‰DˆAˆqØ!˜\•3�q‘6”6�6¨tˆDÝ�q‘6”6˜A˜d™F‘?¥ZÑ/Ð/ØŒ^ð 	Ø—9’9˜T‘?”?Ð"àˆKr7   c                 ó>  •‡
— ddl m} |d         }|t          j        t          j        fv rÉ| j        d         Š
ˆ
fd„t          |dz  dz   ¦  «        D ¦   «          |d‰
|z  z  |¦  «        gz   }ˆ
fd„t          |dz  ¦  «        D ¦   «          |d‰
|z  z  |¦  «        gz   }t          ‰
¦  «        t          |Ž z  t          ‰
¦  «        t          |Ž z  z
  }	|t          j        u r|	t          t          z  z  }	|	S t          t          | ¦  «                             ||||¦  «        S )Nr   r¸   c                 ól   •— g | ]0}t           j        |z  t          d |z  ¦  «        z  ‰d |z  dz   z  z  ‘Œ1S r»   rÎ  r¼   s     €r5   r¾   z$Ci._eval_aseries.<locals>.<listcomp>  rÏ  r7   r(   r:   c                 ór   •— g | ]3}t           j        |z  t          d |z  dz   ¦  «        z  ‰d |dz   z  z  z  ‘Œ4S r»   rÎ  r¼   s     €r5   r¾   z$Ci._eval_aseries.<locals>.<listcomp>  rÑ  r7   )r¿   r¹   r   rJ   rL   r)   rÄ   r"   r   r!   r	   r
   rÅ   rš  rÆ   )r/   r^   rÇ   r2   rª   r¹   rÈ   rÒ  rÓ  Úresultr}   rÍ   s             @€r5   rÆ   zCi._eval_aseries  sP  øø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆà•Q”Z¥Ô!3Ð4Ð4Ð4Ø”	˜!”ˆAð.ð .ð .ð .Ý" 1 a¡4¨!¡8™_œ_ð.ñ .ô .Ø16°°q¸¸A¹±v¸qÑ1AÔ1AÐ0BñCˆAð*ð *ð *ð *Ý" 1 a¡4™[œ[ð*ñ *ô *Ø-2¨U°1°Q¸±T±6¸1Ñ-=Ô-=Ð,>ñ?ˆAå˜‘V”V�S !˜WÑ%­¨A©¬µ°Q°Ñ(8Ñ8ˆFà�Ô*Ð*Ð*Ø�!�B™$‘�ØˆMå•R˜‰Œ×,Ò,¨Q°°q¸$Ñ?Ô?Ð?r7   rc   )rÏ   rÐ   rÑ   rÒ   r!   r²  r   r²   r¯  rÔ   r°  r±  r´  r³  r™   ra  r¶   rÆ   rÖ   r×   s   @r5   rš  rš  ™  sü   ø€ € € € € ðMð Mð^ €IØÔ€Gàðð ñ „[ðð ðð ñ „[ðð ðð ñ „[ðð ð$ð $ñ „[ð$ð?ð ?ð ?ðIð Ið Ið
ð ð ð ð@ð @ð @ð @ð @ð @ð @ð @ð @r7   rš  c                   ó�   — e Zd ZdZeZej        Ze	d„ ¦   «         Z
e	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Zd„ Zd„ Zdd
„ZdS )rT  a  
    Sinh integral.

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

    This function is defined by

    .. math:: \operatorname{Shi}(z) = \int_0^z \frac{\sinh{t}}{t} \mathrm{d}t.

    It is an entire function.

    Examples
    ========

    >>> from sympy import Shi
    >>> from sympy.abc import z

    The Sinh integral is a primitive of $\sinh(z)/z$:

    >>> Shi(z).diff(z)
    sinh(z)/z

    It is unbranched:

    >>> from sympy import exp_polar, I, pi
    >>> Shi(z*exp_polar(2*I*pi))
    Shi(z)

    The $\sinh$ integral behaves much like ordinary $\sinh$ under
    multiplication by $i$:

    >>> Shi(I*z)
    I*Si(z)
    >>> Shi(-z)
    -Shi(z)

    It can also be expressed in terms of exponential integrals, but beware
    that the latter is branched:

    >>> from sympy import expint
    >>> Shi(z).rewrite(expint)
    expint(1, z)/2 - expint(1, z*exp_polar(I*pi))/2 - I*pi/2

    See Also
    ========

    Si: Sine integral.
    Ci: Cosine integral.
    Chi: Hyperbolic cosine integral.
    Ei: Exponential integral.
    expint: Generalised exponential integral.
    E1: Special case of the generalised exponential integral.
    li: Logarithmic integral.
    Li: Offset logarithmic integral.

    References
    ==========

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

    c                 ó   — t           j        S r�   ©r   rJ   rÁ  s    r5   r°  z
Shi._atinfh  ó
   € åŒzÐr7   c                 ó   — t           j        S r�   )r   rL   rÁ  s    r5   r±  zShi._atneginfl  s   € åÔ!Ð!r7   c                 ó"   — t          |¦  «         S r�   )rT  r8  s     r5   r´  zShi._minusfactorp  s   € å�A‘”ˆwˆr7   c                 ó6   — t           t          |¦  «        z  |z  S r�   )r	   r›  rÅ  s      r5   r³  zShi._Ifactort  s   € å•�A‘”‰w�t‰|Ðr7   c                 ó¦   — t          |¦  «        t          t          t          t          z  ¦  «        |z  ¦  «        z
  dz  t          t          z  dz  z
  S r–   )r  r   r	   r
   rŽ   s      r5   r™   zShi._eval_rewrite_as_expintx  s<   € å�1‘”��9¥Q¥r¡T™?œ?¨1Ñ,Ñ-Ô-Ñ-¨qÑ0µ1µR±4¸±6Ñ9Ð9r7   c                 ó2   — | j         d         }|j        rdS d S rn   rr   r‘  s     r5   rs   zShi._eval_is_zero|  r£  r7   Nr   c                 ó4  — | j         d                              |¦  «        }|                     |d¦  «        }|t          j        u r.|                     |dt          |¦  «        j        rdnd¬¦  «        }|j        r|S |j	        s|  
                    |¦  «        S | S )Nr   r¬   r­   r®   rË  r´   s         r5   r¶   zShi._eval_as_leading_term�  s�   € ØŒi˜Œl×*Ò*¨1Ñ-Ô-ˆØ�xŠx˜˜1‰~Œ~ˆà•1”5ˆ=ˆ=Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDØŒ<ð 	ØˆJØÔ!ð 	Ø—9’9˜T‘?”?Ð"àˆKr7   rc   )rÏ   rÐ   rÑ   rÒ   r    r²  r   r,   r¯  rÔ   r°  r±  r´  r³  r™   rs   r¶   rö   r7   r5   rT  rT  %  sÉ   € € € € € ð=ð =ð~ €IØŒf€Gàðð ñ „[ðð ð"ð "ñ „[ð"ð ðð ñ „[ðð ðð ñ „[ðð:ð :ð :ðð ð ð
ð ð ð ð ð r7   rT  c                   óŠ   — e Zd ZdZeZej        Ze	d„ ¦   «         Z
e	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Zd„ Zd
d	„ZdS )rU  a   
    Cosh integral.

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

    This function is defined for positive $x$ by

    .. math:: \operatorname{Chi}(x) = \gamma + \log{x}
                         + \int_0^x \frac{\cosh{t} - 1}{t} \mathrm{d}t,

    where $\gamma$ is the Euler-Mascheroni constant.

    We have

    .. math:: \operatorname{Chi}(z) = \operatorname{Ci}\left(e^{i \pi/2}z\right)
                         - i\frac{\pi}{2},

    which holds for all polar $z$ and thus provides an analytic
    continuation to the Riemann surface of the logarithm.
    By lifting to the principal branch we obtain an analytic function on the
    cut complex plane.

    Examples
    ========

    >>> from sympy import Chi
    >>> from sympy.abc import z

    The $\cosh$ integral is a primitive of $\cosh(z)/z$:

    >>> Chi(z).diff(z)
    cosh(z)/z

    It has a logarithmic branch point at the origin:

    >>> from sympy import exp_polar, I, pi
    >>> Chi(z*exp_polar(2*I*pi))
    Chi(z) + 2*I*pi

    The $\cosh$ integral behaves somewhat like ordinary $\cosh$ under
    multiplication by $i$:

    >>> from sympy import polar_lift
    >>> Chi(polar_lift(I)*z)
    Ci(z) + I*pi/2
    >>> Chi(polar_lift(-1)*z)
    Chi(z) + I*pi

    It can also be expressed in terms of exponential integrals:

    >>> from sympy import expint
    >>> Chi(z).rewrite(expint)
    -expint(1, z)/2 - expint(1, z*exp_polar(I*pi))/2 - I*pi/2

    See Also
    ========

    Si: Sine integral.
    Ci: Cosine integral.
    Shi: Hyperbolic sine integral.
    Ei: Exponential integral.
    expint: Generalised exponential integral.
    E1: Special case of the generalised exponential integral.
    li: Logarithmic integral.
    Li: Offset logarithmic integral.

    References
    ==========

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

    c                 ó   — t           j        S r�   ré  rÁ  s    r5   r°  z
Chi._atinfÝ  rê  r7   c                 ó   — t           j        S r�   ré  rÁ  s    r5   r±  zChi._atneginfá  rê  r7   c                 ó@   — t          |¦  «        t          t          z  z   S r�   rÜ  r8  s     r5   r´  zChi._minusfactorå  s   € å�1‰vŒv��"™‰}Ðr7   c                 óL   — t          |¦  «        t          t          z  dz  |z  z   S r–   rÚ  rÅ  s      r5   r³  zChi._Ifactoré  s   € å�!‰uŒu•q�‘t˜A‘v˜d‘{Ñ"Ð"r7   c                 ó¨   — t            t          z  dz  t          |¦  «        t          t          t           t          z  ¦  «        |z  ¦  «        z   dz  z
  S r–   )r	   r
   r  r   rŽ   s      r5   r™   zChi._eval_rewrite_as_expintí  s>   € Ýˆr•"‰u�Q‰w�"˜Q™%œ%¥"¥Y­qµ©t¡_¤_°QÑ%6Ñ"7Ô"7Ñ7¸Ñ:Ñ:Ð:r7   Nr   c                 óÆ  — | j         d                              |||¬¦  «        }|                     |d¦  «        }|t          j        u r.|                     |dt          |¦  «        j        rdnd¬¦  «        }|j        rH| 	                    |¦  «        \  }}|€t          |¦  «        n|}t          |¦  «        ||z  z   t          z   S |j        r|                      |¦  «        S | S rÊ  rà  rá  s           r5   r¶   zChi._eval_as_leading_termð  râ  r7   rc   )rÏ   rÐ   rÑ   rÒ   r   r²  r   r²   r¯  rÔ   r°  r±  r´  r³  r™   r¶   rö   r7   r5   rU  rU  �  s½   € € € € € ðHð HðT €IØÔ€Gàðð ñ „[ðð ðð ñ „[ðð ðð ñ „[ðð ð#ð #ñ „[ð#ð;ð ;ð ;ðð ð ð ð ð r7   rU  c                   óN   — e Zd ZdZdZed„ ¦   «         Zd
d„Zd„ ZeZ	d„ Z
d„ ZeZd	S )ÚFresnelIntegralz& Base class for the Fresnel integrals.Tc                 ó@  — |t           j        u rt           j        S |j        rt           j        S t           j        }|}d}|                     d¦  «        }|�| }|}d}|                     t          ¦  «        }|�| j        t          z  |z  }|}d}|r| | |¦  «        z  S d S )NFrŒ   T)	r   rJ   r{   rN   r,   rK   rR   r	   Ú_sign)rU   r}   ÚprefactÚnewargÚchangedrû   s         r5   rX   zFresnelIntegral.eval		  s¼   € ð •”
ˆ?ˆ?Ý”6ˆMð Œ9ð 	Ý”6ˆMõ ”%ˆØˆØˆà×,Ò,¨RÑ0Ô0ˆØˆ>Ø�hˆGØˆFØˆGà×,Ò,­QÑ/Ô/ˆØˆ>Ø”i¥‘k 'Ñ)ˆGØˆFØˆGàð 	'Ø˜3˜3˜v™;œ;Ñ&Ð&ð	'ð 	'r7   r:   c                 óž   — |dk    r8|                       t          j        t          z  | j        d         dz  z  ¦  «        S t          | |¦  «        ‚r+  )r²  r   r{   r
   r)   r   r>   s     r5   r@   zFresnelIntegral.fdiff(	  sB   € Ø�qŠ=ˆ=Ø—>’>¥!¤&­¡)¨D¬I°a¬L¸!©OÑ";Ñ<Ô<Ð<å$ T¨8Ñ4Ô4Ð4r7   c                 ó&   — | j         d         j        S rc   rj   rf   s    r5   rÿ   z&FresnelIntegral._eval_is_extended_real.	  rl   r7   c                 ó&   — | j         d         j        S rc   rr   rf   s    r5   rs   zFresnelIntegral._eval_is_zero3	  rt   r7   c                 óf   — |                       | j        d                              ¦   «         ¦  «        S rc   rd   rf   s    r5   rg   zFresnelIntegral._eval_conjugate6	  rh   r7   NrÎ   )rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rX   r@   rÿ   rp   rs   rg   r6   r-   rö   r7   r5   rù  rù  	  s�   € € € € € Ø0Ð0à€Jàð'ð 'ñ „[ð'ð<5ð 5ð 5ð 5ð-ð -ð -ð -€Oð$ð $ð $ð3ð 3ð 3ð -€L€L€Lr7   rù  c                   ó|   ‡ — e Zd ZdZeZej         Ze	e
d„ ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Zdd	„Zˆ fd
„Zˆ xZS )r„   ay  
    Fresnel integral S.

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

    This function is defined by

    .. math:: \operatorname{S}(z) = \int_0^z \sin{\frac{\pi}{2} t^2} \mathrm{d}t.

    It is an entire function.

    Examples
    ========

    >>> from sympy import I, oo, fresnels
    >>> from sympy.abc import z

    Several special values are known:

    >>> fresnels(0)
    0
    >>> fresnels(oo)
    1/2
    >>> fresnels(-oo)
    -1/2
    >>> fresnels(I*oo)
    -I/2
    >>> fresnels(-I*oo)
    I/2

    In general one can pull out factors of -1 and $i$ from the argument:

    >>> fresnels(-z)
    -fresnels(z)
    >>> fresnels(I*z)
    -I*fresnels(z)

    The Fresnel S integral obeys the mirror symmetry
    $\overline{S(z)} = S(\bar{z})$:

    >>> from sympy import conjugate
    >>> conjugate(fresnels(z))
    fresnels(conjugate(z))

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(fresnels(z), z)
    sin(pi*z**2/2)

    Defining the Fresnel functions via an integral:

    >>> from sympy import integrate, pi, sin, expand_func
    >>> integrate(sin(pi*z**2/2), z)
    3*fresnels(z)*gamma(3/4)/(4*gamma(7/4))
    >>> expand_func(integrate(sin(pi*z**2/2), z))
    fresnels(z)

    We can numerically evaluate the Fresnel integral to arbitrary precision
    on the whole complex plane:

    >>> fresnels(2).evalf(30)
    0.343415678363698242195300815958

    >>> fresnels(-2*I).evalf(30)
    0.343415678363698242195300815958*I

    See Also
    ========

    fresnelc: Fresnel cosine integral.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Fresnel_integral
    .. [2] https://dlmf.nist.gov/7
    .. [3] https://mathworld.wolfram.com/FresnelIntegrals.html
    .. [4] https://functions.wolfram.com/GammaBetaErf/FresnelS
    .. [5] The converging factors for the fresnel integrals
            by John W. Wrench Jr. and Vicki Alley

    c                 ó”  — | dk     rt           j        S t          |¦  «        }t          |¦  «        dk    r=|d         }t          dz   |dz  z  d| z  dz
  z  d| z  d| z  dz   z  d| z  dz   z  z  |z  S |dz  |dz   | z  z  t          d¦  «        d| z  dz
  z  t          d| z  dz   z  z  z  d| z  dz   t          d| z  dz   ¦  «        z  z  S )	Nr   r:   rŒ   r(   é   é   r’   r[   ©r   r,   r   r\   r
   r   ©r^   r2   r_   rÒ  s       r5   ra   zfresnels.taylor_term”	  só   € ð ˆqŠ5ˆ5Ý”6ˆMå˜‘
”
ˆAÝ�>Ñ"Ô" QÒ&Ð&Ø" 2Ô&�Ý˜Q™˜˜q !™t™ Q q¡S¨1¡WÑ-¨q°©s°A°a±C¸!±G©}¸aÀ¹cÀA¹gÑ/FÑGÈ1ÑLÐLà˜!‘t  1¡˜u q™jÑ(­A¨a©D¬D°2°a±4¸!±8Ñ,<½RÀ!ÀAÁ#ÈÁ'¹]Ñ,JÑKÐPQÐRSÑPSÐVWÑPWÕYbÐcdÐefÑcfÐijÑcjÑYkÔYkÑOkÑlÐlr7   c           	      ó4  — t           j        t          z   dz  t          t           j        t          z   dz  t	          t
          ¦  «        z  |z  ¦  «        t          t          t           j        t          z
  dz  t	          t
          ¦  «        z  |z  ¦  «        z  z
  z  S ©Nr  r(   ©r   rK   r	   r9   r   r
   rŽ   s      r5   rè   zfresnels._eval_rewrite_as_erf¡	  ók   € Ý”�‘	˜1‰}¥¥Q¤U­Q¡Y°¡Mµ$µr±(´(Ñ$:¸1Ñ$<Ñ =Ô =ÅÅ#ÅqÄuÍqÁyÐRSÁmÕTXÕY[ÑT\ÔT\ÑF\Ð]^ÑF^ÑB_ÔB_Ñ@_Ñ _Ñ`Ð`r7   c           	      óÄ   — t           |dz  z  dz  t          t          dd¦  «        gt          dd¦  «        t          dd¦  «        gt           dz   |dz  z  dz  ¦  «        z  S )Nr’   é   r  r(   é   é   )r
   r$   r   rŽ   s      r5   r”   zfresnels._eval_rewrite_as_hyper¤	  sb   € Ý�!�Q‘$‰w�q‰y�5¥(¨1¨a¡.¤.Ð!1µH¸QÀ±N´NÅHÈQÐPQÁNÄNÐ3SÕVXÐZ[ÑV[ÐU[Ð\]Ð_`Ñ\`ÑU`ÐacÑUcÑdÔdÑdÐdr7   c           
      ó<  — t           |t          dd¦  «        z  z  t          d¦  «        |dz  t          dd¦  «        z  z  | t          dd¦  «        z  z  z  t          g dgt          dd¦  «        gt          dd¦  «        dgt           dz   |dz  z  dz  ¦  «        z  S )Né	   r  r(   r’   r:   r   r  )r
   r   r   r%   rŽ   s      r5   r�   z!fresnels._eval_rewrite_as_meijerg§	  s�   € Ý�1•h˜q !‘n”nÑ$Ñ$­¨Q©¬°°A±½ÀÀA¹¼Ñ0FÑ(FÈÈÍXÐVWÐYZÉ^Ì^ÑG[Ñ([Ñ\Ý˜"˜q˜c¥H¨Q°¡N¤NÐ#3µh¸qÀ!±n´nÀaÐ5HÍ2ÈqÉ5È&ÐQRÐTUÑQUÉ+ÐVXÉ.ÑYÔYñZð 	[r7   c                 ó¨   — ddl m} t          t          d|g¦  «        j        ¦  «        } |t          t          |dz  z  dz  ¦  «        |d|f¦  «        S ©Nr   r[  rW   r(   )r]  r\  r   r   r^  r"   r
   r`  s        r5   ra  z"fresnels._eval_rewrite_as_Integral«	  ó[   € Ø6Ð6Ð6Ð6Ð6Ð6ÝÕ'¨¨a¨SÑ1Ô1Ô6Ñ7Ô7ˆØˆx��B˜q !™t™G A™I™œ¨¨A¨q¨	Ñ2Ô2Ð2r7   Nr   c                 óà  — ddl m} | j        d                              |||¬¦  «        }|                     |d¦  «        }|t
          j        u r.|                     |dt          |¦  «        j	        rdnd¬¦  «        }|j
        rt          |dz  z  dz  S |t
          j        t
          j        fv r.|t
          j        u rd	nd
}|t
          j        z   |||¦  «        z   S |                      |¦  «        S )Nr   r¸   r©   r¬   r­   r®   r’   r  r:   rŒ   )r¿   r¹   r)   r°   r±   r   r²   r›   r   rS  rN   r
   rJ   rL   r{   r.   ©r/   r2   rª   r«   r¹   rV   rµ   rÌ   s           r5   r¶   zfresnels._eval_as_leading_term°	  sí   € Ø,Ð,Ð,Ð,Ð,Ð,ØŒi˜Œl×*Ò*¨1°4¸dÐ*ÑCÔCˆØ�xŠx˜˜1‰~Œ~ˆà•1Ô$Ð$Ð$Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDØŒ<ð 	#Ý�c˜1‘f‘9˜Q‘;ÐØ•a”j¥!Ô"4Ð5Ð5Ð5Ø�QœZÐ'Ð'��¨RˆAØ•Q”V‘8˜e˜e A q™kœkÑ)Ð)à—9’9˜T‘?”?Ð"r7   c                 óª  •‡‡
— ddl m} |d         }|t          j        t          j         fv �r| j        d         Š
ˆˆ
fd„t          d‰¦  «        D ¦   «         }dd‰
z  z  gˆˆ
fd„t          d‰¦  «        D ¦   «         z   }d„ |D ¦   «         }d„ |D ¦   «         }|t          j        u rdnd	}	|	t          j        z  t          ‰
dz  ¦  «        t          |Ž z  t          ‰
dz  ¦  «        t          |Ž z  z    
                    |t          dt          z  ¦  «        |z  ¦  «        z    |d‰
‰z  z  |¦  «        z   S t          ¦   «                              ‰|||¦  «        S )
Nr   r¸   c                 óÚ   •— g | ]g}d |z  dz   ‰k     ¯t           j        |z  t          d |z  dz   ¦  «        z  dd|z  dz   z  ‰d |z  dz   z  z  dd|z  z  z  t          d|z  ¦  «        z  z  ‘ŒhS ©r  r’   r:   r(   rÎ  ©r½   r`   r^   r}   s     €€r5   r¾   z*fresnels._eval_aseries.<locals>.<listcomp>É	  s�   ø€ ð 6ð 6ð 6à¨¨1©¨q©°1ª¨õ ” Ñ!¥I¨a°©c°A©gÑ$6Ô$6Ñ6Ø�a˜‘c˜A‘g‘,  Q q¡S¨1¡W¡Ñ-°°A°a±C±Ñ8½À1ÀQÁ3¹¼ÑGñIà)4¨¨r7   r:   r(   c                 óæ   •— g | ]m}d |z  dz   ‰k     ¯t           j        |z  t          d |z  dz
  ¦  «        z  dd|z  dz   z  ‰d |z  dz   z  z  dd|z  dz
  z  z  t          d|z  dz
  ¦  «        z  z  ‘ŒnS ©r  r:   r(   rÎ  r  s     €€r5   r¾   z*fresnels._eval_aseries.<locals>.<listcomp>Ì	  ó™   ø€ ð 6ð 6ð 6à¨¨1©¨q©°1ª¨õ œ]¨AÑ-µ	¸!¸A¹#À¹'Ñ0BÔ0BÑBØ�a˜‘c˜A‘g‘,  Q q¡S¨1¡W¡Ñ-°°A°a±C¸!±G±Ñ<½YÀqÈÁsÈQÁwÑ=OÔ=OÑOñQà)4¨¨r7   c                 óD   — g | ]}t          d t          z  ¦  «         |z  ‘ŒS r~  ©r   r
   ©r½   rW   s     r5   r¾   z*fresnels._eval_aseries.<locals>.<listcomp>Ð	  ó(   € Ð*Ð*Ð* 1•$�q�‘t‘*”*�˜Q‘Ð*Ð*Ð*r7   c                 óD   — g | ]}t          d t          z  ¦  «         |z  ‘ŒS r~  r   r!  s     r5   r¾   z*fresnels._eval_aseries.<locals>.<listcomp>Ñ	  r"  r7   rŒ   )r¿   r¹   r   rJ   r)   rÄ   r{   r"   r   r!   r±   r   r
   rÅ   rÆ   ©r/   r^   rÇ   r2   rª   r¹   rÈ   rÒ  rÓ  rÌ   r}   rÍ   s    `        @€r5   rÆ   zfresnels._eval_aseries¿	  s™  øøø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆð •Q”Z¥!¤* Ð-Ð-Ñ-Ø”	˜!”ˆAð6ð 6ð 6ð 6ð 6å  1™+œ+ð6ñ 6ô 6ˆAð �A�a‘C‘�	ð 6ð 6ð 6ð 6ð 6å  1™+œ+ð6ñ 6ô 6ñ 6ˆAð +Ð*¨Ð*Ñ*Ô*ˆAØ*Ð*¨Ð*Ñ*Ô*ˆAØ�aœjÐ(Ð(��¨bˆAð •Q”V‘8�s 1 a¡4™yœy­¨a¨Ñ0µ3°q¸!±t±9´9½SÀ!¸WÑ3DÑDß’$�q�$˜q¥™t™*œ* Q™,Ñ'Ô'ñ(Ø*/¨%°°!°Q±$±¸Ñ*:Ô*:ñ;ð ;õ ‰wŒw×$Ò$ Q¨¨q°$Ñ7Ô7Ð7r7   rc   )rÏ   rÐ   rÑ   rÒ   r"   r²  r   rK   rû  rÕ   r   ra   rè   r”   r�   ra  r¶   rÆ   rÖ   r×   s   @r5   r„   r„   <	  sÔ   ø€ € € € € ðSð Sðh €IØŒUˆF€EàØð	mð 	mñ „Wñ „\ð	mðað að aðeð eð eð[ð [ð [ð3ð 3ð 3ð
#ð #ð #ð #ð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8r7   r„   c                   óz   ‡ — e Zd ZdZeZej        Ze	e
d„ ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Zdd	„Zˆ fd
„Zˆ xZS )rƒ   au  
    Fresnel integral C.

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

    This function is defined by

    .. math:: \operatorname{C}(z) = \int_0^z \cos{\frac{\pi}{2} t^2} \mathrm{d}t.

    It is an entire function.

    Examples
    ========

    >>> from sympy import I, oo, fresnelc
    >>> from sympy.abc import z

    Several special values are known:

    >>> fresnelc(0)
    0
    >>> fresnelc(oo)
    1/2
    >>> fresnelc(-oo)
    -1/2
    >>> fresnelc(I*oo)
    I/2
    >>> fresnelc(-I*oo)
    -I/2

    In general one can pull out factors of -1 and $i$ from the argument:

    >>> fresnelc(-z)
    -fresnelc(z)
    >>> fresnelc(I*z)
    I*fresnelc(z)

    The Fresnel C integral obeys the mirror symmetry
    $\overline{C(z)} = C(\bar{z})$:

    >>> from sympy import conjugate
    >>> conjugate(fresnelc(z))
    fresnelc(conjugate(z))

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(fresnelc(z), z)
    cos(pi*z**2/2)

    Defining the Fresnel functions via an integral:

    >>> from sympy import integrate, pi, cos, expand_func
    >>> integrate(cos(pi*z**2/2), z)
    fresnelc(z)*gamma(1/4)/(4*gamma(5/4))
    >>> expand_func(integrate(cos(pi*z**2/2), z))
    fresnelc(z)

    We can numerically evaluate the Fresnel integral to arbitrary precision
    on the whole complex plane:

    >>> fresnelc(2).evalf(30)
    0.488253406075340754500223503357

    >>> fresnelc(-2*I).evalf(30)
    -0.488253406075340754500223503357*I

    See Also
    ========

    fresnels: Fresnel sine integral.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Fresnel_integral
    .. [2] https://dlmf.nist.gov/7
    .. [3] https://mathworld.wolfram.com/FresnelIntegrals.html
    .. [4] https://functions.wolfram.com/GammaBetaErf/FresnelC
    .. [5] The converging factors for the fresnel integrals
            by John W. Wrench Jr. and Vicki Alley

    c                 ó|  — | dk     rt           j        S t          |¦  «        }t          |¦  «        dk    r=|d         }t          dz   |dz  z  d| z  dz
  z  d| z  d| z  dz
  z  d| z  dz   z  z  |z  S ||dz   | z  z  t          d¦  «        d| z  z  t          d| z  z  z  z  d| z  dz   t          d| z  ¦  «        z  z  S )	Nr   r:   rŒ   r(   r  r’   r  r[   r  r  s       r5   ra   zfresnelc.taylor_term5
  s×   € ð ˆqŠ5ˆ5Ý”6ˆMå˜‘
”
ˆAÝ�>Ñ"Ô" QÒ&Ð&Ø" 2Ô&�Ý˜Q™˜˜q !™t™ Q q¡S¨1¡WÑ-¨q°©s°A°a±C¸!±G©}¸aÀ¹cÀA¹gÑ/FÑGÈ1ÑLÐLà˜Q ™T˜E A™:‘~­¨1©¬°°1±©µb¸1¸Q¹3±iÑ)?Ñ@ÀQÀqÁSÈ1ÁWÍiÐXYÐZ[ÑX[ÉnÌnÑD\Ñ]Ð]r7   c           	      ó4  — t           j        t          z
  dz  t          t           j        t          z   dz  t	          t
          ¦  «        z  |z  ¦  «        t          t          t           j        t          z
  dz  t	          t
          ¦  «        z  |z  ¦  «        z  z   z  S r
  r  rŽ   s      r5   rè   zfresnelc._eval_rewrite_as_erfB
  r  r7   c           	      ó    — |t          t          dd¦  «        gt          j        t          dd¦  «        gt          dz   |dz  z  dz  ¦  «        z  S )Nr:   r  é   r(   r  )r$   r   r   r{   r
   rŽ   s      r5   r”   zfresnelc._eval_rewrite_as_hyperE
  sF   € Ø•5�( 1 a™.œ.Ð)­A¬FµH¸QÀ±N´NÐ+CÅbÈ!ÁeÀVÈAÈqÉDÁ[ÐQSÁ^ÑTÔTÑTÐTr7   c           
      ó0  — t           |t          dd¦  «        z  z  t          d¦  «        t          |dz  d¦  «        z  t          | d¦  «        z  z  t	          g dgt          dd¦  «        gt          dd¦  «        dgt           dz   |dz  z  dz  ¦  «        z  S )Nr’   r  r(   r:   r   r  )r
   r   r   r   r%   rŽ   s      r5   r�   z!fresnelc._eval_rewrite_as_meijergH
  s‘   € Ý�1•h˜q !‘n”nÑ$Ñ$­¨Q©¬µ°Q¸±T¸1±´Ñ(=½dÀAÀ2Àq¹k¼kÑ(IÑJÝ˜"˜q˜c¥H¨Q°¡N¤NÐ#3µh¸qÀ!±n´nÀaÐ5HÍ2ÈqÉ5È&ÐQRÐTUÑQUÉ+ÐVXÉ.ÑYÔYñZð 	[r7   c                 ó¨   — ddl m} t          t          d|g¦  «        j        ¦  «        } |t          t          |dz  z  dz  ¦  «        |d|f¦  «        S r  )r]  r\  r   r   r^  r!   r
   r`  s        r5   ra  z"fresnelc._eval_rewrite_as_IntegralL
  r  r7   Nr   c                 óÄ  — ddl m} | j        d                              |||¬¦  «        }|                     |d¦  «        }|t
          j        u r.|                     |dt          |¦  «        j	        rdnd¬¦  «        }|j
        r|S |t
          j        t
          j        fv r.|t
          j        u rdnd}|t
          j        z   |||¦  «        z   S |                      |¦  «        S )	Nr   r¸   r©   r¬   r­   r®   r:   rŒ   )r¿   r¹   r)   r°   r±   r   r²   r›   r   rS  rN   rJ   rL   r{   r.   r  s           r5   r¶   zfresnelc._eval_as_leading_termQ
  sà   € Ø,Ð,Ð,Ð,Ð,Ð,ØŒi˜Œl×*Ò*¨1°4¸dÐ*ÑCÔCˆØ�xŠx˜˜1‰~Œ~ˆà•1Ô$Ð$Ð$Ø—9’9˜Q ­b°©h¬hÔ.BÐ'K s sÈ�9ÑLÔLˆDØŒ<ð 	#ØˆJØ•a”j¥!Ô"4Ð5Ð5Ð5Ø�QœZÐ'Ð'��¨RˆAØ•Q”V‘8˜e˜e A q™kœkÑ)Ð)à—9’9˜T‘?”?Ð"r7   c                 ó¨  •‡‡
— ddl m} |d         }|t          j        t          j         fv �r| j        d         Š
ˆˆ
fd„t          ‰¦  «        D ¦   «         }dd‰
z  z  gˆˆ
fd„t          d‰¦  «        D ¦   «         z   }d„ |D ¦   «         }d„ |D ¦   «         }|t          j        u rdnd	}	|	t          j        z  t          ‰
dz  ¦  «        t          |Ž z  t          ‰
dz  ¦  «        t          |Ž z  z    
                    |t          dt          z  ¦  «        |z  ¦  «        z    |d‰
‰z  z  |¦  «        z   S t          ¦   «                              ‰|||¦  «        S )
Nr   r¸   c                 óÚ   •— g | ]g}d |z  dz   ‰k     ¯t           j        |z  t          d |z  dz   ¦  «        z  dd|z  dz   z  ‰d |z  dz   z  z  dd|z  z  z  t          d|z  ¦  «        z  z  ‘ŒhS r  rÎ  r  s     €€r5   r¾   z*fresnelc._eval_aseries.<locals>.<listcomp>j
  s�   ø€ ð 3ð 3ð 3à a¨¡c¨A¡g°¢k kõ ” Ñ!¥I¨a°©c°A©gÑ$6Ô$6Ñ6Ø�a˜‘c˜A‘g‘,  Q q¡S¨1¡W¡Ñ-°°A°a±C±Ñ8½À1ÀQÁ3¹¼ÑGñIà&1 k kr7   r:   r(   c                 óæ   •— g | ]m}d |z  dz   ‰k     ¯t           j        |z  t          d |z  dz
  ¦  «        z  dd|z  dz   z  ‰d |z  dz   z  z  dd|z  dz
  z  z  t          d|z  dz
  ¦  «        z  z  ‘ŒnS r  rÎ  r  s     €€r5   r¾   z*fresnelc._eval_aseries.<locals>.<listcomp>m
  r  r7   c                 óD   — g | ]}t          d t          z  ¦  «         |z  ‘ŒS r~  r   r!  s     r5   r¾   z*fresnelc._eval_aseries.<locals>.<listcomp>q
  r"  r7   c                 óB   — g | ]}t          d t          z  ¦  «        |z  ‘ŒS r~  r   r!  s     r5   r¾   z*fresnelc._eval_aseries.<locals>.<listcomp>r
  s&   € Ð*Ð*Ð* 1•$�q�‘t‘*”*˜Q‘,Ð*Ð*Ð*r7   rŒ   )r¿   r¹   r   rJ   r)   rÄ   r{   r!   r   r"   r±   r   r
   rÅ   rÆ   r$  s    `        @€r5   rÆ   zfresnelc._eval_aseries`
  s—  øøø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆð •Q”Z¥!¤* Ð-Ð-Ñ-Ø”	˜!”ˆAð3ð 3ð 3ð 3ð 3å ™(œ(ð3ñ 3ô 3ˆAð �A�a‘C‘�	ð 6ð 6ð 6ð 6ð 6å  1™+œ+ð6ñ 6ô 6ñ 6ˆAð +Ð*¨Ð*Ñ*Ô*ˆAØ*Ð*¨Ð*Ñ*Ô*ˆAØ�aœjÐ(Ð(��¨bˆAð •Q”V‘8�s 1 a¡4™yœy­¨a¨Ñ0µ3°q¸!±t±9´9½SÀ!¸WÑ3DÑDß’$�q�$˜q¥™t™*œ* Q™,Ñ'Ô'ñ(Ø*/¨%°°!°Q±$±¸Ñ*:Ô*:ñ;ð ;õ ‰wŒw×$Ò$ Q¨¨q°$Ñ7Ô7Ð7r7   rc   )rÏ   rÐ   rÑ   rÒ   r!   r²  r   rK   rû  rÕ   r   ra   rè   r”   r�   ra  r¶   rÆ   rÖ   r×   s   @r5   rƒ   rƒ   Ý	  sÒ   ø€ € € € € ðSð Sðh €IØŒE€EàØð	^ð 	^ñ „Wñ „\ð	^ðað að aðUð Uð Uð[ð [ð [ð3ð 3ð 3ð
#ð #ð #ð #ð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8r7   rƒ   c                   óF   ‡ — e Zd ZdZed„ ¦   «         Zˆ fd„Zdd„Zd„ Zˆ xZ	S )r�   zi
    Helper function to make the $\mathrm{erf}(z)$ function
    tractable for the Gruntz algorithm.

    c                 ó,   — |j         rt          j        S d S r�   )rN   r   rK   )rU   rV   s     r5   rX   z
_erfs.eval‰
  s   € àŒ;ð 	Ý”5ˆLð	ð 	r7   c                 óZ  •‡
— ddl m} |d         }|t          j        u ra| j        d         Š
ˆ
fd„t          |¦  «        D ¦   «         } |d‰
d|z  dz   z  z  |¦  «        }t          |Ž                      |||¦  «        |z   S |                     t          ¦  «        }	|	t          j        u ra| j        d         Š
ˆ
fd„t          |¦  «        D ¦   «         } |d‰
d|z  dz   z  z  |¦  «        }t          |Ž                      |||¦  «        |z   S t          ¦   «                              ||||¦  «        S )Nr   r¸   c                 óÌ   •— g | ]`}d t          t          ¦  «        z  t          d|z  ¦  «        z  t          d¦  «         | z  z  t          |¦  «        z  d ‰z  d|z  d z   z  z  ‘ŒaS ©r:   r(   r  ©r   r
   r   r   r¼   s     €r5   r¾   z'_erfs._eval_aseries.<locals>.<listcomp>•
  ó’   ø€ ð Nð Nð NØ?@ð •4�‘8”8‘�i¨¨!©™nœnÑ,­qØñ0ô 0ð /Ø�rñ.ñ Ý$ Q™<œ<ñ(Ø+,¨Q©3°!°A±#¸±'Ñ*:ñ;ð Nð Nð Nr7   r:   r(   c                 óÌ   •— g | ]`}d t          t          ¦  «        z  t          d|z  ¦  «        z  t          d¦  «         | z  z  t          |¦  «        z  d ‰z  d|z  d z   z  z  ‘ŒaS r6  r7  r¼   s     €r5   r¾   z'_erfs._eval_aseries.<locals>.<listcomp> 
  r8  r7   )r¿   r¹   r   rJ   r)   rÄ   r   ri  rR   r	   rÅ   rÆ   )r/   r^   rÇ   r2   rª   r¹   rÈ   ÚlÚorW   r}   rÍ   s             @€r5   rÆ   z_erfs._eval_aseriesŽ
  sr  øø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�a”ˆð •A”JÐÐØ”	˜!”ˆAðNð Nð Nð NÝDIÈ!ÁHÄHðNñ Nô NˆAà��a˜˜A˜a™C !™G™‘n aÑ(Ô(ˆAå˜�G×*Ò*¨1¨a°Ñ6Ô6¸Ñ:Ð:ð ×*Ò*­1Ñ-Ô-ˆØ•”
ˆ?ˆ?Ø”	˜!”ˆAðNð Nð Nð NÝDIÈ!ÁHÄHðNñ Nô NˆAà��a˜˜A˜a™C !™G™‘n aÑ(Ô(ˆAå˜�G×*Ò*¨1¨a°Ñ6Ô6¸Ñ:Ð:õ ‰wŒw×$Ò$ Q¨¨q°$Ñ7Ô7Ð7r7   r:   c                 ó¢   — |dk    r:| j         d         }dt          t          ¦  «        z  d|z  t          |¦  «        z  z   S t	          | |¦  «        ‚)Nr:   r   r[   r(   )r)   r   r
   r�   r   ©r/   r?   r}   s      r5   r@   z_erfs.fdiff©
  sI   € Ø�qŠ=ˆ=Ø”	˜!”ˆAØ•d�2‘h”h‘;  1¡¥U¨1¡X¤X¡Ñ-Ð-å$ T¨8Ñ4Ô4Ð4r7   c                 ó`   — t           j        t          |¦  «        z
  t          |dz  ¦  «        z  S r–   )r   rK   r9   r   rŽ   s      r5   Ú_eval_rewrite_as_intractablez"_erfs._eval_rewrite_as_intractable°
  s#   € Ý”�˜A™œ‘¥ A q¡D¡	¤	Ñ)Ð)r7   rÎ   )
rÏ   rÐ   rÑ   rÒ   rÔ   rX   rÆ   r@   r?  rÖ   r×   s   @r5   r�   r�   ƒ
  s€   ø€ € € € € ðð ð
 ðð ñ „[ðð8ð 8ð 8ð 8ð 8ð65ð 5ð 5ð 5ð*ð *ð *ð *ð *ð *ð *r7   r�   c                   óH   ‡ — e Zd ZdZˆ fd„Zd
d„Zd„ Zdˆ fd„	Zdˆ fd	„	Zˆ xZ	S )rX  z~
    Helper function to make the $\mathrm{Ei}(z)$ and $\mathrm{li}(z)$
    functions tractable for the Gruntz algorithm.

    c                 óP  •‡— ddl m} |d         t          j        k    r+t	          t
          | ¦  «                             ||||¦  «        S | j        d         Šˆfd„t          |¦  «        D ¦   «         } |d‰|dz   z  z  |¦  «        }t          |Ž  
                    |||¦  «        |z   S )Nr   r¸   c                 óF   •— g | ]}t          |¦  «        d ‰z  |d z   z  z  ‘ŒS rÎ   rn  r¼   s     €r5   r¾   z&_eis._eval_aseries.<locals>.<listcomp>Â
  s0   ø€ Ð=Ð=Ð=¨q�Y�q‰\Œ\˜Q˜q™S A¨¡E™NÑ*Ð=Ð=Ð=r7   r:   )r¿   r¹   r   rJ   rÅ   r�   rÆ   r)   rÄ   r   ri  )
r/   r^   rÇ   r2   rª   r¹   r:  r;  r}   rÍ   s
           @€r5   rÆ   z_eis._eval_aseries¼
  s³   øø€ Ø,Ð,Ð,Ð,Ð,Ð,Ø�Œ8•q”zÒ!Ð!Ý� Ñ%Ô%×3Ò3°A°u¸aÀÑFÔFÐFàŒI�aŒLˆØ=Ð=Ð=Ð=µE¸!±H´HÐ=Ñ=Ô=ˆØˆE�!�A˜˜A™‘J‘, Ñ"Ô"ˆå�Q�×&Ò& q¨!¨TÑ2Ô2°QÑ6Ð6r7   r:   c                 ó†   — |dk    r,| j         d         }t          j        |z  t          |¦  «        z
  S t	          | |¦  «        ‚)Nr:   r   )r)   r   rK   rX  r   r=  s      r5   r@   z
_eis.fdiffÈ
  s=   € Ø�qŠ=ˆ=Ø”	˜!”ˆAÝ”5˜1‘9�t A™wœwÑ&Ð&å$ T¨8Ñ4Ô4Ð4r7   c                 óB   — t          | ¦  «        t          |¦  «        z  S r�   )r   rC  rŽ   s      r5   r?  z!_eis._eval_rewrite_as_intractableÏ
  s   € Ý�A�2‰wŒw•r˜!‘u”u‰}Ðr7   Nr   c                 óê   •— | j         d                              |d¦  «        }|j        r' | j        | j         Ž }|                     |||¬¦  «        S t          ¦   «                              |||¬¦  «        S )Nr   r©   )r)   r›   rN   r?  r¶   rÅ   )r/   r2   rª   r«   re  rk  rÍ   s         €r5   r¶   z_eis._eval_as_leading_termÒ
  st   ø€ ØŒY�qŒ\×Ò  1Ñ%Ô%ˆØŒ:ð 	DØ1�Ô1°4´9Ð=ˆAØ×*Ò*¨1°4¸dÐ*ÑCÔCÐCÝ‰wŒw×,Ò,¨Q°TÀÐ,ÑEÔEÐEr7   c                 óæ   •— | j         d                              |d¦  «        }|j        r& | j        | j         Ž }|                     |||¦  «        S t          ¦   «                              |||¦  «        S rc   )r)   r›   rN   r?  ri  rÅ   rj  s          €r5   ri  z_eis._eval_nseriesÙ
  sk   ø€ ØŒY�qŒ\×Ò  1Ñ%Ô%ˆØŒ:ð 	/Ø1�Ô1°4´9Ð=ˆAØ—?’? 1 a¨Ñ.Ô.Ð.Ý‰wŒw×$Ò$ Q¨¨4Ñ0Ô0Ð0r7   rÎ   rc   ro  )
rÏ   rÐ   rÑ   rÒ   rÆ   r@   r?  r¶   ri  rÖ   r×   s   @r5   rX  rX  ´
  s§   ø€ € € € € ðð ð	7ð 	7ð 	7ð 	7ð 	7ð5ð 5ð 5ð 5ðð ð ðFð Fð Fð Fð Fð Fð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1r7   rX  N)T)MrÒ   Ú
sympy.corer   Úsympy.core.addr   Úsympy.core.cacher   Úsympy.core.functionr   r   r   Úsympy.core.numbersr	   r
   r   Úsympy.core.relationalr   Úsympy.core.powerr   Úsympy.core.singletonr   Úsympy.core.symbolr   r   Úsympy.core.sympifyr   Ú(sympy.functions.combinatorial.factorialsr   r   r   Ú$sympy.functions.elementary.complexesr   r   r   Ú#sympy.functions.elementary.integersr   r   Ú(sympy.functions.elementary.miscellaneousr   r   Ú&sympy.functions.elementary.exponentialr   r   r   Ú%sympy.functions.elementary.hyperbolicr   r    Ú(sympy.functions.elementary.trigonometricr!   r"   r#   Úsympy.functions.special.hyperr$   r%   r6   r9   r¢   r¦   r  rD   rP   rQ   rC  r˜   r  rP  r“  r­  r›  rš  rT  rU  rù  r„   rƒ   r�   rX  rö   r7   r5   ú<module>rY     s%  ððFð Fð "Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø &Ð &Ð &Ð &Ð &Ð &Ø [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð*^-ð ^-ð ^-ð ^-ð ^-ˆ(ñ ^-ô ^-ð ^-ðB|Hð |Hð |Hð |Hð |Hˆ8ñ |Hô |Hð |Hð~}Bð }Bð }Bð }Bð }Bˆ8ñ }Bô }Bð }Bð@O!ð O!ð O!ð O!ð O!ˆ8ñ O!ô O!ð O!ðbZ$ð Z$ð Z$ð Z$ð Z$ˆXñ Z$ô Z$ð Z$ðzO$ð O$ð O$ð O$ð O$ˆxñ O$ô O$ð O$ðd[ð [ð [ð [ð [ˆhñ [ô [ð [ðBt@ð t@ð t@ð t@ð t@ˆñ t@ô t@ð t@ðn}?ð }?ð }?ð }?ð }?ˆXñ }?ô }?ð }?ð@ ð  ð  ðFeð eð eð eð eˆñ eô eð eðNZ+ð Z+ð Z+ð Z+ð Z+ˆñ Z+ô Z+ð Z+ð@<Jð <Jð <Jð <Jð <J˜Hñ <Jô <Jð <Jð~Eð Eð Eð Eð EÐ	ñ Eô Eð EðPJ@ð J@ð J@ð J@ð J@Ð	ñ J@ô J@ð J@ðXgð gð gð gð gÐ
ñ gô gð gðTnð nð nð nð nÐ
ñ nô nð nðj5-ð 5-ð 5-ð 5-ð 5-�hñ 5-ô 5-ð 5-ðp^8ð ^8ð ^8ð ^8ð ^8ˆñ ^8ô ^8ð ^8ðB^8ð ^8ð ^8ð ^8ð ^8ˆñ ^8ô ^8ð ^8ðL.*ð .*ð .*ð .*ð .*ˆHñ .*ô .*ð .*ðb*1ð *1ð *1ð *1ð *1ˆ8ñ *1ô *1ð *1ð *1ð *1r7   