ó
    ‰*£h¿§  ã                   óî  • S SK Jr  S SKJrJrJrJr  S SKJr  S SK	J
r
JrJr  S SKJrJr  S SKJrJrJrJr  S SKJr  S SKJr  S S	KJrJrJr  S S
KJrJr  S SK J!r!J"r"  S SK#J$r$J%r%  S SK&J'r'  S SK(J)r)J*r*J+r+  S SK,J-r-J.r.  S SK/J0r0J1r1J2r2  S SK3J4r4  S SK5J6r6J7r7  S SK8J9r9  S r: " S S\
5      r; " S S\
5      r< " S S\
5      r= " S S\
5      r> " S S\
5      r? " S S \
5      r@ " S! S"\
5      rA " S# S$\
5      rBg%)&é    )Ú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                 ó:   •  [        U SS9  g! [         a     gf = f)NF)ÚstrictT)r'   Ú
ValueError©Úns    Úd/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/functions/special/gamma_functions.pyÚintliker1      s&   € ðÜˆq˜ÒØøÜó Ùðús   ‚
 �
™c                   ó–   ^ • \ rS rSrSrSr\R                  4rSS jr	\
S 5       rS rS rS rS	 rSS
 jrS rSU 4S jjrS rSrU =r$ )Úgammaé"   a  
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                 ó”   • US:X  a8  U R                  U R                  S   5      [        SU R                  S   5      -  $ [        X5      e©Né   r   )ÚfuncÚargsÚ	polygammar
   ©ÚselfÚargindexs     r0   ÚfdiffÚgamma.fdiffr   s?   € Ø�q‹=Ø—9‘9˜TŸY™Y q™\Ó*¬9°Q¸¿	¹	À!¹Ó+EÑEÐEä$ TÓ4Ð4ó    c                 óô  • UR                   (       Gaf  U[        R                  L a  [        R                  $ U[        L a  [        $ [	        U5      (       a/  UR
                  (       a  [        US-
  5      $ [        R                  $ UR                  (       aã  UR                  S:X  aÒ  [        UR                  5      UR                  -  nUR
                  (       a  U[        R                  pCO0US-   =p#US-  S:X  a  [        R                  nO[        R                  nU[        [        SSU-  S5      5      -  nUR
                  (       a  U[!        ["        5      -  SU-  -  $ SU-  [!        ["        5      -  U-  $ g g g )Nr7   é   r   é   )Ú	is_Numberr   ÚNaNr   r1   Úis_positiver$   ÚComplexInfinityÚis_RationalÚqÚabsÚpÚOneÚNegativeOner   Úranger   r   )ÚclsÚargr/   ÚkÚcoeffs        r0   ÚevalÚ
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¡˜˜à˜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                 ó¼  • U R                   S   nUR                  (       a¦  [        UR                  5      UR                  :”  aƒ  [        S5      nUR                  UR                  -  nUR                  XBR                  -  -
  nU R                  X4-   5      R                  5       R                  U[        XRR                  5      5      $ UR                  (       am  UR                  5       u  pgU(       a%  UR                  S:w  a  [        U5      nXh-
  4U-   nUnUR                  " USS06nU R                  U5      [        Xv5      -  $ U R                  " U R                   6 $ )Nr   Úxr7   ÚreevalF)r9   rH   rJ   rK   rI   r   r8   Ú_eval_expand_funcÚsubsr   Úis_AddÚas_coeff_addr   Ú_new_rawargsr&   )	r<   ÚhintsrP   rV   r/   rK   rR   ÚtailÚintparts	            r0   rX   Ú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Ÿe™e™G‘O�Ø—y‘y ¡Ó'×9Ñ9Ó;×@Ñ@ÀÄHÈQ×PUÑPUÓDVÓWÐWà�:�:Ø×*Ñ*Ó,‰KˆEÞ˜Ÿ™ A›Ü ›,�Ø™Ð)¨DÑ0�Ø�Ø×#Ò# TÐ8°%Ñ8ˆDØ—9‘9˜T“?¤?°4Ó#?Ñ?Ð?à�yŠy˜$Ÿ)™)Ð$Ð$r@   c                 óZ   • U R                  U R                  S   R                  5       5      $ ©Nr   )r8   r9   Ú	conjugate©r<   s    r0   Ú_eval_conjugateÚgamma._eval_conjugate­   s"   € Ø�y‰y˜Ÿ™ 1™×/Ñ/Ó1Ó2Ð2r@   c                 óÜ   • U R                   S   nUR                  (       a  UR                  (       a  g[        U5      (       a  US::  a  gUR                  (       d  UR
                  (       a  gg )Nr   FT)r9   Úis_nonpositiveÚ
is_integerr1   rF   Úis_noninteger©r<   rV   s     r0   Ú_eval_is_realÚgamma._eval_is_real°   sH   € Ø�I‰I�a‰LˆØ×× §§ØÜ�1�:‰:˜!˜q›&ØØ�=�=˜AŸOŸOØð ,r@   c                 ó’   • U R                   S   nUR                  (       a  gUR                  (       a  [        U5      R                  $ g )Nr   T)r9   rF   rj   r   Úis_evenrk   s     r0   Ú_eval_is_positiveÚgamma._eval_is_positive¹   s5   € Ø�I‰I�a‰LˆØ�=�=ØØ�_�_Ü˜“8×#Ñ#Ð#ð r@   c                 ó*   • [        [        U5      5      $ ©N)r   Úloggamma)r<   ÚzÚlimitvarÚkwargss       r0   Ú_eval_rewrite_as_tractableÚ gamma._eval_rewrite_as_tractableÀ   s   € Ü”8˜A“;ÓÐr@   c                 ó   • [        US-
  5      $ ©Nr7   )r$   ©r<   ru   rw   s      r0   Ú_eval_rewrite_as_factorialÚ gamma._eval_rewrite_as_factorialÃ   s   € Ü˜˜Q™ÓÐr@   c                 ó8  >• U R                   S   R                  US5      nUR                  (       a  US::  d  [        TU ]  XU5      $ U R                   S   U-
  nU R                  US-   5      [        U R                   S   U* S-   5      -  R	                  XU5      $ ©Nr   r7   )r9   ÚlimitÚ
is_IntegerÚsuperÚ_eval_nseriesr8   r%   )r<   rV   r/   ÚlogxÚcdirÚx0ÚtÚ	__class__s          €r0   r„   Úgamma._eval_nseriesÆ   s‰   ø€ Ø�Y‰Y�q‰\×Ñ  1Ó%ˆØ—— "¨£'Ü‘7Ñ(¨¨tÓ4Ð4Ø�I‰I�a‰L˜2ÑˆØ—	‘	˜!˜a™%Ó ¤ D§I¡I¨a¡L°2°#¸±'Ó!:Ñ:×IÑIÈ!ÐPTÓUÐUr@   c                 ób  • U R                   S   nUR                  US5      nUR                  (       aR  UR                  (       aA  U* n[        R
                  U-  U R                  US-   5      -  nXtU-   R                  U5      -  $ UR                  (       d  U R                  U5      $ [        5       er€   )
r9   rY   ri   rh   r   rM   r8   Úas_leading_termÚis_infiniter   )r<   rV   r…   r†   rP   r‡   r/   Úress           r0   Ú_eval_as_leading_termÚ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@   © ©r7   rs   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú
unbranchedr   rG   Ú_singularitiesr>   ÚclassmethodrS   rX   re   rl   rp   rx   r}   r„   r�   Ú__static_attributes__Ú__classcell__©r‰   s   @r0   r3   r3   "   sg   ø† ñJðX €JØ×'Ñ'Ð)€Nô5ð ñ5ó ð5ò@%ò(3òò$ô ò ÷V÷
ð 
r@   r3   c                   ój   ^ • \ rS rSrSrSS jr\S 5       rS rS r	S r
U 4S jrS	 rS
 rS rSrU =r$ )Ú
lowergammaéÞ   aU  
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                 ó0  • SSK Jn  US:X  a+  U R                  u  p4[        [	        U5      * 5      XCS-
  -  -  $ US:X  aO  U R                  u  p4[        U5      [        U5      -  [        U5      [        X45      -  -
  U" / SS/SSU// U5      -
  $ [        X5      e©Nr   )ÚmeijergrB   r7   )
Úsympy.functions.special.hyperr£   r9   r   r   r3   Údigammar   Ú
uppergammar
   ©r<   r=   r£   Úaru   s        r0   r>   Úlowergamma.fdiff  s™   € Ý9Ø�q‹=Ø—9‘9‰DˆAÜœ
 1›�~Ó& q¨q©5¡zÑ1Ð1Ø˜‹]Ø—9‘9‰DˆAÜ˜“8œG A›JÑ&¬¨Q«´
¸1Ó0@Ñ)@Ñ@Ù˜"˜q !˜f q¨!¨Q i°°QÓ7ñ8ð 8ô % TÓ4Ð4r@   c                 ó†  • U[         R                  L a  [         R                  $ UR                  5       u  p4UR                  (       a-  UR                  (       a  [        U5      nX2:w  a  [        X5      $ O›UR                  (       aY  UR                  (       aH  US:w  aA  S[        -  [        -  U-  [         R                  U* -  -  [        U* 5      -  [        X5      -   $ O1US:w  a+  [        S[        -  [        -  U-  U-  5      [        X5      -  $ UR                  (       Gaq  U[         R                  L a  [         R                  [        U* 5      -
  $ U[         R                  L a$  [!        [        5      [#        [!        U5      5      -  $ UR$                  (       d  SU-  R$                  (       Gaä  US-
  nUR                  (       Ga  UR                  (       aU  [        U5      [        U* 5      [        U5      -  ['        [)        U5       Vs/ s H  obU-  [        U5      -  PM     sn6 -  -
  $ [+        U5      [        [         R                  U5      [!        [        5      -  [        U* 5      ['        [)        SU[         R                  -   5       Vs/ s H5  obU[         R                  -
  -  [+        [         R                  U-   5      -  PM7     sn6 -  -
  -  $ UR$                  (       d®  [         R                  [         R                  U-
  -  [        -  [#        [!        U5      5      -  [+        SU-
  5      -  [        U* 5      ['        [)        S[-        SS5      U-
  5       Vs/ s H&  obXa-   S-
  -  [+        U5      -  [+        X-   5      -  PM(     sn6 -  -   $ UR.                  (       a  [         R                  $ g s  snf s  snf s  snf )Nr   rB   r7   rC   )r   ÚZeroÚextract_branch_factorri   rF   r   rŸ   rh   r   r   rM   r$   r   rD   rL   ÚHalfr   r   r‚   r   rN   r3   r   Úis_zero)rO   r¨   rV   Únxr/   ÚbrQ   s          r0   rS   Úlowergamma.eval#  s”  € ð" ”—‘Š;Ü—6‘6ˆMØ×'Ñ'Ó)‰ˆØ�<�<˜AŸMŸMÜ˜A“ˆBØ‹wÜ! !Ó(Ð(ð à�\�\˜a×.×.Ø�A‹vØœ‘tœA‘v˜a‘x¤§¡°°Ñ 3Ñ3´I¸q¸b³MÑAÄJÈqÓ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Ð!1Ø˜‘E�Ø—=—=�=Ø—|—|Ü(¨›|¬c°1°"«g¼	À!»Ñ.DÄsÔlqÐrsÔltÓLuÒltÐghÐRSÉVÔV_Ð`aÓVbÔMbÑltÑ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ò  DXÐ~Ð\]Ô`a×`fÑ`fÑ\fÑXgÔhmÔno×ntÑntÐwxÑnxÓhyÔXyñ  DXñ  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ò  Soð  NOÐhiÑhmÐpqÑhqÑdrÔsxÐyzÓs{Ñd{ô  }Bð  CDñ  CHó  }Iô  eIñ  Soñ  dpð  _qñ  Wqñ  qð  qà�9�9Ü—6‘6ˆMð ùò Mvùò XYùò dps   È	N4Ê<N9Í-N>c                 óh  • [        S U R                   5       5      (       a  U R                  S   R                  U5      nU R                  S   R                  U5      n[        U5         [        R
                  " USU5      nS S S 5        [        R                  " WU5      $ U $ ! , (       d  f       N'= f)Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frs   ©Ú	is_number©Ú.0rV   s     r0   Ú	<genexpr>Ú)lowergamma._eval_evalf.<locals>.<genexpr>V  ó   é € Ð.¢I˜q�{Ž{¢Iùó   ‚r   r7   )Úallr9   Ú
_to_mpmathr)   r(   Úgammaincr   Ú_from_mpmath©r<   Úprecr¨   ru   rŽ   s        r0   Ú_eval_evalfÚlowergamma._eval_evalfU  s…   € ÜÑ. D§I¢IÓ.×.Ñ.Ø—	‘	˜!‘×'Ñ'¨Ó-ˆAØ—	‘	˜!‘×'Ñ'¨Ó-ˆAÜ˜$•Ü—k’k ! Q¨Ó*�÷  ä×$Ò$ S¨$Ó/Ð/àˆK÷	  •ús   Á)B#Â#
B1c                 óà   • U R                   S   nU[        R                  [        R                  4;  a;  U R	                  U R                   S   R                  5       UR                  5       5      $ g r6   ©r9   r   r«   ÚNegativeInfinityr8   rc   rk   s     r0   re   Ú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                 ó˜  • U R                   u  p4[        UR                  X5      UR                  X5      /5      nU(       d  U$ UR                  X5      nUR                  (       a!  [        UR
                  UR                  /5      $ UR                  X5      n[        UR                  UR                  [        UR                  5      /5      $ rs   )	r9   r   Ú_eval_is_meromorphicrY   ri   rF   Ú	is_finiter   r®   )r<   rV   r¨   Úsru   Ú
args_meromÚz0Ús0s           r0   rÊ   Úlowergamma._eval_is_meromorphicd  sž   € ð �y‰y‰ˆÜ × 6Ñ 6°qÓ <Ø×"Ñ" 1Ó(ð *ó +ˆ
æØÐØ�V‰V�A‹\ˆØ�<�<Ü˜aŸm™m¨R¯\©\Ð:Ó;Ð;Ø�V‰V�A‹\ˆÜ˜"Ÿ,™,¨¯©´iÀÇ
Á
Ó6KÐLÓMÐMr@   c                 ó0  >^	^
• SSK Jn  U R                  u  m	m
US   [        L ac  T
R	                  U5      (       dM  T
T	-  [        T
* 5      -  n[        U	U
4S j[        US-
  5       5       5      nU" T
T	-  T	U* -  -  5      nXg-  U-   $ [        TU ]%  XX45      $ )Nr   )ÚOc              3   óN   >#   • U  H  nTU-  [        TUS -   5      -  v •  M     g7f)r7   N)r%   )r·   rQ   rÌ   ru   s     €€r0   r¸   Ú+lowergamma._eval_aseries.<locals>.<genexpr>z  s$   øé € ÐC²l°˜1˜a™4¤ 1 a¨!¡e£Ö,²lùs   ƒ"%r7   )
Úsympy.series.orderrÒ   r9   r   Úhasr   ÚsumrN   rƒ   Ú_eval_aseries)r<   r/   Úargs0rV   r…   rÒ   rR   Úsum_exprÚorÌ   ru   r‰   s            @@€r0   rØ   Ú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                 ó0   • [        U5      [        X5      -
  $ rs   )r3   r¦   ©r<   rÌ   rV   rw   s       r0   Ú_eval_rewrite_as_uppergammaÚ&lowergamma._eval_rewrite_as_uppergamma  ó   € Ü�Q‹xœ* QÓ*Ñ*Ð*r@   c                 óž   • SSK Jn  UR                  (       a  UR                  (       a  U $ U R	                  [
        5      R	                  U5      $ )Nr   ©Úexpint)Ú'sympy.functions.special.error_functionsrä   ri   rh   Úrewriter¦   ©r<   rÌ   rV   rw   rä   s        r0   Ú_eval_rewrite_as_expintÚ"lowergamma._eval_rewrite_as_expint‚  s3   € ÝBØ�<�<˜A×,×,ØˆKØ�|‰|œJÓ'×/Ñ/°Ó7Ð7r@   c                 óF   • U R                   S   nUR                  (       a  gg )Nr7   T)r9   r®   rk   s     r0   Ú_eval_is_zeroÚlowergamma._eval_is_zeroˆ  s   € Ø�I‰I�a‰LˆØ�9�9Øð r@   r‘   ©rB   )r“   r”   r•   r–   r—   r>   rš   rS   rÂ   re   rÊ   rØ   rß   rè   rë   r›   rœ   r�   s   @r0   rŸ   rŸ   Þ   sM   ø† ñ4ôn5ð ñ/ó ð/òbòFò
Nõ"8ò+ò8÷ð r@   rŸ   c                   óV   • \ rS rSrSrSS jrS r\S 5       rS r	S r
S rS	 rS
 rSrg)r¦   iŽ  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                 ó  • SSK Jn  US:X  a,  U R                  u  p4[        [	        U5      * 5      * XCS-
  -  -  $ US:X  a7  U R                  u  p4[        X45      [        U5      -  U" / SS/SSU// U5      -   $ [        X5      er¢   )r¤   r£   r9   r   r   r¦   r   r
   r§   s        r0   r>   Úuppergamma.fdiffÐ  s„   € Ý9Ø�q‹=Ø—9‘9‰DˆAÜœ A›˜Ó'Ð'¨°©E©
Ñ2Ð2Ø˜‹]Ø—9‘9‰DˆAÜ˜aÓ#¤C¨£FÑ*©W°R¸!¸Q¸À!ÀQÈÀÈBÐPQÓ-RÑRÐRä$ TÓ4Ð4r@   c                 ó‚  • [        S U R                   5       5      (       aŒ  U R                  S   R                  U5      nU R                  S   R                  U5      n[        U5         [        R
                  " X#[        R                  5      nS S S 5        [        R                  " WU5      $ U $ ! , (       d  f       N'= f)Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frs   r´   r¶   s     r0   r¸   Ú)uppergamma._eval_evalf.<locals>.<genexpr>Ü  rº   r»   r   r7   )	r¼   r9   r½   r)   r(   r¾   Úinfr   r¿   rÀ   s        r0   rÂ   Úuppergamma._eval_evalfÛ  s‡   € ÜÑ. D§I¢IÓ.×.Ñ.Ø—	‘	˜!‘×'Ñ'¨Ó-ˆAØ—	‘	˜!‘×'Ñ'¨Ó-ˆAÜ˜$•Ü—k’k !¬¯©Ó/�÷  ä×$Ò$ S¨$Ó/Ð/Øˆ÷  •ús   Á)&B0Â0
B>c                 óú	  • SSK Jn  UR                  (       ar  U[        R                  L a  [        R                  $ U[
        L a  [        R                  $ UR                  (       a%  [        U5      R                  (       a  [        U5      $ UR                  5       u  pEUR                  (       a-  UR                  (       a  [        U5      nX$:w  a  [        X5      $ OÊUR                  (       aY  UR                  (       aH  US:w  aA  S[         -  ["        -  U-  [        R$                  U* -  -  ['        U* 5      -  [        X5      -   $ O`US:w  aZ  [        U5      S[)        S[         -  ["        -  U-  U-  5      -
  -  [)        S[         -  ["        -  U-  U-  5      [        X5      -  -   $ UR                  (       GaÑ  U[        R                  L a  UR                  (       a  [+        U* 5      * $ U[        R,                  L a  [)        U* 5      $ U[        R.                  L a$  [1        [         5      [3        [1        U5      5      -  $ UR4                  (       d  SU-  R4                  (       Ga$  US-
  nUR                  (       Ga  UR                  (       aI  [)        U* 5      ['        U5      -  [7        [9        U5       Vs/ s H  nX'-  ['        U5      -  PM     sn6 -  $ [        U5      [3        [1        U5      5      -  [        R$                  U[        S5      S-  -
  -  [)        U* 5      -  [1        U5      -  [7        [9        U[        R.                  -
  5       Vs/ s H6  n[        [        R.                  * U-
  5      U* U-  -  [        SU-
  5      -  PM8     sn6 -  -   $ UR4                  (       a  U" U* U5      [        U5      US-   -  -  $ UR4                  (       d´  [        R$                  [        R.                  U-
  -  [         -  [3        [1        U5      5      -  [        SU-
  5      -  X!-  [)        U* 5      -  [7        [9        [        R.                  U-
  5       Vs/ s H$  nX'-  [        U5      -  [        X-   S-   5      -  PM&     sn6 -  -
  $ UR                  (       a  UR                  (       a  [+        U* 5      * $ UR                  (       a&  [        U5      R                  (       a  [        U5      $ g g s  snf s  snf s  snf )Nr   rã   éþÿÿÿr7   rB   rC   )rå   rä   rD   r   rE   r   r«   r®   r   rF   r3   r¬   ri   r   r¦   rh   r   r   rM   r$   r   r   rL   r­   r   r   r‚   r   rN   )rO   r¨   ru   rä   r¯   r/   r°   rQ   s           r0   rS   Úuppergamma.evalä  sä  € åBØ�;�;Ø”A—E‘EŠzÜ—u‘u�Ø”b’Ü—v‘v�Ø——Ü�a“5×$×$Ü  ›8�Oð ×'Ñ'Ó)‰ˆØ�<�<˜AŸMŸMÜ˜A“ˆBØ‹wÜ! !Ó(Ð(ð à�\�\˜a×.×.Ø�A‹vØœ"‘uœQ‘w˜q‘y¤§¡°!°Ñ!4Ñ4´YÀ¸r³]ÑBÄZÐPQÓEVÑVÐVð à�!‹VÜ˜“8˜Q¤ Q¤r¡T¬!¡V¨A¡X¨a¡Z£Ñ0Ñ1´C¸¼"¹¼Q¹¸q¹À¹
³OÄJÈqÓ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Ð!1Ø˜‘E�Ø—=—=�=Ø—|—|Ü" A 2›w¬°1«Ñ5¼ÜGLÈQÄxó>QÚGOÀ!ð ?@¹dÄYÈqÃ\Ô>QÙGOñ>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Ú1B¨Aô ).¬q¯v©v¨g¸©kÓ(:¸q¸bÀ1¹WÑ(DÄuÈQÈqÉSÃzÔ(QÙ1Bñ(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Ú>O¸ð 67±T¼EÀ!»H±_ÄuÈQÉSÐQRÉUÃ|Ô5SÙ>Oñ5Qð 0Rñ RñRð Sð �9�9˜ŸŸÜ˜�r“F�7ˆNà�9�9œ˜A›×*×*Ü˜“8ˆOð +ˆ9ùò%>Qùò
(Dùò5Qs   Ê4S.
Í=S3Ñ+S8c                 óà   • U R                   S   nU[        R                  [        R                  4;  a;  U R	                  U R                   S   R                  5       UR                  5       5      $ g r6   rÅ   ©r<   ru   s     r0   re   Úuppergamma._eval_conjugate  rÈ   r@   c                 ó.   • [         R                  XU5      $ rs   )rŸ   rÊ   )r<   rV   r¨   s      r0   rÊ   Úuppergamma._eval_is_meromorphic"  s   € Ü×.Ñ.¨t¸Ó:Ð:r@   c                 ó0   • [        U5      [        X5      -
  $ rs   )r3   rŸ   rÞ   s       r0   Ú_eval_rewrite_as_lowergammaÚ&uppergamma._eval_rewrite_as_lowergamma%  rá   r@   c                 óB   • [        [        U5      5      [        X5      -
  $ rs   )r   rt   rŸ   rÞ   s       r0   rx   Ú%uppergamma._eval_rewrite_as_tractable(  s   € Ü”8˜A“;Ó¤*¨QÓ"2Ñ2Ð2r@   c                 ó0   • SSK Jn  U" SU-
  U5      X!-  -  $ )Nr   rã   r7   )rå   rä   rç   s        r0   rè   Ú"uppergamma._eval_rewrite_as_expint+  s   € ÝBÙ�a˜!‘e˜QÓ ¡Ñ$Ð$r@   r‘   Nrí   )r“   r”   r•   r–   r—   r>   rÂ   rš   rS   re   rÊ   rÿ   rx   rè   r›   r‘   r@   r0   r¦   r¦   Ž  sA   † ñ>ôB	5òð ñ6ó ð6òpFò
;ò+ò3õ%r@   r¦   c                   ó|   ^ • \ rS rSrSr\S 5       rS rS rS r	S r
S rS	 rS
 rS rSS jrU 4S jrS rSrU =r$ )r:   i4  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                 óÄ  • U[         R                  L d  U[         R                  L a  [         R                  $ U[        L a'  UR                  (       a  [        $ [         R                  $ UR
                  (       a!  UR                  (       a  [         R                  $ U[         R                  L a!  [        U5      [        S[        -  5      S-  -
  $ UR                  (       a±  U[        * L d$  UR                  [        5      [        [        * 4;   a  [        $ UR
                  (       a  [        US-
  5      [         R                  -
  $ UR                   (       a;  UR#                  5       u  p4US::  a"  [%        ['        [         R                  USS95      $ g g UR(                  (       aÁ  UR*                  (       a¯  [-        U5      nX%:w  a  ['        X5      $ UR
                  (       a2  [         R                  US-   -  [/        U5      -  [1        US-   U5      -  $ U[         R2                  L a=  [         R                  US-   -  [/        U5      -  SUS-   -  S-
  -  [1        US-   5      -  $ g g g )NrB   r7   é   F)Úevaluate)r   rE   r   r®   r«   r‚   rh   rG   rM   rt   r   r   Úextract_multiplicativelyr   r#   Ú
EulerGammarH   Úas_numer_denomr   r:   ri   Úis_nonnegativer   r$   r   r­   )rO   r/   ru   rK   rI   Únzs         r0   rS   Ú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Ø——à×'Ñ'Ó)‘�à˜“6Ü&¤y´·±¸ÀUÑ'KÓLÐLð ð	 ð �\�\˜a×.×.Ü˜A“ˆBØ‹wÜ  Ó'Ð'Ø�|�|Ü—}‘} 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                 ó€   • U R                   S   R                  (       a   U R                   S   R                  (       a  gg g )Nr   r7   T)r9   rF   rd   s    r0   rl   Úpolygamma._eval_is_real½  s/   € Ø�9‰9�Q‰<×#×#¨¯	©	°!©×(@×(@Øð )AÐ#r@   c                 ó¢   • U R                   S   n[        UR                  UR                  /5      n[        UR                  [        U5      /5      $ r{   )r9   r   Úis_negativeri   Ú
is_complexr   )r<   ru   Úis_negative_integers      r0   Ú_eval_is_complexÚpolygamma._eval_is_complexÁ  sA   € Ø�I‰I�a‰LˆÜ'¨¯©¸¿¹Ð(EÓFÐÜ˜!Ÿ,™,¬	Ð2EÓ(FÐGÓHÐHr@   c                 óÒ   • U R                   u  pUR                  (       aH  UR                  (       a  UR                  (       a  gUR                  (       a  UR                  (       a  gg g g ©NTF)r9   rF   Úis_oddÚis_realro   ©r<   r/   ru   s      r0   rp   Úpolygamma._eval_is_positiveÆ  s@   € Ø�y‰y‰ˆØ�=�=Ø�x�x˜AŸIŸIØØ�y�y˜QŸ]Ÿ]Øð +ˆyð r@   c                 óÒ   • U R                   u  pUR                  (       aH  UR                  (       a  UR                  (       a  gUR                  (       a  UR                  (       a  gg g g r  )r9   rF   ro   r  r  r  s      r0   Ú_eval_is_negativeÚpolygamma._eval_is_negativeÎ  s@   € Ø�y‰y‰ˆØ�=�=Ø�y�y˜QŸ]Ÿ]ØØ�x�x˜AŸIŸIØð &ˆxð r@   c                 óè  • U R                   u  p#UR                  (       Ga¥  UR                  (       Ga“  UR                  (       aÓ  UR                   S   nUR                  (       a²  US-   * nUS:”  a<  [	        [        S[        U5      S-   5       Vs/ s H  n[        X6-
  U5      PM     sn6 nO9[	        [        [        U* 5      5       Vs/ s H  n[        X6-   U5      PM     sn6 * n[        X#U-
  5      [        R                  U-  [        U5      -  U-  -   $ O¯UR                  (       až  UR                  5       u  pCUR                  (       aw  UR                  (       af  [        [        U5      5       Vs/ s H  n[        X#[        Xd5      -   5      PM     nnUS:X  a  [	        U6 U-  [!        U5      -   $ [	        U6 XBS-   -  -  $ X4-  nUS:X  GaE  UR"                  (       Ga3  UR%                  5       u  p‰[        R&                  * [(        [+        U[(        -  U	-  5      -  S-  -
  [!        U	5      -
  [	        [        SU	5       V
s/ s H@  n
[-        SU
-  [(        -  U-  U	-  5      [!        S[/        U
[(        -  U	-  5      -  5      -  PMB     sn
6 -   nUS:”  a9  [1        U5      nX2-
  nU[	        [        U5       V
s/ s H
  n
SXÊ-   -  PM     sn
6 -   $ US:  a@  [1        SU-
  5      nX2-   nU[	        [        U5       V
s/ s H  n
SUS-
  U
-
  -  PM     sn
6 -
  $ US:X  a!  [3        U5      [!        S[(        -  5      S-  -
  $ UR4                  SL d  UR                  SL at  [7        S5      n[9        XÓ5      R;                  U5      R=                  XÒS-   5      nU[        R&                  [?        U* 5      -   [9        US-   U5      -  -   [A        U* 5      -  $ [        X#5      $ s  snf s  snf s  snf s  sn
f s  sn
f s  sn
f )Nr   r7   rB   éÿÿÿÿFrÌ   )!r9   r‚   r  rZ   r   rN   Úintr   r:   r   rM   r$   Úis_MulÚas_two_termsrF   r   r   rH   r  r
  r   r!   r    r   r   rt   ri   r   r   ÚdiffrY   r¥   r3   )r<   r]   r/   ru   rR   ÚeÚir^   rK   rI   rQ   Úpart_1rÎ   rÌ   Údzts                  r0   rX   Úpolygamma._eval_expand_funcÖ  s­  € Ø�y‰y‰ˆà�<�<ˆ<˜A×,×,Ð,Ø�x�xØŸ™˜q™	�Ø×#×#Ø˜a™%˜�AØ˜q“yÜ"Ü/4°Q¼¸E»
ÀQ¹Ô/Gó%IÚ/G¨!ô &)Ø™E 1ö&&Ù/Gñ%Ið  J™ô !$Ü/4´S¸%¸³[Ô/Aó&CÚ/A¨!ô '*Ø™E 1ö'&Ù/Añ&Cð !Dð  D˜ä$ Q¨E©	Ó2´Q·]±]ÀAÑ5EÄiÐPQÃlÑ5RÐSWÑ5WÑWÐWð $ð ——ØŸ>™>Ó+‘�Ø×#×#¨×(9×(9ä,1´#°e³*Ô,=ó?Ú,= qô & a¬XØó."ñ *"ö #Ù,=ð ð ?à˜A“vÜ" D˜z¨%Ñ/´#°e³*Ñ<Ð<ä" D˜z¨%°a±%©.Ñ8Ð8Ø‘
�à�Œ6�a—m—m�mØ×#Ñ#Ó%‰DˆAô —l‘l�]¤R¬#¨a´"©f°q©j«/Ñ%9¸AÑ%=Ñ=ÄÀAÃÑFÌÜNSÐTUÐWXÌkÓZÊkÈ”#�a˜!‘eœb‘j 1‘n qÑ(Ó)¬C°´C¸¼B¹À¹
³OÑ0CÓ,DÔDÉkÑZðJ\ñ \ˆFð �1‹uÜ˜!“H�Ø‘U�Ø¤¼EÀ!¼HÓ%EºH°q a¨2©6¤l¹HÑ%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©SÓ1ˆCØœ1Ÿ<™<¬'°1°"«+Ñ5¼¸aÀ¹cÀ1»ÑEÑEÌÐPQÈrËÑRÐRä˜‹ÐùòU%Iùò&Cùò?ùò [ùò
 &Fùò &Js%   ÂOÃOÅ2!O É AO%
Ê5O*
Ë7O/
c                 ó®   • UR                   (       aD  UR                  (       a2  [        R                  US-   -  [	        U5      -  [        US-   U5      -  $ g g r{   )ri   rF   r   rM   r$   r   ©r<   r/   ru   rw   s       r0   Ú_eval_rewrite_as_zetaÚpolygamma._eval_rewrite_as_zeta  sA   € Ø�<�<˜AŸMŸMÜ—=‘= 1 q¡5Ñ)¬)°A«,Ñ6´t¸AÀ¹EÀ1³~ÑEÐEð *ˆ<r@   c                 ó  • UR                   (       at  UR                  (       a  [        US-
  5      [        R                  -
  $ [        R
                  US-   -  [        U5      -  [        US-   5      [        US-
  US-   5      -
  -  $ g r{   )ri   r®   r#   r   r
  rM   r$   r   r,  s       r0   Ú_eval_rewrite_as_harmonicÚ#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                 ó(  • SSK Jn  U R                   Vs/ s H  oUR                  U5      PM     snu  pgU" Xq5      nUS:X  a<  UR	                  SU-  5      (       a#  Uc  [        U5      OUnUR                  5       U-  $ U R                  Xg5      $ s  snf )Nr   ©ÚOrderr7   )rÕ   r4  r9   rŒ   Úcontainsr   Úgetnr8   )	r<   rV   r…   r†   r4  r¨   r/   ru   rÛ   s	            r0   r�   Úpolygamma._eval_as_leading_term  sz   € Ý,Ø.2¯iªiÓ8ªi¨×!Ñ! !Ö$©iÑ8‰ˆÙ�!‹KˆØ�‹6�a—j‘j  1¡—o‘oØ!™\”3�q”6¨tˆDØ—6‘6“8˜d‘?Ð"à—9‘9˜Q“?Ð"ùò 9s   •Bc                 ód   • US:X  a   U R                   S S u  p#[        US-   U5      $ [        X5      e©NrB   r7   )r9   r:   r
   )r<   r=   r/   ru   s       r0   r>   Úpolygamma.fdiff   s6   € Ø�q‹=Ø—9‘9˜R˜a�=‰DˆAÜ˜Q ™U AÓ&Ð&ä$ TÓ4Ð4r@   c                 ó0  >• SSK Jn  US   [        :w  d<  U R                  S   R                  (       a  U R                  S   R
                  (       d  [        TU ]  XX45      $ U R                  S   nU R                  S   nUS:X  aŸ  [        U5      SSU-  -  -
  nS n	US:  a  U" SU-  U5      n	Oa[        US-   S-  5      n
[        SU
5       Vs/ s H   n[        SU-  5      SU-  USU-  -  -  -  PM"     nnU[        U6 -  nU" SXa-  -  U5      n	UR                  X1U5      U	-   $ [        U5      nX×U-  SU-  -  -   n[        US-   S-  5      n
[        SU
5       HI  nUSU-  U-   S-
  -  SU-  U-   S-
  -  SU-  SU-  S-
  -  -  nU[        SU-  5      U-  USU-  -  -  -  nMK     U" SUSU
-  -  -  U5      n	US:X  a  U" SU-  U5      n	OUS:X  a  U" SUS-  -  U5      n	UR                  XaU5      U	-   nSSU-  U-  -  U-  R                  X1U5      $ s  snf )Nr   r3  r7   rB   r!  )rÕ   r4  r   r9   r‚   r  rƒ   rØ   r   r   rN   r"   r   r„   r3   )r<   r/   rÙ   rV   r…   r4  ru   ÚNÚrrÛ   ÚmrQ   ÚlÚfacÚe0r‰   s                  €r0   rØ   Úpolygamma._eval_aseries'  sC  ø€ Ý,Ø�‰8”r‹>Ø—‘˜1‘×(×(¨T¯Y©Y°q©\×-H×-HÜ‘7Ñ(¨°1Ó;Ð;Ø�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ºk¸”Y˜q ™s“^ q¨¡s¨1¨q°©s©8¡|Ô4¹k�ÐJØ”S˜!�W‘�Ù˜!˜A™D™& !Ó$�Ø—?‘? 1¨Ó.°Ñ2Ð2ô ˜“(ˆCØ˜‘u˜a ™c‘{Ñ"ˆBÜ˜˜Q™ ™
Ó#ˆAÜ˜1˜a–[�Ø˜1˜Q™3 ™7 Q™;Ñ'¨¨1©¨q©°1©Ñ5¸!¸A¹#ÀÀ!ÁÀaÁ¹ÑI�Ø”i  !¡“n SÑ(¨¨Q¨q©S©Ñ1Ñ1’ñ !ñ �a˜˜A˜a™C™‘j !Ó$ˆAØ�A‹vÙ˜!˜A™#˜q“M‘Ø�a“Ù˜!˜A˜q™D™& !Ó$�Ø× Ñ   tÓ,¨qÑ0ˆAØ˜"˜Q™$ ™‘N QÑ&×5Ñ5°a¸DÓAÐAùò- Ks   Ã'Hc                 ó  • [        S U R                   5       5      (       d  g U R                  S   R                  US-   5      nU R                  S   R                  US-   5      n[        R                  " U5      (       a  US::  a  [
        R                  $ [        US-   5         [        R                  " U5      (       a  US:¼  a  [        R                  " X#5      nO{[        R                  " US-   U5      n[        R                  " US-   US5      nU[        R                  [        R                  " U* 5      -   U-  -   [        R                  " U* 5      -  nS S S 5        [        R                  " WU5      $ ! , (       d  f       N%= f)Nc              3   ó8   #   • U  H  oR                   v •  M     g 7frs   r´   )r·   r'  s     r0   r¸   Ú(polygamma._eval_evalf.<locals>.<genexpr>Q  s   é € Ð2ª	 1—;–;ª	ùr»   r   é   r7   )r¼   r9   r½   r(   Úisintr   rG   r)   r:   r   Úeulerr¥   Úrgammar   r¿   )r<   rÁ   rÌ   ru   rŽ   Úztr)  s          r0   rÂ   Úpolygamma._eval_evalfP  s  € ÜÑ2¨¯	ª	Ó2×2Ñ2ØØ�I‰I�a‰L×#Ñ# D¨¡GÓ,ˆØ�I‰I�a‰L×#Ñ# D¨¡GÓ,ˆÜ�8Š8�A�;‰;˜1 ›6Ü×$Ñ$Ð$Ü�d˜2‘gÕÜ�xŠx˜�{‰{˜q A›vÜ—l’l 1Ó(‘ä—W’W˜Q˜q™S !“_�Ü—g’g˜a ™c 1 aÓ(�ØœbŸh™h¬¯ª°Q°B«Ñ7¸2Ñ=Ñ=ÄÇÂÈAÈ2ÃÑN�÷ ô × Ò   dÓ+Ð+÷ Õús   Â$B4E7Å7
Fr‘   rí   )r“   r”   r•   r–   r—   rš   rS   rl   r  rp   r  rX   r-  r0  r�   r>   rØ   rÂ   r›   rœ   r�   s   @r0   r:   r:   4  sb   ø† ñhðT ñVó ðVò:òIò
òò3òjFò^ò#ô5õ'B÷R,ð ,r@   r:   c                   ón   ^ • \ rS rSrSr\S 5       rS rSU 4S jjrU 4S jr	S r
S rS	 rSS
 jrSrU =r$ )rt   ia  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                 óV  • UR                   (       a=  UR                  (       a  [        $ UR                  (       a  [	        [        U5      5      $ O‡UR                  (       av  UR                  5       u  p#UR                  (       aS  US:X  aM  [	        [        [        5      SSU-
  -  -  [        U5      -  [        US-   [        R                  -  5      -  5      $ U[        L a  [        $ [        U5      [        L a  [        R                  $ U[        R                  L a  [        R                  $ g r9  )ri   rh   r   rF   r   r3   Úis_rationalr  r   r   r   r­   rJ   rG   rE   )rO   ru   rK   rI   s       r0   rS   Úloggamma.evalÏ  sÌ   € à�<�<Ø××Ü�	Ø——Üœ5 ›8“}Ð$ð à�]�]Ø×#Ñ#Ó%‰DˆAà�}�}  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                 óz  • SSK Jn  U R                  S   nUR                  (       Ga  UR	                  5       u  pEXE-  nXFU-  -
  nUR
                  (       aå  UR
                  (       aÔ  XE:  aÏ  [        S5      nUR
                  (       a;  [        XE-  5      U[        U5      -  -
  U" [        US-
  U-  U-   5      USU45      -   $ UR                  (       aI  [        XE-  5      U[        U5      -  -
  [        [        -  U-  -   U" [        Xu-  U-
  5      USU* 45      -
  $ UR                  (       a  [        XE-  5      $ U $ )Nr   ©ÚSumrQ   r7   )Úsympy.concrete.summationsrR  r9   rH   r  rF   r   rt   r   r  r   r   r®   )r<   r]   rR  ru   rK   rI   r/   rQ   s           r0   rX   Úloggamma._eval_expand_funcã  s  € Ý1Ø�I‰I�a‰Lˆà�=�=ˆ=Ø×#Ñ#Ó%‰DˆAð ‘ˆAØ�a‘C‘ˆAØ�}�} §§°1³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ÈÉÈqÉÃ\ÐTUÐWXÐ[\ÐZ\ÐS]ÓA^Ñ^Ð^Ø—Y—YÜ# A¡E›?Ð*àˆr@   c                 óÚ   >• U R                   S   R                  US5      nUR                  (       a+  U R                  " U R                   6 nUR	                  XU5      $ [
        TU ]  XU5      $ rb   )r9   r�   r®   Ú_eval_rewrite_as_intractabler„   rƒ   )r<   rV   r/   r…   r†   r‡   Úfr‰   s          €r0   r„   Úloggamma._eval_nseriesø  s[   ø€ Ø�Y‰Y�q‰\×Ñ  1Ó%ˆØ�:�:Ø×1Ò1°4·9±9Ð=ˆAØ—?‘? 1¨Ó.Ð.Ü‰wÑ$ Q¨4Ó0Ð0r@   c                 óä  >• SSK Jn  US   [        :w  a  [        TU ]  XX45      $ U R
                  S   n[        U5      U[        R                  -
  -  U-
  [        S[        -  5      S-  -   n[        SU5       Vs/ s H,  n[        SU-  5      SU-  SU-  S-
  -  USU-  S-
  -  -  -  PM.     n	nS n
US:X  a
  U" SU5      n
OU" SXa-  -  U5      n
U[        U	6 -   R                  X1U5      U
-   $ s  snf )Nr   r3  rB   r7   )rÕ   r4  r   rƒ   rØ   r9   r   r   r­   r   rN   r"   r   r„   )r<   r/   rÙ   rV   r…   r4  ru   r=  rQ   r?  rÛ   r‰   s              €r0   rØ   Úloggamma._eval_aseriesÿ  só   ø€ Ý,Ø�‰8”r‹>Ü‘7Ñ(¨°1Ó;Ð;Ø�I‰I�a‰LˆÜ�‹F�AœŸ™‘JÑ !Ñ#¤c¨!¬B©$£i°¡kÑ1ˆÜDIÈ!ÈQÄKÓPÂK¸qŒY�q˜‘s‹^˜q ™s A a¡C¨!¡G™}¨Q°°1±°q±©\Ñ9Ô:ÁKˆÐPØˆØ�‹6Ù�a˜“‰Aá�a˜™‘f˜aÓ ˆAà”C˜�G‘×*Ñ*¨1°Ó6¸Ñ:Ð:ùò Qs   Á:3C-c                 ó*   • [        [        U5      5      $ rs   )r   r3   r|   s      r0   rV  Ú%loggamma._eval_rewrite_as_intractable  s   € Ü”5˜“8‹}Ðr@   c                 ój   • U R                   S   nUR                  (       a  gUR                  (       a  gg )Nr   TF)r9   rF   rh   rú   s     r0   rl   Úloggamma._eval_is_real  s*   € Ø�I‰I�a‰LˆØ�=�=ØØ××Øð r@   c                 ó¨   • U R                   S   nU[        R                  [        R                  4;  a  U R	                  UR                  5       5      $ g rb   rÅ   rú   s     r0   re   Úloggamma._eval_conjugate  s@   € Ø�I‰I�a‰LˆØ”Q—V‘VœQ×/Ñ/Ð0Ó0Ø—9‘9˜QŸ[™[›]Ó+Ð+ð 1r@   c                 óV   • US:X  a  [        SU R                  S   5      $ [        X5      er6   )r:   r9   r
   r;   s     r0   r>   Úloggamma.fdiff  s)   € Ø�q‹=Ü˜Q §	¡	¨!¡Ó-Ð-ä$ TÓ4Ð4r@   r‘   rb   r’   )r“   r”   r•   r–   r—   rš   rS   rX   r„   rØ   rV  rl   re   r>   r›   rœ   r�   s   @r0   rt   rt   a  sF   ø† ñlðZ ñó ðò&÷*1õ;òòò,÷
5ò 5r@   rt   c                   óh   • \ rS rSrSrS rSS jrS rS rS r	S r
\S	 5       rS
 rS rS rS rSrg)r¥   i$  aè  
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                 óh   • U R                   S   n[        U5      n[        SU5      R                  US9$ )Nr   r.   ©r9   r*   r:   Úevalf©r<   rÁ   ru   Únprecs       r0   rÂ   Údigamma._eval_evalfT  ó3   € Ø�I‰I�a‰LˆÜ˜DÓ!ˆÜ˜˜A‹×$Ñ$ uÐ$Ð-Ð-r@   c                 óT   • U R                   S   n[        SU5      R                  5       $ rb   ©r9   r:   r>   ©r<   r=   ru   s      r0   r>   Údigamma.fdiffY  ó$   € Ø�I‰I�a‰LˆÜ˜˜A‹×$Ñ$Ó&Ð&r@   c                 óL   • U R                   S   n[        SU5      R                  $ rb   ©r9   r:   r  rú   s     r0   rl   Údigamma._eval_is_real]  ó!   € Ø�I‰I�a‰LˆÜ˜˜A‹×&Ñ&Ð&r@   c                 óL   • U R                   S   n[        SU5      R                  $ rb   ©r9   r:   rF   rú   s     r0   rp   Údigamma._eval_is_positivea  ó!   € Ø�I‰I�a‰LˆÜ˜˜A‹×*Ñ*Ð*r@   c                 óL   • U R                   S   n[        SU5      R                  $ rb   ©r9   r:   r  rú   s     r0   r  Údigamma._eval_is_negativee  rw  r@   c                 óx   • U R                  [        5      n[        R                  /U-   nUR	                  XX45      $ rs   )ræ   r:   r   r«   rØ   ©r<   r/   rÙ   rV   r…   Úas_polygammas         r0   rØ   Údigamma._eval_aseriesi  s3   € Ø—|‘|¤IÓ.ˆÜ—‘�	˜EÑ!ˆØ×)Ñ)¨!°AÓ<Ð<r@   c                 ó   • [        SU5      $ rb   ©r:   ©rO   ru   s     r0   rS   Údigamma.evaln  ó   € ä˜˜A‹Ðr@   c                 óR   • U R                   S   n[        SU5      R                  SS9$ )Nr   T©r8   ©r9   r:   Úexpand©r<   r]   ru   s      r0   rX   Údigamma._eval_expand_funcr  ó)   € Ø�I‰I�a‰LˆÜ˜˜A‹×%Ñ%¨4Ð%Ð0Ð0r@   c                 ó@   • [        US-
  5      [        R                  -
  $ r{   )r#   r   r
  r|   s      r0   r0  Ú!digamma._eval_rewrite_as_harmonicv  s   € Ü˜˜A™‹¤§¡Ñ-Ð-r@   c                 ó   • [        SU5      $ rb   r€  r|   s      r0   Ú_eval_rewrite_as_polygammaÚ"digamma._eval_rewrite_as_polygammay  ó   € Ü˜˜A‹Ðr@   c                 óV   • U R                   S   n[        SU5      R                  U5      $ rb   ©r9   r:   rŒ   ©r<   rV   r…   r†   ru   s        r0   r�   Údigamma._eval_as_leading_term|  ó&   € Ø�I‰I�a‰LˆÜ˜˜A‹×.Ñ.¨qÓ1Ð1r@   r‘   Nr’   )r“   r”   r•   r–   r—   rÂ   r>   rl   rp   r  rØ   rš   rS   rX   r0  rŽ  r�   r›   r‘   r@   r0   r¥   r¥   $  sN   † ñ.ò^.ô
'ò'ò+ò+ò=ð
 ñó ðò1ò.òõ2r@   r¥   c                   ón   • \ rS rSrSrS rSS jrS rS rS r	S r
\S	 5       rS
 rS rS rS rS rSrg)Útrigammai‚  aÖ  
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                 óh   • U R                   S   n[        U5      n[        SU5      R                  US9$ )Nr   r7   r.   re  rg  s       r0   rÂ   Útrigamma._eval_evalf²  rj  r@   c                 óT   • U R                   S   n[        SU5      R                  5       $ r€   rl  rm  s      r0   r>   Útrigamma.fdiff·  ro  r@   c                 óL   • U R                   S   n[        SU5      R                  $ r€   rq  rú   s     r0   rl   Útrigamma._eval_is_real»  rs  r@   c                 óL   • U R                   S   n[        SU5      R                  $ r€   ru  rú   s     r0   rp   Útrigamma._eval_is_positive¿  rw  r@   c                 óL   • U R                   S   n[        SU5      R                  $ r€   ry  rú   s     r0   r  Útrigamma._eval_is_negativeÃ  rw  r@   c                 óx   • U R                  [        5      n[        R                  /U-   nUR	                  XX45      $ rs   )ræ   r:   r   rL   rØ   r|  s         r0   rØ   Útrigamma._eval_aseriesÇ  s3   € Ø—|‘|¤IÓ.ˆÜ—‘�˜5Ñ ˆØ×)Ñ)¨!°AÓ<Ð<r@   c                 ó   • [        SU5      $ r{   r€  r�  s     r0   rS   Útrigamma.evalÌ  rƒ  r@   c                 óR   • U R                   S   n[        SU5      R                  SS9$ )Nr   r7   Tr…  r†  rˆ  s      r0   rX   Útrigamma._eval_expand_funcÐ  rŠ  r@   c                 ó   • [        SU5      $ )NrB   r   r|   s      r0   r-  Útrigamma._eval_rewrite_as_zetaÔ  s   € Ü�A�q‹zÐr@   c                 ó   • [        SU5      $ r{   r€  r|   s      r0   rŽ  Ú#trigamma._eval_rewrite_as_polygamma×  r�  r@   c                 ó<   • [        US-
  S5      * [        S-  S-  -   $ )Nr7   rB   r  )r#   r   r|   s      r0   r0  Ú"trigamma._eval_rewrite_as_harmonicÚ  s#   € Ü˜˜Q™ Ó"Ð"¤R¨¡U¨Q¡YÑ.Ð.r@   c                 óV   • U R                   S   n[        SU5      R                  U5      $ r€   r’  r“  s        r0   r�   Útrigamma._eval_as_leading_termÝ  r•  r@   r‘   Nr’   )r“   r”   r•   r–   r—   rÂ   r>   rl   rp   r  rØ   rš   rS   rX   r-  rŽ  r0  r�   r›   r‘   r@   r0   r—  r—  ‚  sS   † ñ.ò^.ô
'ò'ò+ò+ò=ð
 ñó ðò1òòò/õ2r@   r—  c                   óB   • \ rS rSrSrSrS
S jr\S 5       rS r	S r
Srg	)Ú
multigammaiç  a?  
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           	      óÄ   • SSK Jn  US:X  aJ  U R                  u  p4[        S5      nU R	                  X45      U" [        SUSU-
  S-  -   5      USU45      -  $ [        X5      e)Nr   rQ  rB   rQ   r7   )rS  rR  r9   r   r8   r:   r
   )r<   r=   rR  rV   rK   rQ   s         r0   r>   Úmultigamma.fdiff"  s^   € Ý1Ø�q‹=Ø—9‘9‰DˆAÜ�c“
ˆAØ—9‘9˜Q“?¡3¤y°°A¸¸Q¹À¹	±MÓ'BÀQÈÈ1ÀIÓ#NÑNÐNä$ TÓ4Ð4r@   c                 óò   • SSK Jn  UR                  SL d  UR                  SL a  [	        S5      e[        S5      n[        X"S-
  -  S-  -  U" [        USU-
  S-  -   5      USU45      -  R                  5       $ )	Nr   )ÚProductFz+Order parameter p must be positive integer.rQ   r7   é   rB   )	Úsympy.concrete.productsrµ  rF   ri   r-   r   r   r3   Údoit)rO   rV   rK   rµ  rQ   s        r0   rS   Úmultigamma.eval+  sw   € å3Ø�=‰=˜EÒ! Q§\¡\°UÒ%:ÜÐJÓKÐKÜ�#‹JˆÜ�Q˜A™‘Y˜q‘[Ñ!¡'¬%°°Q¸±U¸A±I±Ó*>Ø+,¨a°¨)ó#5ñ 5ß6:±d³fð	=r@   c                 ó^   • U R                   u  pU R                  UR                  5       U5      $ rs   )r9   r8   rc   )r<   rV   rK   s      r0   re   Úmultigamma._eval_conjugate4  s$   € Ø�y‰y‰ˆØ�y‰y˜Ÿ™›¨Ó*Ð*r@   c                 óÈ   • U R                   u  pSU-  nUR                  (       a  X2S-
  :*  SL a  g[        U5      (       a	  X2S-
  ::  a  gX2S-
  :”  d  UR                  (       a  gg )NrB   r7   TF)r9   ri   r1   rj   )r<   rV   rK   Úys       r0   rl   Úmultigamma._eval_is_real8  sX   € Ø�y‰y‰ˆØˆa‰CˆØ�<�<˜Q q¡5™\¨dÒ2ØÜ�1�:‰:˜1 Q¡›<ØØ�A‘‹;˜!Ÿ/Ÿ/Øð *r@   r‘   Nrí   )r“   r”   r•   r–   r—   r˜   r>   rš   rS   re   rl   r›   r‘   r@   r0   r±  r±  ç  s2   † ñ7ðp €Jô5ð ñ=ó ð=ò+õr@   r±  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¦   r:   rt   r¥   r—  r±  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@   