Ë
    7^(h¿§  ã                   óî  — d dl mZ d dlmZmZ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 d dlmZmZmZ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 d dl m!Z!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. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9 d„ 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? G d„ d e
«      Z@ G d!„ d"e
«      ZA G d#„ d$e
«      ZBy%)&é    )Úprod)ÚAddÚSÚDummyÚexpand_func)ÚExpr)ÚDefinedFunctionÚArgumentIndexErrorÚ	PoleError)Ú	fuzzy_andÚ	fuzzy_not)ÚRationalÚpiÚooÚI)ÚPow©Úzeta)ÚerfÚerfcÚEi)ÚreÚ
unpolarify)ÚexpÚlog)ÚceilingÚfloor)Úsqrt)ÚsinÚcosÚcot)Ú	bernoulliÚharmonic)Ú	factorialÚrfÚRisingFactorial)Úas_int)ÚmpÚworkprec)Úprec_to_dpsc                 ó>   — 	 t        | d¬«       y# t        $ r Y yw xY w)NF)ÚstrictT)r'   Ú
ValueError©Úns    úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/functions/special/gamma_functions.pyÚintliker1      s&   € ðÜˆq˜ÕØøÜò Ùðús   ‚ �	›c                   ó†   ‡ — e Zd ZdZdZej                  fZdd„Ze	d„ «       Z
d„ Zd„ Zd„ Zd„ Zdd	„Zd
„ Zdˆ fd„	Zd„ Zˆ xZS )Úgammaañ  
    The gamma function

    .. math::
        \Gamma(x) := \int^{\infty}_{0} t^{x-1} e^{-t} \mathrm{d}t.

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

    The ``gamma`` function implements the function which passes through the
    values of the factorial function (i.e., $\Gamma(n) = (n - 1)!$ when n is
    an integer). More generally, $\Gamma(z)$ is defined in the whole complex
    plane except at the negative integers where there are simple poles.

    Examples
    ========

    >>> from sympy import S, I, pi, gamma
    >>> from sympy.abc import x

    Several special values are known:

    >>> gamma(1)
    1
    >>> gamma(4)
    6
    >>> gamma(S(3)/2)
    sqrt(pi)/2

    The ``gamma`` function obeys the mirror symmetry:

    >>> from sympy import conjugate
    >>> conjugate(gamma(x))
    gamma(conjugate(x))

    Differentiation with respect to $x$ is supported:

    >>> from sympy import diff
    >>> diff(gamma(x), x)
    gamma(x)*polygamma(0, x)

    Series expansion is also supported:

    >>> from sympy import series
    >>> series(gamma(x), x, 0, 3)
    1/x - EulerGamma + x*(EulerGamma**2/2 + pi**2/12) + x**2*(-EulerGamma*pi**2/12 - zeta(3)/3 - EulerGamma**3/6) + O(x**3)

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

    >>> gamma(pi).evalf(40)
    2.288037795340032417959588909060233922890
    >>> gamma(1+I).evalf(20)
    0.49801566811835604271 - 0.15494982830181068512*I

    See Also
    ========

    lowergamma: Lower incomplete gamma function.
    uppergamma: Upper incomplete gamma function.
    polygamma: Polygamma function.
    loggamma: Log Gamma function.
    digamma: Digamma function.
    trigamma: Trigamma function.
    sympy.functions.special.beta_functions.beta: Euler Beta function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Gamma_function
    .. [2] https://dlmf.nist.gov/5
    .. [3] https://mathworld.wolfram.com/GammaFunction.html
    .. [4] https://functions.wolfram.com/GammaBetaErf/Gamma/

    Tc                 ó”   — |dk(  r8| j                  | j                  d   «      t        d| j                  d   «      z  S t        | |«      ‚©Né   r   )ÚfuncÚargsÚ	polygammar
   ©ÚselfÚargindexs     r0   Úfdiffzgamma.fdiffr   sA   € Ø�qŠ=Ø—9‘9˜TŸY™Y q™\Ó*¬9°Q¸¿	¹	À!¹Ó+EÑEÐEä$ T¨8Ó4Ð4ó    c                 ó´  — |j                   �rK|t        j                  u rt        j                  S |t        u rt        S t	        |«      r*|j
                  rt        |dz
  «      S t        j                  S |j                  rÙ|j                  dk(  rÉt        |j                  «      |j                  z  }|j
                  r|t        j                  }}n0|dz   x}}|dz  dk(  rt        j                  }nt        j                  }|t        t        dd|z  d«      «      z  }|j
                  r|t!        t"        «      z  d|z  z  S d|z  t!        t"        «      z  |z  S y y y )Nr6   é   r   é   )Ú	is_Numberr   ÚNaNr   r1   Úis_positiver$   ÚComplexInfinityÚis_RationalÚqÚabsÚpÚOneÚNegativeOner   Úranger   r   )ÚclsÚargr/   ÚkÚcoeffs        r0   Úevalz
gamma.evalx   s  € à�=‹=Ø”a—e‘e‰|Ü—u‘u�Øœ‘Ü�	Ü˜”Ø—?’?Ü$ S¨1¡WÓ-Ð-ä×,Ñ,Ð,Ø—’Ø—5‘5˜A’:Ü˜CŸE™E›
 c§e¡eÑ+�Aà—’Ø#$¤a§e¡e˜5™à ! A¡˜˜˜Aà˜q™5 Aš:Ü$%§E¡E™Eä$%§M¡M˜EàœT¤%¨¨1¨Q©3°Ó"2Ó3Ñ3�Eà—’Ø$¤T¬"£X™~°°1±Ñ4Ð4à  !™t¤D¬£H™}¨uÑ4Ð4ð% ð !ð r>   c                 ó¦  — | j                   d   }|j                  r¨t        |j                  «      |j                  kD  r†t        d«      }|j                  |j                  z  }|j                  ||j                  z  z
  }| j                  ||z   «      j                  «       j                  |t        ||j                  «      «      S |j                  rj|j                  «       \  }}|r%|j                  dk7  rt        |«      }||z
  f|z   }|} |j                  |ddiŽ}| j                  |«      t        ||«      z  S  | j                  | j                   Ž S )Nr   Úxr6   ÚreevalF)r8   rF   rH   rI   rG   r   r7   Ú_eval_expand_funcÚsubsr   Úis_AddÚas_coeff_addr   Ú_new_rawargsr&   )	r;   ÚhintsrN   rS   r/   rI   rP   ÚtailÚintparts	            r0   rU   zgamma._eval_expand_func™   s  € Ø�i‰i˜‰lˆØ�?Š?Ü�3—5‘5‹z˜CŸE™EÒ!Ü˜#“J�Ø—E‘E˜SŸU™U‘N�Ø—E‘E˜A˜cŸe™e™G‘O�Ø—y‘y  Q¡Ó'×9Ñ9Ó;×@Ñ@ÀÄHÈQÐPS×PUÑPUÓDVÓWÐWà�:Š:Ø×*Ñ*Ó,‰KˆE�4Ù˜Ÿ™ AšÜ ›,�Ø ™Ð)¨DÑ0�Ø�Ø#�3×#Ñ# TÐ8°%Ñ8ˆDØ—9‘9˜T“?¤?°4¸Ó#?Ñ?Ð?àˆt�y‰y˜$Ÿ)™)Ð$Ð$r>   c                 óZ   — | j                  | j                  d   j                  «       «      S ©Nr   )r7   r8   Ú	conjugate©r;   s    r0   Ú_eval_conjugatezgamma._eval_conjugate­   s"   € Ø�y‰y˜Ÿ™ 1™×/Ñ/Ó1Ó2Ð2r>   c                 ó¨   — | j                   d   }|j                  r|j                  ryt        |«      r|dk  ry|j                  s|j
                  ryy )Nr   FT)r8   Úis_nonpositiveÚ
is_integerr1   rD   Úis_noninteger©r;   rS   s     r0   Ú_eval_is_realzgamma._eval_is_real°   sF   € Ø�I‰I�a‰LˆØ×Ò §¢ØÜ�1Œ:˜!˜qš&ØØ�=Š=˜AŸOšOØð ,r>   c                 ó~   — | j                   d   }|j                  ry|j                  rt        |«      j                  S y )Nr   T)r8   rD   re   r   Úis_evenrf   s     r0   Ú_eval_is_positivezgamma._eval_is_positive¹   s5   € Ø�I‰I�a‰LˆØ�=Š=ØØ�_Š_Ü˜“8×#Ñ#Ð#ð r>   c                 ó*   — t        t        |«      «      S ©N)r   Úloggamma)r;   ÚzÚlimitvarÚkwargss       r0   Ú_eval_rewrite_as_tractablez gamma._eval_rewrite_as_tractableÀ   s   € Ü”8˜A“;ÓÐr>   c                 ó   — t        |dz
  «      S ©Nr6   )r$   ©r;   rn   rp   s      r0   Ú_eval_rewrite_as_factorialz gamma._eval_rewrite_as_factorialÃ   s   € Ü˜˜Q™ÓÐr>   c                 ó0  •— | j                   d   j                  |d«      }|j                  r|dk  st        ‰| �  |||«      S | j                   d   |z
  }| j                  |dz   «      t        | j                   d   | dz   «      z  j	                  |||«      S ©Nr   r6   )r8   ÚlimitÚ
is_IntegerÚsuperÚ_eval_nseriesr7   r%   )r;   rS   r/   ÚlogxÚcdirÚx0ÚtÚ	__class__s          €r0   r{   zgamma._eval_nseriesÆ   s�   ø€ Ø�Y‰Y�q‰\×Ñ  1Ó%ˆØ—’ "¨¢'Ü‘7Ñ(¨¨A¨tÓ4Ð4Ø�I‰I�a‰L˜2ÑˆØ—	‘	˜!˜a™%Ó ¤ D§I¡I¨a¡L°2°#¸±'Ó!:Ñ:×IÑIÈ!ÈQÐPTÓUÐUr>   c                 óF  — | j                   d   }|j                  |d«      }|j                  rN|j                  rB| }t        j
                  |z  | j                  |dz   «      z  }|||z   j                  |«      z  S |j                  s| j                  |«      S t        «       ‚rw   )
