Ë
    7^(hé1  ã                   ó¢   — d dl 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 dd„Z G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zy)é    )ÚS)ÚDefinedFunctionÚArgumentIndexError)ÚDummyÚuniquely_named_symbol)ÚgammaÚdigamma)Úcatalan)Ú	conjugatec                 óD   — ddl m}m} ||k(  r |d«      S  || ||||«      S )Nr   )ÚbetaincÚmpf)Úmpmathr   r   )ÚaÚbÚx1Úx2Úregr   r   s          úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/functions/special/beta_functions.pyÚbetainc_mpmath_fixr   	   s(   € ß#Ø	ˆR‚xÙ�1‹vˆá�q˜!˜R  SÓ)Ð)ó    c                   óR   — e Zd ZdZdZd„ Zedd„«       Zd„ Zd„ Z	d„ Z
d	„ Zdd
„Zd„ Zy)ÚbetaaÙ	  
    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                 óè   — | j                   \  }}|dk(  r't        ||«      t        |«      t        ||z   «      z
  z  S |dk(  r't        ||«      t        |«      t        ||z   «      z
  z  S t        | |«      ‚)Né   é   )Úargsr   r	   r   )ÚselfÚargindexÚxÚys       r   Úfdiffz
beta.fdiffm   sn   € Ø�y‰y‰ˆˆ1Ø�qŠ=ä˜˜1“:œw q›z¬G°A¸±E«NÑ:Ñ;Ð;Ø˜Š]ä˜˜1“:œw q›z¬G°A¸±E«NÑ:Ñ;Ð;ä$ T¨8Ó4Ð4r   Nc                 óŠ   — |€t        ||«      S |j                  r)|j                  rt        ||d¬«      j                  «       S y y )NF)Úevaluate)r   Ú	is_NumberÚdoit)Úclsr    r!   s      r   Úevalz	beta.evalx   s?   € àˆ9Ü˜˜1“:ÐØ�;Š;˜1Ÿ;š;Ü˜˜1 uÔ-×2Ñ2Ó4Ð4ð 'ˆ;r   c                 ó®  — | j                   d   x}}t        | j                   «      dk(  }|r| j                   d   n| j                   d   x}}|j                  dd«      r$ |j                  di |¤Ž} |j                  di |¤Ž}|j                  s|j                  rt
        j                  S |t
        j                  u rd|z  S |t
        j                  u rd|z  S ||dz   k(  rd||z  t        |«      z  z  S ||z   }|j                  r8|j                  r,|j                  du r|j                  du rt
        j                  S ||k(  r	||k(  r|s| S t        ||«      S )Nr   r   ÚdeepTF© )r   ÚlenÚgetr&   Úis_zeror   ÚComplexInfinityÚOner
   Ú
is_integerÚis_negativeÚZeror   )r   Úhintsr    ÚxoldÚsingle_argumentr!   ÚyoldÚss           r   r&   z	beta.doit   s-  € Ø—9‘9˜Q‘<ÐˆˆDä˜dŸi™i›.¨AÑ-ˆÙ#2�4—9‘9˜Q’<¸¿	¹	À!¹ÐDˆˆ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˜˜dš©?ØˆKÜ�A�q‹zÐr   c                 ól   — | j                   \  }}t        |«      t        |«      z  t        ||z   «      z  S ©N)r   r   )r   r4   r    r!   s       r   Ú_eval_expand_funczbeta._eval_expand_func—   s/   € Ø�y‰y‰ˆˆ1Ü�Q‹xœ˜a›Ñ ¤5¨¨Q©£<Ñ/Ð/r   c                 ój   — | j                   d   j                  xr | j                   d   j                  S ©Nr   r   )r   Úis_real©r   s    r   Ú_eval_is_realzbeta._eval_is_real›   s)   € Ø�y‰y˜‰|×#Ñ#Ò<¨¯	©	°!©×(<Ñ(<Ð<r   c                 ó’   — | j                  | j                  d   j                  «       | j                  d   j                  «       «      S r=   )Úfuncr   r   r?   s    r   Ú_eval_conjugatezbeta._eval_conjugatež   s5   € Ø�y‰y˜Ÿ™ 1™×/Ñ/Ó1°4·9±9¸Q±<×3IÑ3IÓ3KÓLÐLr   c                 ó&   —  | j                   di |¤ŽS )Nr+   )r;   )r   r    r!   Ú	piecewiseÚkwargss        r   Ú_eval_rewrite_as_gammazbeta._eval_rewrite_as_gamma¡   s   € Ø%ˆt×%Ñ%Ñ/¨Ñ/Ð/r   c                 óŒ   — ddl m} t        t        d||g«      j                  «      } |||dz
  z  d|z
  |dz
  z  z  |ddf«      S ©Nr   )ÚIntegralÚtr   ©Úsympy.integrals.integralsrJ   r   r   Úname)r   r    r!   rF   rJ   rK   s         r   Ú_eval_rewrite_as_Integralzbeta._eval_rewrite_as_Integral¤   sN   € Ý6ÜÔ'¨¨a°¨VÓ4×9Ñ9Ó:ˆÙ˜˜A ™E™
 A¨¡E¨Q°©UÑ#3Ñ3°a¸¸A°YÓ?Ð?r   r:   )T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
