ó
    ‰*£hé1  ã                   ó¤   • S SK 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  SS jr " S S	\5      r " S
 S\5      r " S S\5      rg)é    )ÚS)ÚDefinedFunctionÚArgumentIndexError)ÚDummyÚuniquely_named_symbol)ÚgammaÚdigamma)Úcatalan)Ú	conjugatec                 ó@   • SSK JnJn  X#:X  a  U" S5      $ U" XX#U5      $ )Nr   )ÚbetaincÚmpf)Úmpmathr   r   )ÚaÚbÚx1Úx2Úregr   r   s          Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/functions/special/beta_functions.pyÚbetainc_mpmath_fixr   	   s"   € ß#Ø	ƒxÙ�1‹vˆá�q˜R SÓ)Ð)ó    c                   ó^   • \ rS rSrSrSrS r\SS j5       rS r	S r
S	 rS
 rSS jrS rSrg)Úbetaé   aå  
The beta integral is called the Eulerian integral of the first kind by
Legendre:

.. math::
    \mathrm{B}(x,y)  \int^{1}_{0} t^{x-1} (1-t)^{y-1} \mathrm{d}t.

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

The Beta function or Euler's first integral is closely associated
with the gamma function. The Beta function is often used in probability
theory and mathematical statistics. It satisfies properties like:

.. math::
    \mathrm{B}(a,1) = \frac{1}{a} \\
    \mathrm{B}(a,b) = \mathrm{B}(b,a)  \\
    \mathrm{B}(a,b) = \frac{\Gamma(a) \Gamma(b)}{\Gamma(a+b)}

Therefore for integral values of $a$ and $b$:

.. math::
    \mathrm{B} = \frac{(a-1)! (b-1)!}{(a+b-1)!}

A special case of the Beta function when `x = y` is the
Central Beta function. It satisfies properties like:

.. math::
    \mathrm{B}(x) = 2^{1 - 2x}\mathrm{B}(x, \frac{1}{2})
    \mathrm{B}(x) = 2^{1 - 2x} cos(\pi x) \mathrm{B}(\frac{1}{2} - x, x)
    \mathrm{B}(x) = \int_{0}^{1} \frac{t^x}{(1 + t)^{2x}} dt
    \mathrm{B}(x) = \frac{2}{x} \prod_{n = 1}^{\infty} \frac{n(n + 2x)}{(n + x)^2}

Examples
========

>>> from sympy import I, pi
>>> from sympy.abc import x, y

The Beta function obeys the mirror symmetry:

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

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

>>> from sympy import beta, diff
>>> diff(beta(x, y), x)
(polygamma(0, x) - polygamma(0, x + y))*beta(x, y)

>>> diff(beta(x, y), y)
(polygamma(0, y) - polygamma(0, x + y))*beta(x, y)

>>> diff(beta(x), x)
2*(polygamma(0, x) - polygamma(0, 2*x))*beta(x, x)

We can numerically evaluate the Beta function to
arbitrary precision for any complex numbers x and y:

>>> from sympy import beta
>>> beta(pi).evalf(40)
0.02671848900111377452242355235388489324562

>>> beta(1 + I).evalf(20)
-0.2112723729365330143 - 0.7655283165378005676*I

See Also
========

gamma: Gamma function.
uppergamma: Upper incomplete gamma function.
lowergamma: Lower incomplete gamma function.
polygamma: Polygamma function.
loggamma: Log Gamma function.
digamma: Digamma function.
trigamma: Trigamma function.

References
==========

.. [1] https://en.wikipedia.org/wiki/Beta_function
.. [2] https://mathworld.wolfram.com/BetaFunction.html
.. [3] https://dlmf.nist.gov/5.12

Tc                 óà   • U R                   u  p#US:X  a%  [        X#5      [        U5      [        X#-   5      -
  -  $ US:X  a%  [        X#5      [        U5      [        X#-   5      -
  -  $ [        X5      e)Né   é   )Úargsr   r	   r   )ÚselfÚargindexÚxÚys       r   ÚfdiffÚ