r8   rV   rd   rc   r   rK   r7   Úas_leading_termÚis_infiniter   )r;   rS   r|   r}   rN   r~   r/   Úress           r0   Ú_eval_as_leading_termzgamma._eval_as_leading_termÍ   s‹   € Ø�i‰i˜‰lˆØ�X‰X�a˜‹^ˆà�=Š=˜R×.Ò.Ø�ˆAÜ—-‘- Ñ" 4§9¡9¨Q°©UÓ#3Ñ3ˆCØ˜˜a™×0Ñ0°Ó3Ñ3Ð3Ø—’Ø—9‘9˜R“=Ð Ü‹kÐr>   ©r6   rl   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
unbranchedr   rE   Ú_singularitiesr=   ÚclassmethodrQ   rU   ra   rg   rj   rq   ru   r{   r…   Ú__classcell__©r€   s   @r0   r3   r3   "   sb   ø„ ñJðX €JØ×'Ñ'Ð)€Nó5ð ñ5ó ð5ò@%ò(3òò$ó ò õVö
r>   r3   c                   ó^   ‡ — e Zd ZdZdd„Zed„ «       Zd„ Zd„ Zd„ Z	ˆ fd„Z
d„ Zd	„ Zd
„ Zˆ xZS )Ú
lowergammaañ  
    The lower incomplete gamma function.

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

    It can be defined as the meromorphic continuation of

    .. math::
        \gamma(s, x) := \int_0^x t^{s-1} e^{-t} \mathrm{d}t = \Gamma(s) - \Gamma(s, x).

    This can be shown to be the same as

    .. math::
        \gamma(s, x) = \frac{x^s}{s} {}_1F_1\left({s \atop s+1} \middle| -x\right),

    where ${}_1F_1$ is the (confluent) hypergeometric function.

    Examples
    ========

    >>> from sympy import lowergamma, S
    >>> from sympy.abc import s, x
    >>> lowergamma(s, x)
    lowergamma(s, x)
    >>> lowergamma(3, x)
    -2*(x**2/2 + x + 1)*exp(-x) + 2
    >>> lowergamma(-S(1)/2, x)
    -2*sqrt(pi)*erf(sqrt(x)) - 2*exp(-x)/sqrt(x)

    See Also
    ========

    gamma: Gamma function.
    uppergamma: Upper incomplete gamma function.
    polygamma: Polygamma function.
    loggamma: Log Gamma function.
    digamma: Digamma function.
    trigamma: Trigamma function.
    sympy.functions.special.beta_functions.beta: Euler Beta function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Incomplete_gamma_function#Lower_incomplete_gamma_function
    .. [2] Abramowitz, Milton; Stegun, Irene A., eds. (1965), Chapter 6,
           Section 5, Handbook of Mathematical Functions with Formulas, Graphs,
           and Mathematical Tables
    .. [3] https://dlmf.nist.gov/8
    .. [4] https://functions.wolfram.com/GammaBetaErf/Gamma2/
    .. [5] https://functions.wolfram.com/GammaBetaErf/Gamma3/

    c                 ó6  — ddl m} |dk(  r-| j                  \  }}t        t	        |«       «      ||dz
  z  z  S |dk(  rQ| j                  \  }}t        |«      t        |«      z  t        |«      t        ||«      z  z
   |g ddgdd|gg |«      z
  S t        | |«      ‚©Nr   )Úmeijergr@   r6   )
Úsympy.functions.special.hyperr”   r8   r   r   r3   Údigammar   Ú
uppergammar
   ©r;   r<   r”   Úarn   s        r0   r=   zlowergamma.fdiff  s£   € Ý9Ø�qŠ=Ø—9‘9‰DˆAˆqÜœ
 1›�~Ó& q¨1¨q©5¡zÑ1Ð1Ø˜Š]Ø—9‘9‰DˆAˆqÜ˜“8œG A›JÑ&¬¨Q«´
¸1¸aÓ0@Ñ)@Ñ@Ù˜"˜q !˜f q¨!¨Q i°°QÓ7ñ8ð 8ô % T¨8Ó4Ð4r>   c                 ó
  — |t         j                  u rt         j                  S |j                  «       \  }}|j                  r(|j                  rt        |«      }||k7  rœt        ||«      S |j                  rS|j                  rG|dk7  rsdt        z  t        z  |z  t         j                  | z  z  t        | «      z  t        ||«      z   S |dk7  r,t        dt        z  t        z  |z  |z  «      t        ||«      z  S |j                  �rR|t         j                  u rt         j                  t        | «      z
  S |t         j                  u r$t!        t        «      t#        t!        |«      «      z  S |j$                  sd|z  j$                  �rÑ|dz
  }|j                  �r|j                  rSt        |«      t        | «      t        |«      z  t'        t)        |«      D �cg c]  }||z  t        |«      z  ‘Œ c}Ž z  z
  S t+        |«      t        t         j                  |«      t!        t        «      z  t        | «      t'        t)        d|t         j                  z   «      D �cg c]5  }||t         j                  z
  z  t+        t         j                  |z   «      z  ‘Œ7 c}Ž z  z
  z  S |j$                  s®t         j                  t         j                  |z
  z  t        z  t#        t!        |«      «      z  t+        d|z
  «      z  t        | «      t'        t)        dt-        dd«      |z
  «      D �cg c](  }|||z   dz
  z  t+        |«      z  t+        ||z   «      z  ‘Œ* c}Ž z  z   S |j.                  rt         j                  S y c c}w c c}w c c}w )Nr   r@   r6   rA   )r   ÚZeroÚextract_branch_factorrd   rD   r   r‘   rc   r   r   rK   r$   r   rB   rJ   ÚHalfr   r   ry   r   rL   r3   r   Úis_zero)rM   r™   rS   Únxr/   ÚbrO   s          r0   rQ   zlowergamma.eval#  s~  € ð" ”—‘‰;Ü—6‘6ˆMØ×'Ñ'Ó)‰ˆˆAØ�<Š<˜AŸMšMÜ˜A“ˆBØ�QŠwÜ! ! RÓ(Ð(Ø�\Š\˜a×.Ò.Ø�AŠvØœ‘tœA‘v˜a‘x¤§¡°°Ñ 3Ñ3´I¸q¸b³MÑAÄJÈqÐRTÓDUÑUÐUØ�!ŠVÜ�qœ‘tœA‘v˜a‘x ‘z“?¤:¨a°Ó#4Ñ4Ð4ð �;‹;Ø”A—E‘E‰zÜ—u‘uœs A 2›w‘Ð&Ø”a—f‘f‘ÜœB“x¤¤D¨£G£Ñ,Ð,Ø—’ ! A¡#×!1Ó!1Ø˜‘E�Ø—=“=Ø—|’|Ü(¨›|¬c°1°"«g¼	À!»Ñ.DÄsÔlqÐrsÓltÖLuÐghÈQÐRSÉVÔV_Ð`aÓVbÓMbÒLuÐGvÑ.vÑvÐvä$ Q›x¬´A·F±F¸AÓ)>¼tÄB»xÑ)GÌ#ÈqÈbË'ÔRUô  DIð  JKð  MNô  QR÷  QWñ  QWñ  MWó  DXö  XYÐ~ÐXYÐ\]Ô`a×`fÑ`fÑ\fÑXgÔhmÔno×ntÑntÐwxÑnxÓhyÓXyò  XYð  SZñ  KZñ  *Zñ   [ð  [à—|’|ÜŸ=™=¬1¯6©6°A©:Ñ6´rÑ9¼#¼dÀ1»g»,ÑFÄuÈQÐQRÉUÃ|ÑSÔVYÐ[\ÐZ\ÓV]Ô^aô  SXð  YZô  \dð  efð  hió  \jð  mnñ  \nó  Soö  dpð  NOÐdeÐhiÐlmÑhmÐpqÑhqÑdrÔsxÐyzÓs{Ñd{ô  }Bð  CDð  GHñ  CHó  }Ió  eIò  dpð  _qñ  Wqñ  qð  qà�9Š9Ü—6‘6ˆMð ùò Mvùò XYùò dps   ÇM6É:M;Ì$-N c                 óP  — t        d„ | j                  D «       «      r}| j                  d   j                  |«      }| j                  d   j                  |«      }t        |«      5  t	        j
                  |d|«      }d d d «       t        j                  |«      S | S # 1 sw Y   Œ!xY w)Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrl   ©Ú	is_number©Ú.0rS   s     r0   ú	<genexpr>z)lowergamma._eval_evalf.<locals>.<genexpr>V  ó   è ø€ Ò.˜qˆq�{�{Ñ.ùó   ‚r   r6   )Úallr8   Ú
_to_mpmathr)   r(   Úgammaincr   Ú_from_mpmath©r;   Úprecr™   rn   r„   s        r0   Ú_eval_evalfzlowergamma._eval_evalfU  sŠ   € ÜÑ. D§I¡IÔ.Ô.Ø—	‘	˜!‘×'Ñ'¨Ó-ˆAØ—	‘	˜!‘×'Ñ'¨Ó-ˆAÜ˜$“ñ +Ü—k‘k ! Q¨Ó*�÷+ä×$Ñ$ S¨$Ó/Ð/àˆK÷	+ð +ús   Á$BÂB%c                 óÜ   — | j                   d   }|t        j                  t        j                  fvr;| j	                  | j                   d   j                  «       |j                  «       «      S y r5   ©r8   r   r›   ÚNegativeInfinityr7   r_   rf   s     r0   ra   zlowergamma._eval_conjugate_  óS   € Ø�I‰I�a‰LˆØ”Q—V‘VœQ×/Ñ/Ð0Ñ0Ø—9‘9˜TŸY™Y q™\×3Ñ3Ó5°q·{±{³}ÓEÐEð 1r>   c                 óŽ  — | j                   \  }}t        |j                  ||«      |j                  ||«      g«      }|s|S |j                  ||«      }|j                  r!t        |j
                  |j                  g«      S |j                  ||«      }t        |j                  |j                  t        |j                  «      g«      S rl   )	r8   r   Ú_eval_is_meromorphicrV   rd   rD   Ú	is_finiter   rž   )r;   rS   r™   Úsrn   Ú
