Ë
    O/æjè÷  ã                   ó  — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZmZ d dlmZmZmZ d d	lmZ d d
lmZmZmZ d dlmZ d dlmZ d dlm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=  G d„ de«      Z> G d„ de>«      Z? G d„ de>«      Z@ G d„ de>«      ZA G d„ de>«      ZB G d „ d!e>«      ZC G d"„ d#e>«      ZDd$„ ZE G d%„ d&e>«      ZFd'„ ZGd(„ ZH G d)„ d*eF«      ZI G d+„ d,eF«      ZJ G d-„ d.eF«      ZK G d/„ d0eK«      ZL G d1„ d2eK«      ZMdAd3„ZN G d4„ d5e«      ZO G d6„ d7eO«      ZP G d8„ d9eO«      ZQ G d:„ d;eO«      ZR G d<„ d=eO«      ZS G d>„ d?e«      ZTy@)Bé    ©Úwraps)ÚS)ÚAdd)Úcacheit)ÚExpr)ÚFunctionÚArgumentIndexErrorÚ_mexpand)Úfuzzy_orÚ	fuzzy_not)ÚRationalÚpiÚI)ÚPow)ÚDummyÚuniquely_named_symbolÚWild)Úsympify)Ú	factorial)ÚsinÚcosÚcscÚcot)Úceiling)ÚexpÚlog)ÚcbrtÚsqrtÚroot)ÚAbsÚreÚimÚ
polar_liftÚ
unpolarify)ÚgammaÚdigammaÚ
uppergamma)Úhyper)Úspherical_bessel_fn)ÚmpÚworkprecc                   ó`   — e Zd ZdZed„ «       Zed„ «       Zed„ «       Zdd„Z	d„ Z
d„ Zd„ Zd	„ Zy
)Ú
BesselBaseað  
    Abstract base class for Bessel-type functions.

    This class is meant to reduce code duplication.
    All Bessel-type functions can 1) be differentiated, with the derivatives
    expressed in terms of similar functions, and 2) be rewritten in terms
    of other Bessel-type functions.

    Here, Bessel-type functions are assumed to have one complex parameter.

    To use this base class, define class attributes ``_a`` and ``_b`` such that
    ``2*F_n' = -_a*F_{n+1} + b*F_{n-1}``.

    c                 ó    — | j                   d   S )z( The order of the Bessel-type function. r   ©Úargs©Úselfs    úa/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/sympy/functions/special/bessel.pyÚorderzBesselBase.order4   ó   € ð �y‰y˜‰|Ðó    c                 ó    — | j                   d   S )z+ The argument of the Bessel-type function. é   r0   r2   s    r4   ÚargumentzBesselBase.argument9   r6   r7   c                  ó   — y ©N© ©ÚclsÚnuÚzs      r4   ÚevalzBesselBase.eval>   s   € àr7   c                 ó
  — |dk7  rt        | |«      ‚| j                  dz  | j                  | j                  dz
  | j                  «      z  | j
                  dz  | j                  | j                  dz   | j                  «      z  z
  S ©Né   r9   )r
   Ú_bÚ	__class__r5   r:   Ú_a©r3   Úargindexs     r4   ÚfdiffzBesselBase.fdiffB   sp   € Ø�qŠ=Ü$ T¨8Ó4Ð4Ø—‘˜‘	˜DŸN™N¨4¯:©:¸©>¸4¿=¹=ÓIÑIØ—‘˜‘	˜DŸN™N¨4¯:©:¸©>¸4¿=¹=ÓIÑIñJð 	Kr7   c                 ó¨   — | j                   }|j                  du r8| j                  | j                  j	                  «       |j	                  «       «      S y ©NF)r:   Úis_extended_negativerG   r5   Ú	conjugate©r3   rA   s     r4   Ú_eval_conjugatezBesselBase._eval_conjugateH   sB   € Ø�M‰MˆØ×!Ñ! UÑ*Ø—>‘> $§*¡*×"6Ñ"6Ó"8¸!¿+¹+»-ÓHÐHð +r7   c           	      ó¢  — | j                   | j                  }}|j                  |«      ry|j                  ||«      sy |j	                  ||«      }|j
                  rKt        | t        t        t        t        t        t        f«      s|j                  st        |j                  «      S t        t!        |j                  |j                  g«      «      S rM   )r5   r:   ÚhasÚ_eval_is_meromorphicÚsubsÚ
is_integerÚ
isinstanceÚbesseljÚbesseliÚhn1Úhn2ÚjnÚynÚis_zeror   Úis_infiniter   )r3   ÚxÚar@   rA   Úz0s         r4   rT   zBesselBase._eval_is_meromorphicM   s“   € Ø—
‘
˜DŸM™MˆAˆà�6‰6�!Œ9ØØ×%Ñ% a¨Ô+ØØ�V‰V�A�q‹\ˆØ�=Š=Ü˜$¤¬'´3¼¼RÄÐ DÔEÈRÏZÊZÜ  §¡Ó0Ð0Üœ 2§:¡:¨r¯~©~Ð">Ó?Ó@Ð@r7   c                 óD  — | j                   | j                  | j                  }}}|j                  rï|dz
  j                  ri| j
                   | j                  z   ||dz
  |«      j                  «       z  d| j
                  z  |dz
  z   ||dz
  |«      j                  «       z  |z  z   S |dz   j                  rhd| j                  z  |dz   z   ||dz   |«      j                  «       z  |z  | j
                  | j                  z   ||dz   |«      j                  «       z  z
  S | S ©Nr9   rE   )	r5   r:   rG   Úis_realÚis_positiverH   rF   Ú_eval_expand_funcÚis_negative)r3   Úhintsr@   rA   Úfs        r4   rg   zBesselBase._eval_expand_funcZ   s  € Ø—:‘:˜tŸ}™}¨d¯n©nˆqˆAˆØ�:Š:Ø�Q‘×#Ò#ØŸ™˜ §¡Ñ(©¨2°©6°1«×)GÑ)GÓ)IÑIØ˜$Ÿ'™'™	 2¨¡6Ñ*©1¨R°!©V°Q«<×+IÑ+IÓ+KÑKÈAÑMñNð Oà�q‘&×%Ò%Ø˜$Ÿ'™'™	 2¨¡6Ñ*©1¨R°!©V°Q«<×+IÑ+IÓ+KÑKÈAÑMØŸ™ §¡™©¨"¨q©&°!«×(FÑ(FÓ(HÑHñIð Jàˆr7   c                 ó   — ddl m}  || «      S )Nr   )Ú
besselsimp)Úsympy.simplify.simplifyrl   )r3   Úkwargsrl   s      r4   Ú_eval_simplifyzBesselBase._eval_simplifye   s   € Ý6Ù˜$ÓÐr7   N©rE   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr5   r:   ÚclassmethodrB   rK   rQ   rT   rg   ro   r=   r7   r4   r.   r.   $   s_   „ ñð ñó ðð ñó ðð ñó ðóKòIò
Aò	ó r7   r.   c                   óˆ   ‡ — e Zd ZdZej
                  Zej
                  Zed„ «       Z	d„ Z
d„ Zd„ Zd	ˆ fd„	Zd„ Zd
ˆ fd„	Zˆ xZS )rX   a4  
    Bessel function of the first kind.

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

    The Bessel $J$ function of order $\nu$ is defined to be the function
    satisfying Bessel's differential equation

    .. math ::
        z^2 \frac{\mathrm{d}^2 w}{\mathrm{d}z^2}
        + z \frac{\mathrm{d}w}{\mathrm{d}z} + (z^2 - \nu^2) w = 0,

    with Laurent expansion

    .. math ::
        J_\nu(z) = z^\nu \left(\frac{1}{\Gamma(\nu + 1) 2^\nu} + O(z^2) \right),

    if $\nu$ is not a negative integer. If $\nu=-n \in \mathbb{Z}_{<0}$
    *is* a negative integer, then the definition is

    .. math ::
        J_{-n}(z) = (-1)^n J_n(z).

    Examples
    ========

    Create a Bessel function object:

    >>> from sympy import besselj, jn
    >>> from sympy.abc import z, n
    >>> b = besselj(n, z)

    Differentiate it:

    >>> b.diff(z)
    besselj(n - 1, z)/2 - besselj(n + 1, z)/2

    Rewrite in terms of spherical Bessel functions:

    >>> b.rewrite(jn)
    sqrt(2)*sqrt(z)*jn(n - 1/2, z)/sqrt(pi)

    Access the parameter and argument:

    >>> b.order
    n
    >>> b.argument
    z

    See Also
    ========

    bessely, besseli, besselk

    References
    ==========

    .. [1] Abramowitz, Milton; Stegun, Irene A., eds. (1965), "Chapter 9",
           Handbook of Mathematical Functions with Formulas, Graphs, and
           Mathematical Tables
    .. [2] Luke, Y. L. (1969), The Special Functions and Their
           Approximations, Volume 1
    .. [3] https://en.wikipedia.org/wiki/Bessel_function
    .. [4] https://functions.wolfram.com/Bessel-TypeFunctions/BesselJ/

    c                 ó  — |j                   rª|j                   rt        j                  S |j                  r|j                   du st	        |«      j
                  rt        j                  S t	        |«      j                  r|j                  durt        j                  S |j                  rt        j                  S |t        j                  t        j                  fv rt        j                  S |j                  «       r||z  | | z  z  t        || «      z  S |j                  r_|j                  «       r"t        j                  | z  t        | |«      z  S |j!                  t"        «      }|rt"        |z  t%        ||«      z  S |j                  rt'        |«      }||k7  rPt        ||«      S |j)                  «       \  }}|dk7  r,t+        d|z  t,        z  |z  t"        z  «      t        ||«      z  S t'        |«      }||k7  rt        ||«      S y )NFTr   rE   )r^   r   ÚOnerV   r"   rf   ÚZerorh   ÚComplexInfinityÚis_imaginaryÚNaNÚInfinityÚNegativeInfinityÚcould_extract_minus_signrX   ÚNegativeOneÚextract_multiplicativelyr   rY   r%   Úextract_branch_factorr   r   ©r?   r@   rA   ÚnewzÚnÚnnus         r4   rB   zbesselj.eval²   s¥  € à�9Š9Ø�zŠzÜ—u‘u�Ø—-’- B§J¡J°%Ñ$7¼B¸r»F×<NÒ<NÜ—v‘v�Ü�B“×#Ò#¨R¯]©]¸dÑ-BÜ×(Ñ(Ð(Ø—’Ü—u‘u�Ø”—‘œQ×/Ñ/Ð0Ñ0Ü—6‘6ˆMà×%Ñ%Ô'Ø˜‘7˜Q˜B 2 #™;Ñ&¤w¨r°A°2£Ñ6Ð6Ø�=Š=Ø×*Ñ*Ô,Ü—}‘}¨ sÑ+¬G°R°C¸«OÑ;Ð;Ø×-Ñ-¬aÓ0ˆDÙÜ˜2‘wœw r¨4Ó0Ñ0Ð0ð �=Š=Ü˜a“=ˆDØ�qŠyÜ˜r 4Ó(Ð(à×-Ñ-Ó/‰GˆD�!Ø�AŠvÜ˜1˜Q™3œr™6 "™9¤Q™;Ó'¬°°DÓ(9Ñ9Ð9Ü˜‹nˆØ�Š9Ü˜3 “?Ð"ð r7   c                 óv   — t        t        t        z  |z  dz  «      t        |t	        t         «      |z  «      z  S ©NrE   )r   r   r   rY   r$   ©r3   r@   rA   rn   s       r4   Ú_eval_rewrite_as_besseliz besselj._eval_rewrite_as_besseliÖ   s/   € Ü”1”R‘4˜‘7˜1‘9‹~œg b¬*´a°R«.¸Ñ*:Ó;Ñ;Ð;r7   c                 ó    — |j                   du r@t        t        |z  «      t        | |«      z  t	        t        |z  «      t        ||«      z  z
  S y rM   )rV   r   r   Úbesselyr   rŠ   s       r4   Ú_eval_rewrite_as_besselyz besselj._eval_rewrite_as_besselyÙ   sF   € Ø�=‰=˜EÑ!Ü”r˜"‘u“:œg r c¨1›oÑ-´´B°r±E³
¼7À2Àq»>Ñ0IÑIÐIð "r7   c                 ó|   — t        d|z  t        z  «      t        |t        j                  z
  | j
                  «      z  S r‰   )r   r   r\   r   ÚHalfr:   rŠ   s       r4   Ú_eval_rewrite_as_jnzbesselj._eval_rewrite_as_jnÝ   s,   € Ü�A�a‘Cœ‘F‹|œB˜r¤A§F¡F™{¨D¯M©MÓ:Ñ:Ð:r7   c                 óÖ  •— | j                   \  }}	 |j                  |«      }|j                  |«      \  }}|j                  r||z  d|z  t        |dz   «      z  z  S |j                  r\|dk(  rdn|}|||z  z  }	|	j                  s=t        d«      t        |t        d|z  dz   z  dz  z
  «      z  t        t        |z  «      z  S | S t        t        | �3  |||«      S # t        $ r | cY S w xY w)NrE   r9   r   é   )r1   Úas_leading_termÚNotImplementedErrorÚas_coeff_exponentrf   r&   rh   r   r   r   ÚsuperrX   Ú_eval_as_leading_term©r3   r`   ÚlogxÚcdirr@   rA   ÚargÚcÚeÚsignrG   s             €r4   r˜   zbesselj._eval_as_leading_termà   sõ   ø€ Ø—	‘	‰ˆˆAð	Ø×#Ñ# AÓ&ˆCð ×$Ñ$ QÓ'‰ˆˆ1à�=Š=Ø˜‘7˜A˜r™E¤%¨¨Q©£-Ñ/Ñ0Ð0Ø�]Š]Ø š	‘1 tˆDØ�T˜1‘W‘9ˆDØ×#Ò#ô ˜A“wœs 1¤r¨1¨R©4°!©8¡}°Q¡Ñ#6Ó7Ñ7¼¼RÀ¹T»
ÑBÐBØˆKä”W˜dÑ9¸!¸TÀ4ÓHÐHøô #ò 	ØŠKð	ús   ’C ÃC(Ã'C(c                 óV   — | j                   \  }}|j                  r|j                  ryy y ©NT©r1   rV   Úis_extended_real©r3   r@   rA   s      r4   Ú_eval_is_extended_realzbesselj._eval_is_extended_realõ   ó(   € Ø—	‘	‰ˆˆAØ�=Š=˜Q×/Ò/Øð 0ˆ=r7   c                 ó˜  •— ddl m} | j                  \  }}	 |j                  |«      \  }}	|	j                  rçt        ||	z  «      }
 |||z  |«      }|dz  j                  ||||«      j                  «       }|t        j                  u r|S t        |dz  «      |z   j                  «       }||z  t        |dz   «      z  }|g}t        d|