beta.fdiffm   sb   € Ø�y‰y‰ˆØ�q‹=ä˜“:œw q›z¬G°A±E«NÑ:Ñ;Ð;Ø˜‹]ä˜“:œw q›z¬G°A±E«NÑ:Ñ;Ð;ä$ TÓ4Ð4r   Nc                 ó–   • Uc  [        X5      $ UR                  (       a*  UR                  (       a  [        XSS9R                  5       $ g g )NF)Úevaluate)r   Ú	is_NumberÚdoit)Úclsr!   r"   s      r   ÚevalÚ	beta.evalx   s;   € à‰9Ü˜“:ÐØ�;�;˜1Ÿ;Ÿ;Ü˜ uÑ-×2Ñ2Ó4Ð4ð 'ˆ;r   c                 óò  • U R                   S   =p#[        U R                   5      S:H  nU(       a  U R                   S   OU R                   S   =pVUR                  SS5      (       a$  UR                  " S0 UD6nUR                  " S0 UD6nUR                  (       d  UR                  (       a  [
        R                  $ U[
        R                  L a  SU-  $ U[
        R                  L a  SU-  $ XRS-   :X  a  SX%-  [        U5      -  -  $ X%-   nUR                  (       a?  UR                  (       a.  UR                  SL a  UR                  SL a  [
        R                  $ X#:X  a  XV:X  a	  U(       d  U $ [        X%5      $ )Nr   r   ÚdeepTF© )r   ÚlenÚgetr(   Úis_zeror   ÚComplexInfinityÚOner
   Ú
is_integerÚis_negativeÚZeror   )r   Úhintsr!   ÚxoldÚsingle_argumentr"   ÚyoldÚss           r   r(   Ú	beta.doit   s  € Ø—9‘9˜Q‘<Ðˆä˜dŸi™i›.¨AÑ-ˆÞ#2�4—9‘9˜Q’<¸¿	¹	À!¹ÐDˆØ�9‰9�V˜T×"Ñ"Ø—’‘˜‘ˆAØ—’‘˜‘ˆAØ�9�9˜Ÿ	Ÿ	Ü×$Ñ$Ð$Ø”—‘Š:Ø�Q‘3ˆJØ”—‘Š:Ø�Q‘3ˆJØ�A‘‹:Ø�a‘cœ' !›*‘nÑ%Ð%Ø‰EˆØ�L�L˜QŸ]Ÿ]¨q¯|©|¸uÒ/DØ�L‰L˜EÒ!Ü—6‘6ˆMØ‹9˜›®?ØˆKÜ�A‹zÐr   c                 óh   • U R                   u  p#[        U5      [        U5      -  [        X#-   5      -  $ ©N)r   r   )r   r7   r!   r"   s       r   Ú_eval_expand_funcÚbeta._eval_expand_func—   s+   € Ø�y‰y‰ˆÜ�Q‹xœ˜a›Ñ ¤5¨©£<Ñ/Ð/r   c                 ót   • U R                   S   R                  =(       a    U R                   S   R                  $ ©Nr   r   )r   Úis_real©r   s    r   Ú_eval_is_realÚbeta._eval_is_real›   s)   € Ø�y‰y˜‰|×#Ñ#×<¨¯	©	°!©×(<Ñ(<Ð<r   c                 ó’   • U R                  U R                  S   R                  5       U R                  S   R                  5       5      $ rB   )Úfuncr   r   rD   s    r   Ú_eval_conjugateÚbeta._eval_conjugatež   s5   € Ø�y‰y˜Ÿ™ 1™×/Ñ/Ó1°4·9±9¸Q±<×3IÑ3IÓ3KÓLÐLr   c                 ó&   • U R                   " S0 UD6$ )Nr.   )r?   )r   r!   r"   Ú	piecewiseÚkwargss        r   Ú_eval_rewrite_as_gammaÚbeta._eval_rewrite_as_gamma¡   s   € Ø×%Ò%Ñ/¨Ñ/Ð/r   c                 óˆ   • SSK Jn  [        [        SX/5      R                  5      nU" XQS-
  -  SU-
  US-
  -  -  USS45      $ ©Nr   )ÚIntegralÚtr   ©Úsympy.integrals.integralsrR   r   r   Úname)r   r!   r"   rM   rR   rS   s         r   Ú_eval_rewrite_as_IntegralÚbeta._eval_rewrite_as_Integral¤   sJ   € Ý6ÜÔ'¨¨a¨VÓ4×9Ñ9Ó:ˆÙ˜ ™E™
 A¨¡E¨Q°©UÑ#3Ñ3°a¸¸A°YÓ?Ð?r   r.   r>   )T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú
unbranchedr#   Úclassmethodr*   r(   r?   rE   rI   rN   rW   Ú__static_attributes__r.   r   r   r   r      sI   † ñUðl €Jò	5ð ó5ó ð5òò00ò=òMô0õ@r   r   c                   óD   • \ rS rSrSrSrSrS rS rS r	S r
S	 rS
 rSrg)r   é­   a£  
The Generalized Incomplete Beta function is defined as

.. math::
    \mathrm{B}_{(x_1, x_2)}(a, b) = \int_{x_1}^{x_2} t^{a - 1} (1 - t)^{b - 1} dt

The Incomplete Beta function is a special case
of the Generalized Incomplete Beta function :

.. math:: \mathrm{B}_z (a, b) = \mathrm{B}_{(0, z)}(a, b)

The Incomplete Beta function satisfies :

.. math:: \mathrm{B}_z (a, b) = (-1)^a \mathrm{B}_{\frac{z}{z - 1}} (a, 1 - a - b)

The Beta function is a special case of the Incomplete Beta function :

.. math:: \mathrm{B}(a, b) = \mathrm{B}_{1}(a, b)

Examples
========

>>> from sympy import betainc, symbols, conjugate
>>> a, b, x, x1, x2 = symbols('a b x x1 x2')

The Generalized Incomplete Beta function is given by:

>>> betainc(a, b, x1, x2)
betainc(a, b, x1, x2)

The Incomplete Beta function can be obtained as follows:

>>> betainc(a, b, 0, x)
betainc(a, b, 0, x)

The Incomplete Beta function obeys the mirror symmetry:

>>> conjugate(betainc(a, b, x1, x2))
betainc(conjugate(a), conjugate(b), conjugate(x1), conjugate(x2))

We can numerically evaluate the Incomplete Beta function to
arbitrary precision for any complex numbers a, b, x1 and x2:

>>> from sympy import betainc, I
>>> betainc(2, 3, 4, 5).evalf(10)
56.08333333
>>> betainc(0.75, 1 - 4*I, 0, 2 + 3*I).evalf(25)
0.2241657956955709603655887 + 0.3619619242700451992411724*I

The Generalized Incomplete Beta function can be expressed
in terms of the Generalized Hypergeometric function.

>>> from sympy import hyper
>>> betainc(a, b, x1, x2).rewrite(hyper)
(-x1**a*hyper((a, 1 - b), (a + 1,), x1) + x2**a*hyper((a, 1 - b), (a + 1,), x2))/a

See Also
========

beta: Beta function
hyper: Generalized Hypergeometric function

References
==========

.. [1] https://en.wikipedia.org/wiki/Beta_function#Incomplete_beta_function
.. [2] https://dlmf.nist.gov/8.17
.. [3] https://functions.wolfram.com/GammaBetaErf/Beta4/
.. [4] https://functions.wolfram.com/GammaBetaErf/BetaRegularized4/02/

é   Tc                 óœ   • U R                   u  p#pEUS:X  a  SU-
  US-
  -  * XBS-
  -  -  $ US:X  a  SU-
  US-
  -  XRS-
  -  -  $ [        X5      e©Né   r   rc   )r   r   ©r   r    r   r   r   r   s         r   r#   Úbetainc.fdiffø   sg   € Ø—y‘y‰ˆˆbØ�q‹=à˜‘V˜q 1™uÑ%Ð% b¨q©5¡kÑ1Ð1Ø˜‹]à˜‘F˜a !™eÑ$ R¨a©%¡[Ñ0Ð0ä$ TÓ4Ð4r   c                 ó&   • [         U R                  4$ r>   )r   r   rD   s    r   Ú_eval_mpmathÚbetainc._eval_mpmath  s   € Ü! 4§9¡9Ð,Ð,r   c                 óH   • [        S U R                   5       5      (       a  gg )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr>   ©rC   ©Ú.0Úargs     r   Ú	<genexpr>Ú(betainc._eval_is_real.<locals>.<genexpr>  ó   é € Ð0¢i˜s�{Ž{¢iùó   ‚T©Úallr   rD   s    r   rE   Úbetainc._eval_is_real  ó   € ÜÑ0 d§i¢iÓ0×0Ñ0Øð 1r   c                 óP   • U R                   " [        [        U R                  5      6 $ r>   ©rH   Úmapr   r   rD   s    r   rI   Úbetainc._eval_conjugate
  ó   € Ø�yŠyœ#œi¨¯©Ó3Ð4Ð4r   c           	      óˆ   • SSK Jn  [        [        SXX4/5      R                  5      nU" XqS-
  -  SU-
  US-
  -  -  XsU45      $ rQ   rT   )r   r   r   r   r   rM   rR   rS   s           r   rW   Ú!betainc._eval_rewrite_as_Integral  sJ   € Ý6ÜÔ'¨¨a°B¨^Ó<×AÑAÓBˆÙ˜ ™E™
 A¨¡E¨Q°©UÑ#3Ñ3°a¸R°[ÓAÐAr   c                 óv   • SSK Jn  XA-  U" USU-
  4US-   4U5      -  X1-  U" USU-
  4US-   4U5      -  -
  U-  $ ©Nr   )Úhyperr   )Úsympy.functions.special.hyperrƒ   )r   r   r   r   r   rM   rƒ   s          r   Ú_eval_rewrite_as_hyperÚbetainc._eval_rewrite_as_hyper  sX   € Ý7Ø‘™˜q ! a¡%˜j¨1¨q©5¨(°BÓ7Ñ7¸"¹%Á%ÈÈAÐPQÉEÈ
ÐUVÐYZÑUZÐT\Ð^`ÓBaÑ:aÑaÐefÑfÐfr   r.   N)rY   rZ   r[   r\   r]   Únargsr^   r#   rj   rE   rI   rW   r…   r`   r.   r   r   r   r   ­   s5   † ñFðN €EØ€Jò	5ò-òò5òBõ
gr   r   c                   óX   ^ • \ rS rSrSrSrSrU 4S jrS rS r	S r
S	 rS
 rS rSrU =r$ )Úbetainc_regularizedi  aÔ  