args_meromÚz0Ús0s           r0   r¶   zlowergamma._eval_is_meromorphicd  s¨   € ð �y‰y‰ˆˆ1Ü × 6Ñ 6°q¸!Ó <Ø×"Ñ" 1 aÓ(ð *ó +ˆ
áØÐØ�V‰V�A�q‹\ˆØ�<Š<Ü˜aŸm™m¨R¯\©\Ð:Ó;Ð;Ø�V‰V�A�q‹\ˆÜ˜"Ÿ,™,¨¯©´iÀÇ
Á
Ó6KÐLÓMÐMr>   c                 ó(  •‡	‡
— ddl m} | j                  \  Š	Š
|d   t        u r^‰
j	                  |«      sM‰
‰	z  t        ‰
 «      z  }t        ˆ	ˆ
fd„t        |dz
  «      D «       «      } |‰
‰	z  ‰	| z  z  «      }||z  |z   S t        ‰| �%  ||||«      S )Nr   )ÚOc              3   óH   •K  — | ]  }‰|z  t        ‰|d z   «      z  –— Œ y­w)r6   N)r%   )r¦   rO   r¸   rn   s     €€r0   r§   z+lowergamma._eval_aseries.<locals>.<genexpr>z  s$   øè ø€ ÒC°˜1˜a™4¤ 1 a¨!¡e£Õ,ÑCùs   ƒ"r6   )
Úsympy.series.orderr½   r8   r   Úhasr   ÚsumrL   rz   Ú_eval_aseries)r;   r/   Úargs0rS   r|   r½   rP   Úsum_exprÚor¸   rn   r€   s            @@€r0   rÂ   zlowergamma._eval_aseriesu  s�   ú€ Ý(Ø�y‰y‰ˆˆ1Ø�‰8”r‰> !§%¡%¨¤(Ø�q‘Dœ˜a˜R›‘LˆEÜÔC´e¸AÀ¹E³lÔCÓCˆHÙ�!�Q‘$�q˜A˜2‘w‘,“ˆAØ˜‘> AÑ%Ð%Ü‰wÑ$ Q¨¨q°$Ó7Ð7r>   c                 ó2   — t        |«      t        ||«      z
  S rl   )r3   r—   ©r;   r¸   rS   rp   s       r0   Ú_eval_rewrite_as_uppergammaz&lowergamma._eval_rewrite_as_uppergamma  ó   € Ü�Q‹xœ* Q¨Ó*Ñ*Ð*r>   c                 óŠ   — ddl m} |j                  r|j                  r| S | j	                  t
        «      j	                  |«      S )Nr   ©Úexpint)Ú'sympy.functions.special.error_functionsrÌ   rd   rc   Úrewriter—   ©r;   r¸   rS   rp   rÌ   s        r0   Ú_eval_rewrite_as_expintz"lowergamma._eval_rewrite_as_expint‚  s3   € ÝBØ�<Š<˜A×,Ò,ØˆKØ�|‰|œJÓ'×/Ñ/°Ó7Ð7r>   c                 ó<   — | j                   d   }|j                  ryy )Nr6   T)r8   rž   rf   s     r0   Ú_eval_is_zerozlowergamma._eval_is_zeroˆ  s   € Ø�I‰I�a‰LˆØ�9Š9Øð r>   ©r@   )r‡   rˆ   r‰   rŠ   r=   r�   rQ   r°   ra   r¶   rÂ   rÈ   rÐ   rÒ   rŽ   r�   s   @r0   r‘   r‘   Þ   sH   ø„ ñ4ón5ð ñ/ó ð/òbòFò
Nô"8ò+ò8ör>   r‘   c                   óL   — e Zd ZdZdd„Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)r—   aË  
    The upper incomplete gamma function.

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

    It can be defined as the meromorphic continuation of

    .. math::
        \Gamma(s, x) := \int_x^\infty t^{s-1} e^{-t} \mathrm{d}t = \Gamma(s) - \gamma(s, x).

    where $\gamma(s, x)$ is the lower incomplete gamma function,
    :class:`lowergamma`. This can be shown to be the same as

    .. math::
        \Gamma(s, x) = \Gamma(s) - \frac{x^s}{s} {}_1F_1\left({s \atop s+1} \middle| -x\right),

    where ${}_1F_1$ is the (confluent) hypergeometric function.

    The upper incomplete gamma function is also essentially equivalent to the
    generalized exponential integral:

    .. math::
        \operatorname{E}_{n}(x) = \int_{1}^{\infty}{\frac{e^{-xt}}{t^n} \, dt} = x^{n-1}\Gamma(1-n,x).

    Examples
    ========

    >>> from sympy import uppergamma, S
    >>> from sympy.abc import s, x
    >>> uppergamma(s, x)
    uppergamma(s, x)
    >>> uppergamma(3, x)
    2*(x**2/2 + x + 1)*exp(-x)
    >>> uppergamma(-S(1)/2, x)
    -2*sqrt(pi)*erfc(sqrt(x)) + 2*exp(-x)/sqrt(x)
    >>> uppergamma(-2, x)
    expint(3, x)/x**2

    See Also
    ========

    gamma: Gamma function.
    lowergamma: Lower incomplete gamma function.
    polygamma: Polygamma function.
    loggamma: Log Gamma function.
    digamma: Digamma function.
    trigamma: Trigamma function.
    sympy.functions.special.beta_functions.beta: Euler Beta function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Incomplete_gamma_function#Upper_incomplete_gamma_function
    .. [2] Abramowitz, Milton; Stegun, Irene A., eds. (1965), Chapter 6,
           Section 5, Handbook of Mathematical Functions with Formulas, Graphs,
           and Mathematical Tables
    .. [3] https://dlmf.nist.gov/8
    .. [4] https://functions.wolfram.com/GammaBetaErf/Gamma2/
    .. [5] https://functions.wolfram.com/GammaBetaErf/Gamma3/
    .. [6] https://en.wikipedia.org/wiki/Exponential_integral#Relation_with_other_functions

    c                 ó  — ddl m} |dk(  r.| j                  \  }}t        t	        |«       «       ||dz
  z  z  S |dk(  r9| j                  \  }}t        ||«      t        |«      z   |g ddgdd|gg |«      z   S t        | |«      ‚r“   )r•   r”   r8   r   r   r—   r   r
   r˜   s        r0   r=   zuppergamma.fdiffÐ  sŽ   € Ý9Ø�qŠ=Ø—9‘9‰DˆAˆqÜœ A›˜Ó'Ð'¨¨A°©E©