dz   dz  «      D ]>  }|| |||z   z  z  z  }t        |«      |z   j                  «       }|j                  |«       Œ@ t!        |Ž |z   S t"        t$        | �#  ||||«      S # t        t
        f$ r | cY S w xY w©Nr   ©ÚOrderrE   r9   )Úsympy.series.orderrª   r1   ÚleadtermÚ
ValueErrorr•   rf   r   Ú_eval_nseriesÚremoveOr   rz   r   r&   ÚrangeÚappendr   r—   rX   ©r3   r`   r†   rš   r›   rª   r@   rA   Ú_r   ÚnewnÚoÚrÚtÚtermÚsÚkrG   s                    €r4   r®   zbesselj._eval_nseriesú   sW  ø€ õ 	-Ø—	‘	‰ˆˆAð	Ø—Z‘Z “]‰FˆAˆsð �?Š?Ü˜1˜S™5“>ˆDÙ�a˜‘d˜A“ˆAØ�1‘×#Ñ# A q¨$°Ó5×=Ñ=Ó?ˆAØ”A—F‘F‰{Ø�Ü˜!˜Q™$“ !Ñ#×,Ñ,Ó.ˆAà�b‘5œ˜r A™v›Ñ&ˆDØ�ˆAÜ˜1˜t a™x¨!™mÓ,ò �Ø˜˜˜A˜r A™v™J™Ñ'�Ü  ›¨Ñ*×3Ñ3Ó5�Ø—‘˜•ðô ˜�7˜Q‘;Ðä”W˜dÑ1°!°Q¸¸dÓCÐCøô' Ô/Ð0ò 	ØŠKð	ús   ˜D5 Ä5E	ÅE	©Nr   ©r   )rq   rr   rs   rt   r   ry   rH   rF   rv   rB   r‹   rŽ   r‘   r˜   r¥   r®   Ú__classcell__©rG   s   @r4   rX   rX   j   sX   ø„ ñBðH 
�‰€BØ	
�‰€Bàñ!#ó ð!#òF<òJò;õIò*÷
Dñ Dr7   rX   c                   óˆ   ‡ — e Zd ZdZej
                  Zej
                  Zed„ «       Z	d„ Z
d„ Zd„ Zd	ˆ fd„	Zd„ Zd
ˆ fd„	Zˆ xZS )r�   a`  
    Bessel function of the second kind.

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

    The Bessel $Y$ function of order $\nu$ is defined as

    .. math ::
        Y_\nu(z) = \lim_{\mu \to \nu} \frac{J_\mu(z) \cos(\pi \mu)
                                            - J_{-\mu}(z)}{\sin(\pi \mu)},

    where $J_\mu(z)$ is the Bessel function of the first kind.

    It is a solution to Bessel's equation, and linearly independent from
    $J_\nu$.

    Examples
    ========

    >>> from sympy import bessely, yn
    >>> from sympy.abc import z, n
    >>> b = bessely(n, z)
    >>> b.diff(z)
    bessely(n - 1, z)/2 - bessely(n + 1, z)/2
    >>> b.rewrite(yn)
    sqrt(2)*sqrt(z)*yn(n - 1/2, z)/sqrt(pi)

    See Also
    ========

    besselj, besseli, besselk

    References
    ==========

    .. [1] https://functions.wolfram.com/Bessel-TypeFunctions/BesselY/

    c                 óø  — |j                   rh|j                   rt        j                  S t        |«      j                   du rt        j                  S t        |«      j                   rt        j
                  S |t        j                  t        j                  fv rt        j                  S |t        t        j                  z  k(  r0t        t        t        z  |dz   z  dz  «      t        j                  z  S |t        t        j                  z  k(  r1t        t         t        z  |dz   z  dz  «      t        j                  z  S |j                  r3|j                  «       r"t        j                  | z  t        | |«      z  S y y )NFr9   rE   )r^   r   r   r"   r{   r}   r~   rz   r   r   r   rV   r€   r�   r�   r>   s      r4   rB   zbessely.evalF  s  € à�9Š9Ø�zŠzÜ×)Ñ)Ð)Ü�B“—‘ 5Ñ(Ü×(Ñ(Ð(Ü�B“—’Ü—u‘u�Ø”—‘œQ×/Ñ/Ð0Ñ0Ü—6‘6ˆMØ””!—*‘*‘ÒÜ”qœ‘t˜R !™V‘} Q‘Ó'¬!¯*©*Ñ4Ð4Ø””!×$Ñ$Ñ$Ò$Üœ�rœ"‘u˜b 1™f‘~ aÑ'Ó(¬1¯:©:Ñ5Ð5à�=Š=Ø×*Ñ*Ô,Ü—}‘}¨ sÑ+¬G°R°C¸«OÑ;Ð;ð -ð r7   c                 ó    — |j                   du r@t        t        |z  «      t        t        |z  «      t	        ||«      z  t	        | |«      z
  z  S y rM   )rV   r   r   r   rX   rŠ   s       r4   Ú_eval_rewrite_as_besseljz bessely._eval_rewrite_as_besseljZ  sF   € Ø�=‰=˜EÑ!Ü”r˜"‘u“:œs¤2 b¡5›z¬'°"°a«.Ñ8¼7ÀBÀ3È»?ÑJÑKÐKð "r7   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r<   )rÂ   r1   ÚrewriterY   ©r3   r@   rA   rn   Úajs        r4   r‹   z bessely._eval_rewrite_as_besseli^  ó/   € Ø*ˆT×*Ñ*¨D¯I©IÐ6ˆÙØ—:‘:œgÓ&Ð&ð r7   c                 ó|   — t        d|z  t        z  «      t        |t        j                  z
  | j
                  «      z  S r‰   )r   r   r]   r   r�   r:   rŠ   s       r4   Ú_eval_rewrite_as_ynzbessely._eval_rewrite_as_ync  s,   € Ü�A�a‘Cœ‘F‹|œb ¤a§f¡f¡¨d¯m©mÓ<Ñ<Ð<r7   c                 ó’  •— | j                   \  }}	 |j                  |«      }|j                  |«      \  }}|j                  r»dt
        z  t        |dz  «      z  t        ||«      z  }	|j                  r |dz  | z   t        |dz
  «      z  t
        z  nt        j                  }
|dz  |z   t
        t        |«      z  z  t        |dz   «      t        j                  z
  z  }t        |	|
|gŽ j                  ||¬«      }|S |j                  r™|dk(  rdn|}|||z  z  }|j                  szt        d«      t!        t
        |z  dz  |z
  t
        dz  z   «       dt#        t
        |z  dz  |z
  t
        dz  z   «      z  d|z  z  z   z  t        d|z  «      z  t        t
        «      z  S | S t$        t&        | �S  |||«      S # t        $ r | cY S w xY w)NrE   r9   ©rš   r   r“   é   é   )r1   r”   r•   r–   rf   r   r   rX   r   r   rz   r'   Ú
EulerGammar   rh   r   r   r   r—   r�   r˜   )r3   r`   rš   r›   r@   rA   rœ   r�   rž   Úterm_oneÚterm_twoÚ
term_threerŸ   rG   s                €r4   r˜   zbessely._eval_as_leading_termf  sÉ  ø€ Ø—	‘	‰ˆˆAð	Ø×#Ñ# AÓ&ˆCð ×$Ñ$ QÓ'‰ˆˆ1à�=Š=Øœ2™œs 1 Q¡3›x™¬°°A«Ñ6ˆHØ>@×=MÒ=M˜˜1™  ™�}¤Y¨r°A©vÓ%6Ñ6´rÒ9ÔST×SYÑSYˆHØ˜Q™3 ™)˜¤R¬	°"«Ñ%5Ñ6¼ÀÀQÁ»Ì!Ï,É,Ñ8VÑWˆJÜ˜ (¨JÐ7Ð8×HÑHÈÐQUÐHÓVˆCØˆJØ�]Š]Ø š	‘1 tˆDØ�T˜1‘W‘9ˆDØ×#Ò#ô ˜A“w¤¤R¨¡U¨1¡W¨q¡[´2°a±4Ñ%7Ó!8Ð 8¸1¼SÄÀBÁÀqÁÈ1ÁÌrÐRSÉtÑASÓ=TÑ;TÐVWÐXYÑVYÑ;ZÑ ZÑ[Ô\`ÐabÐcdÑadÓ\eÑeÔfjÔkmÓfnÑnÐnØˆKä”W˜dÑ9¸!¸TÀ4ÓHÐHøô' #ò 	ØŠKð	ús   ’F8 Æ8GÇGc                 óV   — | j                   \  }}|j                  r|j                  ryy y r¡   ©r1   rV   rf   r¤   s      r4   r¥   zbessely._eval_is_extended_real  ó&   € Ø—	‘	‰ˆˆAØ�=Š=˜QŸ]š]Øð +ˆ=r7   c                 óB  •— ddl m} | j                  \  }}	 |j                  |«      \  }}	|	j                  �r;|j                  �r.t        ||	z  «      }
t        ||«      }dt        z  t        |dz  «      z  |z  j                  ||||«      }g g }} |||z  |«      }|dz  j                  ||||«      j                  «       }|t        j                  u r|S t!        |dz  «      |z   j                  «       }|t        j                  kD  r—|| z  t#        |dz
  «      z  t        z  }|j%                  |«       t'        d|«      D ][  }||z
  |z  }|t        j                  k(  r	|||z  z  }n|||z  z  }t!        |«      |z   j                  «       }|j%                  |«       Œ] ||z  t        t#        |«      z  z  }|t)        |dz   «      t        j*                  z
  z  }|j%                  |«       t'        d|
dz   dz  «      D ]a  }|| |||z   z  z  z  }t!        |«      |z   j                  «       }|t)        ||z   dz   «      t)        |dz   «      z   z  }|j%                  |«       Œc |t-        |Ž z
  t-        |Ž z
  S t.        t0        | �3  ||||«      S # t        t
        f$ r | cY S w xY wr¨   )r«   rª   r1   r¬   r­   r•   rf   rV   r   rX   r   r   r®   r¯   r   rz   r   r   r±   r°   r'   rÎ   r   r—   r�   ©r3   r`   r†   rš   r›   rª   r@   rA   r³   r   r´   Úbnra   Úbr�   rµ   r¶   r·   r¸   rº   ÚdenomÚprG   s                         €r4   r®   zbessely._eval_nseries„  sˆ  ø€ õ 	-Ø—	‘	‰ˆˆAð	Ø—Z‘Z “]‰FˆAˆsð �?‹?˜rŸ}›}Ü˜1˜S™5“>ˆDÜ˜˜Q“ˆBØ”B‘$œ˜A˜a™C›‘ Ñ#×2Ñ2°1°a¸¸tÓDˆAà�rˆqˆAÙ�a˜‘d˜A“ˆAØ�1‘×#Ñ# A q¨$°Ó5×=Ñ=Ó?ˆAØ”A—F‘F‰{Ø�Ü˜!˜Q™$“ !Ñ#×,Ñ,Ó.ˆAà”A—F‘FŠ{Ø˜B˜3‘x¤	¨"¨q©&Ó 1Ñ1´"Ñ4�Ø—‘˜”Ü˜q "›ò #�AØ !™V Q™J�EØ¤§¡’Ø  !¡™™à  %¡™˜Ü$ T›N¨QÑ.×7Ñ7Ó9�DØ—H‘H˜T•Nð#ð �2‘”rœ) B›-Ñ'Ñ(ˆAØ”g˜b 1™f“o¬¯©Ñ4Ñ5ˆDØ�H‰H�TŒNÜ˜1˜t a™x¨!™mÓ,ò �Ø�a�R˜˜A ™F™‘_Ñ$�Ü˜a“[ 1‘_×-Ñ-Ó/�Øœ' ! b¡&¨1¡*Ó-´¸¸A¹³Ñ>Ñ?�Ø—‘˜•ð	ð
 ”s˜A�w‘;¤ a Ñ(Ð(ä”W˜dÑ1°!°Q¸¸dÓCÐCøôK Ô/Ð0ò 	ØŠKð	ús   ˜J
 Ê
JÊJr»   r¼   )rq   rr   rs   rt   r   ry   rH   rF   rv   rB   rÂ   r‹   rÉ   r˜   r¥   r®   r½   r¾   s   @r4   r�   r�     sV   ø„ ñ&ðP 
�‰€BØ	
�‰€Bàñ<ó ð<ò&Lò'ò
=õIò2÷
/Dñ /Dr7   r�   c                   óŠ   ‡ — e Zd ZdZej
                   Zej
                  Zed„ «       Z	d„ Z
d„ Zd„ Zd„ Zd	ˆ fd„	Zd
ˆ fd„	Zˆ xZS )rY   a  
    Modified Bessel function of the first kind.

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

    The Bessel $I$ function is a solution to the modified Bessel equation

    .. math ::
        z^2 \frac{\mathrm{d}^2 w}{\mathrm{d}z^2}
        + z \frac{\mathrm{d}w}{\mathrm{d}z} + (z^2 + \nu^2)^2 w = 0.

    It can be defined as

    .. math ::
        I_\nu(z) = i^{-\nu} J_\nu(iz),

    where $J_\nu(z)$ is the Bessel function of the first kind.

    Examples
    ========

    >>> from sympy import besseli
    >>> from sympy.abc import z, n
    >>> besseli(n, z).diff(z)
    besseli(n - 1, z)/2 + besseli(n + 1, z)/2

    See Also
    ========

    besselj, bessely, besselk

    References
    ==========

    .. [1] https://functions.wolfram.com/Bessel-TypeFunctions/BesselI/

    c                 ó�  — |j                   rª|j                   rt        j                  S |j                  r|j                   du st	        |«      j
                  rt        j                  S t	        |«      j                  r|j                  durt        j                  S |j                  rt        j                  S t        |«      t        j                  t        j                  fv rt        j                  S |t        j                  u rt        j                  S |t        j                  u rd|z  t        j                  z  S |j                  «       r||z  | | z  z  t        || «      z  S |j                  rL|j                  «       rt        | |«      S |j!                  t"        «      }|rt"        | z  t%        || «      z  S |j                  rt'        |«      }||k7  rPt        ||«      S |j)                  «       \  }}|dk7  r,t+        d|z  t,        z  |z  t"        z  «      t        ||«      z  S t'        |«      }||k7  rt        ||«      S y )NFTéÿÿÿÿr   rE   )r^   r   ry   rV   r"   rf   rz   rh   r{   r|   r}   r#   r~   r   r€   rY   r‚   r   rX   r%   rƒ   r   r   r„   s         r4   rB   zbesseli.evalá  sÓ  € à�9Š9Ø�zŠzÜ—u‘u�Ø—-’- B§J¡J°%Ñ$7¼B¸r»F×<NÒ<NÜ—v‘v�Ü�B“×#Ò#¨R¯]©]¸dÑ-BÜ×(Ñ(Ð(Ø—’Ü—u‘u�Üˆa‹5”Q—Z‘Z¤×!3Ñ!3Ð4Ñ4Ü—6‘6ˆMØ”—