unbranchedr"   Úclassmethodr(   r&   r;   r@   rC   rG   rO   r+   r   r   r   r      sI   „ ñUðl €Jò	5ð ò5ó ð5òò00ò=òMó0ó@r   r   c                   ó<   — e Zd ZdZdZdZd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)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                 ó¢   — | j                   \  }}}}|dk(  rd|z
  |dz
  z   ||dz
  z  z  S |dk(  rd|z
  |dz
  z  ||dz
  z  z  S t        | |«      ‚©Né   r   rW   )r   r   ©r   r   r   r   r   r   s         r   r"   zbetainc.fdiffø   sq   € Ø—y‘y‰ˆˆ1ˆb�"Ø�qŠ=à˜‘V˜q 1™uÑ%Ð% b¨1¨q©5¡kÑ1Ð1Ø˜Š]à˜‘F˜a !™eÑ$ R¨!¨a©%¡[Ñ0Ð0ä$ T¨8Ó4Ð4r   c                 ó&   — t         | j                  fS r:   )r   r   r?   s    r   Ú_eval_mpmathzbetainc._eval_mpmath  s   € Ü! 4§9¡9Ð,Ð,r   c                 ó>   — t        d„ | j                  D «       «      ryy )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr:   ©r>   ©Ú.0Úargs     r   ú	<genexpr>z(betainc._eval_is_real.<locals>.<genexpr>  ó   è ø€ Ò0˜sˆs�{�{Ñ0ùó   ‚T©Úallr   r?   s    r   r@   zbetainc._eval_is_real  ó   € ÜÑ0 d§i¡iÔ0Ô0Øð 1r   c                 óP   —  | j                   t        t        | j                  «      Ž S r:   ©rB   Úmapr   r   r?   s    r   rC   zbetainc._eval_conjugate
  ó   € Øˆt�y‰yœ#œi¨¯©Ó3Ð4Ð4r   c           	      ó�   — ddl m} t        t        d||||g«      j                  «      } |||dz
  z  d|z
  |dz
  z  z  |||f«      S rI   rL   )r   r   r   r   r   rF   rJ   rK   s           r   rO   z!betainc._eval_rewrite_as_Integral  sR   € Ý6ÜÔ'¨¨a°°B¸¨^Ó<×AÑAÓBˆÙ˜˜A ™E™
 A¨¡E¨Q°©UÑ#3Ñ3°a¸¸R°[ÓAÐAr   c                 óz   — ddl m} ||z   ||d|z
  f|dz   f|«      z  ||z   ||d|z
  f|dz   f|«      z  z
  |z  S ©Nr   )Úhyperr   )Úsympy.functions.special.hyperrq   )r   r   r   r   r   rF   rq   s          r   Ú_eval_rewrite_as_hyperzbetainc._eval_rewrite_as_hyper  s\   € Ý7Ø�A‘™˜q ! a¡%˜j¨1¨q©5¨(°BÓ7Ñ7¸"¸a¹%Á%ÈÈAÐPQÉEÈ
ÐUVÐYZÑUZÐT\Ð^`ÓBaÑ:aÑaÐefÑfÐfr   N)rP   rQ   rR   rS   ÚnargsrT   r"   r]   r@   rC   rO   rs   r+   r   r   r   r   ­   s5   „ ñFðN €EØ€Jò	5ò-òò5òBó
gr   r   c                   óN   ‡ — e Zd ZdZdZdZˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )Úbetainc_regularizeda�  
    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/

    rW   Tc                 ó*   •— t         ‰| �  | ||||«      S r:   )ÚsuperÚ__new__)r'   r   r   r   r   Ú	__class__s        €r   ry   zbetainc_regularized.__new__c  s   ø€ Ü‰w‰˜s A q¨"¨bÓ1Ð1r   c                 óB   — t         g | j                  ¢t        d«      ‘­fS )Nr   )r   r   r   r?   s    r   r]   z betainc_regularized._eval_mpmathf  s    € Ü!Ð#5 T§Y¡YÐ#5´°!³Ñ#5Ð5Ð5r   c                 óÖ   — | j                   \  }}}}|dk(  r"d|z
  |dz
  z   ||dz
  z  z  t        ||«      z  S |dk(  r!d|z
  |dz
  z  ||dz
  z  z  t        ||«      z  S t        | |«      ‚rY   )r   r   r   r[   s         r   r"   zbetainc_regularized.fdiffi  s‡   € Ø—y‘y‰ˆˆ1ˆb�"Ø�qŠ=à˜‘V˜q 1™uÑ%Ð% b¨1¨q©5¡kÑ1´D¸¸A³JÑ>Ð>Ø˜Š]à˜‘F˜a !™eÑ$ R¨!¨a©%¡[Ñ0´4¸¸1³:Ñ=Ð=ä$ T¨8Ó4Ð4r   c                 ó>   — t        d„ | j                  D «       «      ryy )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr:   r`   ra   s     r   rd   z4betainc_regularized._eval_is_real.<locals>.<genexpr>u  re   rf   Trg   r?   s    r   r@   z!betainc_regularized._eval_is_realt  ri   r   c                 óP   —  | j                   t        t        | j                  «      Ž S r:   rk   r?   s    r   rC   z#betainc_regularized._eval_conjugatex  rm   r   c           	      ó²   — ddl m} t        t        d||||g«      j                  «      }||dz
  z  d|z
  |dz
  z  z  } |||||f«      }	|	 |||ddf«      z  S rI   rL   )