Ñ2Ð2Ø˜Š]Ø—9‘9‰DˆAˆqÜ˜a Ó#¤C¨£FÑ*©W°R¸!¸Q¸À!ÀQÈÀÈBÐPQÓ-RÑRÐRä$ T¨8Ó4Ð4r>   c                 ól  — t        d„ | j                  D «       «      r‹| j                  d   j                  |«      }| j                  d   j                  |«      }t        |«      5  t	        j
                  ||t        j                  «      }d d d «       t        j                  |«      S | S # 1 sw Y   Œ!xY w)Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrl   r£   r¥   s     r0   r§   z)uppergamma._eval_evalf.<locals>.<genexpr>Ü  r¨   r©   r   r6   )	rª   r8   r«   r)   r(   r¬   Úinfr   r­   r®   s        r0   r°   zuppergamma._eval_evalfÛ  sŽ   € ÜÑ. D§I¡IÔ.Ô.Ø—	‘	˜!‘×'Ñ'¨Ó-ˆAØ—	‘	˜!‘×'Ñ'¨Ó-ˆAÜ˜$“ñ 0Ü—k‘k ! Q¬¯©Ó/�÷0ä×$Ñ$ S¨$Ó/Ð/Øˆ÷0ð 0ús   Á$&B*Â*B3c                 ó(	  — ddl m} |j                  rf|t        j                  u rt        j                  S |t
        u rt        j                  S |j                  r t        |«      j                  rt        |«      S |j                  «       \  }}|j                  r(|j                  rt        |«      }||k7  rËt        ||«      S |j                  rS|j                  rG|dk7  r¢dt         z  t"        z  |z  t        j$                  | z  z  t'        | «      z  t        ||«      z   S |dk7  r[t        |«      dt)        dt         z  t"        z  |z  |z  «      z
  z  t)        dt         z  t"        z  |z  |z  «      t        ||«      z  z   S |j                  �r¦|t        j                  u r|j                  rt+        | «       S |t        j,                  u rt)        | «      S |t        j.                  u r$t1        t         «      t3        t1        |«      «      z  S |j4                  sd|z  j4                  �r|dz
  }|j                  �r|j                  rGt)        | «      t'        |«      z  t7        t9        |«      D �cg c]  }||z  t'        |«      z  ‘Œ c}Ž z  S t        |«      t3        t1        |«      «      z  t        j$                  |t        d«      dz  z
  z  t)        | «      z  t1        |«      z  t7        t9        |t        j.                  z
  «      D �cg c]5  }t        t        j.                   |z
  «      | |z  z  t        d|z
  «      z  ‘Œ7 c}Ž z  z   S |j4                  r || |«      t        |«      |dz   z  z  S |j4                  s´t        j$                  t        j.                  |z
  z  t         z  t3        t1        |«      «      z  t        d|z
  «      z  ||z  t)        | «      z  t7        t9        t        j.                  |z
  «      D �cg c]%  }||z  t        |«      z  t        ||z   dz   «      z  ‘Œ' c}Ž z  z
  S |j                  r|j                  rt+        | «       S |j                  r!t        |«      j                  rt        |«      S y y c c}w c c}w c c}w )Nr   rË   éþÿÿÿr6   r@   rA   )rÍ   rÌ   rB   r   rC   r   r›   rž   r   rD   r3   rœ   rd   r   r—   rc   r   r   rK   r$   r   r   rJ   r�   r   r   ry   r   rL   )rM   r™   rn   rÌ   rŸ   r/   r    rO   s           r0   rQ   zuppergamma.evalä  sØ  € åBØ�;Š;Ø”A—E‘E‰zÜ—u‘u�Ø”b‘Ü—v‘v�Ø—’Ü�a“5×$Ò$Ü  ›8�Oð ×'Ñ'Ó)‰ˆˆAØ�<Š<˜AŸMšMÜ˜A“ˆBØ�BŠwÜ! ! RÓ(Ð(Ø�\Š\˜a×.Ò.Ø�AŠvØœ"‘uœQ‘w˜q‘y¤§¡°!°Ñ!4Ñ4´YÀ¸r³]ÑBÄZÐPQÐSUÓEVÑVÐVØ�!ŠVÜ˜“8˜Q¤ Q¤r¡T¬!¡V¨A¡X¨a¡Z£Ñ0Ñ1´C¸¼"¹¼Q¹¸q¹À¹
³OÄJÈqÐRTÓDUÑ4UÑUÐUð �;‹;Ø”A—F‘F‰{˜qŸ}š}Ü˜A˜2›�w�Ø”a—e‘e‘Ü˜A˜2“w�Ø”a—f‘f‘ÜœB“x¤¤T¨!£W£Ñ-Ð-Ø—’ ! A¡#×!1Ó!1Ø˜‘E�Ø—=“=Ø—|’|Ü" A 2›w¬°1«Ñ5¼ÜGLÈQÃxö>QØBCð ?@À¹dÄYÈqÃ\Ó>Qò >Qð 9Rñ  Rð Rô !& a£¬4´°Q³«=Ñ 8Ü !§¡°´A°a³D¸±F±
Ñ ;¼cÀ1À"»gÑ EÌÈQËÑ OÜ"%Ü16°q¼1¿6¹6±zÓ1Bö(DØ,-ô ).¬q¯v©v¨g¸©kÓ(:¸q¸bÀ1¹WÑ(DÄuÈQÈqÉSÃzÓ(Qò (Dð #Eñ!Eñ!Eð Fð —\’\Ù! 1 " a›=¬°A«¸¸Q¹Ñ)?Ñ?Ð?à—|’|ÜŸM™M¬A¯F©F°Q©JÑ7¼"Ñ<¼TÄ$ÀqÃ'»]ÑJÌ5ÐQRÐSTÑQTË:ÑUØ ™d¤S¨!¨£W™n¬sÜ>CÄAÇFÁFÈQÁJÓ>Oö5QØ9:ð 67¸±T¼EÀ!»H±_ÄuÈQÈqÉSÐQRÉUÃ|Ó5Sò 5Qð 0Rñ RñRð Sð �9Š9˜ŸšÜ˜�r“F�7ˆNà�9Š9œ˜A›×*Ò*Ü˜“8ˆOð +ˆ9ùò%>Qùò
(Dùò5Qs   É.R
Ì:R
Ð *Rc                 óÜ   — | j                   d   }|t        j                  t        j                  fvr;| j	                  | j                   d   j                  «       |j                  «       «      S y r5   r²   ©r;   rn   s     r0   ra   zuppergamma._eval_conjugate  r´   r>   c                 ó0   — t         j                  | ||«      S rl   )r‘   r¶   )r;   rS   r™   s      r0   r¶   zuppergamma._eval_is_meromorphic"  s   € Ü×.Ñ.¨t°Q¸Ó:Ð:r>   c                 ó2   — t        |«      t        ||«      z
  S rl   )r3   r‘   rÇ   s       r0   Ú_eval_rewrite_as_lowergammaz&uppergamma._eval_rewrite_as_lowergamma%  rÉ   r>   c                 óD   — t        t        |«      «      t        ||«      z
  S rl   )r   rm   r‘   rÇ   s       r0   rq   z%uppergamma._eval_rewrite_as_tractable(  s   € Ü”8˜A“;Ó¤*¨Q°Ó"2Ñ2Ð2r>   c                 ó2   — ddl m}  |d|z
  |«      ||z  z  S )Nr   rË   r6   )rÍ   rÌ   rÏ   s        r0   rÐ   z"uppergamma._eval_rewrite_as_expint+  s   € ÝBÙ�a˜!‘e˜QÓ  1¡Ñ$Ð$r>   NrÓ   )r‡   rˆ   r‰   rŠ   r=   r°   r�   rQ   ra   r¶   rß   rq   rÐ   © r>   r0   r—   r—   Ž  sA   „ ñ>óB	5òð ñ6ó ð6òpFò
;ò+ò3ó%r>   r—   c                   óp   ‡ — e 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d„Zˆ fd„Zd„ Zˆ xZS )r9   a¯  
    The function ``polygamma(n, z)`` returns ``log(gamma(z)).diff(n + 1)``.

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

    It is a meromorphic function on $\mathbb{C}$ and defined as the $(n+1)$-th
    derivative of the logarithm of the gamma function:

    .. math::
        \psi^{(n)} (z) := \frac{\mathrm{d}^{n+1}}{\mathrm{d} z^{n+1}} \log\Gamma(z).

    For `n` not a nonnegative integer the generalization by Espinosa and Moll [5]_
    is used:

    .. math:: \psi(s,z) = \frac{\zeta'(s+1, z) + (\gamma + \psi(-s)) \zeta(s+1, z)}
        {\Gamma(-s)}

    Examples
    ========

    Several special values are known:

    >>> from sympy import S, polygamma
    >>> polygamma(0, 1)
    -EulerGamma
    >>> polygamma(0, 1/S(2))
    -2*log(2) - EulerGamma
    >>> polygamma(0, 1/S(3))
    -log(3) - sqrt(3)*pi/6 - EulerGamma - log(sqrt(3))
    >>> polygamma(0, 1/S(4))
    -pi/2 - log(4) - log(2) - EulerGamma
    >>> polygamma(0, 2)
    1 - EulerGamma
    >>> polygamma(0, 23)
    19093197/5173168 - EulerGamma

    >>> from sympy import oo, I
    >>> polygamma(0, oo)
    oo
    >>> polygamma(0, -oo)
    oo
    >>> polygamma(0, I*oo)
    oo
    >>> polygamma(0, -I*oo)
    oo

    Differentiation with respect to $x$ is supported:

    >>> from sympy import Symbol, diff
    >>> x = Symbol("x")
    >>> diff(polygamma(0, x), x)
    polygamma(1, x)
    >>> diff(polygamma(0, x), x, 2)
    polygamma(2, x)
    >>> diff(polygamma(0, x), x, 3)
    polygamma(3, x)
    >>> diff(polygamma(1, x), x)
    polygamma(2, x)
    >>> diff(polygamma(1, x), x, 2)
    polygamma(3, x)
    >>> diff(polygamma(2, x), x)
    polygamma(3, x)
    >>> diff(polygamma(2, x), x, 2)
    polygamma(4, x)

    >>> n = Symbol("n")
    >>> diff(polygamma(n, x), x)
    polygamma(n + 1, x)
    >>> diff(polygamma(n, x), x, 2)
    polygamma(n + 2, x)

    We can rewrite ``polygamma`` functions in terms of harmonic numbers:

    >>> from sympy import harmonic
    >>> polygamma(0, x).rewrite(harmonic)
    harmonic(x - 1) - EulerGamma
    >>> polygamma(2, x).rewrite(harmonic)
    2*harmonic(x - 1, 3) - 2*zeta(3)
    >>> ni = Symbol("n", integer=True)
    >>> polygamma(ni, x).rewrite(harmonic)
    (-1)**(n + 1)*(-harmonic(x - 1, n + 1) + zeta(n + 1))*factorial(n)

    See Also
    ========

    gamma: Gamma function.
    lowergamma: Lower incomplete gamma function.
    uppergamma: Upper incomplete gamma function.
    loggamma: Log Gamma function.
    digamma: Digamma function.
    trigamma: Trigamma function.
    sympy.functions.special.beta_functions.beta: Euler Beta function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Polygamma_function
    .. [2] https://mathworld.wolfram.com/PolygammaFunction.html
    .. [3] https://functions.wolfram.com/GammaBetaErf/PolyGamma/
    .. [4] https://functions.wolfram.com/GammaBetaErf/PolyGamma2/
    .. [5] O. Espinosa and V. Moll, "A generalized polygamma function",
           *Integral Transforms and Special Functions* (2004), 101-115.

    c                 ób  — |t         j                  u s|t         j                  u rt         j                  S |t        u r"|j                  rt        S t         j                  S |j
                  r|j                  rt         j                  S |t         j                  u r!t        |«      t        dt        z  «      dz  z
  S |j                  r§|t         u s"|j                  t        «      t        t         fv rt        S |j
                  rt        |dz
  «      t         j                  z
  S |j                   r>|j#                  «       \  }}|dk  r%t%        t'        t         j                  |d¬«      «      S y y |j(                  r·|j*                  rªt-        |«      }||k7  rt'        ||«      S |j
                  r2t         j                  |dz   z  t/        |«      z  t1        |dz   |«      z  S |t         j2                  u r=t         j                  |dz   z  t/        |«      z  d|dz   z  dz
  z  t1        |dz   «      z  S y y y )Nr@   r6   é   F)Úevaluate)r   rC   r   rž   r›   ry   rc   rE   rK   rm   r   r   Úextract_multiplicativelyr   r#   Ú