‘
‰?Ü—:‘:ÐØ”×"Ñ"Ñ"Ø˜‘8œAŸJ™JÑ&Ð&à×%Ñ%Ô'Ø˜‘7˜Q˜B 2 #™;Ñ&¤w¨r°A°2£Ñ6Ð6Ø�=Š=Ø×*Ñ*Ô,Ü ˜s A“Ð&Ø×-Ñ-¬aÓ0ˆDÙÜ˜B˜3‘x¤¨¨T¨EÓ 2Ñ2Ð2ð �=Š=Ü˜a“=ˆDØ�qŠyÜ˜r 4Ó(Ð(à×-Ñ-Ó/‰GˆD�!Ø�AŠvÜ˜1˜Q™3œr™6 "™9¤Q™;Ó'¬°°DÓ(9Ñ9Ð9Ü˜‹nˆØ�Š9Ü˜3 “?Ð"ð r7   c                 óv   — t        t         t        z  |z  dz  «      t        |t	        t        «      |z  «      z  S r‰   )r   r   r   rX   r$   rŠ   s       r4   rÂ   z besseli._eval_rewrite_as_besselj	  s.   € Ü”A�2”b‘5˜‘8˜A‘:‹œw r¬:´a«=¸©?Ó;Ñ;Ð;r7   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r<   ©rÂ   r1   rÄ   r�   rÅ   s        r4   rŽ   z besseli._eval_rewrite_as_bessely  rÇ   r7   c                 óZ   —  | j                   | j                  Ž j                  t        «      S r<   )rÂ   r1   rÄ   r\   rŠ   s       r4   r‘   zbesseli._eval_rewrite_as_jn  s$   € Ø,ˆt×,Ñ,¨d¯i©iÐ8×@Ñ@ÄÓDÐDr7   c                 óV   — | j                   \  }}|j                  r|j                  ryy y r¡   r¢   r¤   s      r4   r¥   zbesseli._eval_is_extended_real  r¦   r7   c                 óž  •— | j                   \  }}	 |j                  |«      }|j                  |«      \  }}|j                  r||z  d|z  t        |dz   «      z  z  S |j                  r@|dk(  rdn|}|||z  z  }	|	j                  s!t        |«      t        dt        z  |z  «      z  S | S t        t        | �3  |||«      S # t        $ r | cY S w xY w©NrE   r9   r   )r1   r”   r•   r–   rf   r&   rh   r   r   r   r—   rY   r˜   r™   s             €r4   r˜   zbesseli._eval_as_leading_term  sÚ   ø€ Ø—	‘	‰ˆˆAð	Ø×#Ñ# AÓ&ˆCð ×$Ñ$ QÓ'‰ˆˆ1à�=Š=Ø˜‘7˜A˜r™E¤%¨¨Q©£-Ñ/Ñ0Ð0Ø�]Š]Ø š	‘1 tˆDØ�T˜1‘W‘9ˆDØ×#Ò#ô ˜1“vœd 1¤R¡4¨¡6›lÑ*Ð*ØˆKä”W˜dÑ9¸!¸TÀ4ÓHÐHøô #ò 	ØŠKð	ús   ’B> Â>CÃCc                 ó–  •— ddl m} | j                  \  }}	 |j                  |«      \  }}	|	j                  ræt        ||	z  «      }
 |||z  |«      }|dz  j                  ||||«      j                  «       }|t        j                  u r|S t        |dz  «      |z   j                  «       }||z  t        |dz   «      z  }|g}t        d|
dz   dz  «      D ]=  }|||||z   z  z  z  }t        |«      |z   j                  «       }|j                  |«       Œ? t!        |Ž |z   S t"        t$        | �#  ||||«      S # t        t
        f$ r | cY S w xY wr¨   )r«   rª   r1   r¬   r­   r•   rf   r   r®   r¯   r   rz   r   r&   r°   r±   r   r—   rY   r²   s                    €r4   r®   zbesseli._eval_nseries.  sU  ø€ õ 	-Ø—	‘	‰ˆˆAð	Ø—Z‘Z “]‰FˆAˆsð �?Š?Ü˜1˜S™5“>ˆDÙ�a˜‘d˜A“ˆAØ�1‘×#Ñ# A q¨$°Ó5×=Ñ=Ó?ˆAØ”A—F‘F‰{Ø�Ü˜!˜Q™$“ !Ñ#×,Ñ,Ó.ˆAà�b‘5œ˜r A™v›Ñ&ˆDØ�ˆAÜ˜1˜t a™x¨!™mÓ,ò �Ø˜˜1˜b 1™f™:™Ñ&�Ü  ›¨Ñ*×3Ñ3Ó5�Ø—‘˜•ðô ˜�7˜Q‘;Ðä”W˜dÑ1°!°Q¸¸dÓCÐCøô' Ô/Ð0ò 	ØŠKð	ús   ˜D4 Ä4EÅEr»   r¼   )rq   rr   rs   rt   r   ry   rH   rF   rv   rB   rÂ   rŽ   r‘   r¥   r˜   r®   r½   r¾   s   @r4   rY   rY   ¶  sY   ø„ ñ%ðN �%‰%ˆ€BØ	
�‰€Bàñ%#ó ð%#òN<ò'ò
Eòõ
I÷*Dñ Dr7   rY   c                   ó�   ‡ — e Zd ZdZej
                  Zej
                   Zed„ «       Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd
ˆ fd„	Zdˆ fd	„	Zˆ xZS )Úbesselka  
    Modified Bessel function of the second kind.

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

    The Bessel $K$ function of order $\nu$ is defined as

    .. math ::
        K_\nu(z) = \lim_{\mu \to \nu} \frac{\pi}{2}
                   \frac{I_{-\mu}(z) -I_\mu(z)}{\sin(\pi \mu)},

    where $I_\mu(z)$ is the modified Bessel function of the first kind.

    It is a solution of the modified Bessel equation, and linearly independent
    from $Y_\nu$.

    Examples
    ========

    >>> from sympy import besselk
    >>> from sympy.abc import z, n
    >>> besselk(n, z).diff(z)
    -besselk(n - 1, z)/2 - besselk(n + 1, z)/2

    See Also
    ========

    besselj, besseli, bessely

    References
    ==========

    .. [1] https://functions.wolfram.com/Bessel-TypeFunctions/BesselK/

    c                 óÞ  — |j                   rh|j                   rt        j                  S t        |«      j                   du rt        j                  S t        |«      j                   rt        j
                  S |t        j                  t        t        j                  z  t        t        j                  z  fv rt        j                  S |j                  r|j                  «       rt        | |«      S y y rM   )r^   r   r~   r"   r{   r}   r   r   rz   rV   r€   rç   r>   s      r4   rB   zbesselk.evalw  s¤   € à�9Š9Ø�zŠzÜ—z‘zÐ!Ü�B“—‘ 5Ñ(Ü×(Ñ(Ð(Ü�B“—’Ü—u‘u�Ø”—‘œQœqŸz™z™\¬1¬Q×-?Ñ-?Ñ+?Ð@Ñ@Ü—6‘6ˆMà�=Š=Ø×*Ñ*Ô,Ü ˜s A“Ð&ð -ð r7   c                 óŽ   — |j                   du r7t        t        t        |z  «      z  t        | |«      t        ||«      z
  z  dz  S y )NFrE   )rV   r   r   rY   rŠ   s       r4   r‹   z besselk._eval_rewrite_as_besseli‡  sB   € Ø�=‰=˜EÑ!Ü”cœ"˜R™%“j‘=¤'¨2¨#¨q£/´G¸BÀ³NÑ"BÑCÀAÑEÐEð "r7   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r<   )r‹   r1   rÄ   rX   )r3   r@   rA   rn   Úais        r4   rÂ   z besselk._eval_rewrite_as_besselj‹  rÇ   r7   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r<   rà   rÅ   s        r4   rŽ   z besselk._eval_rewrite_as_bessely�  rÇ   r7   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r<   )rŽ   r1   rÄ   r]   )r3   r@   rA   rn   Úays        r4   rÉ   zbesselk._eval_rewrite_as_yn•  s.   € Ø*ˆT×*Ñ*¨D¯I©IÐ6ˆÙØ—:‘:œb“>Ð!ð r7   c                 óV   — | j                   \  }}|j                  r|j                  ryy y r¡   rÓ   r¤   s      r4   r¥   zbesselk._eval_is_extended_realš  rÔ   r7   c                 ó¬  •— | j                   \  }}	 |j                  |«      }|j                  |«      \  }}|j                  r¶d|dz
  z  t        |dz  «      z  t        ||«      z  }	|j                  r|dz  | z  t        |dz
  «      z  dz  nt        j                  }
d|z  |dz  |z  z  dt        |«      z  z  t        |dz   «      t        j                  z
  z  }t        |	|
|gŽ j                  ||¬«      }|S |j                  r+t        t        «      t!        | «      z  t        d|z  «      z  S t"        t$        | �O  |||«      S # t        $ r | cY S w xY w)NrÝ   r9   rE   rË   )r1   r”   r•   r–   rf   r   rY   r   r   rz   r'   rÎ   r   rh   r   r   r   r—   rç   r˜   )r3   r`   rš   r›   r@   rA   rœ   r³   rž   rÏ   rÐ   rÑ   rG   s               €r4   r˜   zbesselk._eval_as_leading_termŸ  sT  ø€ Ø—	‘	‰ˆˆAð	Ø×#Ñ# AÓ&ˆCð ×$Ñ$ QÓ'‰ˆˆ1à�=Š=Ø˜r 1™u™¤c¨!¨A©#£hÑ.¬w°r¸1«~Ñ=ˆHØ<>×;KÒ;K˜˜!™ ˜s‘|¤I¨b°1©fÓ$5Ñ5°aÒ7ÔQR×QWÑQWˆHØ˜r™ 1 Q¡3¨¡)Ñ+¨Q¬y¸«}©_Ñ=¼wÀrÈAÁv»ÔQR×Q]ÑQ]Ñ?]Ñ^ˆJÜ˜ (¨JÐ7Ð8×HÑHÈÐQUÐHÓVˆCØˆJØ�]Š]ô œ“8œC  ›GÑ#¤D¨¨1©£IÑ-Ð-ä”W˜dÑ9¸!¸TÀ4ÓHÐHøô #ò 	ØŠKð	ús   ’E ÅEÅEc                 ó:  •— ddl m} | j                  \  }}	 |j                  |«      \  }}	|	j                  �r7|j                  �r*t        ||	z  «      }
t        ||«      }d|dz
  z  t        |dz  «      z  |z  j                  ||||«      }g g }} |||z  |«      }|dz  j                  ||||«      j                  «       }|t        j                  u r|S t        |dz  «      |z   j                  «       }|t        j                  kD  r“|| z  t!        |dz
  «      z  dz  }|j#                  |«       t%        d|«      D ][  }||z
  |z  }|t        j                  k(  r	|||z  z  }n|||z  z  }t        |«      |z   j                  «       }|j#                  |«       Œ] ||z  d|z  z  dt!        |«      z  z  }|t'        |dz   «      t        j(                  z
  z  }|j#                  |«       t%        d|
dz   dz  «      D ]`  }|||||z   z  z  z  }t        |«      |z   j                  «       }|t'        ||z   dz   «      t'        |dz   «      z   z  }|j#                  |«       Œb |t+        |Ž z   t+        |Ž z   S t,        t.        | �/  ||||«      S # t        t
        f$ r | cY S w xY w)Nr   r©   rÝ   r9   rE   )r«   rª   r1   r¬   r­   r•   rf   rV   r   rY   r   r®   r¯   r   rz   r   r   r±   r°   r'   rÎ   r   r—   rç   rÖ   s                         €r4   r®   zbesselk._eval_nseries´  s’  ø€ õ 	-Ø—	‘	‰ˆˆAð	Ø—Z‘Z “]‰FˆAˆsð �?‹?˜rŸ}›}Ü˜1˜S™5“>ˆDÜ˜˜Q“ˆBØ˜˜Q™‘¤ A a¡C£Ñ(¨Ñ+×:Ñ:¸1¸aÀÀtÓLˆAà�rˆqˆAÙ�a˜‘d˜A“ˆAØ�1‘×#Ñ# A q¨$°Ó5×=Ñ=Ó?ˆAØ”A—F‘F‰{Ø�Ü˜!˜Q™$“ !Ñ#×,Ñ,Ó.ˆAà”A—F‘FŠ{Ø˜B˜3‘x¤	¨"¨q©&Ó 1Ñ1°!Ñ3�Ø—‘˜”Ü˜q "›ò #�AØ ™V Q™J�EØ¤§¡’Ø  !¡™™à  %¡™˜Ü$ T›N¨QÑ.×7Ñ7Ó9�DØ—H‘H˜T•Nð#ð �2‘�r˜B‘h‘ ¤)¨B£-¡Ñ0ˆAØ”g˜b 1™f“o¬¯©Ñ4Ñ5ˆDØ�H‰H�TŒNÜ˜1˜t a™x¨!™mÓ,ò �Ø�Q˜˜1˜r™6™
‘^Ñ#�Ü˜a“[ 1‘_×-Ñ-Ó/�Øœ' ! b¡&¨1¡*Ó-´¸¸A¹³Ñ>Ñ?�Ø—‘˜•ð	ð
 ”s˜A�w‘;¤ a Ñ(Ð(ä”W˜dÑ1°!°Q¸¸dÓCÐCøôK Ô/Ð0ò 	ØŠKð	ús   ˜J ÊJÊJr»   r¼   )rq   rr   rs   rt   r   ry   rH   rF   rv   rB   r‹   rÂ   rŽ   rÉ   r¥   r˜   r®   r½   r¾   s   @r4   rç   rç   N  s]   ø„ ñ#ðJ 
�‰€BØ
�%‰%ˆ€Bàñ'ó ð'òFò'ò
'ò
"ò
õ
I÷*/Dñ /Dr7   rç   c                   óF   — e Zd ZdZej
                  Zej
                  Zd„ Zy)Úhankel1a¤  
    Hankel function of the first kind.

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

    This function is defined as

    .. math ::
        H_\nu^{(1)} = J_\nu(z) + iY_\nu(z),

    where $J_\nu(z)$ is the Bessel function of the first kind, and
    $Y_\nu(z)$ is the Bessel function of the second kind.

    It is a solution to Bessel's equation.

    Examples
    ========

    >>> from sympy import hankel1
    >>> from sympy.abc import z, n
    >>> hankel1(n, z).diff(z)
    hankel1(n - 1, z)/2 - hankel1(n + 1, z)/2

    See Also
    ========

    hankel2, besselj, bessely

    References
    ==========

    .. [1] https://functions.wolfram.com/Bessel-TypeFunctions/HankelH1/

    c                 óœ   — | j                   }|j                  du r2t        | j                  j	                  «       |j	                  «       «      S y rM   )r:   rN   Úhankel2r5   rO   rP   s     r4   rQ   zhankel1._eval_conjugate  ó>   € Ø�M‰MˆØ×!Ñ! UÑ*Ü˜4Ÿ:™:×/Ñ/Ó1°1·;±;³=ÓAÐAð +r7   N©	rq   rr   rs   rt   r   ry   rH   rF   rQ   r=   r7   r4   ró   ró   æ  s"   „ ñ"ðH 
�‰€BØ	
�‰€BóBr7   ró   c                   óF   — e Zd ZdZej
                  Zej
                  Zd„ Zy)rõ   aÖ  
    Hankel function of the second kind.

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

    This function is defined as

    .. math ::
        H_\nu^{(2)} = J_\nu(z) - iY_\nu(z),

    where $J_\nu(z)$ is the Bessel function of the first kind, and
    $Y_\nu(z)$ is the Bessel function of the second kind.

    It is a solution to Bessel's equation, and linearly independent from
    $H_\nu^{(1)}$.

    Examples
    ========

    >>> from sympy import hankel2
    >>> from sympy.abc import z, n
    >>> hankel2(n, z).diff(z)
    hankel2(n - 1, z)/2 - hankel2(n + 1, z)/2

    See Also
    ========

    hankel1, besselj, bessely

    References
    ==========

    .. [1] https://functions.wolfram.com/Bessel-TypeFunctions/HankelH2/

    c                 óœ   — | j                   }|j                  du r2t        | j                  j	                  «       |j	                  «       «      S y rM   )r:   rN   ró   r5   rO   rP   s     r4   rQ   zhankel2._eval_conjugate=  rö   r7   Nr÷   r=   r7   r4   rõ   rõ     s"   „ ñ#ðJ 
�‰€BØ	
�‰€BóBr7   rõ   c                 ó.   ‡ — t        ‰ «      ˆ fd„«       }|S )Nc                 ó2   •— |j                   r
 ‰| ||«      S y r<   )rV   )r3   r@   rA   Úfns      €r4   Úgzassume_integer_order.<locals>.gD  s   ø€ à�=Š=Ù�d˜B “?Ð"ð r7   r   )rü   rý   s   ` r4   Úassume_integer_orderrþ   C  s    ø€ Ü