r   r   r   r   r   rF   rJ   rK   Ú	integrandÚexprs
             r   rO   z-betainc_regularized._eval_rewrite_as_Integral{  sn   € Ý6ÜÔ'¨¨a°°B¸¨^Ó<×AÑAÓBˆØ˜˜A™‘J  A¡¨¨Q©Ñ/Ñ/ˆ	Ù˜	 A r¨2 ;Ó/ˆØ‘h˜y¨1¨a°¨)Ó4Ñ4Ð4r   c                 ó˜   — ddl m} ||z   ||d|z
  f|dz   f|«      z  ||z   ||d|z
  f|dz   f|«      z  z
  |z  }|t        ||«      z  S rp   )rr   rq   r   )r   r   r   r   r   rF   rq   r‚   s           r   rs   z*betainc_regularized._eval_rewrite_as_hyper‚  sl   € Ý7Ø�A‘™˜q ! a¡%˜j¨1¨q©5¨(°BÓ7Ñ7¸"¸a¹%Á%ÈÈAÐPQÉEÈ
ÐUVÐYZÑUZÐT\Ð^`ÓBaÑ:aÑaÐefÑfˆØ”d˜1˜a“jÑ Ð r   )rP   rQ   rR   rS   rt   rT   ry   r]   r"   r@   rC   rO   rs   Ú__classcell__)rz   s   @r   rv   rv     s9   ø„ ñDðJ €EØ€Jô2ò6ò	5òò5ò5ö!r   rv   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   rv   r+   r   r   ú<module>r‹      sL   ðÝ ß Cß :ß BÝ 9Ý :ó*ôS@ˆ?ô S@ôrggˆoô ggôZk!˜/õ k!r   