EulerGammarF   Úas_numer_denomr   r9   rd   Úis_nonnegativer   r$   r   r�   )rM   r/   rn   rI   rG   Únzs         r0   rQ   zpolygamma.evalŸ  s¿  € à”—‘‰:˜œaŸe™e™Ü—5‘5ˆLØ”"‰WØŸš”2Ð.¬¯©Ð.Ø�\Š\˜a×.Ò.Ü×$Ñ$Ð$Ø”!—-‘-ÑÜ˜A“;¤ Q¤r¡T£¨Q¡Ñ.Ð.Ø�YŠYØ”R�C‰x˜1×5Ñ5´aÓ8¼RÄ"À¸IÑEÜ�	Ø—’Ü  !¡“}¤q§|¡|Ñ3Ð3Ø—’à×'Ñ'Ó)‘��1à˜’6Ü&¤y´·±¸ÀUÔ'KÓLÐLð ð	 ð �\Š\˜a×.Ò.Ü˜A“ˆBØ�BŠwÜ   BÓ'Ð'Ø�|Š|Ü—}‘} q¨¡sÑ+¬i¸«lÑ:¼TÀ!ÀAÁ#Àq»\ÑIÐIØ”a—f‘f‘Ü—}‘} q¨¡sÑ+¬i¸«lÑ:¸aÀ!ÀAÁ#¹hÀq¹jÑIÌDÐQRÐSTÑQTËIÑUÐUð ð /ˆ\r>   c                 ól   — | j                   d   j                  r| j                   d   j                  ryy y )Nr   r6   T)r8   rD   r`   s    r0   rg   zpolygamma._eval_is_real½  s/   € Ø�9‰9�Q‰<×#Ò#¨¯	©	°!©×(@Ò(@Øð )AÐ#r>   c                 ó¢   — | j                   d   }t        |j                  |j                  g«      }t        |j                  t        |«      g«      S rs   )r8   r   Úis_negativerd   Ú
is_complexr   )r;   rn   Úis_negative_integers      r0   Ú_eval_is_complexzpolygamma._eval_is_complexÁ  sA   € Ø�I‰I�a‰LˆÜ'¨¯©¸¿¹Ð(EÓFÐÜ˜!Ÿ,™,¬	Ð2EÓ(FÐGÓHÐHr>   c                 ó¢   — | j                   \  }}|j                  r4|j                  r|j                  ry|j                  r|j                  ryy y y ©NTF)r8   rD   Úis_oddÚis_realri   ©r;   r/   rn   s      r0   rj   zpolygamma._eval_is_positiveÆ  sB   € Ø�y‰y‰ˆˆ1Ø�=Š=Ø�xŠx˜AŸIšIØØ�yŠy˜QŸ]š]Øð +ˆyð r>   c                 ó¢   — | j                   \  }}|j                  r4|j                  r|j                  ry|j                  r|j                  ryy y y ró   )r8   rD   ri   rô   rõ   rö   s      r0   Ú_eval_is_negativezpolygamma._eval_is_negativeÎ  sB   € Ø�y‰y‰ˆˆ1Ø�=Š=Ø�yŠy˜QŸ]š]ØØ�xŠx˜AŸIšIØð &ˆxð r>   c                 ó„  — | j                   \  }}|j                  �r„|j                  �rw|j                  rÊ|j                   d   }|j                  �rO|dz    }|dkD  r:t	        t        dt        |«      dz   «      D �cg c]  }t        ||z
  |«      ‘Œ c}Ž }n7t	        t        t        | «      «      D �cg c]  }t        ||z   |«      ‘Œ c}Ž  }t        |||z
  «      t        j                  |z  t        |«      z  |z  z   S |j                  r•|j                  «       \  }}|j                  rq|j                  ret        t        |«      «      D �cg c]  }t        ||t        ||«      z   «      ‘Œ }}|dk(  rt	        |Ž |z  t!        |«      z   S t	        |Ž ||dz   z  z  S ||z  }|dk(  �r9|j"                  �r,|j%                  «       \  }}	t        j&                   t(        t+        |t(        z  |	z  «      z  dz  z
  t!        |	«      z
  t	        t        d|	«      D �
cg c]?  }
t-        d|
z  t(        z  |z  |	z  «      t!        dt/        |
t(        z  |	z  «      z  «      z  ‘ŒA c}
Ž z   }|dkD  r8t1        |«      }||z
  }|t	        t        |«      D �
cg c]
  }
d||
z   z  ‘Œ c}
Ž z   S |dk  r>t1        d|z
  «      }||z   }|t	        t        |«      D �
cg c]  }
d|dz
  |
z
  z  ‘Œ c}
Ž z
  S |dk(  r!t3        |«      t!        dt(        z  «      dz  z
  S |j4                  du s|j                  du rvt7        d«      }t9        ||«      j;                  |«      j=                  ||dz   «      }|t        j&                  t?        | «      z   t9        |dz   |«      z  z   tA        | «      z  S t        ||«      S c c}w c c}w c c}w c c}
w c c}
w c c}
w )Nr   r6   r@   éÿÿÿÿFr¸   )!r8   ry   rê   rW   r   rL   Úintr   r9   r   rK   r$   Úis_MulÚas_two_termsrD   r   r   rF   ré   rè   r   r!   r    r   r   rm   rd   r   r   ÚdiffrV   r–   r3   )r;   rZ   r/   rn   rP   ÚeÚir[   rI   rG   rO   Úpart_1rº   r¸   Údzts                  r0   rU   zpolygamma._eval_expand_funcÖ  s¦  € Ø�y‰y‰ˆˆ1à�<‹<˜A×,Ó,Ø�xŠxØŸ™˜q™	�Ø×#Ó#Ø˜a™%˜�AØ˜q’yÜ"Ü/4°Q¼¸E»
ÀQ¹Ó/Gö%IØ*+ô &)Ø ™E 1õ&&ò %Ið  J™ô !$Ü/4´S¸%¸³[Ó/Aö&CØ*+ô '*Ø ™E 1õ'&ò &Cð !Dð  D˜ä$ Q¨¨E©	Ó2´Q·]±]ÀAÑ5EÄiÐPQÃlÑ5RÐSWÑ5WÑWÐWà—’ØŸ>™>Ó+‘��qØ×#Ò#¨×(9Ò(9ä,1´#°e³*Ó,=ö?Ø'(ô & a¨¬XØ˜5ó."ñ *"õ #ð ?�Dð ?à˜A’vÜ" D˜z¨%Ñ/´#°e³*Ñ<Ð<ä" D˜z¨%°!°a±%©.Ñ8Ð8Ø�U‘
�à�‹6�a—m“mØ×#Ñ#Ó%‰DˆAˆqô —l‘l�]¤R¬#¨a´"©f°q©j«/Ñ%9¸AÑ%=Ñ=ÄÀAÃÑFÌÜNSÐTUÐWXËkÖZÈ”#�a˜!‘eœb‘j 1‘n qÑ(Ó)¬C°´C¸¼B¹À¹
³OÑ0CÓ,DÓDÒZðJ\ñ \ˆFð �1ŠuÜ˜!“H�Ø˜‘U�Ø¤¼EÀ!»HÖ%E°q a¨2°©6£lÒ%EÐ FÑFÐFØ�Q’Ü˜!˜a™%“L�Ø˜‘U�Ø¤ÄÀaÃÖ%I¸1 a¨2°©6°A©:Ó&6Ò%IÐ JÑJÐJà�Š7Ü˜A“;¤ Q¤r¡T£¨Q¡Ñ.Ð.Ø�<‰<˜5Ñ  A×$4Ñ$4¸Ñ$=Ü�c“
ˆAÜ�q˜!“*—/‘/ !Ó$×)Ñ)¨!¨Q¨q©SÓ1ˆCØœ1Ÿ<™<¬'°1°"«+Ñ5¼¸aÀ¹cÀ1»ÑEÑEÌÐPQÈrËÑRÐRä˜˜A‹ÐùòU%Iùò&Cùò?ùò [ùò
 &Fùò &Js%   Á<N$Â3N)Å N.ÈAN3
ÊN8
ËN=
c                 óš   — |j                   r?|j                  r2t        j                  |dz   z  t	        |«      z  t        |dz   |«      z  S y y rs   )rd   rD   r   rK   r$   r   ©r;   r/   rn   rp   s       r0   Ú_eval_rewrite_as_zetazpolygamma._eval_rewrite_as_zeta  sA   € Ø�<Š<˜AŸMšMÜ—=‘= 1 q¡5Ñ)¬)°A«,Ñ6´t¸AÀ¹EÀ1³~ÑEÐEð *ˆ<r>   c                 óú   — |j                   ro|j                  rt        |dz
  «      t        j                  z
  S t        j
                  |dz   z  t        |«      z  t        |dz   «      t        |dz
  |dz   «      z
  z  S y rs   )rd   rž   r#   r   rè   rK   r$   r   r  s       r0   Ú_eval_rewrite_as_harmonicz#polygamma._eval_rewrite_as_harmonic  so   € Ø�<Š<Ø�yŠyÜ  A¡“¬¯©Ñ5Ð5ä—}‘} q¨¡sÑ+¬i¸«lÑ:¼dÀ1ÀQÁ3»iÌ(ÐSTÐUVÑSVÐXYÐZ[ÑX[ÓJ\Ñ>\Ñ]Ð]ð	 r>   c                 ó  — ddl m} | j                  D �cg c]  }|j                  |«      ‘Œ c}\  }} |||«      }|dk(  r6|j	                  d|z  «      r"|€t        |«      n|}|j                  «       |z  S | j                  ||«      S c c}w )Nr   ©ÚOrderr6   )r¿   r
  r8   r‚   Úcontainsr   Úgetnr7   )	r;   rS   r|   r}   r
  r™   r/   rn   rÅ   s	            r0   r…   zpolygamma._eval_as_leading_term  s|   € Ý,Ø.2¯i©iÖ8¨�×!Ñ! !Õ$Ò8‰ˆˆ1Ù�!�Q‹KˆØ�Š6�a—j‘j  1¡”oØ!˜\”3�q”6¨tˆDØ—6‘6“8˜d‘?Ð"à—9‘9˜Q “?Ð"ùò 9s   •B	c                 óf   — |dk(  r!| j                   d d \  }}t        |dz   |«      S t        | |«      ‚©Nr@   r6   )r8   r9   r
   )r;   r<   r/   rn   s       r0   r=   zpolygamma.fdiff   s:   € Ø�qŠ=Ø—9‘9˜R˜a�=‰DˆAˆqÜ˜Q ™U AÓ&Ð&ä$ T¨8Ó4Ð4r>   c                 ó  •— ddl m} |d   t        k7  s2| j                  d   j                  r| j                  d   j
                  st        ‰| �  ||||«      S | j                  d   }| j                  d   }|dk(  r�t        |«      dd|z  z  z
  }d }	|dk  r |d|z  |«      }	n_t        |dz   dz  «      }