ˆ2ƒYó#ó ð#ð €Hr7   c                   ó$   — e Zd ZdZd„ Zd„ Zdd„Zy)ÚSphericalBesselBasea-  
    Base class for spherical Bessel functions.

    These are thin wrappers around ordinary Bessel functions,
    since spherical Bessel functions differ from the ordinary
    ones just by a slight change in order.

    To use this class, define the ``_eval_evalf()`` and ``_expand()`` methods.

    c                 ó   — t        d«      ‚)z@ Expand self into a polynomial. Nu is guaranteed to be Integer. Ú	expansion©r•   ©r3   ri   s     r4   Ú_expandzSphericalBesselBase._expandW  s   € ä! +Ó.Ð.r7   c                 óV   — | j                   j                  r | j                  di |¤ŽS | S ©Nr=   )r5   Ú
is_Integerr  r  s     r4   rg   z%SphericalBesselBase._eval_expand_func[  s(   € Ø�:‰:× Ò Ø�4—<‘<Ñ( %Ñ(Ð(Øˆr7   c                 ó¶   — |dk7  rt        | |«      ‚| j                  | j                  dz
  | j                  «      | | j                  dz   z  | j                  z  z
  S rD   )r
   rG   r5   r:   rI   s     r4   rK   zSphericalBesselBase.fdiff`  sS   € Ø�qŠ=Ü$ T¨8Ó4Ð4Ø�~‰~˜dŸj™j¨1™n¨d¯m©mÓ<Ø�D—J‘J ‘NÑ# D§M¡MÑ1ñ2ð 	2r7   Nrp   )rq   rr   rs   rt   r  rg   rK   r=   r7   r4   r   r   K  s   „ ñ	ò/òô
2r7   r   c                 óš   — t        | |«      t        |«      z  t        j                  | dz   z  t        |  dz
  |«      z  t	        |«      z  z   S ©Nr9   )r*   r   r   r�   r   ©r†   rA   s     r4   Ú_jnr  g  sM   € Ü  1Ó%¤c¨!£fÑ,Ü�M‰M˜A ™EÑ"Ô#6¸°r¸A±v¸qÓ#AÑAÄ#ÀaÃ&ÑHñIð Jr7   c                 óš   — t         j                  | dz   z  t        |  dz
  |«      z  t        |«      z  t        | |«      t	        |«      z  z
  S r  )r   r�   r*   r   r   r  s     r4   Ú_ynr  l  sK   € ä�M‰M˜A ™EÑ"Ô%8¸!¸¸a¹ÀÓ%CÑCÄCÈÃFÑJÜ  1Ó%¤c¨!£fÑ,ñ-ð .r7   c                   ó>   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	r\   aö  
    Spherical Bessel function of the first kind.

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

    This function is a solution to the spherical Bessel equation

    .. math ::
        z^2 \frac{\mathrm{d}^2 w}{\mathrm{d}z^2}
          + 2z \frac{\mathrm{d}w}{\mathrm{d}z} + (z^2 - \nu(\nu + 1)) w = 0.

    It can be defined as

    .. math ::
        j_\nu(z) = \sqrt{\frac{\pi}{2z}} J_{\nu + \frac{1}{2}}(z),

    where $J_\nu(z)$ is the Bessel function of the first kind.

    The spherical Bessel functions of integral order are
    calculated using the formula:

    .. math:: j_n(z) = f_n(z) \sin{z} + (-1)^{n+1} f_{-n-1}(z) \cos{z},

    where the coefficients $f_n(z)$ are available as
    :func:`sympy.polys.orthopolys.spherical_bessel_fn`.

    Examples
    ========

    >>> from sympy import Symbol, jn, sin, cos, expand_func, besselj, bessely
    >>> z = Symbol("z")
    >>> nu = Symbol("nu", integer=True)
    >>> print(expand_func(jn(0, z)))
    sin(z)/z
    >>> expand_func(jn(1, z)) == sin(z)/z**2 - cos(z)/z
    True
    >>> expand_func(jn(3, z))
    (-6/z**2 + 15/z**4)*sin(z) + (1/z - 15/z**3)*cos(z)
    >>> jn(nu, z).rewrite(besselj)
    sqrt(2)*sqrt(pi)*sqrt(1/z)*besselj(nu + 1/2, z)/2
    >>> jn(nu, z).rewrite(bessely)
    (-1)**nu*sqrt(2)*sqrt(pi)*sqrt(1/z)*bessely(-nu - 1/2, z)/2
    >>> jn(2, 5.2+0.3j).evalf(20)
    0.099419756723640344491 - 0.054525080242173562897*I

    See Also
    ========

    besselj, bessely, besselk, yn

    References
    ==========

    .. [1] https://dlmf.nist.gov/10.47

    c                 ó(  — |j                   rT|j                   rt        j                  S |j                  r,|j                  rt        j
                  S t        j                  S |t        j                  t        j                  fv rt        j
                  S y r<   )	r^   r   ry   rV   rf   rz   r{   r   r~   r>   s      r4   rB   zjn.eval¬  sa   € à�9Š9Ø�zŠzÜ—u‘u�Ø—’Ø—>’>ÜŸ6™6�Mä×,Ñ,Ð,Ø”×#Ñ#¤Q§Z¡ZÐ0Ñ0Ü—6‘6ˆMð 1r7   c                 óh   — t        t        d|z  z  «      t        |t        j                  z   |«      z  S r‰   )r   r   rX   r   r�   rŠ   s       r4   rÂ   zjn._eval_rewrite_as_besselj¹  s(   € Ü”B˜˜!™‘H‹~¤¨¬Q¯V©V©°QÓ 7Ñ7Ð7r7   c                 ó’   — t         j                  |z  t        t        d|z  z  «      z  t	        | t         j
                  z
  |«      z  S r‰   )r   r�   r   r   r�   r�   rŠ   s       r4   rŽ   zjn._eval_rewrite_as_bessely¼  s8   € Ü�}‰}˜bÑ ¤4¬¨A¨a©C©£>Ñ1´G¸R¸CÄ!Ç&Á&¹LÈ!Ó4LÑLÐLr7   c                 óJ   — t         j                  |z  t        | dz
  |«      z  S r  )r   r�   r]   rŠ   s       r4   rÉ   zjn._eval_rewrite_as_yn¿  s"   € Ü�}‰}˜rÑ"¤R¨¨¨a©°£^Ñ3Ð3r7   c                 óB   — t        | j                  | j                  «      S r<   )r  r5   r:   r  s     r4   r  z
jn._expandÂ  ó   € Ü�4—:‘:˜tŸ}™}Ó-Ð-r7   c                 óx   — | j                   j                  r$| j                  t        «      j	                  |«      S y r<   ©r5   r  rÄ   rX   Ú_eval_evalf©r3   Úprecs     r4   r  zjn._eval_evalfÅ  ó.   € Ø�:‰:× Ò Ø—<‘<¤Ó(×4Ñ4°TÓ:Ð:ð !r7   N)rq   rr   rs   rt   rv   rB   rÂ   rŽ   rÉ   r  r  r=   r7   r4   r\   r\   r  s6   „ ñ8ðr ñ
ó ð
ò8òMò4ò.ó;r7   r\   c                   óB   — e Zd ZdZed„ «       Zed„ «       Zd„ Zd„ Zd„ Z	y)r]   a¥  
    Spherical Bessel function of the second kind.

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

    This function is another solution to the spherical Bessel equation, and
    linearly independent from $j_n$. It can be defined as

    .. math ::
        y_\nu(z) = \sqrt{\frac{\pi}{2z}} Y_{\nu + \frac{1}{2}}(z),

    where $Y_\nu(z)$ is the Bessel function of the second kind.

    For integral orders $n$, $y_n$ is calculated using the formula:

    .. math:: y_n(z) = (-1)^{n+1} j_{-n-1}(z)

    Examples
    ========

    >>> from sympy import Symbol, yn, sin, cos, expand_func, besselj, bessely
    >>> z = Symbol("z")
    >>> nu = Symbol("nu", integer=True)
    >>> print(expand_func(yn(0, z)))
    -cos(z)/z
    >>> expand_func(yn(1, z)) == -cos(z)/z**2-sin(z)/z
    True
    >>> yn(nu, z).rewrite(besselj)
    (-1)**(nu + 1)*sqrt(2)*sqrt(pi)*sqrt(1/z)*besselj(-nu - 1/2, z)/2
    >>> yn(nu, z).rewrite(bessely)
    sqrt(2)*sqrt(pi)*sqrt(1/z)*bessely(nu + 1/2, z)/2
    >>> yn(2, 5.2+0.3j).evalf(20)
    0.18525034196069722536 + 0.014895573969924817587*I

    See Also
    ========

    besselj, bessely, besselk, jn

    References
    ==========

    .. [1] https://dlmf.nist.gov/10.47

    c                 ó˜   — t         j                  |dz   z  t        t        d|z  z  «      z  t	        | t         j
                  z
  |«      z  S rd   )r   r�   r   r   rX   r�   rŠ   s       r4   rÂ   zyn._eval_rewrite_as_besseljù  s<   € ä�}‰}˜r !™tÑ$¤t¬B°°!±©H£~Ñ5¼ÀÀÄaÇfÁfÁÈaÓ8PÑPÐPr7   c                 óh   — t        t        d|z  z  «      t        |t        j                  z   |«      z  S r‰   )r   r   r�   r   r�   rŠ   s       r4   rŽ   zyn._eval_rewrite_as_besselyý  s(   € ä”B˜˜!™‘H‹~¤¨¬Q¯V©V©°QÓ 7Ñ7Ð7r7   c                 óP   — t         j                  |dz   z  t        | dz
  |«      z  S r  )r   r�   r\   rŠ   s       r4   r‘   zyn._eval_rewrite_as_jn  s&   € Ü�}‰}˜r A™vÑ&¬¨R¨C°!©G°Q«Ñ7Ð7r7   c                 óB   — t        | j                  | j                  «      S r<   )r  r5   r:   r  s     r4   r  z
yn._expand  r  r7   c                 óx   — | j                   j                  r$| j                  t        «      j	                  |«      S y r<   )r5   r  rÄ   r�   r  r  s     r4   r  zyn._eval_evalf  r  r7   N)
rq   rr   rs   rt   rþ   rÂ   rŽ   r‘   r  r  r=   r7   r4   r]   r]   Ê  sA   „ ñ-ð\ ñQó ðQð ñ8ó ð8ò8ò.ó;r7   r]   c                   óJ   — e Zd Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	ÚSphericalHankelBasec                 ó   — | j                   }t        t        d|z  z  «      t        |t        j
                  z   |«      |t        z  t        j                  |dz   z  z  t        | t        j
                  z
  |«      z  z   z  S rD   )Ú_hankel_kind_signr   r   rX   r   r�   r   r�   ©r3   r@   rA   rn   Úhkss        r4   rÂ   z,SphericalHankelBase._eval_rewrite_as_besselj  sq   € ð
 ×$Ñ$ˆÜ”B˜˜!™‘H‹~œw r¬A¯F©F¡{°AÓ6Ø"¤1™u¤Q§]¡]°R¸±TÑ%:Ñ:¼7ÀBÀ3ÌÏÉÁ<ÐQRÓ;SÑSñ Tñ Uð 	Ur7   c                 óú   — | j                   }t        t        d|z  z  «      t        j                  |z  t        | t        j                  z
  |«      z  |t        z  t        |t        j                  z   |«      z  z   z  S r‰   )r&  r   r   r   r�   r�   r�   r   r'  s        r4   rŽ   z,SphericalHankelBase._eval_rewrite_as_bessely  si   € ð
 ×$Ñ$ˆÜ”B˜˜!™‘H‹~œqŸ}™}¨bÑ0´¸"¸¼q¿v¹v¹ÀqÓ1IÑIØ"¤1™u¤W¨R´!·&±&©[¸!Ó%<Ñ<ñ =ñ >ð 	>r7   c                 ó†   — | j                   }t        ||«      j                  t        «      |t        z  t        ||«      z  z   S r<   )r&  r\   rÄ   r]   r   r'  s        r4   rÉ   z'SphericalHankelBase._eval_rewrite_as_yn   s7   € Ø×$Ñ$ˆÜ�"�a‹y× Ñ ¤Ó$ s¬1¡u¬R°°A«Y¡Ñ6Ð6r7   c                 ó†   — | j                   }t        ||«      |t        z  t        ||«      j	                  t        «      z  z   S r<   )r&  r\   r   r]   rÄ   r'  s        r4   r‘   z'SphericalHankelBase._eval_rewrite_as_jn$  s8   € Ø×$Ñ$ˆÜ�"�a‹y˜3œq™5¤ B¨£×!2Ñ!2´2Ó!6Ñ6Ñ6Ð6r7   c                 óà   — | j                   j                  r | j                  di |¤ŽS | j                   }| j                  }| j                  }t        ||«      |t        z  t        ||«      z  z   S r  )r5   r  r  r:   r&  r\   r   r]   )r3   ri   r@   rA   r(  s        r4   rg   z%SphericalHankelBase._eval_expand_func(  s_   € Ø�:‰:× Ò Ø�4—<‘<Ñ( %Ñ(Ð(à—‘ˆBØ—‘ˆAØ×(Ñ(ˆCÜ�b˜!“9˜s¤1™u¤R¨¨A£Y™Ñ.Ð.r7   c                 ó¬   — | j                   }| j                  }| j                  }t        ||«      |t        z  t        ||«      z  z   j                  «       S r<   )r5   r:   r&  r  r   r  Úexpand)r3   ri   r†   rA   r(  s        r4   r  zSphericalHankelBase._expand1  sI   € Ø�J‰JˆØ�M‰MˆØ×$Ñ$ˆô �A�q“	˜C¤™E¤# a¨£)™OÑ+×3Ñ3Ó5Ð5r7   c                 óx   — | j                   j                  r$| j                  t        «      j	                  |«      S y r<   r  r  s     r4   r  zSphericalHankelBase._eval_evalf@  r  r7   N)rq   rr   rs   rþ   rÂ   rŽ   rÉ   r‘   rg   r  r  r=   r7   r4   r$  r$    sC   „ àñUó ðUð ñ>ó ð>ò7ò7ò/ò6ó;r7   r$  c                   ó8   — e Zd ZdZej
                  Zed„ «       Zy)rZ   a”  
    Spherical Hankel function of the first kind.

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

    This function is defined as

    .. math:: h_\nu^(1)(z) = j_\nu(z) + i y_\nu(z),

    where $j_\nu(z)$ and $y_\nu(z)$ are the spherical
    Bessel function of the first and second kinds.

    For integral orders $n$, $h_n^(1)$ is calculated using the formula:

    .. math:: h_n^(1)(z) = j_{n}(z) + i (-1)^{n+1} j_{-n-1}(z)

    Examples
    ========

    >>> from sympy import Symbol, hn1, hankel1, expand_func, yn, jn
    >>> z = Symbol("z")
    >>> nu = Symbol("nu", integer=True)
    >>> print(expand_func(hn1(nu, z)))
    jn(nu, z) + I*yn(nu, z)
    >>> print(expand_func(hn1(0, z)))
    sin(z)/z - I*cos(z)/z
    >>> print(expand_func(hn1(1, z)))
    -I*sin(z)/z - cos(z)/z + sin(z)/z**2 - I*cos(z)/z**2
    >>> hn1(nu, z).rewrite(jn)
    (-1)**(nu + 1)*I*jn(-nu - 1, z) + jn(nu, z)
    >>> hn1(nu, z).rewrite(yn)
    (-1)**nu*yn(-nu - 1, z) + I*yn(nu, z)
    >>> hn1(nu, z).rewrite(hankel1)
    sqrt(2)*sqrt(pi)*sqrt(1/z)*hankel1(nu, z)/2

    See Also
    ========

    hn2, jn, yn, hankel1, hankel2

    References
    ==========

    .. [1] https://dlmf.nist.gov/10.47

    c                 óF   — t        t        d|z  z  «      t        ||«      z  S r‰   )r   r   ró   rŠ   s       r4   Ú_eval_rewrite_as_hankel1zhn1._eval_rewrite_as_hankel1x  ó   € ä”B˜˜!™‘H‹~œg b¨!›nÑ,Ð,r7   N)	rq   rr   rs   rt   r   ry   r&  rþ   r2  r=   r7   r4   rZ   rZ   E  s&   „ ñ.ð` Ÿ™Ðàñ-ó ñ-r7   rZ   c                   ó:   — e Zd ZdZej
                   Zed„ «       Zy)r[   a’  
    Spherical Hankel function of the second kind.

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

    This function is defined as

    .. math:: h_\nu^(2)(z) = j_\nu(z) - i y_\nu(z),

    where $j_\nu(z)$ and $y_\nu(z)$ are the spherical
    Bessel function of the first and second kinds.

    For integral orders $n$, $h_n^(2)$ is calculated using the formula:

    .. math:: h_n^(2)(z) = j_{n} - i (-1)^{n+1} j_{-n-1}(z)

    Examples
    ========

    >>> from sympy import Symbol, hn2, hankel2, expand_func, jn, yn
    >>> z = Symbol("z")
    >>> nu = Symbol("nu", integer=True)
    >>> print(expand_func(hn2(nu, z)))
    jn(nu, z) - I*yn(nu, z)
    >>> print(expand_func(hn2(0, z)))
    sin(z)/z + I*cos(z)/z
    >>> print(expand_func(hn2(1, z)))
    I*sin(z)/z - cos(z)/z + sin(z)/z**2 + I*cos(z)/z**2
    >>> hn2(nu, z).rewrite(hankel2)
    sqrt(2)*sqrt(pi)*sqrt(1/z)*hankel2(nu, z)/2
    >>> hn2(nu, z).rewrite(jn)
    -(-1)**(nu + 1)*I*jn(-nu - 1, z) + jn(nu, z)
    >>> hn2(nu, z).rewrite(yn)
    (-1)**nu*yn(-nu - 1, z) - I*yn(nu, z)

    See Also
    ========

    hn1, jn, yn, hankel1, hankel2

    References
    ==========

    .. [1] https://dlmf.nist.gov/10.47

    c                 óF   — t        t        d|z  z  «      t        ||«      z  S r‰   )r   r   rõ   rŠ   s       r4   Ú_eval_rewrite_as_hankel2zhn2._eval_rewrite_as_hankel2°  r3  r7   N)	rq   rr   rs   rt   r   ry   r&  rþ   r6  r=   r7   r4   r[   r[   }  s(   „ ñ.ð` Ÿ™˜Ðàñ-ó ñ-r7   r[   c                 ó  ‡ ‡‡‡‡— ddl m} ‰dk(  rpddlm} ddlm}  ||«      }t        d|dz   «      D �cg c]C  }t        j                   |t        ‰ dz   «      j                  |«      t        |«      «      |«      ‘ŒE c}S ‰dk(  rdd	lmŠ 	 dd
lmŠ ˆ ˆfd„}	nt%        d«      ‚ˆˆfd„}
‰ |z   } |
|	|«      }|g}t        |dz
  «      D ]  } |
|	||z   «      }|j'                  |«       Œ! |S c c}w # t         $ r ddlmŠ ˆ ˆfd„}	Y Œew xY w)a­  
    Zeros of the spherical Bessel function of the first kind.

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

    This returns an array of zeros of $jn$ up to the $k$-th zero.

    * method = "sympy": uses `mpmath.besseljzero
      <https://mpmath.org/doc/current/functions/bessel.html#mpmath.besseljzero>`_
    * method = "scipy": uses the
      `SciPy's sph_jn <https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.jn_zeros.html>`_
      and
      `newton <https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.newton.html>`_
      to find all
      roots, which is faster than computing the zeros using a general
      numerical solver, but it requires SciPy and only works with low
      precision floating point numbers. (The function used with
      method="sympy" is a recent addition to mpmath; before that a general
      solver was used.)

    Examples
    ========

    >>> from sympy import jn_zeros
    >>> jn_zeros(2, 4, dps=5)
    [5.7635, 9.095, 12.323, 15.515]

    See Also
    ========

    jn, yn, besselj, besselk, bessely

    Parameters
    ==========

    n : integer
        order of Bessel function

    k : integer
        number of zeros to return


    r   )r   Úsympy)Úbesseljzero)Údps_to_precr9   g      à?Úscipy)Únewton)Úspherical_jnc                 ó   •—  ‰‰| «      S r<   r=   )r`   r†   r=  s    €€r4   ú<lambda>zjn_zeros.<locals>.<lambda>ï  s   ø€ ™, q¨!Ó,€ r7   )Úsph_jnc                 ó"   •—  ‰‰| «      d   d   S )Nr   rÝ   r=   )r`   r†   r@  s    €€r4   r?  zjn_zeros.<locals>.<lambda>ò  s   ø€ ™&  A›, q™/¨"Ñ-€ r7   úUnknown method.c                 ó:   •— ‰dk(  r ‰| |«      }|S t        d«      ‚)Nr;  rB  r  )rj   r`   r    Úmethodr<  s      €€r4   Úsolverzjn_zeros.<locals>.solverö  s+   ø€ Ø�WÒÙ˜!˜Q“<ˆDð ˆô &Ð&7Ó8Ð8r7   )Úmathr   Úmpmathr9  Úmpmath.libmp.libmpfr:  r°   r   Ú_from_mpmathr   Ú