The Generalized Regularized Incomplete Beta function is given by

.. math::
    \mathrm{I}_{(x_1, x_2)}(a, b) = \frac{\mathrm{B}_{(x_1, x_2)}(a, b)}{\mathrm{B}(a, b)}

The Regularized Incomplete Beta function is a special case
of the Generalized Regularized Incomplete Beta function :

.. math:: \mathrm{I}_z (a, b) = \mathrm{I}_{(0, z)}(a, b)

The Regularized Incomplete Beta function is the cumulative distribution
function of the beta distribution.

Examples
========

>>> from sympy import betainc_regularized, symbols, conjugate
>>> a, b, x, x1, x2 = symbols('a b x x1 x2')

The Generalized Regularized Incomplete Beta
function is given by:

>>> betainc_regularized(a, b, x1, x2)
betainc_regularized(a, b, x1, x2)

The Regularized Incomplete Beta function
can be obtained as follows:

>>> betainc_regularized(a, b, 0, x)
betainc_regularized(a, b, 0, x)

The Regularized Incomplete Beta function
obeys the mirror symmetry:

>>> conjugate(betainc_regularized(a, b, x1, x2))
betainc_regularized(conjugate(a), conjugate(b), conjugate(x1), conjugate(x2))

We can numerically evaluate the Regularized Incomplete Beta function
to arbitrary precision for any complex numbers a, b, x1 and x2:

>>> from sympy import betainc_regularized, pi, E
>>> betainc_regularized(1, 2, 0, 0.25).evalf(10)
0.4375000000
>>> betainc_regularized(pi, E, 0, 1).evalf(5)
1.00000

The Generalized Regularized Incomplete Beta function can be
expressed in terms of the Generalized Hypergeometric function.

>>> from sympy import hyper
>>> betainc_regularized(a, b, x1, x2).rewrite(hyper)
(-x1**a*hyper((a, 1 - b), (a + 1,), x1) + x2**a*hyper((a, 1 - b), (a + 1,), x2))/(a*beta(a, b))

See Also
========

beta: Beta function
hyper: Generalized Hypergeometric function

References
==========

.. [1] https://en.wikipedia.org/wiki/Beta_function#Incomplete_beta_function
.. [2] https://dlmf.nist.gov/8.17
.. [3] https://functions.wolfram.com/GammaBetaErf/Beta4/
.. [4] https://functions.wolfram.com/GammaBetaErf/BetaRegularized4/02/

rc   Tc                 ó&   >• [         TU ]  XX#U5      $ r>   )ÚsuperÚ__new__)r)   r   r   r   r   Ú	__class__s        €r   rŒ   Úbetainc_regularized.__new__c  s   ø€ Ü‰w‰˜s q¨bÓ1Ð1r   c                 óB   • [         / U R                  Q[        S5      P74$ )Nr   )r   r   r   rD   s    r   rj   Ú betainc_regularized._eval_mpmathf  s    € Ü!Ð#5 T§Y¡YÐ#5´°!³Ñ#5Ð5Ð5r   c                 óÌ   • U R                   u  p#pEUS:X  a   SU-
  US-
  -  * XBS-
  -  -  [        X#5      -  $ US:X  a  SU-
  US-
  -  XRS-
  -  -  [        X#5      -  $ [        X5      ere   )r   r   r   rg   s         r   r#   Úbetainc_regularized.fdiffi  sy   € Ø—y‘y‰ˆˆbØ�q‹=à˜‘V˜q 1™uÑ%Ð% b¨q©5¡kÑ1´D¸³JÑ>Ð>Ø˜‹]à˜‘F˜a !™eÑ$ R¨a©%¡[Ñ0´4¸³:Ñ=Ð=ä$ TÓ4Ð4r   c                 óH   • [        S U R                   5       5      (       a  gg )Nc              3   ó8   #   • U  H  oR                   v •  M     g 7fr>   rn   ro   s     r   rr   Ú4betainc_regularized._eval_is_real.<locals>.<genexpr>u  rt   ru   Trv   rD   s    r   rE   Ú!betainc_regularized._eval_is_realt  ry   r   c                 óP   • U R                   " [        [        U R                  5      6 $ r>   r{   rD   s    r   rI   Ú#betainc_regularized._eval_conjugatex  r~   r   c           	      ó¤   • SSK Jn  [        [        SXX4/5      R                  5      nXqS-
  -  SU-
  US-
  -  -  nU" X‡X445      n	X–" X‡SS45      -  $ rQ   rT   )
r   r   r   r   r   rM   rR   rS   Ú	integrandÚexprs
             r   rW   Ú-betainc_regularized._eval_rewrite_as_Integral{  sb   € Ý6ÜÔ'¨¨a°B¨^Ó<×AÑAÓBˆØ˜A™‘J  A¡¨¨Q©Ñ/Ñ/ˆ	Ù˜	 r ;Ó/ˆØ�h˜y¨a°¨)Ó4Ñ4Ð4r   c                 ó’   • SSK Jn  XA-  U" USU-
  4US-   4U5      -  X1-  U" USU-
  4US-   4U5      -  -
  U-  nU[        X5      -  $ r‚   )r„   rƒ   r   )r   r   r   r   r   rM   rƒ   r›   s           r   r…   Ú*betainc_regularized._eval_rewrite_as_hyper‚  sf   € Ý7Ø‘™˜q ! a¡%˜j¨1¨q©5¨(°BÓ7Ñ7¸"¹%Á%ÈÈAÐPQÉEÈ
ÐUVÐYZÑUZÐT\Ð^`ÓBaÑ:aÑaÐefÑfˆØ”d˜1“jÑ Ð r   r.   )rY   rZ   r[   r\   r]   r‡   r^   rŒ   rj   r#   rE   rI   rW   r…   r`   Ú__classcell__)r�   s   @r   r‰   r‰     s>   ø† ñDðJ €EØ€Jõ2ò6ò	5òò5ò5÷!ð !r   r‰   N)r   )Ú
sympy.corer   Úsympy.core.functionr   r   Úsympy.core.symbolr   r   Ú'sympy.functions.special.gamma_functionsr   r	   Ú%sympy.functions.combinatorial.numbersr
   Ú$sympy.functions.elementary.complexesr   r   r   r   r‰   r.   r   r   Ú<module>r¦      sL   ðÝ ß Cß :ß BÝ 9Ý :ô*ôS@ˆ?ô S@ôrggˆoô ggôZk!˜/õ k!r   