t        d|
«      D �cg c]  }t        d|z  «      d|z  |d|z  z  z  z  ‘Œ! }}|t        |Ž z  } |d||z  z  |«      }	|j                  |||«      |	z   S t        |«      }|||z  d|z  z  z   }t        |dz   dz  «      }
t        d|
«      D ]H  }|d|z  |z   dz
  z  d|z  |z   dz
  z  d|z  d|z  dz
  z  z  }|t        d|z  «      |z  |d|z  z  z  z  }ŒJ  |d|d|
z  z  z  |«      }	|dk(  r |d|z  |«      }	n|dk(  r |d|dz  z  |«      }	|j                  |||«      |	z   }dd|z  |z  z  |z  j                  |||«      S c c}w )Nr   r	  r6   r@   rú   )r¿   r
  r   r8   ry   rê   rz   rÂ   r   r   rL   r"   r   r{   r3   )r;   r/   rÃ   rS   r|   r
  rn   ÚNÚrrÅ   ÚmrO   ÚlÚfacÚe0r€   s                  €r0   rÂ   zpolygamma._eval_aseries'  sU  ø€ Ý,Ø�‰8”rŠ>Ø—‘˜1‘×(Ò(¨T¯Y©Y°q©\×-HÒ-HÜ‘7Ñ(¨¨E°1°dÓ;Ð;Ø�I‰I�a‰LˆØ�I‰I�a‰Lˆà�Š6ô �A“˜˜A˜a™C™Ñ ˆAØˆAØ�1ŠuÙ˜!˜A™#˜q“M‘ä˜Q ™U Q™JÓ'�Ü>CÀAÀq»kÖJ¸”Y˜q ™s“^ q¨¡s¨1¨q°©s©8¡|Ó4ÐJ�ÐJØ”S˜!�W‘�Ù˜!˜A˜q™D™& !Ó$�Ø—?‘? 1 a¨Ó.°Ñ2Ð2ô ˜“(ˆCØ�q˜‘u˜a ™c‘{Ñ"ˆBÜ˜˜Q™ ™
Ó#ˆAÜ˜1˜a“[ò 2�Ø˜1˜Q™3 ™7 Q™;Ñ'¨¨1©¨q©°1©Ñ5¸!¸A¹#ÀÀ!ÁÀaÁ¹ÑI�Ø”i  !¡“n SÑ(¨¨Q¨q©S©Ñ1Ñ1‘ð2ñ �a˜˜A˜a™C™‘j !Ó$ˆAØ�AŠvÙ˜!˜A™#˜q“M‘Ø�a’Ù˜!˜A˜q™D™& !Ó$�Ø× Ñ   A tÓ,¨qÑ0ˆAØ˜"˜Q™$ ™‘N QÑ&×5Ñ5°a¸¸DÓAÐAùò- Ks   Ã$Hc                 óÖ  — t        d„ | j                  D «       «      sy | j                  d   j                  |dz   «      }| j                  d   j                  |dz   «      }t        j                  |«      r|dk  rt
        j                  S t        |dz   «      5  t        j                  |«      r|dk\  rt        j                  ||«      }nwt        j                  |dz   |«      }t        j                  |dz   |d«      }|t        j                  t        j                  | «      z   |z  z   t        j                  | «      z  }d d d «       t        j                  |«      S # 1 sw Y   ŒxY w)Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrl   r£   )r¦   r   s     r0   r§   z(polygamma._eval_evalf.<locals>.<genexpr>Q  s   è ø€ Ò2 1�1—;•;Ñ2ùr©   r   é   r6   )rª   r8   r«   r(   Úisintr   rE   r)   r9   r   Úeulerr–   Úrgammar   r­   )r;   r¯   r¸   rn   r„   Úztr  s          r0   r°   zpolygamma._eval_evalfP  s!  € ÜÑ2¨¯	©	Ô2Ô2ØØ�I‰I�a‰L×#Ñ# D¨¡GÓ,ˆØ�I‰I�a‰L×#Ñ# D¨¡GÓ,ˆÜ�8‰8�AŒ;˜1 š6Ü×$Ñ$Ð$Ü�d˜2‘gÓñ 	OÜ�x‰x˜Œ{˜q AšvÜ—l‘l 1 aÓ(‘ä—W‘W˜Q˜q™S !“_�Ü—g‘g˜a ™c 1 aÓ(�ØœbŸh™h¬¯©°Q°B«Ñ7¸2Ñ=Ñ=ÄÇÁÈAÈ2ÃÑN�÷	Oô × Ñ   dÓ+Ð+÷	Oð 	Oús   ÂB)EÅE(rÓ   )r‡   rˆ   r‰   rŠ   r�   rQ   rg   rñ   rj   rø   rU   r  r  r…   r=   rÂ   r°   rŽ   r�   s   @r0   r9   r9   4  s]   ø„ ñhðT ñVó ðVò:òIò
òò3òjFò^ò#ó5ô'BöR,r>   r9   c                   ó^   ‡ — e Zd ZdZed„ «       Zd„ Zd
ˆ fd„	Zˆ fd„Zd„ Z	d„ Z
d„ Zdd	„Zˆ xZS )rm   aõ
  
    The ``loggamma`` function implements the logarithm of the
    gamma function (i.e., $\log\Gamma(x)$).

    Examples
    ========

    Several special values are known. For numerical integral
    arguments we have:

    >>> from sympy import loggamma
    >>> loggamma(-2)
    oo
    >>> loggamma(0)
    oo
    >>> loggamma(1)
    0
    >>> loggamma(2)
    0
    >>> loggamma(3)
    log(2)

    And for symbolic values:

    >>> from sympy import Symbol
    >>> n = Symbol("n", integer=True, positive=True)
    >>> loggamma(n)
    log(gamma(n))
    >>> loggamma(-n)
    oo

    For half-integral values:

    >>> from sympy import S
    >>> loggamma(S(5)/2)
    log(3*sqrt(pi)/4)
    >>> loggamma(n/2)
    log(2**(1 - n)*sqrt(pi)*gamma(n)/gamma(n/2 + 1/2))

    And general rational arguments:

    >>> from sympy import expand_func
    >>> L = loggamma(S(16)/3)
    >>> expand_func(L).doit()
    -5*log(3) + loggamma(1/3) + log(4) + log(7) + log(10) + log(13)
    >>> L = loggamma(S(19)/4)
    >>> expand_func(L).doit()
    -4*log(4) + loggamma(3/4) + log(3) + log(7) + log(11) + log(15)
    >>> L = loggamma(S(23)/7)
    >>> expand_func(L).doit()
    -3*log(7) + log(2) + loggamma(2/7) + log(9) + log(16)

    The ``loggamma`` function has the following limits towards infinity:

    >>> from sympy import oo
    >>> loggamma(oo)
    oo
    >>> loggamma(-oo)
    zoo

    The ``loggamma`` function obeys the mirror symmetry
    if $x \in \mathbb{C} \setminus \{-\infty, 0\}$:

    >>> from sympy.abc import x
    >>> from sympy import conjugate
    >>> conjugate(loggamma(x))
    loggamma(conjugate(x))

    Differentiation with respect to $x$ is supported:

    >>> from sympy import diff
    >>> diff(loggamma(x), x)
    polygamma(0, x)

    Series expansion is also supported:

    >>> from sympy import series
    >>> series(loggamma(x), x, 0, 4).cancel()
    -log(x) - EulerGamma*x + pi**2*x**2/12 - x**3*zeta(3)/3 + O(x**4)

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

    >>> from sympy import I
    >>> loggamma(5).evalf(30)
    3.17805383034794561964694160130
    >>> loggamma(I).evalf(20)
    -0.65092319930185633889 - 1.8724366472624298171*I

    See Also
    ========

    gamma: Gamma function.
    lowergamma: Lower incomplete gamma function.
    uppergamma: Upper incomplete gamma function.
    polygamma: Polygamma function.
    digamma: Digamma function.
    trigamma: Trigamma function.
    sympy.functions.special.beta_functions.beta: Euler Beta function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Gamma_function
    .. [2] https://dlmf.nist.gov/5
    .. [3] https://mathworld.wolfram.com/LogGammaFunction.html
    .. [4] https://functions.wolfram.com/GammaBetaErf/LogGamma/

    c                 ó  — |j                   r2|j                  rt        S |j                  r‘t	        t        |«      «      S |j                  rq|j                  «       \  }}|j                  rR|dk(  rMt	        t        t        «      dd|z
  z  z  t        |«      z  t        |dz   t        j                  z  «      z  «      S |t        u rt        S t        |«      t        u rt        j                  S |t        j                  u rt        j                  S y r  )rd   rc   r   rD   r   r3   Úis_rationalré   r   r   r   r�   rH   rE   rC   )rM   rn   rI   rG   s       r0   rQ   zloggamma.evalÏ  sÉ   € à�<Š<Ø×ÒÜ�	Ø—’Üœ5 ›8“}Ð$Ø�]Š]Ø×#Ñ#Ó%‰DˆAˆqà�}Š}  a¢Üœ4¤›8 a¨!¨a©%¡jÑ0´5¸³8Ñ;¼eÀQÈÁUÌAÏFÉFÁNÓ>SÑSÓTÐTà”‰7ÜˆIÜ�‹V”r‰\Ü×$Ñ$Ð$Ø”—‘‰:Ü—5‘5ˆLð r>   c                 óL  — ddl m} | j                  d   }|j                  �r|j	                  «       \  }}||z  }|||z  z
  }|j
                  rÕ|j
                  rÉ||k  rÄt        d«      }|j
                  r<t        ||z  «      |t        |«      z  z
   |t        |dz
  |z  |z   «      |d|f«      z   S |j                  rKt        ||z  «      |t        |«      z  z
  t        t        z  |z  z    |t        ||z  |z
  «      |d| f«      z
  S |j                  rt        ||z  «      S | S )Nr   ©ÚSumrO   r6   )Úsympy.concrete.summationsr"  r8   rF   ré   rD   r   rm   r   rî   r   r   rž   )r;   rZ   r"  rn   rI   rG   r/   rO   s           r0   rU   zloggamma._eval_expand_funcã  s  € Ý1Ø�I‰I�a‰Lˆà�=‹=Ø×#Ñ#Ó%‰DˆAˆqð �Q‘ˆAØ�A�a‘C‘ˆAØ�}Š} §¢°1°q²5Ü˜#“J�Ø—=’=Ü# A¨¡E›?¨Q¬s°1«v©XÑ5¹¼CÀÀQÁÈÁ	ÈAÁÓ<NÐQRÐTUÐWXÐPYÓ8ZÑZÐZØ—]’]Ü# A¨¡E›?¨Q¬s°1«v©XÑ5¼¼1¹¸Q¹Ñ>ÁÄSÈÈ1ÉÈqÉÃ\ÐTUÐWXÐ[\ÐZ\ÐS]ÓA^Ñ^Ð^Ø—Y’YÜ# A¨¡E›?Ð*àˆr>   c                 óÔ   •— | j                   d   j                  |d«      }|j                  r, | j                  | j                   Ž }|j	                  |||«      S t
        ‰| �  |||«      S r^   )r8   rx   rž   Ú_eval_rewrite_as_intractabler{   rz   )r;   rS   r/   r|   r}   r~   Úfr€   s          €r0   r{   zloggamma._eval_nseriesø  sa   ø€ Ø�Y‰Y�q‰\×Ñ  1Ó%ˆØ�:Š:Ø1�×1Ñ1°4·9±9Ð=ˆAØ—?‘? 1 a¨Ó.Ð.Ü‰wÑ$ Q¨¨4Ó0Ð0r>   c                 óâ  •— ddl m} |d   t        k7  rt        ‰| �  ||||«      S | j
                  d   }t        |«      |t        j                  z
  z  |z
  t        dt        z  «      dz  z   }t        d|«      D �cg c]+  }t        d|z  «      d|z  d|z  dz
  z  |d|z  dz
  z  z  z  ‘Œ- }	}d }