_to_mpmathÚintÚscipy.optimizer<  Úscipy.specialr=  ÚImportErrorr@  r•   r±   )r†   rº   rD  ÚdpsÚmath_pir9  r:  r  Úlrj   rE  r    ÚrootsÚir<  r@  r=  s   ` `           @@@r4   Újn_zerosrT  µ  s  ü€ õZ #à�ÒÝ&Ý3Ù˜3Óˆô ˜q ! a¡%›ö*àô ×!Ñ!¡+¬a°°C±«j×.CÑ.CÀDÓ.IÜ.1°!«fó#6Ø7;õ=ò *ð 	*ð 
�7Ò	Ý)ð	.Ý2Ü,‰Aô
 "Ð"3Ó4Ð4õð ˆw‰;€Dá�!�T‹?€DØˆF€EÜ�1�q‘5‹\ò ˆá�a˜ ™Ó(ˆØ�‰�TÕðð €Lùò=*øô ò 	.Ý,Ü-ŠAð	.ús   ¶AC.ÂC3 Ã3DÄ
Dc                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zdd„Zy)ÚAiryBasezg
    Abstract base class for Airy functions.

    This class is meant to reduce code duplication.

    c                 óZ   — | j                  | j                  d   j                  «       «      S r»   )Úfuncr1   rO   r2   s    r4   rQ   zAiryBase._eval_conjugate  s"   € Ø�y‰y˜Ÿ™ 1™×/Ñ/Ó1Ó2Ð2r7   c                 ó4   — | j                   d   j                  S r»   )r1   r£   r2   s    r4   r¥   zAiryBase._eval_is_extended_real  s   € Ø�y‰y˜‰|×,Ñ,Ð,r7   c                 ó¾   — | j                   d   }|j                  «       }| j                  } ||«       ||«      z   dz  }t         ||«       ||«      z
  z  dz  }||fS )Nr   rE   )r1   rO   rX  r   )r3   Údeepri   rA   Úzcrj   ÚuÚvs           r4   Úas_real_imagzAiryBase.as_real_imag  s[   € Ø�I‰I�a‰LˆØ�[‰[‹]ˆØ�I‰IˆÙˆq‹T‘!�B“%‰Z˜‰NˆÜ‰q�‹u‘Q�q“T‰z‰N˜1ÑˆØ�!ˆtˆr7   c                 óH   —  | j                   dd|i|¤Ž\  }}||t        z  z   S )Nr[  r=   )r_  r   )r3   r[  ri   Úre_partÚim_parts        r4   Ú_eval_expand_complexzAiryBase._eval_expand_complex  s0   € Ø,˜4×,Ñ,Ñ@°$Ð@¸%Ñ@Ñˆ�Ø˜¤™Ñ"Ð"r7   N)T)rq   rr   rs   rt   rQ   r¥   r_  rc  r=   r7   r4   rV  rV  	  s   „ ñò3ò-óô#r7   rV  c                   ób   — e Zd ZdZdZdZed„ «       Zdd„Ze	e
d„ «       «       Zd„ Zd„ Zd	„ Zd
„ Zy)ÚairyaiaŽ  
    The Airy function $\operatorname{Ai}$ of the first kind.

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

    The Airy function $\operatorname{Ai}(z)$ is defined to be the function
    satisfying Airy's differential equation

    .. math::
        \frac{\mathrm{d}^2 w(z)}{\mathrm{d}z^2} - z w(z) = 0.

    Equivalently, for real $z$

    .. math::
        \operatorname{Ai}(z) := \frac{1}{\pi}
        \int_0^\infty \cos\left(\frac{t^3}{3} + z t\right) \mathrm{d}t.

    Examples
    ========

    Create an Airy function object:

    >>> from sympy import airyai
    >>> from sympy.abc import z

    >>> airyai(z)
    airyai(z)

    Several special values are known:

    >>> airyai(0)
    3**(1/3)/(3*gamma(2/3))
    >>> from sympy import oo
    >>> airyai(oo)
    0
    >>> airyai(-oo)
    0

    The Airy function obeys the mirror symmetry:

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

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(airyai(z), z)
    airyaiprime(z)
    >>> diff(airyai(z), z, 2)
    z*airyai(z)

    Series expansion is also supported:

    >>> from sympy import series
    >>> series(airyai(z), z, 0, 3)
    3**(5/6)*gamma(1/3)/(6*pi) - 3**(1/6)*z*gamma(2/3)/(2*pi) + O(z**3)

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

    >>> airyai(-2).evalf(50)
    0.22740742820168557599192443603787379946077222541710

    Rewrite $\operatorname{Ai}(z)$ in terms of hypergeometric functions:

    >>> from sympy import hyper
    >>> airyai(z).rewrite(hyper)
    -3**(2/3)*z*hyper((), (4/3,), z**3/9)/(3*gamma(1/3)) + 3**(1/3)*hyper((), (2/3,), z**3/9)/(3*gamma(2/3))

    See Also
    ========

    airybi: Airy function of the second kind.
    airyaiprime: Derivative of the Airy function of the first kind.
    airybiprime: Derivative of the Airy function of the second kind.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Airy_function
    .. [2] https://dlmf.nist.gov/9
    .. [3] https://encyclopediaofmath.org/wiki/Airy_functions
    .. [4] https://mathworld.wolfram.com/AiryFunctions.html

    r9   Tc                 óð  — |j                   r¨|t        j                  u rt        j                  S |t        j                  u rt        j                  S |t        j
                  u rt        j                  S |j                  r6t        j                  dt        dd«      z  t        t        dd«      «      z  z  S |j                  r6t        j                  dt        dd«      z  t        t        dd«      «      z  z  S y )NrÌ   rE   )
Ú	is_Numberr   r}   r~   rz   r   r^   ry   r   r&   ©r?   rœ   s     r4   rB   zairyai.eval€  s°   € à�=Š=Ø”a—e‘e‰|Ü—u‘u�ØœŸ
™
Ñ"Ü—v‘v�Øœ×*Ñ*Ñ*Ü—v‘v�Ø—’Ü—u‘u ¤8¨A¨q£>Ñ 1´E¼(À1Àa».Ó4IÑ IÑJÐJØ�;Š;Ü—5‘5˜Aœx¨¨1›~Ñ-´´h¸qÀ!³nÓ0EÑEÑFÐFð r7   c                 óT   — |dk(  rt        | j                  d   «      S t        | |«      ‚©Nr9   r   )Úairyaiprimer1   r
   rI   s     r4   rK   zairyai.fdiffŽ  ó)   € Ø�qŠ=Ü˜tŸy™y¨™|Ó,Ð,ä$ T¨8Ó4Ð4r7   c           	      óT  — | dk  rt         j                  S t        |«      }t        |«      dkD  rÜ|d   }t	        d«      |z  |  z  t	        d«      |z  | dz   z  z  t        t        | t        dd«      z  t        dd«      z   z  «      z  t        | «      z  t        | dz  t        dd«      z   «      z  t        t        | t        dd«      z  t        dd«      z   z  «      t        | dz   «      z  t        | dz  t        dd«      z   «      z  z  |z  S t         j                  dt        dd«      z  t        z  z  t        | t         j                  z   t        d«      z  «      z  t        t        dd«      t        z  | t         j                  z   z  «      z  t        | «      z  t	        d«      |z  | z  z  S )Nr   r9   rÝ   rÌ   rE   r“   )r   rz   r   Úlenr   r   r   r   r   r&   ry   ©r†   r`   Úprevious_termsrÚ   s       r4   Útaylor_termzairyai.taylor_term”  sÆ  € ð ˆqŠ5Ü—6‘6ˆMä˜“
ˆAÜ�>Ó" QÒ&Ø" 2Ñ&�Ü˜a› ™ q bÑ)¬4°«7°1©9¸¸A¹Ñ*>Ñ>¼sÄ2ÀqÌÐRSÐUVËÑGWÔZbÐcdÐfgÓZhÑGhÑCiÓ?jÑjÔktÐuvÓkwÑwÜ˜a ™c¤H¨Q°£NÑ2Ó3ñ4Ü58¼¸Q¼xÈÈ1»~Ñ=MÔPXÐYZÐ\]ÓP^Ñ=^Ñ9_Ó5`ÔajÐklÐopÑkpÓaqÑ5qÔrwÐxyÐz{Ñx{ô  Gð  HIð  KLó  Mñ  yMó  sNñ  6NñOð RSñSð Tô Ÿ™˜q¤(¨1¨a£.Ñ0´Ñ3Ñ4´u¸aÄÇÁ¹gÄqÈÃt¹^Ó7LÑLÌsÔS[Ð\]Ð_`ÓSaÔbdÑSdÐfgÔhi×hmÑhmÑfmÑSnÓOoÑoÜ! !›ñ%Ü(,¨Q«°©	°A¡~ñ6ð 7r7   c                 óì   — t        dd«      }t        dd«      }t        | t        dd«      «      }t        |«      j                  r0|t	        | «      z  t        | ||z  «      t        |||z  «      z   z  S y ©Nr9   rÌ   rE   ©r   r   r"   rh   r   rX   ©r3   rA   rn   ÚotÚttra   s         r4   rÂ   zairyai._eval_rewrite_as_besselj£  sp   € Ü�a˜‹^ˆÜ�a˜‹^ˆÜ��”H˜Q “NÓ#ˆÜˆa‹5×ÒØ”d˜A˜2“h‘;¤'¨2¨#¨r°!©tÓ"4´w¸rÀ2ÀaÁ4Ó7HÑ"HÑIÐIð r7   c                 óh  — t        dd«      }t        dd«      }t        |t        dd«      «      }t        |«      j                  r/|t	        |«      z  t        | ||z  «      t        |||z  «      z
  z  S |t        ||«      t        | ||z  «      z  |t        || «      z  t        |||z  «      z  z
  z  S rs  ©r   r   r"   rf   r   rY   ru  s         r4   r‹   zairyai._eval_rewrite_as_besseliª  s®   € Ü�a˜‹^ˆÜ�a˜‹^ˆÜ�”8˜A˜q“>Ó"ˆÜˆa‹5×ÒØ”d˜1“g‘:¤¨"¨¨b°©dÓ!3´g¸bÀ"ÀQÁ$Ó6GÑ!GÑHÐHà”s˜1˜b“z¤'¨2¨#¨r°!©tÓ"4Ñ4°q¼¸QÀÀ»±}ÄWÈRÐQSÐTUÑQUÓEVÑ7VÑVÑWÐWr7   c           	      ó>  — t         j                  dt        dd«      z  t        t        dd«      «      z  z  }|t	        dd«      t        t        dd«      «      z  z  }|t        g t        dd«      g|dz  dz  «      z  |t        g t        dd«      g|dz  dz  «      z  z
  S )NrÌ   rE   r9   é	   r“   )r   ry   r   r&   r    r)   ©r3   rA   rn   Úpf1Úpf2s        r4   Ú_eval_rewrite_as_hyperzairyai._eval_rewrite_as_hyper³  s›   € Ü�e‰e�qœ( 1 a›.Ñ(¬¬x¸¸1«~Ó)>Ñ>Ñ?ˆØ”4˜˜1“:œe¤H¨Q°£NÓ3Ñ3Ñ4ˆØ”U˜2¤¨¨A£Ð/°°A±°a±Ó8Ñ8¸3ÄÀrÌHÐUVÐXYËNÐK[Ð]^Ð`aÑ]aÐbcÑ]cÓAdÑ;dÑdÐdr7   c                 ó~  — | j                   d   }|j                  }t        |«      dk(  �r|j                  «       }t	        d|g¬«      }t	        d|g¬«      }t	        d|g¬«      }t	        d|g¬«      }|j                  ||||z  z  |z  z  «      }	|	�«|	|   }d|z  j                  r–|	|   }|	|   }|	|   }|||z  z  |z  ||z  |||z  z  z  z  }
|||z  z  |||z  z  z  }t        j                  |
t        j                  z   t        |«      z  |
t        j                  z
  t        d«      z  t        |«      z  z
  z  S y y y ©	Nr   r9   r�   )ÚexcludeÚdÚmr†   rÌ   )r1   Úfree_symbolsrn  Úpopr   ÚmatchrV   r   r�   ry   re  r   Úairybi©r3   ri   rœ   ÚsymbsrA   r�   rƒ  r„  r†   ÚMÚpfÚnewargs               r4   rg   zairyai._eval_expand_func¸  sR  € Ø�i‰i˜‰lˆØ× Ñ ˆäˆu‹:˜‹?Ø—	‘	“ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAØ—	‘	˜!˜Q˜q !™t™V a™K™-Ó(ˆAØˆ}Ø�a‘D�ð �a‘C×#Ò#Ø˜!™�AØ˜!™�AØ˜!™�AØ˜a ™d™( Q™¨!¨Q©$°°Q°q±S±©/Ñ:�BØ  A¡™X¨¨A¨a©C©Ñ0�FÜŸ6™6 b¬1¯5©5¡j´&¸³.Ñ%@ÀBÌÏÉÁJÔPTÐUVÓPWÑCWÔX^Ð_eÓXfÑCfÑ%fÑgÐgð $ð	 ð r7   N©r9   ©rq   rr   rs   rt   ÚnargsÚ
unbranchedrv   rB   rK   Ústaticmethodr   rq  rÂ   r‹   r  rg   r=   r7   r4   re  re  $  sb   „ ñVðp €EØ€JàñGó ðGó5ð Øñ7ó ó ð7òJòXòeó
hr7   re  c                   ób   — e Zd ZdZdZdZed„ «       Zdd„Ze	e
d„ «       «       Zd„ Zd„ Zd	„ Zd
„ Zy)rˆ  aâ  
    The Airy function $\operatorname{Bi}$ of the second kind.

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

    The Airy function $\operatorname{Bi}(z)$ is defined to be the function
    satisfying Airy's differential equation

    .. math::
        \frac{\mathrm{d}^2 w(z)}{\mathrm{d}z^2} - z w(z) = 0.

    Equivalently, for real $z$

    .. math::
        \operatorname{Bi}(z) := \frac{1}{\pi}
                 \int_0^\infty
                   \exp\left(-\frac{t^3}{3} + z t\right)
                   + \sin\left(\frac{t^3}{3} + z t\right) \mathrm{d}t.

    Examples
    ========

    Create an Airy function object:

    >>> from sympy import airybi
    >>> from sympy.abc import z

    >>> airybi(z)
    airybi(z)

    Several special values are known:

    >>> airybi(0)
    3**(5/6)/(3*gamma(2/3))
    >>> from sympy import oo
    >>> airybi(oo)
    oo
    >>> airybi(-oo)
    0

    The Airy function obeys the mirror symmetry:

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

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(airybi(z), z)
    airybiprime(z)
    >>> diff(airybi(z), z, 2)
    z*airybi(z)

    Series expansion is also supported:

    >>> from sympy import series
    >>> series(airybi(z), z, 0, 3)
    3**(1/3)*gamma(1/3)/(2*pi) + 3**(2/3)*z*gamma(2/3)/(2*pi) + O(z**3)

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

    >>> airybi(-2).evalf(50)
    -0.41230258795639848808323405461146104203453483447240

    Rewrite $\operatorname{Bi}(z)$ in terms of hypergeometric functions:

    >>> from sympy import hyper
    >>> airybi(z).rewrite(hyper)
    3**(1/6)*z*hyper((), (4/3,), z**3/9)/gamma(1/3) + 3**(5/6)*hyper((), (2/3,), z**3/9)/(3*gamma(2/3))

    See Also
    ========

    airyai: Airy function of the first kind.
    airyaiprime: Derivative of the Airy function of the first kind.
    airybiprime: Derivative of the Airy function of the second kind.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Airy_function
    .. [2] https://dlmf.nist.gov/9
    .. [3] https://encyclopediaofmath.org/wiki/Airy_functions
    .. [4] https://mathworld.wolfram.com/AiryFunctions.html

    r9   Tc                 óð  — |j                   r¨|t        j                  u rt        j                  S |t        j                  u rt        j                  S |t        j                  u rt        j
                  S |j                  r6t        j                  dt        dd«      z  t        t        dd«      «      z  z  S |j                  r6t        j                  dt        dd«      z  t        t        dd«      «      z  z  S y )NrÌ   r9   é   rE   )
rg  r   r}   r~   r   rz   r^   ry   r   r&   rh  s     r4   rB   zairybi.eval.  s±   € à�=Š=Ø”a—e‘e‰|Ü—u‘u�ØœŸ
™
Ñ"Ü—z‘zÐ!Øœ×*Ñ*Ñ*Ü—v‘v�Ø—’Ü—u‘u ¤8¨A¨q£>Ñ 1´E¼(À1Àa».Ó4IÑ IÑJÐJà�;Š;Ü—5‘5˜Aœx¨¨1›~Ñ-´´h¸qÀ!³nÓ0EÑEÑFÐFð r7   c                 óT   — |dk(  rt        | j                  d   «      S t        | |«      ‚rj  )Úairybiprimer1   r
   rI   s     r4   rK   zairybi.fdiff=  rl  r7   c           
      ól  — | dk  rt         j                  S t        |«      }t        |«      dkD  râ|d   }t	        d«      |z  t        t        t        dd«      t        z  | t         j                  z   z  «      «      z  t        | t         j                  z
  t        d«      z  «      z  | t         j                  z   t        t        t        dd«      t        z  | t         j                  z   z  «      «      z  t        | dz
  t        d«      z  «      z  z  |z  S t         j                  t        dd«      t        z  z  t        | t         j                  z   t        d«      z  «      z  t        t        t        dd«      t        z  | t         j                  z   z  «      «      z  t        | «      z  t	        d«      |z  | z  z  S )Nr   r9   rÝ   rÌ   rE   r•  )r   rz   r   rn  r   r!   r   r   r   ry   r   r   r�   r    r&   ro  s       r4   rq  zairybi.taylor_termC  sw  € ð ˆqŠ5Ü—6‘6ˆMä˜“
ˆAÜ�>Ó" QÒ&Ø" 2Ñ&�Ü˜Q› ™	¤C¬¬H°Q¸«N¼2Ñ,=¸qÄ1Ç5Á5¹yÑ,IÓ(JÓ$KÑKÌiÐYZÔ]^×]bÑ]bÑYbÔdeÐfgÓdhÑXhÓNiÑiØœaŸe™e™)¤s¬3¬x¸¸1«~¼bÑ/@À!ÄaÇfÁfÁ*Ñ/MÓ+NÓ'OÑOÔR[Ð]^ÐabÑ]bÔdeÐfgÓdhÑ\hÓRiÑiñkØmnñoð pô Ÿ™œt A q›z¬"™}Ñ-´°q¼1¿5¹5±yÄ!ÀAÃ$Ñ6FÓ0GÑGÌ#ÌcÔRZÐ[\Ð^_ÓR`ÔacÑRcÐefÔij×inÑinÑenÑRoÓNpÓJqÑqÜ! !›ñ%Ü(,¨Q«°©	°A¡~ñ6ð 7r7   c                 óì   — t        dd«      }t        dd«      }t        | t        dd«      «      }t        |«      j                  r0t	        | dz  «      t        | ||z  «      t        |||z  «      z
  z  S y rs  rt  ru  s         r4   rÂ   zairybi._eval_rewrite_as_besseljR  sp   € Ü�a˜‹^ˆÜ�a˜‹^ˆÜ��”H˜Q “NÓ#ˆÜˆa‹5×ÒÜ˜˜˜1™“:¤¨"¨¨b°©dÓ!3´g¸bÀ"ÀQÁ$Ó6GÑ!GÑHÐHð r7   c                 ó”  — t        dd«      }t        dd«      }t        |t        dd«      «      }t        |«      j                  r8t	        |«      t	        d«      z  t        | ||z  «      t        |||z  «      z   z  S t        ||«      }t        || «      }t	        |«      |t        | ||z  «      z  ||z  t        |||z  «      z  z   z  S rs  ry  ©r3   rA   rn   rv  rw  ra   rØ   r�   s           r4   r‹   zairybi._eval_rewrite_as_besseliY  s½   € Ü�a˜‹^ˆÜ�a˜‹^ˆÜ�”8˜A˜q“>Ó"ˆÜˆa‹5×ÒÜ˜“7œ4 ›7‘?¤g¨r¨c°2°a±4Ó&8¼7À2ÀrÈ!ÁtÓ;LÑ&LÑMÐMä�A�r“