|dk(  r
 |d|«      }
n |d||z  z  |«      }
|t        |	Ž z   j                  |||«      |
z   S c c}w )Nr   r	  r@   r6   )r¿   r
  r   rz   rÂ   r8   r   r   r�   r   rL   r"   r   r{   )r;   r/   rÃ   rS   r|   r
  rn   r  rO   r  rÅ   r€   s              €r0   rÂ   zloggamma._eval_aseriesÿ  sú   ø€ Ý,Ø�‰8”rŠ>Ü‘7Ñ(¨¨E°1°dÓ;Ð;Ø�I‰I�a‰LˆÜ�‹F�AœŸ™‘JÑ !Ñ#¤c¨!¬B©$£i°¡kÑ1ˆÜDIÈ!ÈQÃKÖP¸qŒY�q˜‘s‹^˜q ™s A a¡C¨!¡G™}¨Q°°1±°q±©\Ñ9Ó:ÐPˆÐPØˆØ�Š6Ù�a˜“‰Aá�a˜˜1™‘f˜aÓ ˆAà”C˜�G‘×*Ñ*¨1¨a°Ó6¸Ñ:Ð:ùò Qs   Á;0C,c                 ó*   — t        t        |«      «      S rl   )r   r3   rt   s      r0   r%  z%loggamma._eval_rewrite_as_intractable  s   € Ü”5˜“8‹}Ðr>   c                 óV   — | j                   d   }|j                  ry|j                  ryy )Nr   TF)r8   rD   rc   rÜ   s     r0   rg   zloggamma._eval_is_real  s*   € Ø�I‰I�a‰LˆØ�=Š=ØØ×ÒØð r>   c                 ó¤   — | j                   d   }|t        j                  t        j                  fvr| j	                  |j                  «       «      S y r^   r²   rÜ   s     r0   ra   zloggamma._eval_conjugate  s@   € Ø�I‰I�a‰LˆØ”Q—V‘VœQ×/Ñ/Ð0Ñ0Ø—9‘9˜QŸ[™[›]Ó+Ð+ð 1r>   c                 óV   — |dk(  rt        d| j                  d   «      S t        | |«      ‚r5   )r9   r8   r
   r:   s     r0   r=   zloggamma.fdiff  s+   € Ø�qŠ=Ü˜Q §	¡	¨!¡Ó-Ð-ä$ T¨8Ó4Ð4r>   r^   r†   )r‡   rˆ   r‰   rŠ   r�   rQ   rU   r{   rÂ   r%  rg   ra   r=   rŽ   r�   s   @r0   rm   rm   a  sA   ø„ ñlðZ ñó ðò&õ*1ô;òòò,÷
5r>   rm   c                   ó^   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	e
d„ «       Zd	„ Zd
„ Zd„ Zd„ Zy)r–   at  
    The ``digamma`` function is the first derivative of the ``loggamma``
    function

    .. math::
        \psi(x) := \frac{\mathrm{d}}{\mathrm{d} z} \log\Gamma(z)
                = \frac{\Gamma'(z)}{\Gamma(z) }.

    In this case, ``digamma(z) = polygamma(0, z)``.

    Examples
    ========

    >>> from sympy import digamma
    >>> digamma(0)
    zoo
    >>> from sympy import Symbol
    >>> z = Symbol('z')
    >>> digamma(z)
    polygamma(0, z)

    To retain ``digamma`` as it is:

    >>> digamma(0, evaluate=False)
    digamma(0)
    >>> digamma(z, evaluate=False)
    digamma(z)

    See Also
    ========

    gamma: Gamma function.
    lowergamma: Lower incomplete gamma function.
    uppergamma: Upper incomplete gamma function.
    polygamma: Polygamma function.
    loggamma: Log Gamma function.
    trigamma: Trigamma function.
    sympy.functions.special.beta_functions.beta: Euler Beta function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Digamma_function
    .. [2] https://mathworld.wolfram.com/DigammaFunction.html
    .. [3] https://functions.wolfram.com/GammaBetaErf/PolyGamma2/

    c                 ón   — | j                   d   }t        |«      }t        d|«      j                  |¬«      S )Nr   r.   ©r8   r*   r9   Úevalf©r;   r¯   rn   Únprecs       r0   r°   zdigamma._eval_evalfT  ó3   € Ø�I‰I�a‰LˆÜ˜DÓ!ˆÜ˜˜A‹×$Ñ$ uÐ$Ó-Ð-r>   c                 óT   — | j                   d   }t        d|«      j                  «       S r^   ©r8   r9   r=   ©r;   r<   rn   s      r0   r=   zdigamma.fdiffY  ó$   € Ø�I‰I�a‰LˆÜ˜˜A‹×$Ñ$Ó&Ð&r>   c                 óL   — | j                   d   }t        d|«      j                  S r^   ©r8   r9   rõ   rÜ   s     r0   rg   zdigamma._eval_is_real]  ó!   € Ø�I‰I�a‰LˆÜ˜˜A‹×&Ñ&Ð&r>   c                 óL   — | j                   d   }t        d|«      j                  S r^   ©r8   r9   rD   rÜ   s     r0   rj   zdigamma._eval_is_positivea  ó!   € Ø�I‰I�a‰LˆÜ˜˜A‹×*Ñ*Ð*r>   c                 óL   — | j                   d   }t        d|«      j                  S r^   ©r8   r9   rî   rÜ   s     r0   rø   zdigamma._eval_is_negativee  r<  r>   c                 ó|   — | j                  t        «      }t        j                  g|z   }|j	                  ||||«      S rl   )rÎ   r9   r   r›   rÂ   ©r;   r/   rÃ   rS   r|   Úas_polygammas         r0   rÂ   zdigamma._eval_aseriesi  s7   € Ø—|‘|¤IÓ.ˆÜ—‘�	˜EÑ!ˆØ×)Ñ)¨!¨U°A°tÓ<Ð<r>   c                 ó   — t        d|«      S r^   ©r9   ©rM   rn   s     r0   rQ   zdigamma.evaln  ó   € ä˜˜A‹Ðr>   c                 óX   — | j                   d   }t        d|«      j                  d¬«      S )Nr   T©r7   ©r8   r9   Úexpand©r;   rZ   rn   s      r0   rU   zdigamma._eval_expand_funcr  ó)   € Ø�I‰I�a‰LˆÜ˜˜A‹×%Ñ%¨4Ð%Ó0Ð0r>   c                 ó@   — t        |dz
  «      t        j                  z
  S rs   )r#   r   rè   rt   s      r0   r  z!digamma._eval_rewrite_as_harmonicv  s   € Ü˜˜A™‹¤§¡Ñ-Ð-r>   c                 ó   — t        d|«      S r^   rC  rt   s      r0   Ú_eval_rewrite_as_polygammaz"digamma._eval_rewrite_as_polygammay  ó   € Ü˜˜A‹Ðr>   c                 óV   — | j                   d   }t        d|«      j                  |«      S r^   ©r8   r9   r‚   ©r;   rS   r|   r}   rn   s        r0   r…   zdigamma._eval_as_leading_term|  ó&   € Ø�I‰I�a‰LˆÜ˜˜A‹×.Ñ.¨qÓ1Ð1r>   Nr†   )r‡   rˆ   r‰   rŠ   r°   r=   rg   rj   rø   rÂ   r�   rQ   rU   r  rN  r…   râ   r>   r0   r–   r–   $  sN   „ ñ.ò^.ó