ˆAÜ�A˜�s“ˆAÜ˜“8˜Qœw¨ s¨B¨q©DÓ1Ñ1°A°a±C¼ÀÀBÀqÁDÓ8IÑ4IÑIÑJÐJr7   c           	      ó8  — t         j                  t        dd«      t        t	        dd«      «      z  z  }|t        dd«      z  t        t	        dd«      «      z  }|t        g t	        dd«      g|dz  dz  «      z  |t        g t	        dd«      g|dz  dz  «      z  z   S )NrÌ   r•  rE   r9   r{  r“   )r   ry   r    r&   r   r)   r|  s        r4   r  zairybi._eval_rewrite_as_hyperd  s•   € Ü�e‰e”t˜A˜q“z¤%¬°°A«Ó"7Ñ7Ñ8ˆØ”�Q˜“
‰lœU¤8¨A¨q£>Ó2Ñ2ˆØ”U˜2¤¨¨A£Ð/°°A±°a±Ó8Ñ8¸3ÄÀrÌHÐUVÐXYËNÐK[Ð]^Ð`aÑ]aÐbcÑ]cÓAdÑ;dÑdÐdr7   c                 ó~  — | j                   d   }|j                  }t        |«      dk(  �r|j                  «       }t	        d|g¬«      }t	        d|g¬«      }t	        d|g¬«      }t	        d|g¬«      }|j                  ||||z  z  |z  z  «      }	|	�«|	|   }d|z  j                  r–|	|   }|	|   }|	|   }|||z  z  |z  ||z  |||z  z  z  z  }
|||z  z  |||z  z  z  }t        j                  t        d«      t        j                  |
z
  z  t        |«      z  t        j                  |
z   t        |«      z  z   z  S y y y r�  )r1   r…  rn  r†  r   r‡  rV   r   r�   r   ry   re  rˆ  r‰  s               r4   rg   zairybi._eval_expand_funci  sP  € Ø�i‰i˜‰lˆØ× Ñ ˆäˆu‹:˜‹?Ø—	‘	“ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAØ—	‘	˜!˜Q˜q !™t™V a™K™-Ó(ˆAØˆ}Ø�a‘D�ð �a‘C×#Ò#Ø˜!™�AØ˜!™�AØ˜!™�AØ˜a ™d™( Q™¨!¨Q©$°°Q°q±S±©/Ñ:�BØ  A¡™X¨¨A¨a©C©Ñ0�FÜŸ6™6¤T¨!£W¬a¯e©e°b©jÑ%9¼&À».Ñ%HÌAÏEÉEÐTVÉJÔX^Ð_eÓXfÑKfÑ%fÑgÐgð $ð	 ð r7   NrŽ  r�  r=   r7   r4   rˆ  rˆ  Ð  sb   „ ñXðt €EØ€JàñGó ðGó5ð Øñ7ó ó ð7òIò	Kòeó
hr7   rˆ  c                   óN   — e Zd ZdZdZdZed„ «       Zdd„Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zy)rk  a%  
    The derivative $\operatorname{Ai}^\prime$ of the Airy function of the first
    kind.

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

    The Airy function $\operatorname{Ai}^\prime(z)$ is defined to be the
    function

    .. math::
        \operatorname{Ai}^\prime(z) := \frac{\mathrm{d} \operatorname{Ai}(z)}{\mathrm{d} z}.

    Examples
    ========

    Create an Airy function object:

    >>> from sympy import airyaiprime
    >>> from sympy.abc import z

    >>> airyaiprime(z)
    airyaiprime(z)

    Several special values are known:

    >>> airyaiprime(0)
    -3**(2/3)/(3*gamma(1/3))
    >>> from sympy import oo
    >>> airyaiprime(oo)
    0

    The Airy function obeys the mirror symmetry:

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

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(airyaiprime(z), z)
    z*airyai(z)
    >>> diff(airyaiprime(z), z, 2)
    z*airyaiprime(z) + airyai(z)

    Series expansion is also supported:

    >>> from sympy import series
    >>> series(airyaiprime(z), z, 0, 3)
    -3**(2/3)/(3*gamma(1/3)) + 3**(1/3)*z**2/(6*gamma(2/3)) + O(z**3)

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

    >>> airyaiprime(-2).evalf(50)
    0.61825902074169104140626429133247528291577794512415

    Rewrite $\operatorname{Ai}^\prime(z)$ in terms of hypergeometric functions:

    >>> from sympy import hyper
    >>> airyaiprime(z).rewrite(hyper)
    3**(1/3)*z**2*hyper((), (5/3,), z**3/9)/(6*gamma(2/3)) - 3**(2/3)*hyper((), (1/3,), z**3/9)/(3*gamma(1/3))

    See Also
    ========

    airyai: Airy function of the first kind.
    airybi: Airy function of the second kind.
    airybiprime: Derivative of the Airy function of the second kind.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Airy_function
    .. [2] https://dlmf.nist.gov/9
    .. [3] https://encyclopediaofmath.org/wiki/Airy_functions
    .. [4] https://mathworld.wolfram.com/AiryFunctions.html

    r9   Tc                 ó(  — |j                   rD|t        j                  u rt        j                  S |t        j                  u rt        j                  S |j
                  r6t        j                  dt        dd«      z  t        t        dd«      «      z  z  S y )NrÌ   r9   )	rg  r   r}   r~   rz   r^   r�   r   r&   rh  s     r4   rB   zairyaiprime.evalÖ  sh   € à�=Š=Ø”a—e‘e‰|Ü—u‘u�ØœŸ
™
Ñ"Ü—v‘v�à�;Š;Ü—=‘= A¤x°°1£~Ñ$5¼¼hÀqÈ!»nÓ8MÑ$MÑNÐNð r7   c                 ót   — |dk(  r(| j                   d   t        | j                   d   «      z  S t        | |«      ‚rj  )r1   re  r
   rI   s     r4   rK   zairyaiprime.fdiffá  ó6   € Ø�qŠ=Ø—9‘9˜Q‘<¤ t§y¡y°¡|Ó 4Ñ4Ð4ä$ T¨8Ó4Ð4r7   c                 óØ   — | j                   d   j                  |«      }t        |«      5  t        j                  |d¬«      }d d d «       t        j                  |«      S # 1 sw Y   ŒxY w©Nr   r9   )Ú
derivative)r1   rJ  r,   r+   re  r   rI  ©r3   r  rA   Úress       r4   r  zairyaiprime._eval_evalfç  óY   € Ø�I‰I�a‰L×#Ñ# DÓ)ˆÜ�d‹^ñ 	-Ü—)‘)˜A¨!Ô,ˆC÷	-ä× Ñ   dÓ+Ð+÷	-ð 	-úó   ªA Á A)c                 óÀ   — t        dd«      }t        | t        dd«      «      }t        |«      j                  r&|dz  t	        | ||z  «      t	        |||z  «      z
  z  S y ©NrE   rÌ   )r   r   r"   rh   rX   ©r3   rA   rn   rw  ra   s        r4   rÂ   z$airyaiprime._eval_rewrite_as_besseljí  s_   € Ü�a˜‹^ˆÜ��”H˜Q “NÓ#ˆÜˆa‹5×ÒØ�Q‘3œ' 2 # r¨!¡tÓ,¬w°r¸2¸a¹4Ó/@Ñ@ÑAÐAð r7   c                 óŠ  — t        dd«      }t        dd«      }|t        |t        dd«      «      z  }t        |«      j                  r |dz  t	        ||«      t	        | |«      z
  z  S t        |t        dd«      «      }t        ||«      }t        || «      }||dz  |z  t	        |||z  «      z  |t	        | ||z  «      z  z
  z  S rs  )r   r   r"   rf   rY   r›  s           r4   r‹   z$airyaiprime._eval_rewrite_as_besselió  sÂ   € Ü�a˜‹^ˆÜ�a˜‹^ˆØ”�Qœ  A›Ó'Ñ'ˆÜˆa‹5×ÒØ�Q‘3œ' " a›.¬7°B°3¸«?Ñ:Ñ;Ð;ä�A”x  1“~Ó&ˆAÜ�A�r“
ˆAÜ�A˜�s“ˆAØ˜˜A™˜a™¤¨¨B¨q©DÓ 1Ñ1°A´g¸r¸cÀ2ÀaÁ4Ó6HÑ4HÑHÑIÐIr7   c           	      ó.  — |dz  ddt        dd«      z  z  t        t        dd«      «      z  z  }dt        dd«      t        t        dd«      «      z  z  }|t        g t        dd«      g|dz  dz  «      z  |t        g t        dd«      g|dz  dz  «      z  z
  S )NrE   rÌ   r9   é   r{  )r   r&   r    r)   r|  s        r4   r  z"airyaiprime._eval_rewrite_as_hyperÿ  s    € Ø�‰d�a˜œ8 A q›>Ñ)Ñ)¬%´¸¸A³Ó*?Ñ?Ñ@ˆØ”4˜˜1“:œe¤H¨Q°£NÓ3Ñ3Ñ4ˆØ”U˜2¤¨¨A£Ð/°°A±°a±Ó8Ñ8¸3ÄÀrÌHÐUVÐXYËNÐK[Ð]^Ð`aÑ]aÐbcÑ]cÓAdÑ;dÑdÐdr7   c                 ó~  — | j                   d   }|j                  }t        |«      dk(  �r|j                  «       }t	        d|g¬«      }t	        d|g¬«      }t	        d|g¬«      }t	        d|g¬«      }|j                  ||||z  z  |z  z  «      }	|	�«|	|   }d|z  j                  r–|	|   }|	|   }|	|   }||z  |||z  z  z  |||z  z  |z  z  }
|||z  z  |||z  z  z  }t        j                  |
t        j                  z   t        |«      z  |
t        j                  z
  t        d«      z  t        |«      z  z   z  S y y y r�  )r1   r…  rn  r†  r   r‡  rV   r   r�   ry   rk  r   r—  r‰  s               r4   rg   zairyaiprime._eval_expand_func  sS  € Ø�i‰i˜‰lˆØ× Ñ ˆäˆu‹:˜‹?Ø—	‘	“ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAØ—	‘	˜!˜Q˜q !™t™V a™K™-Ó(ˆAØˆ}Ø�a‘D�ð
 �a‘C×#Ò#Ø˜!™�AØ˜!™�AØ˜!™�AØ˜Q™$  Q q¡S¡™/¨a°!°Q±$©h¸©]Ñ:�BØ  A¡™X¨¨A¨a©C©Ñ0�FÜŸ6™6 b¬1¯5©5¡j´+¸fÓ2EÑ%EÈÌaÏeÉeÉÔUYÐZ[ÓU\ÑH\Ô]hÐioÓ]pÑHpÑ%pÑqÐqð $ð ð r7   NrŽ  ©rq   rr   rs   rt   r�  r‘  rv   rB   rK   r  rÂ   r‹   r  rg   r=   r7   r4   rk  rk  �  sK   „ ñOðb €EØ€JàñOó ðOó5ò,òBò
Jòeó
rr7   rk  c                   óN   — e Zd ZdZdZdZed„ «       Zdd„Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zy)r—  a6  
    The derivative $\operatorname{Bi}^\prime$ of the Airy function of the first
    kind.

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

    The Airy function $\operatorname{Bi}^\prime(z)$ is defined to be the
    function

    .. math::
        \operatorname{Bi}^\prime(z) := \frac{\mathrm{d} \operatorname{Bi}(z)}{\mathrm{d} z}.

    Examples
    ========

    Create an Airy function object:

    >>> from sympy import airybiprime
    >>> from sympy.abc import z

    >>> airybiprime(z)
    airybiprime(z)

    Several special values are known:

    >>> airybiprime(0)
    3**(1/6)/gamma(1/3)
    >>> from sympy import oo
    >>> airybiprime(oo)
    oo
    >>> airybiprime(-oo)
    0

    The Airy function obeys the mirror symmetry:

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

    Differentiation with respect to $z$ is supported:

    >>> from sympy import diff
    >>> diff(airybiprime(z), z)
    z*airybi(z)
    >>> diff(airybiprime(z), z, 2)
    z*airybiprime(z) + airybi(z)

    Series expansion is also supported:

    >>> from sympy import series
    >>> series(airybiprime(z), z, 0, 3)
    3**(1/6)/gamma(1/3) + 3**(5/6)*z**2/(6*gamma(2/3)) + O(z**3)

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

    >>> airybiprime(-2).evalf(50)
    0.27879516692116952268509756941098324140300059345163

    Rewrite $\operatorname{Bi}^\prime(z)$ in terms of hypergeometric functions:

    >>> from sympy import hyper
    >>> airybiprime(z).rewrite(hyper)
    3**(5/6)*z**2*hyper((), (5/3,), z**3/9)/(6*gamma(2/3)) + 3**(1/6)*hyper((), (1/3,), z**3/9)/gamma(1/3)

    See Also
    ========

    airyai: Airy function of the first kind.
    airybi: Airy function of the second kind.
    airyaiprime: Derivative of the Airy function of the first kind.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Airy_function
    .. [2] https://dlmf.nist.gov/9
    .. [3] https://encyclopediaofmath.org/wiki/Airy_functions
    .. [4] https://mathworld.wolfram.com/AiryFunctions.html

    r9   Tc                 ó¬  — |j                   r—|t        j                  u rt        j                  S |t        j                  u rt        j                  S |t        j                  u rt        j
                  S |j                  r%dt        dd«      z  t        t        dd«      «      z  S |j                  r%dt        dd«      z  t        t        dd«      «      z  S y )NrÌ   r9   r•  )	rg  r   r}   r~   r   rz   r^   r   r&   rh  s     r4   rB   zairybiprime.evalu  sŸ   € à�=Š=Ø”a—e‘e‰|Ü—u‘u�ØœŸ
™
Ñ"Ü—z‘zÐ!Øœ×*Ñ*Ñ*Ü—v‘v�Ø—’Øœ( 1 a›.Ñ(¬5´¸!¸Q³Ó+@Ñ@Ð@à�;Š;Ø”h˜q !“nÑ$¤u¬X°a¸«^Ó'<Ñ<Ð<ð r7   c                 ót   — |dk(  r(| j                   d   t        | j                   d   «      z  S t        | |«      ‚rj  )r1   rˆ  r
   rI   s     r4   rK   zairybiprime.fdiff…  r¡  r7   c                 óØ   — | j                   d   j                  |«      }t        |«      5  t        j                  |d¬«      }d d d «       t        j                  |«      S # 1 sw Y   ŒxY wr£  )r1   rJ  r,   r+   rˆ  r   rI  r¥  s       r4   r  zairybiprime._eval_evalf‹  r§  r¨  c                 óÎ   — t        dd«      }|t        | t        dd«      «      z  }t        |«      j                  r*| t	        d«      z  t        | |«      t        ||«      z   z  S y rª  rt  r«  s        r4   rÂ   z$airybiprime._eval_rewrite_as_besselj‘  s`   € Ü�a˜‹^ˆØ”�a�Rœ ! Q›Ó(Ñ(ˆÜˆa‹5×ÒØ�2”d˜1“g‘:¤¨"¨¨a£´7¸2¸q³>Ñ!AÑBÐBð r7   c                 ó®  — t        dd«      }t        dd«      }|t        |t        dd«      «      z  }t        |«      j                  r)|t	        d«      z  t        | |«      t        ||«      z   z  S t        |t        dd«      «      }t        ||«      }t        || «      }t	        |«      |t        | ||z  «      z  |dz  |z  t        |||z  «      z  z   z  S rs  ry  r›  s           r4   r‹   z$airybiprime._eval_rewrite_as_besseli—  sÊ   € Ü�a˜‹^ˆÜ�a˜‹^ˆØ”�Qœ  A›Ó'Ñ'ˆÜˆa‹5×ÒØ”T˜!“W‘9¤¨¨¨Q£´'¸"¸a³.Ñ @ÑAÐAä�A”x  1“~Ó&ˆAÜ�A�r“
ˆAÜ�A˜�s“ˆAÜ˜“8˜q¤¨"¨¨b°©dÓ!3Ñ3°a¸±d¸1±f¼WÀRÈÈAÉÓ=NÑ6NÑNÑOÐOr7   c           	      ó"  — |dz  dt        dd«      z  t        t        dd«      «      z  z  }t        dd«      t        t        dd«      «      z  }|t        g t        dd«      g|dz  dz  «      z  |t        g t        dd«      g|dz  dz  «      z  z   S )NrE   rÌ   r•  r9   r®  r{  )r    r&   r   r)   r|  s        r4   r  z"airybiprime._eval_rewrite_as_hyper£  s•   € Ø�‰d�aœ˜Q ›
‘l¤5¬°!°Q«Ó#8Ñ8Ñ9ˆÜ�1�a‹jœ5¤¨!¨Q£Ó0Ñ0ˆØ”U˜2¤¨¨A£Ð/°°A±°a±Ó8Ñ8¸3ÄÀrÌHÐUVÐXYËNÐK[Ð]^Ð`aÑ]aÐbcÑ]cÓAdÑ;dÑdÐdr7   c                 ó~  — | j                   d   }|j                  }t        |«      dk(  �r|j                  «       }t	        d|g¬«      }t	        d|g¬«      }t	        d|g¬«      }t	        d|g¬«      }|j                  ||||z  z  |z  z  «      }	|	�«|	|   }d|z  j                  r–|	|   }|	|   }|	|   }||z  |||z  z  z  |||z  z  |z  z  }
|||z  z  |||z  z  z  }t        j                  t        d«      |
t        j                  z
  z  t        |«      z  |
t        j                  z   t        |«      z  z   z  S y y y r�  )r1   r…  rn  r†  r   r‡  rV   r   r�   r   ry   rk  r—  r‰  s               r4   rg   zairybiprime._eval_expand_func¨  sU  € Ø�i‰i˜‰lˆØ× Ñ ˆäˆu‹:˜‹?Ø—	‘	“ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAÜ�S 1 #Ô&ˆAØ—	‘	˜!˜Q˜q !™t™V a™K™-Ó(ˆAØˆ}Ø�a‘D�ð
 �a‘C×#Ò#Ø˜!™�AØ˜!™�AØ˜!™�AØ˜Q™$  Q q¡S¡™/¨a°!°Q±$©h¸©]Ñ:�BØ  A¡™X¨¨A¨a©C©Ñ0�FÜŸ6™6¤T¨!£W¨b´1·5±5©jÑ%9¼+ÀfÓ:MÑ%MÐQSÔVW×V[ÑV[ÑQ[Ô]hÐioÓ]pÑPpÑ%pÑqÐqð $ð ð r7   NrŽ  r°  r=   r7   r4   r—  r—    sI   „ ñQðf €EØ€Jàñ=ó ð=ó5ò,òCò
Pòeó
rr7   r—  c                   ó@   — e Zd ZdZed„ «       Zd	d„Zd„ Zd„ Zd„ Z	d„ Z
y)
Úmarcumqa—  
    The Marcum Q-function.

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

    The Marcum Q-function is defined by the meromorphic continuation of

    .. math::
        Q_m(a, b) = a^{- m + 1} \int_{b}^{\infty} x^{m} e^{- \frac{a^{2}}{2} - \frac{x^{2}}{2}} I_{m - 1}\left(a x\right)\, dx

    Examples
    ========

    >>> from sympy import marcumq
    >>> from sympy.abc import m, a, b
    >>> marcumq(m, a, b)
    marcumq(m, a, b)

    Special values:

    >>> marcumq(m, 0, b)
    uppergamma(m, b**2/2)/gamma(m)
    >>> marcumq(0, 0, 0)
    0
    >>> marcumq(0, a, 0)
    1 - exp(-a**2/2)
    >>> marcumq(1, a, a)
    1/2 + exp(-a**2)*besseli(0, a**2)/2
    >>> marcumq(2, a, a)
    1/2 + exp(-a**2)*besseli(0, a**2)/2 + exp(-a**2)*besseli(1, a**2)

    Differentiation with respect to $a$ and $b$ is supported:

    >>> from sympy import diff
    >>> diff(marcumq(m, a, b), a)
    a*(-marcumq(m, a, b) + marcumq(m + 1, a, b))
    >>> diff(marcumq(m, a, b), b)
    -a**(1 - m)*b**m*exp(-a**2/2 - b**2/2)*besseli(m - 1, a*b)

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Marcum_Q-function
    .. [2] https://mathworld.wolfram.com/MarcumQ-Function.html

    c                 ó  — |t         j                  u r`|t         j                  u r"|t         j                  u rt         j                  S t        ||dz  t         j                  z  «      t	        |«      z  S |t         j                  u r7|t         j                  u r%ddt        |dz  t         j                  z  «      z  z
  S ||k(  r«|t         j                  u r3dt        |dz   «      t        d|dz  «      z  z   t         j                  z  S |dk(  rat         j                  t         j                  t        |dz   «      z  t        d|dz  «      z  z   t        |dz   «      t        d|dz  «      z  z   S |j                  rT|j                  r|j                  rt         j                  S t        ||dz  t         j                  z  «      t	        |«      z  S |j                  r2|j                  r%ddt        |dz  t         j                  z  «      z  z
  S y y rä   )	r   rz   r(   r�   r&   r   ry   rY   r^   )r?   r„  ra   rØ   s       r4   rB   zmarcumq.evaló  s•  € à”—‘‰;Ø”A—F‘F‰{˜q¤A§F¡F™{Ü—v‘v�Ü˜a  A¡¬¯©¡Ó/´%¸³(Ñ:Ð:à”—‘‰;˜1¤§¡™;Ø�qœ3˜q !™t¤a§f¡f™}Ó-Ñ-Ñ-Ð-à�Š6Ø”A—E‘E‰zØœC  A¡ ›J¬°°A°q±DÓ)9Ñ9Ñ9¼1¿6¹6ÑAÐAØ�AŠvÜ—v‘v¤§¡¬¨a°©d¨U«Ñ 3´g¸aÀÀAÁÓ6FÑ FÑFÌÈaÐQRÉdÈUËÔV]Ð^_ÐabÐdeÑaeÓVfÑIfÑfÐfà�9Š9Ø�yŠy˜QŸYšYÜ—v‘v�Ü˜a  A¡¤a§f¡f¡Ó-´°a³Ñ8Ð8à�9Š9˜ŸšØ�qœ3˜q !™t¤A§F¡F™{Ó+Ñ+Ñ+Ð+ð #ˆ9r7   c                 ó  — | j                   \  }}}|dk(  r"|t        |||«       t        d|z   ||«      z   z  S |dk(  r;||z   ||dz
  z  z  t        |dz  |dz  z    dz  «      z  t        |dz
  ||z  «      z  S t	        | |«      ‚)NrE   r9   rÌ   )r1   rº  r   rY   r
   )r3   rJ   r„  ra   rØ   s        r4   rK   zmarcumq.fdiff  sŸ   € Ø—)‘)‰ˆˆ1ˆaØ�qŠ=Øœ  A qÓ)Ð)¬G°A°a±C¸¸AÓ,>Ñ>Ñ?Ð?Ø˜Š]Ø˜‘T�E˜A  !¡™HÑ$¬¨a°©d°Q¸±T©k¨N¸1Ñ,<Ó(=Ñ=ÄÈÈ!ÉÈQÈqÉSÓ@QÑQÐQä$ T¨8Ó4Ð4r7   c           	      ó  — ddl m} |j                  dt        t	        d«      j
                  «      «      }|d|z
  z   |||z  t        |dz  |dz  z    dz  «      z  t        |dz
  ||z  «      z  ||t        j                  g«      z  S )Nr   )ÚIntegralr`   r9   rE   )
Úsympy.integrals.integralsr¾  Úgetr   r   Únamer   rY   r   r~   )r3   r„  ra   rØ   rn   r¾  r`   s          r4   Ú_eval_rewrite_as_Integralz!marcumq._eval_rewrite_as_Integral  sŠ   € Ý6Ø�J‰J�sœEÔ"7¸Ó"<×"AÑ"AÓBÓCˆØ�Q˜‘U‰|Ù˜˜1™œs Q¨¡T¨A¨q©D¡[ >°!Ñ#3Ó4Ñ4´w¸qÀ¹sÀAÀaÁCÓ7HÑHÈ1ÈaÔQR×Q[ÑQ[ÐJ\Ó]ñ^ð 	^r7   c           	      óÜ   — ddl m} |j                  dt        d«      «      }t	        |dz  |dz  z    dz  «       |||z  |z  t        |||z  «      z  |d|z
  t        j                  g«      z  S )Nr   )ÚSumrº   rE   r9   )Úsympy.concrete.summationsrÄ  rÀ  r   r   rY   r   r~   )r3   r„  ra   rØ   rn   rÄ  rº   s          r4   Ú_eval_rewrite_as_Sumzmarcumq._eval_rewrite_as_Sum  sl   € Ý1Ø�J‰J�sœE #›JÓ'ˆÜ�Q˜‘T˜A˜q™D‘[�> AÑ%Ó&©¨a°©c°A©X¼ÀÀ1ÀQÁ3»Ñ-GÈ!ÈQÈqÉSÔRS×R\ÑR\ÐI]Ó)^Ñ^Ð^r7   c                 óR  ‡— ‰|k(  r¡|dk(  r%dt        ‰dz   «      t        d‰dz  «      z  z   dz  S |j                  rj|dk\  rdt        ˆfd„t	        d|«      D «       «      }t
        j                  t        ‰dz   «      t        d‰dz  «      z  dz  z   t        ‰dz   «      |z  z   S y y y )Nr9   rE   r   c              3   ó<   •K  — | ]  }t        |‰d z  «      –— Œ y­w)rE   N)rY   )Ú.0rS  ra   s     €r4   ú	<genexpr>z3marcumq._eval_rewrite_as_besseli.<locals>.<genexpr>$  s   øè ø€ Ò>¨Qœ  1 a¡4×(Ñ>ùs   ƒ)r   rY   r  Úsumr°   r   r�   )r3   r„  ra   rØ   rn   r¹   s     `   r4   r‹   z marcumq._eval_rewrite_as_besseli  s¬   ø€ Ø�Š6Ø�AŠvØœC  A¡ ›J¬°°A°q±DÓ)9Ñ9Ñ9¸QÑ>Ð>Ø�|Š|  Q¢ÜÓ>´%¸¸1³+Ô>Ó>�Ü—v‘v¤ Q¨¡T E£
¬W°Q¸¸1¹Ó-=Ñ =ÀÑ AÑAÄCÈÈAÉÈÃJÐQRÁNÑRÐRð !'ˆ|ð r7   c                 ó>   — t        d„ | j                  D «       «      ryy )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr<   )r^   )rÉ  rœ   s     r4   rÊ  z(marcumq._eval_is_zero.<locals>.<genexpr>(  s   è ø€ Ò0˜sˆs�{�{Ñ0ùs   ‚T)Úallr1   r2   s    r4   Ú_eval_is_zerozmarcumq._eval_is_zero'  s   € ÜÑ0 d§i¡iÔ0Ô0Øð 1r7   Nrp   )rq   rr   rs   rt   rv   rB   rK   rÂ  rÆ  r‹   rÏ  r=   r7   r4   rº  rº  Â  s8   „ ñ.ð` ñ,ó ð,ó.5ò^ò_ò
Sór7   rº  N)r8  é   )UÚ	functoolsr   Ú
sympy.corer   Úsympy.core.addr   Úsympy.core.cacher   Úsympy.core.exprr   Úsympy.core.functionr	   r
   r   Úsympy.core.logicr   r   Úsympy.core.numbersr   r   r   Úsympy.core.powerr   Úsympy.core.symbolr   r   r   Úsympy.core.sympifyr   Ú(sympy.functions.combinatorial.factorialsr   Ú(sympy.functions.elementary.trigonometricr   r   r   r   Ú#sympy.functions.elementary.integersr   Ú&sympy.functions.elementary.exponentialr   r   Ú(sympy.functions.elementary.miscellaneousr   r   r    Ú$sympy.functions.elementary.complexesr!   r"   r#   r$   r%   Ú'sympy.functions.special.gamma_functionsr&   r'   r(   Úsympy.functions.special.hyperr)   Úsympy.polys.orthopolysr*   rG  r+   r,   r.   rX   r�   rY   rç   ró   rõ   rþ   r   r  r  r\   r]   r$  rZ   r[   rT  rV  re  rˆ  rk  r—  rº  r=   r7   r4   ú<module>rå     s“  ðÝ å Ý Ý $Ý  ß FÑ Fß 0ß .Ñ .Ý  ß @Ñ @Ý &Ý >ß GÓ GÝ 7ß ;ß EÑ Eß VÕ Vß NÑ NÝ /Ý 6ç ôC �ô C ôLmDˆjô mDô`YDˆjô YDôxUDˆjô UDôpUDˆjô UDôp+Bˆjô +Bô\,Bˆjô ,Bò^ô2˜*ô 2ò8Jò
.ôU;Ð	ô U;ôp?;Ð	ô ?;ôD6;Ð-ô 6;ôr5-Ð
ô 5-ôp5-Ð
ô 5-ópQôh#ˆxô #ô6ihˆXô ihôXnhˆXô nhôbZr�(ô Zrôzar�(ô arôHgˆhõ gr7   