'ò'ò+ò+ò=ð
 ñó ðò1ò.òó2r>   r–   c                   ód   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	e
d„ «       Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)Útrigammaa^  
    The ``trigamma`` function is the second derivative of the ``loggamma``
    function

    .. math::
        \psi^{(1)}(z) := \frac{\mathrm{d}^{2}}{\mathrm{d} z^{2}} \log\Gamma(z).

    In this case, ``trigamma(z) = polygamma(1, z)``.

    Examples
    ========

    >>> from sympy import trigamma
    >>> trigamma(0)
    zoo
    >>> from sympy import Symbol
    >>> z = Symbol('z')
    >>> trigamma(z)
    polygamma(1, z)

    To retain ``trigamma`` as it is:

    >>> trigamma(0, evaluate=False)
    trigamma(0)
    >>> trigamma(z, evaluate=False)
    trigamma(z)


    See Also
    ========

    gamma: Gamma function.
    lowergamma: Lower incomplete gamma function.
    uppergamma: Upper incomplete gamma function.
    polygamma: Polygamma function.
    loggamma: Log Gamma function.
    digamma: Digamma function.
    sympy.functions.special.beta_functions.beta: Euler Beta function.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Trigamma_function
    .. [2] https://mathworld.wolfram.com/TrigammaFunction.html
    .. [3] https://functions.wolfram.com/GammaBetaErf/PolyGamma2/

    c                 ón   — | j                   d   }t        |«      }t        d|«      j                  |¬«      S )Nr   r6   r.   r.  r0  s       r0   r°   ztrigamma._eval_evalf²  r2  r>   c                 óT   — | j                   d   }t        d|«      j                  «       S rw   r4  r5  s      r0   r=   ztrigamma.fdiff·  r6  r>   c                 óL   — | j                   d   }t        d|«      j                  S rw   r8  rÜ   s     r0   rg   ztrigamma._eval_is_real»  r9  r>   c                 óL   — | j                   d   }t        d|«      j                  S rw   r;  rÜ   s     r0   rj   ztrigamma._eval_is_positive¿  r<  r>   c                 óL   — | j                   d   }t        d|«      j                  S rw   r>  rÜ   s     r0   rø   ztrigamma._eval_is_negativeÃ  r<  r>   c                 ó|   — | j                  t        «      }t        j                  g|z   }|j	                  ||||«      S rl   )rÎ   r9   r   rJ   rÂ   r@  s         r0   rÂ   ztrigamma._eval_aseriesÇ  s7   € Ø—|‘|¤IÓ.ˆÜ—‘�˜5Ñ ˆØ×)Ñ)¨!¨U°A°tÓ<Ð<r>   c                 ó   — t        d|«      S rs   rC  rD  s     r0   rQ   ztrigamma.evalÌ  rE  r>   c                 óX   — | j                   d   }t        d|«      j                  d¬«      S )Nr   r6   TrG  rH  rJ  s      r0   rU   ztrigamma._eval_expand_funcÐ  rK  r>   c                 ó   — t        d|«      S )Nr@   r   rt   s      r0   r  ztrigamma._eval_rewrite_as_zetaÔ  s   € Ü�A�q‹zÐr>   c                 ó   — t        d|«      S rs   rC  rt   s      r0   rN  z#trigamma._eval_rewrite_as_polygamma×  rO  r>   c                 ó<   — t        |dz
  d«       t        dz  dz  z   S )Nr6   r@   rå   )r#   r   rt   s      r0   r  z"trigamma._eval_rewrite_as_harmonicÚ  s#   € Ü˜˜Q™ Ó"Ð"¤R¨¡U¨Q¡YÑ.Ð.r>   c                 óV   — | j                   d   }t        d|«      j                  |«      S rw   rQ  rR  s        r0   r…   ztrigamma._eval_as_leading_termÝ  rS  r>   Nr†   )r‡   rˆ   r‰   rŠ   r°   r=   rg   rj   rø   rÂ   r�   rQ   rU   r  rN  r  r…   râ   r>   r0   rU  rU  ‚  sS   „ ñ.ò^.ó
'ò'ò+ò+ò=ð
 ñó ðò1òòò/ó2r>   rU  c                   ó8   — e Zd ZdZdZdd„Zed„ «       Zd„ Zd„ Z	y)	Ú
multigammaaÓ  
    The multivariate gamma function is a generalization of the gamma function

    .. math::
        \Gamma_p(z) = \pi^{p(p-1)/4}\prod_{k=1}^p \Gamma[z + (1 - k)/2].

    In a special case, ``multigamma(x, 1) = gamma(x)``.

    Examples
    ========

    >>> from sympy import S, multigamma
    >>> from sympy import Symbol
    >>> x = Symbol('x')
    >>> p = Symbol('p', positive=True, integer=True)

    >>> multigamma(x, p)
    pi**(p*(p - 1)/4)*Product(gamma(-_k/2 + x + 1/2), (_k, 1, p))

    Several special values are known:

    >>> multigamma(1, 1)
    1
    >>> multigamma(4, 1)
    6
    >>> multigamma(S(3)/2, 1)
    sqrt(pi)/2

    Writing ``multigamma`` in terms of the ``gamma`` function:

    >>> multigamma(x, 1)
    gamma(x)

    >>> multigamma(x, 2)
    sqrt(pi)*gamma(x)*gamma(x - 1/2)

    >>> multigamma(x, 3)
    pi**(3/2)*gamma(x)*gamma(x - 1)*gamma(x - 1/2)

    Parameters
    ==========

    p : order or dimension of the multivariate gamma function

    See Also
    ========

    gamma, lowergamma, uppergamma, polygamma, loggamma, digamma, trigamma,
    sympy.functions.special.beta_functions.beta

    References
    ==========

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

    Tc           	      óÈ   — ddl m} |dk(  rL| j                  \  }}t        d«      }| j	                  ||«       |t        d|d|z
  dz  z   «      |d|f«      z  S t        | |«      ‚)Nr   r!  r@   rO   r6   )r#  r"  r8   r   r7   r9   r
   )r;   r<   r"  rS   rI   rO   s         r0   r=   zmultigamma.fdiff"  sd   € Ý1Ø�qŠ=Ø—9‘9‰DˆAˆqÜ�c“
ˆAØ—9‘9˜Q “?¡3¤y°°A¸¸Q¹À¹	±MÓ'BÀQÈÈ1ÀIÓ#NÑNÐNä$ T¨8Ó4Ð4r>   c                 óð   — ddl m} |j                  du s|j                  du rt	        d«      ‚t        d«      }t        ||dz
  z  dz  z   |t        |d|z
  dz  z   «      |d|f«      z  j                  «       S )	Nr   )ÚProductFz+Order parameter p must be positive integer.rO   r6   é   r@   )	Úsympy.concrete.productsrf  rD   rd   r-   r   r   r3   Údoit)rM   rS   rI   rf  rO   s        r0   rQ   zmultigamma.eval+  sy   € å3Ø�=‰=˜EÑ! Q§\¡\°UÑ%:ÜÐJÓKÐKÜ�#‹JˆÜ�Q˜˜A™‘Y˜q‘[Ñ!¡'¬%°°Q¸±U¸A±I±Ó*>Ø+,¨a°¨)ó#5ñ 5ß6:±d³fð	=r>   c                 ó`   — | j                   \  }}| j                  |j                  «       |«      S rl   )r8   r7   r_   )r;   rS   rI   s      r0   ra   zmultigamma._eval_conjugate4  s&   € Ø�y‰y‰ˆˆ1Ø�y‰y˜Ÿ™›¨Ó*Ð*r>   c                 ó¬   — | j                   \  }}d|z  }|j                  r||dz
  k  du ryt        |«      r	||dz
  k  ry||dz
  kD  s|j                  ryy )Nr@   r6   TF)r8   rd   r1   re   )r;   rS   rI   Úys       r0   rg   zmultigamma._eval_is_real8  s^   € Ø�y‰y‰ˆˆ1Øˆa‰CˆØ�<Š<˜Q 1 q¡5™\¨dÑ2ØÜ�1Œ:˜1  Q¡š<ØØ��A‘Š;˜!Ÿ/š/Øð *r>   NrÓ   )
r‡   rˆ   r‰   rŠ   r‹   r=   r�   rQ   ra   rg   râ   r>   r0   rc  rc  ç  s2   „ ñ7ðp €Jó5ð ñ=ó ð=ò+ór>   rc  N)CÚmathr   Ú
sympy.corer   r   r   r   Úsympy.core.exprr   Úsympy.core.functionr	   r
   r   Úsympy.core.logicr   r   Úsympy.core.numbersr   r   r   r   Úsympy.core.powerr   Ú&sympy.functions.special.zeta_functionsr   rÍ   r   r   r   Ú$sympy.functions.elementary.complexesr   r   Ú&sympy.functions.elementary.exponentialr   r   Ú#sympy.functions.elementary.integersr   r   Ú(sympy.functions.elementary.miscellaneousr   Ú(sympy.functions.elementary.trigonometricr   r    r!   Ú%sympy.functions.combinatorial.numbersr"   r#   Ú(sympy.functions.combinatorial.factorialsr$   r%   r&   Úsympy.utilities.miscr'   Úmpmathr(   r)   Úmpmath.libmp.libmpfr*   r1   r3   r‘   r—   r9   rm   r–   rU  rc  râ   r>   r0   ú<module>r     sÌ   ðÝ ç 1Ó 1Ý  ß NÑ Nß 1ß 2Ó 2Ý  Ý 7ß AÑ Aß ?ß ;ß >Ý 9ß BÑ Bß Eß SÑ SÝ 'ç Ý +òôuˆOô uôxm�ô mô`_%�ô _%ôLj,�ô j,ôZ	@5ˆô @5ôFZ2ˆoô Z2ô|]2ˆô ]2ôJY�õ Yr>   