Ë
    7^(h0 ã                   ó<  — 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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/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z=m>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?«      ZD G d"„ d#e?«      ZEd$„ ZF G d%„ d&e?«      ZGd'„ ZHd(„ ZI G d)„ d*eG«      ZJ G d+„ d,eG«      ZK G d-„ d.eG«      ZL G d/„ d0eL«      ZM G d1„ d2eL«      ZNdEd3„ZO G d4„ d5e«      ZP G d6„ d7eP«      ZQ G d8„ d9eP«      ZR G d:„ d;eP«      ZS G d<„ d=eP«      ZT G d>„ d?e«      ZU G d@„ dAe«      ZV G dB„ dCe«      ZWyD)Fé    ©Úwraps)ÚS)ÚAdd)Úcacheit)ÚExpr)ÚDefinedFunctionÚArgumentIndexErrorÚ_mexpand)Úfuzzy_orÚ	fuzzy_not)ÚRationalÚpiÚI)ÚPow)ÚDummyÚuniquely_named_symbolÚWild)Úsympify)Ú	factorialÚRisingFactorial)Ú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    ú\/var/www/skyplay_api_hub/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. é   r1   r3   s    r5   ÚargumentzBesselBase.argument9   r7   r8   c                  ó   — y ©N© ©ÚclsÚnuÚzs      r5   ÚevalzBesselBase.eval>   s   € àr8   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é   r:   )r
   Ú_bÚ	__class__r6   r;   Ú_a©r4   Úargindexs     r5   Ú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r8   c                 ó¨   — | j                   }|j                  du r8| j                  | j                  j	                  «       |j	                  «       «      S y ©NF)r;   Úis_extended_negativerH   r6   Ú	conjugate©r4   rB   s     r5   Ú_eval_conjugatezBesselBase._eval_conjugateH   sB   € Ø�M‰MˆØ×!Ñ! UÑ*Ø—>‘> $§*¡*×"6Ñ"6Ó"8¸!¿+¹+»-ÓHÐHð +r8   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 rN   )r6   r;   ÚhasÚ_eval_is_meromorphicÚsubsÚ
is_integerÚ
isinstanceÚbesseljÚbesseliÚhn1Úhn2ÚjnÚynÚis_zeror   Úis_infiniter   )r4   ÚxÚarA   rB   Úz0s         r5   rU   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¯~©~Ð">Ó?Ó@Ð@r8   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 ©Nr:   rF   )	r6   r;   rH   Úis_realÚis_positiverI   rG   Ú_eval_expand_funcÚis_negative)r4   ÚhintsrA   rB   Úfs        r5   rh   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àˆr8   c                 ó   — ddl m}  || «      S )Nr   )Ú
besselsimp)Úsympy.simplify.simplifyrm   )r4   Úkwargsrm   s      r5   Ú_eval_simplifyzBesselBase._eval_simplifye   s   € Ý6Ù˜$ÓÐr8   N©rF   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr6   r;   ÚclassmethodrC   rL   rR   rU   rh   rp   r>   r8   r5   r/   r/   $   s_   „ ñð ñó ðð ñó ðð ñó ðóKòIò
Aò	ó r8   r/   c                   ó†   ‡ — e Zd ZdZej
                  Zej
                  Zed„ «       Z	d„ Z
d„ Zd„ Zˆ fd„Zd„ Zd	ˆ fd„	Zˆ xZS )
rY   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   rF   )r_   r   ÚOnerW   r#   rg   ÚZerori   ÚComplexInfinityÚis_imaginaryÚNaNÚInfinityÚNegativeInfinityÚcould_extract_minus_signrY   ÚNegativeOneÚextract_multiplicativelyr   rZ   r&   Úextract_branch_factorr   r   ©r@   rA   rB   ÚnewzÚnÚnnus         r5   rC   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 “?Ð"ð r8   c                 óv   — t        t        t        z  |z  dz  «      t        |t	        t         «      |z  «      z  S ©NrF   )r   r   r   rZ   r%   ©r4   rA   rB   ro   s       r5   Ú_eval_rewrite_as_besseliz besselj._eval_rewrite_as_besseliÖ   s/   € Ü”1”R‘4˜‘7˜1‘9‹~œg b¬*´a°R«.¸Ñ*:Ó;Ñ;Ð;r8   c                 ó    — |j                   du r@t        t        |z  «      t        | |«      z  t	        t        |z  «      t        ||«      z  z
  S y rN   )rW   r   r   Úbesselyr   r‹   s       r5   Ú_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ð "r8   c                 ó|   — t        d|z  t        z  «      t        |t        j                  z
  | j
                  «      z  S rŠ   )r    r   r]   r   ÚHalfr;   r‹   s       r5   Ú_eval_rewrite_as_jnzbesselj._eval_rewrite_as_jnÝ   s,   € Ü�A�a‘Cœ‘F‹|œB˜r¤A§F¡F™{¨D¯M©MÓ:Ñ:Ð:r8   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)NrF   r:   r   é   ©ÚlogxÚcdir)r2   Úas_leading_termÚNotImplementedErrorÚas_coeff_exponentrg   r'   ri   r    r   r   ÚsuperrY   Ú_eval_as_leading_term©r4   ra   r–   r—   rA   rB   ÚargÚcÚeÚsignrH   s             €r5   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Ð9ÓRÐRøô #ò 	ØŠKð	ús   ’C ÃC)Ã(C)c                 óV   — | j                   \  }}|j                  r|j                  ryy y ©NT©r2   rW   Úis_extended_real©r4   rA   rB   s      r5   Ú_eval_is_extended_realzbesselj._eval_is_extended_realõ   ó(   € Ø—	‘	‰ˆˆAØ�=Š=˜Q×/Ò/Øð 0ˆ=r8   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   ©ÚOrderrF   r:   )Úsympy.series.orderr¬   r2   ÚleadtermÚ
ValueErrorr™   rg   r   Ú_eval_nseriesÚremoveOr   r{   r   r'   ÚrangeÚappendr   r›   rY   ©r4   ra   r‡   r–   r—   r¬   rA   rB   Ú_r   ÚnewnÚoÚrÚtÚtermÚsÚkrH   s                    €r5   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	©r   )rr   rs   rt   ru   r   rz   rI   rG   rw   rC   rŒ   r�   r’   rœ   r§   r°   Ú__classcell__©rH   s   @r5   rY   rY   j   sX   ø„ ñBðH 
�‰€BØ	
�‰€Bàñ!#ó ð!#òF<òJò;ôSò*÷
Dñ Dr8   rY   c                   ó†   ‡ — e Zd ZdZej
                  Zej
                  Zed„ «       Z	d„ Z
d„ Zd„ Zˆ 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 )NFr:   rF   )r_   r   r€   r#   r|   r~   r   r{   r   r   r   rW   r�   r‚   rŽ   r?   s      r5   rC   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Ñ;Ð;ð -ð r8   c                 ó    — |j                   du r@t        t        |z  «      t        t        |z  «      t	        ||«      z  t	        | |«      z
  z  S y rN   )rW   r   r   r   rY   r‹   s       r5   Ú_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ð "r8   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r=   )rÃ   r2   ÚrewriterZ   ©r4   rA   rB   ro   Úajs        r5   rŒ   z bessely._eval_rewrite_as_besseli^  ó/   € Ø*ˆT×*Ñ*¨D¯I©IÐ6ˆÙØ—:‘:œgÓ&Ð&ð r8   c                 ó|   — t        d|z  t        z  «      t        |t        j                  z
  | j
                  «      z  S rŠ   )r    r   r^   r   r‘   r;   r‹   s       r5   Ú_eval_rewrite_as_ynzbessely._eval_rewrite_as_ync  s,   € Ü�A�a‘Cœ‘F‹|œb ¤a§f¡f¡¨d¯m©mÓ<Ñ<Ð<r8   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)	NrF   r:   ©r–   r   r”   é   é   r•   )r2   r˜   r™   rš   rg   r   r   rY   r   r   r{   r(   Ú
EulerGammar   ri   r    r   r   r›   rŽ   rœ   )r4   ra   r–   r—   rA   rB   rž   rŸ   r    Úterm_oneÚterm_twoÚ
term_threer¡   rH   s                €r5   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Ð9ÓRÐRøô' #ò 	ØŠKð	ús   ’F9 Æ9GÇGc                 óV   — | j                   \  }}|j                  r|j                  ryy y r£   ©r2   rW   rg   r¦   s      r5   r§   zbessely._eval_is_extended_real  ó&   € Ø—	‘	‰ˆˆAØ�=Š=˜QŸ]š]Øð +ˆ=r8   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¬   r2   r®   r¯   r™   rg   rW   r   rY   r   r   r°   r±   r   r{   r   r   r³   r²   r(   rÏ   r   r›   rŽ   )r4   ra   r‡   r–   r—   r¬   rA   rB   rµ   r   r¶   Úbnrb   ÚbrŸ   r·   r¸   r¹   rº   r¼   ÚdenomÚprH   s                         €r5   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½   )rr   rs   rt   ru   r   rz   rI   rG   rw   rC   rÃ   rŒ   rÊ   rœ   r§   r°   r¾   r¿   s   @r5   rŽ   rŽ     sV   ø„ ñ&ðP 
�‰€BØ	
�‰€Bàñ<ó ð<ò&Lò'ò
=ôSò2÷
/Dñ /Dr8   rŽ   c                   óš   ‡ — e Zd ZdZej
                   Zej
                  Zed„ «       Z	dd„Z
d„ Zd„ Zd„ Zd„ Zˆ fd„Zdˆ fd	„	Zˆ fd
„Zˆ xZS )rZ   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   rF   )r_   r   rz   rW   r#   rg   r{   ri   r|   r}   r~   r$   r   r€   r�   rZ   rƒ   r   rY   r&   r„   r   r   r…   s         r5   rC   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 “?Ð"ð r8   c                 óL   — |j                   rt        |«      t        ||«      z  S y r=   )r¥   r   Ú_besseli©r4   rA   rB   Úlimitvarro   s        r5   Ú_eval_rewrite_as_tractablez"besseli._eval_rewrite_as_tractable	  s%   € Ø×ÒÜ�q“6œ( 2 q›/Ñ)Ð)ð r8   c                 óv   — t        t         t        z  |z  dz  «      t        |t	        t        «      |z  «      z  S rŠ   )r   r   r   rY   r%   r‹   s       r5   rÃ   z besseli._eval_rewrite_as_besselj  s.   € Ü”A�2”b‘5˜‘8˜A‘:‹œw r¬:´a«=¸©?Ó;Ñ;Ð;r8   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r=   ©rÃ   r2   rÅ   rŽ   rÆ   s        r5   r�   z besseli._eval_rewrite_as_bessely  rÈ   r8   c                 óZ   —  | j                   | j                  Ž j                  t        «      S r=   )rÃ   r2   rÅ   r]   r‹   s       r5   r’   zbesseli._eval_rewrite_as_jn  s$   € Ø,ˆt×,Ñ,¨d¯i©iÐ8×@Ñ@ÄÓDÐDr8   c                 óV   — | j                   \  }}|j                  r|j                  ryy y r£   r¤   r¦   s      r5   r§   zbesseli._eval_is_extended_real  r¨   r8   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)NrF   r:   r   r•   )r2   r˜   r™   rš   rg   r'   ri   r   r    r   r›   rZ   rœ   r�   s             €r5   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Ð9ÓRÐRøô #ò 	ØŠ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¬   r2   r®   r¯   r™   rg   r   r°   r±   r   r{   r   r'   r²   r³   r   r›   rZ   r´   s                    €r5   r°   zbesseli._eval_nseries2  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c           
      ó*  •— ddl m} ddlm} |d   }|t        j
                  t        j                  fv rÉ| j                  \  }}	t        |«      D �
cg c]]  }
 |t        d|z  dz
  d«      |
«       |t        d|z  dz   d«      |
«      z  d|
z  |	t        d|
z  dz   d«      z  z  t        |
«      z  z  ‘Œ_ c}
 |d|	t        d|z  dz   d«      z  z  |«      gz   }t        |	«      t        dt        z  «      z  t        |Ž z  S t        ‰| �A  ||||«      S c c}
w ©Nr   ©r   r«   r:   rF   ©Ú(sympy.functions.combinatorial.factorialsr   r­   r¬   r   r   r€   r2   r²   r   r   r   r    r   r   r›   Ú_eval_aseries©r4   r‡   Úargs0ra   r–   r   r¬   ÚpointrA   rB   r¼   r»   rH   s               €r5   rï   zbesseli._eval_aseriesQ  s,  ø€ ÝLÝ,Ø�a‘ˆà”Q—Z‘Z¤×!3Ñ!3Ð4Ñ4Ø—I‘I‰EˆB�äGLÈQÃxöQØBCñ "¤(¨1¨R©4°!©8°QÓ"7¸Ó;¹OÌHÐUVÐWYÑUYÐ\]ÑU]Ð_`ÓLaÐcdÓ<eÑeØ�1‰X�aœ( 1 Q¡3¨¡7¨AÓ.Ñ/Ñ/´	¸!³Ñ<ó>ò QÙTYÐZ[Ð\]Ô`hÐijÐklÑilÐopÑipÐrsÓ`tÑ\uÑZuÐwxÓTyÐSzñ{ˆAä�q“6œ$˜q¤™t›*Ñ$¬¨Q¨Ñ0Ð0ä‰wÑ$ Q¨¨q°$Ó7Ð7ùò	Qs   ÁA"Dr=   r½   )rr   rs   rt   ru   r   rz   rI   rG   rw   rC   râ   rÃ   r�   r’   r§   rœ   r°   rï   r¾   r¿   s   @r5   rZ   rZ   ¶  sb   ø„ ñ%ðN �%‰%ˆ€BØ	
�‰€Bàñ%#ó ð%#óN*ò<ò'ò
Eòô
Sõ*D÷>8ð 8r8   rZ   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d„Zd	„ Zdˆ fd
„	Zˆ 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 rN   )r_   r   r   r#   r|   r~   r   r€   r{   rW   r�   rô   r?   s      r5   rC   zbesselk.evalˆ  s¤   € à�9Š9Ø�zŠzÜ—z‘zÐ!Ü�B“—‘ 5Ñ(Ü×(Ñ(Ð(Ü�B“—’Ü—u‘u�Ø”—‘œQœqŸz™z™\¬1¬Q×-?Ñ-?Ñ+?Ð@Ñ@Ü—6‘6ˆMà�=Š=Ø×*Ñ*Ô,Ü ˜s A“Ð&ð -ð r8   c                 óŽ   — |j                   du r7t        t        t        |z  «      z  t        | |«      t        ||«      z
  z  dz  S y )NFrF   )rW   r   r   rZ   r‹   s       r5   rŒ   z besselk._eval_rewrite_as_besseli˜  sB   € Ø�=‰=˜EÑ!Ü”cœ"˜R™%“j‘=¤'¨2¨#¨q£/´G¸BÀ³NÑ"BÑCÀAÑEÐEð "r8   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r=   )rŒ   r2   rÅ   rY   )r4   rA   rB   ro   Úais        r5   rÃ   z besselk._eval_rewrite_as_besseljœ  rÈ   r8   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r=   rå   rÆ   s        r5   r�   z besselk._eval_rewrite_as_bessely¡  rÈ   r8   c                 ód   —  | j                   | j                  Ž }|r|j                  t        «      S y r=   )r�   r2   rÅ   r^   )r4   rA   rB   ro   Úays        r5   rÊ   zbesselk._eval_rewrite_as_yn¦  s.   € Ø*ˆT×*Ñ*¨D¯I©IÐ6ˆÙØ—:‘:œb“>Ð!ð r8   c                 óV   — | j                   \  }}|j                  r|j                  ryy y r£   rÔ   r¦   s      r5   r§   zbesselk._eval_is_extended_real«  rÕ   r8   c                 óN   — |j                   rt        | «      t        ||«      z  S y r=   )r¥   r   Ú_besselkrà   s        r5   râ   z"besselk._eval_rewrite_as_tractable°  s'   € Ø×ÒÜ˜�r“7œ8 B¨›?Ñ*Ð*ð r8   c                 óV  — | j                   \  }}	 |j                  |«      }|j                  |«      \  }}|j                  r�|j
                  r*t        |«       t        j                  z
  t        d«      z   }	nF|j                  r+t        t        |«      «      |dz  t        |«       z  z  dz  }	nt        d|› d�«      ‚|	j                  ||¬«      S |j                  r+t        t        «      t        | «      z  t        d|z  «      z  S | j!                  ||«      S # t        $ r | cY S w xY w)NrF   z"Cannot proceed without knowing if z is zero or not.rÌ   )r2   r˜   r™   rš   rg   r_   r   r   rÏ   Ú
is_nonzeror'   r"   ri   r    r   r   Úfunc)
r4   ra   r–   r—   rA   rB   rž   rµ   r    rº   s
             r5   rœ   zbesselk._eval_as_leading_term´  s  € Ø—	‘	‰ˆˆAð	Ø×#Ñ# AÓ&ˆCð ×$Ñ$ QÓ'‰ˆˆ1à�=Š=Ø�zŠzä˜A›�w¤§¡Ñ-´°A³Ñ6‘Ø—’äœS ›W“~ q¨¡s¬s°2«w¨hÑ&7Ñ7¸Ñ9‘ä)Ð,NÈrÈdÐRbÐ*cÓdÐdà×'Ñ'¨°Ð'Ó5Ð5Ø�]Š]äœ“8œC  ›IÑ%¤d¨1¨S©5£kÑ1Ð1à—9‘9˜R Ó%Ð%øô' #ò 	ØŠKð	ús   ‘D ÄD(Ä'D(c                 óB  •— ddl m} | j                  \  }}	 |j                  |«      \  }}	|	j                  �r;|dz  j                  ||||«      j                  «       }
|
t        j                  u r ||| z  ||z  z   |«      S  |||z  |«      }|j                  �r¹t        ||	z  «      }t        ||«      }d|dz
  z  t        |dz  «      z  |z  j                  ||||«      }g g }}t        |
dz  «      }|t        j                  kD  ru|
| z  t!        |dz
  «      z  dz  }|j#                  |«       t%        d|«      D ]=  }||||z
  |z  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   |z   S |j,                  �rt        ||z   |	z  «      }t        ||z
  |	z  «      }g g }}t%        |dz   dz  «      D ]R  }t/        |«      |
d|z  |z
  z  z  dt1        d|z
  |«      z  t!        |«      z  z  }|j#                  t        |«      «       ŒT t%        |dz   dz  «      D ]S  }t/        | «      |
d|z  |z   z  z  dt1        |dz   |«      z  t!        |«      z  z  }|j#                  t        |«      «       ŒU t+        |Ž t+        |Ž z   |z   S t        d«      ‚t2        t4        | �  ||||«      S # t        t
        f$ r | cY S w xY w)Nr   r«   rF   rÝ   r:   z4besselk expansion is only implemented for real order)r­   r¬   r2   r®   r¯   r™   rg   r°   r±   r   r{   rW   r   rZ   r   r   r   r³   r²   r(   rÏ   r   Úis_nonintegerr'   r   r›   rô   )r4   ra   r‡   r–   r—   r¬   rA   rB   rµ   r   r¸   r·   r¶   r×   rb   rØ   rŸ   r¹   rº   r¼   rÚ   Únewn_aÚnewn_brH   s                          €r5   r°   zbesselk._eval_nseriesÍ  s¯  ø€ Ý,Ø—	‘	‰ˆˆAð	Ø—Z‘Z “]‰FˆAˆsð �?‹?Ø�1‘×#Ñ# A q¨$°Ó5×=Ñ=Ó?ˆAØ”A—F‘F‰{Ù˜Q " ™X¨¨2©Ñ-¨qÓ1Ð1á�a˜‘d˜A“ˆAØ�}‹}ä˜q ™u“~�Ü˜R “^�Ø˜B ™F‘^¤C¨¨!©£HÑ,¨RÑ/×>Ñ>¸qÀ!ÀTÈ4ÓP�à˜2�1�Ü˜Q ™T“N�àœŸ™’;Ø ˜s™8¤I¨b°1©fÓ$5Ñ5°aÑ7�DØ—H‘H˜T”NÜ" 1 b›\ò '˜Ø  A¨¡F¨A¡:¡Ñ.˜Ü (¨£°Ñ 2×;Ñ;Ó=˜ØŸ™ �ð'ð
 �r‘E˜2 ™(‘N A¤i°£m¡OÑ4�Øœ' " q¡&›/¬A¯L©LÑ8Ñ9�Ø—‘˜”Ü˜q 4¨!¡8¨a¡-Ó0ò #�AØ˜˜A˜q 2™v™J™Ñ'�AÜ! !› q™×1Ñ1Ó3�AØœg a¨"¡f¨q¡jÓ1´G¸AÀ¹E³NÑBÑC�DØ—H‘H˜T•Nð	#ð
 œ3 ˜7‘{¤S¨! WÑ,¨qÑ0Ð0Ø×!Ó!ô ! ! B¡$¨¡Ó,�Ü  ! B¡$¨¡Ó,�à˜2�1�Ü  q¡¨1™}Ó-ò -�AÜ  ›9 Q¨¨1©¨R©¡[Ñ0°!´OÀAÀbÁDÈ!Ó4LÑ2LÌYÐWXË\Ñ2YÑZ�DØ—H‘HœX d›^Õ,ð-ô   q¡¨1™}Ó-ò -�AÜ  " ›: a¨!¨A©#¨b©&¡kÑ1°1´_ÀRÈÁTÈ1Ó5MÑ3MÌiÐXYËlÑ3ZÑ[�DØ—H‘HœX d›^Õ,ð-ô ˜A�w¤ a Ñ(¨1Ñ,Ð,ä)Ð*`ÓaÐaä”W˜dÑ1°!°Q¸¸dÓCÐCøô{ Ô/Ð0ò 	ØŠKð	ús   ˜N
 Î
NÎNc           
      ó,  •— ddl m} ddlm} |d   }|t        j
                  t        j                  fv rÊ| j                  \  }}	t        |«      D �
cg c]]  }
 |t        d|z  dz
  d«      |
«       |t        d|z  dz   d«      |
«      z  d|
z  |	t        d|
z  dz   d«      z  z  t        |
«      z  z  ‘Œ_ c}
 |d|	t        d|z  dz   d«      z  z  |«      gz   }t        |	 «      t        t        dz  «      z  t        |Ž z  S t        ‰| �A  ||||«      S c c}
w ©Nr   rì   r«   r:   rF   éþÿÿÿrí   rð   s               €r5   rï   zbesselk._eval_aseries  s.  ø€ ÝLÝ,Ø�a‘ˆà”Q—Z‘Z¤×!3Ñ!3Ð4Ñ4Ø—I‘I‰EˆB�äHMÈaËöRØCDñ "¤(¨1¨R©4°!©8°QÓ"7¸Ó;¹OÌHÐUVÐWYÑUYÐ\]ÑU]Ð_`ÓLaÐcdÓ<eÑeØ�A‰Y�qœ8 A a¡C¨!¡G¨QÓ/Ñ0Ñ0´¸1³Ñ=ó?ò RÙTYÐZ[Ð\]Ô`hÐijÐklÑilÐopÑipÐrsÓ`tÑ\uÑZuÐwxÓTyÐSzñ{ˆAä˜˜“GœD¤ A¡›JÑ&¬¨Q¨Ñ/Ð/ä‰wÑ$ Q¨¨q°$Ó7Ð7ùò	Rs   ÁA"Dr=   r½   )rr   rs   rt   ru   r   rz   rI   rG   rw   rC   rŒ   rÃ   r�   rÊ   r§   râ   rœ   r°   rï   r¾   r¿   s   @r5   rô   rô   _  sg   ø„ ñ#ðJ 
�‰€BØ
�%‰%ˆ€Bàñ'ó ð'òFò'ò
'ò
"ò
ó
+ò&õ2CD÷J8ð 8r8   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 rN   )r;   rO   Úhankel2r6   rP   rQ   s     r5   rR   zhankel1._eval_conjugateH  ó>   € Ø�M‰MˆØ×!Ñ! UÑ*Ü˜4Ÿ:™:×/Ñ/Ó1°1·;±;³=ÓAÐAð +r8   N©	rr   rs   rt   ru   r   rz   rI   rG   rR   r>   r8   r5   r
  r
     s"   „ ñ"ðH 
�‰€BØ	
�‰€BóBr8   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 rN   )r;   rO   r
  r6   rP   rQ   s     r5   rR   zhankel2._eval_conjugatew  r  r8   Nr  r>   r8   r5   r  r  N  s"   „ ñ#ðJ 
�‰€BØ	
�‰€BóBr8   r  c                 ó.   ‡ — t        ‰ «      ˆ fd„«       }|S )Nc                 ó2   •— |j                   r
 ‰| ||«      S y r=   )rW   )r4   rA   rB   Úfns      €r5   Úgzassume_integer_order.<locals>.g~  s   ø€ à�=Š=Ù�d˜B “?Ð"ð r8   r   )r  r  s   ` r5   Úassume_integer_orderr  }  s    ø€ Ü
ˆ2ƒYó#ó ð#ð €Hr8   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™   ©r4   rj   s     r5   Ú_expandzSphericalBesselBase._expand‘  s   € ä! +Ó.Ð.r8   c                 óV   — | j                   j                  r | j                  di |¤ŽS | S ©Nr>   )r6   Ú
is_Integerr  r  s     r5   rh   z%SphericalBesselBase._eval_expand_func•  s(   € Ø�:‰:× Ò Ø�4—<‘<Ñ( %Ñ(Ð(Øˆr8   c                 ó¶   — |dk7  rt        | |«      ‚| j                  | j                  dz
  | j                  «      | | j                  dz   z  | j                  z  z
  S rE   )r
   rH   r6   r;   rJ   s     r5   rL   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ð 	2r8   Nrq   )rr   rs   rt   ru   r  rh   rL   r>   r8   r5   r  r  …  s   „ ñ	ò/òô
2r8   r  c                 óš   — t        | |«      t        |«      z  t        j                  | dz   z  t        |  dz
  |«      z  t	        |«      z  z   S ©Nr:   )r+   r   r   r‚   r   ©r‡   rB   s     r5   Ú_jnr$  ¡  sM   € Ü  1Ó%¤c¨!£fÑ,Ü�M‰M˜A ™EÑ"Ô#6¸°r¸A±v¸qÓ#AÑAÄ#ÀaÃ&ÑHñIð Jr8   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     r5   Ú_ynr&  ¦  sK   € ä�M‰M˜A ™EÑ"Ô%8¸!¸¸a¹ÀÓ%CÑCÄCÈÃFÑJÜ  1Ó%¤c¨!£fÑ,ñ-ð .r8   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   rz   rW   rg   r{   r|   r€   r   r?   s      r5   rC   zjn.evalæ  sa   € à�9Š9Ø�zŠzÜ—u‘u�Ø—’Ø—>’>ÜŸ6™6�Mä×,Ñ,Ð,Ø”×#Ñ#¤Q§Z¡ZÐ0Ñ0Ü—6‘6ˆMð 1r8   c                 óh   — t        t        d|z  z  «      t        |t        j                  z   |«      z  S rŠ   )r    r   rY   r   r‘   r‹   s       r5   rÃ   zjn._eval_rewrite_as_besseljó  s(   € Ü”B˜˜!™‘H‹~¤¨¬Q¯V©V©°QÓ 7Ñ7Ð7r8   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       r5   r�   zjn._eval_rewrite_as_besselyö  s8   € Ü�}‰}˜bÑ ¤4¬¨A¨a©C©£>Ñ1´G¸R¸CÄ!Ç&Á&¹LÈ!Ó4LÑLÐLr8   c                 óJ   — t         j                  |z  t        | dz
  |«      z  S r"  )r   r‚   r^   r‹   s       r5   rÊ   zjn._eval_rewrite_as_ynù  s"   € Ü�}‰}˜rÑ"¤R¨¨¨a©°£^Ñ3Ð3r8   c                 óB   — t        | j                  | j                  «      S r=   )r$  r6   r;   r  s     r5   r  z
jn._expandü  ó   € Ü�4—:‘:˜tŸ}™}Ó-Ð-r8   c                 óx   — | j                   j                  r$| j                  t        «      j	                  |«      S y r=   ©r6   r  rÅ   rY   Ú_eval_evalf©r4   Úprecs     r5   r0  zjn._eval_evalfÿ  ó.   € Ø�:‰:× Ò Ø—<‘<¤Ó(×4Ñ4°TÓ:Ð:ð !r8   N)rr   rs   rt   ru   rw   rC   rÃ   r�   rÊ   r  r0  r>   r8   r5   r]   r]   ¬  s6   „ ñ8ðr ñ
ó ð
ò8òMò4ò.ó;r8   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 re   )r   r‚   r    r   rY   r‘   r‹   s       r5   rÃ   zyn._eval_rewrite_as_besselj3  s<   € ä�}‰}˜r !™tÑ$¤t¬B°°!±©H£~Ñ5¼ÀÀÄaÇfÁfÁÈaÓ8PÑPÐPr8   c                 óh   — t        t        d|z  z  «      t        |t        j                  z   |«      z  S rŠ   )r    r   rŽ   r   r‘   r‹   s       r5   r�   zyn._eval_rewrite_as_bessely7  s(   € ä”B˜˜!™‘H‹~¤¨¬Q¯V©V©°QÓ 7Ñ7Ð7r8   c                 óP   — t         j                  |dz   z  t        | dz
  |«      z  S r"  )r   r‚   r]   r‹   s       r5   r’   zyn._eval_rewrite_as_jn;  s&   € Ü�}‰}˜r A™vÑ&¬¨R¨C°!©G°Q«Ñ7Ð7r8   c                 óB   — t        | j                  | j                  «      S r=   )r&  r6   r;   r  s     r5   r  z
yn._expand>  r-  r8   c                 óx   — | j                   j                  r$| j                  t        «      j	                  |«      S y r=   )r6   r  rÅ   rŽ   r0  r1  s     r5   r0  zyn._eval_evalfA  r3  r8   N)
rr   rs   rt   ru   r  rÃ   r�   r’   r  r0  r>   r8   r5   r^   r^     sA   „ ñ-ð\ ñQó ðQð ñ8ó ð8ò8ò.ó;r8   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 rE   )Ú_hankel_kind_signr    r   rY   r   r‘   r   r‚   ©r4   rA   rB   ro   Úhkss        r5   rÃ   z,SphericalHankelBase._eval_rewrite_as_besseljH  sq   € ð
 ×$Ñ$ˆÜ”B˜˜!™‘H‹~œw r¬A¯F©F¡{°AÓ6Ø"¤1™u¤Q§]¡]°R¸±TÑ%:Ñ:¼7ÀBÀ3ÌÏÉÁ<ÐQRÓ;SÑSñ Tñ Uð 	Ur8   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        r5   r�   z,SphericalHankelBase._eval_rewrite_as_besselyQ  si   € ð
 ×$Ñ$ˆÜ”B˜˜!™‘H‹~œqŸ}™}¨bÑ0´¸"¸¼q¿v¹v¹ÀqÓ1IÑIØ"¤1™u¤W¨R´!·&±&©[¸!Ó%<Ñ<ñ =ñ >ð 	>r8   c                 ó†   — | j                   }t        ||«      j                  t        «      |t        z  t        ||«      z  z   S r=   )r=  r]   rÅ   r^   r   r>  s        r5   rÊ   z'SphericalHankelBase._eval_rewrite_as_ynZ  s7   € Ø×$Ñ$ˆÜ�"�a‹y× Ñ ¤Ó$ s¬1¡u¬R°°A«Y¡Ñ6Ð6r8   c                 ó†   — | j                   }t        ||«      |t        z  t        ||«      j	                  t        «      z  z   S r=   )r=  r]   r   r^   rÅ   r>  s        r5   r’   z'SphericalHankelBase._eval_rewrite_as_jn^  s8   € Ø×$Ñ$ˆÜ�"�a‹y˜3œq™5¤ B¨£×!2Ñ!2´2Ó!6Ñ6Ñ6Ð6r8   c                 óà   — | j                   j                  r | j                  di |¤ŽS | j                   }| j                  }| j                  }t        ||«      |t        z  t        ||«      z  z   S r  )r6   r  r  r;   r=  r]   r   r^   )r4   rj   rA   rB   r?  s        r5   rh   z%SphericalHankelBase._eval_expand_funcb  s_   € Ø�:‰:× Ò Ø�4—<‘<Ñ( %Ñ(Ð(à—‘ˆBØ—‘ˆAØ×(Ñ(ˆCÜ�b˜!“9˜s¤1™u¤R¨¨A£Y™Ñ.Ð.r8   c                 ó¬   — | j                   }| j                  }| j                  }t        ||«      |t        z  t        ||«      z  z   j                  «       S r=   )r6   r;   r=  r$  r   r&  Úexpand)r4   rj   r‡   rB   r?  s        r5   r  zSphericalHankelBase._expandk  sI   € Ø�J‰JˆØ�M‰MˆØ×$Ñ$ˆô �A�q“	˜C¤™E¤# a¨£)™OÑ+×3Ñ3Ó5Ð5r8   c                 óx   — | j                   j                  r$| j                  t        «      j	                  |«      S y r=   r/  r1  s     r5   r0  zSphericalHankelBase._eval_evalfz  r3  r8   N)rr   rs   rt   r  rÃ   r�   rÊ   r’   rh   r  r0  r>   r8   r5   r;  r;  F  sC   „ àñUó ðUð ñ>ó ð>ò7ò7ò/ò6ó;r8   r;  c                   ó8   — e Zd ZdZej
                  Zed„ «       Zy)r[   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       r5   Ú_eval_rewrite_as_hankel1zhn1._eval_rewrite_as_hankel1²  ó   € ä”B˜˜!™‘H‹~œg b¨!›nÑ,Ð,r8   N)	rr   rs   rt   ru   r   rz   r=  r  rI  r>   r8   r5   r[   r[     s&   „ ñ.ð` Ÿ™Ðàñ-ó ñ-r8   r[   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       r5   Ú_eval_rewrite_as_hankel2zhn2._eval_rewrite_as_hankel2ê  rJ  r8   N)	rr   rs   rt   ru   r   rz   r=  r  rM  r>   r8   r5   r\   r\   ·  s(   „ ñ.ð` Ÿ™˜Ðàñ-ó ñ-r8   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_precr:   g      à?Úscipy)Únewton)Úspherical_jnc                 ó   •—  ‰‰| «      S r=   r>   )ra   r‡   rT  s    €€r5   ú<lambda>zjn_zeros.<locals>.<lambda>)  s   ø€ ™, q¨!Ó,€ r8   )Úsph_jnc                 ó"   •—  ‰‰| «      d   d   S )Nr   rÝ   r>   )ra   r‡   rW  s    €€r5   rV  zjn_zeros.<locals>.<lambda>,  s   ø€ ™&  A›, q™/¨"Ñ-€ r8   úUnknown method.c                 ó:   •— ‰dk(  r ‰| |«      }|S t        d«      ‚)NrR  rY  r  )rk   ra   r!   ÚmethodrS  s      €€r5   Úsolverzjn_zeros.<locals>.solver0  s+   ø€ Ø�WÒÙ˜!˜Q“<ˆDð ˆô &Ð&7Ó8Ð8r8   )Úmathr   ÚmpmathrP  Úmpmath.libmp.libmpfrQ  r²   r   Ú_from_mpmathr   Ú
_to_mpmathÚintÚscipy.optimizerS  Úscipy.specialrT  ÚImportErrorrW  r™   r³   )r‡   r¼   r[  ÚdpsÚmath_pirP  rQ  r2  Úlrk   r\  r!   ÚrootsÚirS  rW  rT  s   ` `           @@@r5   Újn_zerosrk  ï  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 ©Nr   )r  r2   rP   r3   s    r5   rR   zAiryBase._eval_conjugateK  s"   € Ø�y‰y˜Ÿ™ 1™×/Ñ/Ó1Ó2Ð2r8   c                 ó4   — | j                   d   j                  S ro  )r2   r¥   r3   s    r5   r§   zAiryBase._eval_is_extended_realN  s   € Ø�y‰y˜‰|×,Ñ,Ð,r8   c                 ó¾   — | j                   d   }|j                  «       }| j                  } ||«       ||«      z   dz  }t         ||«       ||«      z
  z  dz  }||fS )Nr   rF   )r2   rP   r  r   )r4   Údeeprj   rB   Úzcrk   ÚuÚvs           r5   Úas_real_imagzAiryBase.as_real_imagQ  s[   € Ø�I‰I�a‰LˆØ�[‰[‹]ˆØ�I‰IˆÙˆq‹T‘!�B“%‰Z˜‰NˆÜ‰q�‹u‘Q�q“T‰z‰N˜1ÑˆØ�!ˆtˆr8   c                 óH   —  | j                   dd|i|¤Ž\  }}||t        z  z   S )Nrr  r>   )rv  r   )r4   rr  rj   Úre_partÚim_parts        r5   Ú_eval_expand_complexzAiryBase._eval_expand_complexY  s0   € Ø,˜4×,Ñ,Ñ@°$Ð@¸%Ñ@Ñˆ�Ø˜¤™Ñ"Ð"r8   N)T)rr   rs   rt   ru   rR   r§   rv  rz  r>   r8   r5   rm  rm  C  s   „ ñò3ò-óô#r8   rm  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

    r:   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Í   rF   )
Ú	is_Numberr   r~   r   r{   r€   r_   rz   r   r'   ©r@   rž   s     r5   rC   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ð r8   c                 óT   — |dk(  rt        | j                  d   «      S t        | |«      ‚©Nr:   r   )Úairyaiprimer2   r
   rJ   s     r5   rL   zairyai.fdiffÈ  ó)   € Ø�qŠ=Ü˜tŸy™y¨™|Ó,Ð,ä$ T¨8Ó4Ð4r8   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   r:   rÝ   rÍ   rF   r”   )r   r{   r   Úlenr   r   r   r   r   r'   rz   ©r‡   ra   Úprevious_termsrÚ   s       r5   Ú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ð 7r8   c                 óì   — t        dd«      }t        dd«      }t        | t        dd«      «      }t        |«      j                  r0|t	        | «      z  t        | ||z  «      t        |||z  «      z   z  S y ©Nr:   rÍ   rF   ©r   r   r#   ri   r    rY   ©r4   rB   ro   ÚotÚttrb   s         r5   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ð r8   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 rŠ  ©r   r   r#   rg   r    rZ   rŒ  s         r5   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ÐWr8   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Í   rF   r:   é	   r”   )r   rz   r   r'   r!   r*   ©r4   rB   ro   Úpf1Úpf2s        r5   Ú_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Ðdr8   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   r:   rŸ   )ÚexcludeÚdÚmr‡   rÍ   )r2   Úfree_symbolsr…  Úpopr   ÚmatchrW   r   r‘   rz   r|  r    Úairybi©r4   rj   rž   ÚsymbsrB   rŸ   rš  r›  r‡   ÚMÚpfÚnewargs               r5   rh   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ð $ð	 ð r8   N©r:   ©rr   rs   rt   ru   ÚnargsÚ
unbranchedrw   rC   rL   Ústaticmethodr   rˆ  rÃ   rŒ   r–  rh   r>   r8   r5   r|  r|  ^  sb   „ ñVðp €EØ€JàñGó ðGó5ð Øñ7ó ó ð7òJòXòeó
hr8   r|  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

    r:   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Í   r:   é   rF   )
r~  r   r~   r   r€   r{   r_   rz   r   r'   r  s     r5   rC   zairybi.evalh  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ð r8   c                 óT   — |dk(  rt        | j                  d   «      S t        | |«      ‚r�  )Úairybiprimer2   r
   rJ   s     r5   rL   zairybi.fdiffw  rƒ  r8   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   r:   rÝ   rÍ   rF   r¬  )r   r{   r   r…  r   r"   r   r   r   rz   r   r   r‘   r!   r'   r†  s       r5   rˆ  zairybi.taylor_term}  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ð 7r8   c                 óì   — t        dd«      }t        dd«      }t        | t        dd«      «      }t        |«      j                  r0t	        | dz  «      t        | ||z  «      t        |||z  «      z
  z  S y rŠ  r‹  rŒ  s         r5   rÃ   zairybi._eval_rewrite_as_besseljŒ  sp   € Ü�a˜‹^ˆÜ�a˜‹^ˆÜ��”H˜Q “NÓ#ˆÜˆa‹5×ÒÜ˜˜˜1™“:¤¨"¨¨b°©dÓ!3´g¸bÀ"ÀQÁ$Ó6GÑ!GÑHÐHð r8   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 rŠ  r�  ©r4   rB   ro   r�  rŽ  rb   rØ   rŸ   s           r5   rŒ   zairybi._eval_rewrite_as_besseli“  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ÐJr8   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¬  rF   r:   r’  r”   )r   rz   r!   r'   r   r*   r“  s        r5   r–  zairybi._eval_rewrite_as_hyperž  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Ðdr8   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˜  )r2   rœ  r…  r�  r   rž  rW   r   r‘   r    rz   r|  rŸ  r   s               r5   rh   zairybi._eval_expand_func£  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ð $ð	 ð r8   Nr¥  r¦  r>   r8   r5   rŸ  rŸ  
  sb   „ ñXðt €EØ€JàñGó ðGó5ð Øñ7ó ó ð7òIò	Kòeó
hr8   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)r‚  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

    r:   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Í   r:   )	r~  r   r~   r   r{   r_   r‚   r   r'   r  s     r5   rC   zairyaiprime.eval  sh   € à�=Š=Ø”a—e‘e‰|Ü—u‘u�ØœŸ
™
Ñ"Ü—v‘v�à�;Š;Ü—=‘= A¤x°°1£~Ñ$5¼¼hÀqÈ!»nÓ8MÑ$MÑNÐNð r8   c                 ót   — |dk(  r(| j                   d   t        | j                   d   «      z  S t        | |«      ‚r�  )r2   r|  r
   rJ   s     r5   rL   zairyaiprime.fdiff  ó6   € Ø�qŠ=Ø—9‘9˜Q‘<¤ t§y¡y°¡|Ó 4Ñ4Ð4ä$ T¨8Ó4Ð4r8   c                 óØ   — | j                   d   j                  |«      }t        |«      5  t        j                  |d¬«      }d d d «       t        j                  |«      S # 1 sw Y   ŒxY w©Nr   r:   )Ú
derivative)r2   ra  r-   r,   r|  r   r`  ©r4   r2  rB   Úress       r5   r0  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 ©NrF   rÍ   )r   r   r#   ri   rY   ©r4   rB   ro   rŽ  rb   s        r5   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ð r8   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 rŠ  )r   r   r#   rg   rZ   r²  s           r5   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ÐIr8   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 )NrF   rÍ   r:   é   r’  )r   r'   r!   r*   r“  s        r5   r–  z"airyaiprime._eval_rewrite_as_hyper9  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Ðdr8   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˜  )r2   rœ  r…  r�  r   rž  rW   r   r‘   rz   r‚  r    r®  r   s               r5   rh   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ð $ð ð r8   Nr¥  ©rr   rs   rt   ru   r§  r¨  rw   rC   rL   r0  rÃ   rŒ   r–  rh   r>   r8   r5   r‚  r‚  »  sK   „ ñOðb €EØ€JàñOó ðOó5ò,òBò
Jòeó
rr8   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)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

    r:   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Í   r:   r¬  )	r~  r   r~   r   r€   r{   r_   r   r'   r  s     r5   rC   zairybiprime.eval¯  sŸ   € à�=Š=Ø”a—e‘e‰|Ü—u‘u�ØœŸ
™
Ñ"Ü—z‘zÐ!Øœ×*Ñ*Ñ*Ü—v‘v�Ø—’Øœ( 1 a›.Ñ(¬5´¸!¸Q³Ó+@Ñ@Ð@à�;Š;Ø”h˜q !“nÑ$¤u¬X°a¸«^Ó'<Ñ<Ð<ð r8   c                 ót   — |dk(  r(| j                   d   t        | j                   d   «      z  S t        | |«      ‚r�  )r2   rŸ  r
   rJ   s     r5   rL   zairybiprime.fdiff¿  r¸  r8   c                 óØ   — | j                   d   j                  |«      }t        |«      5  t        j                  |d¬«      }d d d «       t        j                  |«      S # 1 sw Y   ŒxY wrº  )r2   ra  r-   r,   rŸ  r   r`  r¼  s       r5   r0  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Á  r‹  rÂ  s        r5   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ð r8   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 rŠ  r�  r²  s           r5   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ÐOr8   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 )NrF   rÍ   r¬  r:   rÅ  r’  )r!   r'   r   r*   r“  s        r5   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Ðdr8   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˜  )r2   rœ  r…  r�  r   rž  rW   r   r‘   r    rz   r‚  r®  r   s               r5   rh   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ð $ð ð r8   Nr¥  rÇ  r>   r8   r5   r®  r®  X  sI   „ ñQðf €EØ€Jàñ=ó ð=ó5ò,òCò
Pòeó
rr8   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 )NrF   r:   r   )	r   r{   r)   r‘   r'   r   rz   rZ   r_   )r@   r›  rb   rØ   s       r5   rC   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™{Ó+Ñ+Ñ+Ð+ð #ˆ9r8   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	        | |«      ‚)NrF   r:   rÍ   )r2   rÑ  r   rZ   r
   )r4   rK   r›  rb   rØ   s        r5   rL   zmarcumq.fdiffE  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Ð4r8   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   )ÚIntegralra   r:   rF   )
Úsympy.integrals.integralsrÕ  Úgetr   r   Únamer   rZ   r   r   )r4   r›  rb   rØ   ro   rÕ  ra   s          r5   Ú_eval_rewrite_as_Integralz!marcumq._eval_rewrite_as_IntegralN  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\Ó]ñ^ð 	^r8   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¼   rF   r:   )Úsympy.concrete.summationsrÛ  r×  r   r   rZ   r   r   )r4   r›  rb   rØ   ro   rÛ  r¼   s          r5   Ú_eval_rewrite_as_Sumzmarcumq._eval_rewrite_as_SumT  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]Ó)^Ñ^Ð^r8   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 )Nr:   rF   r   c              3   ó<   •K  — | ]  }t        |‰d z  «      –— Œ y­w)rF   N)rZ   )Ú.0rj  rb   s     €r5   ú	<genexpr>z3marcumq._eval_rewrite_as_besseli.<locals>.<genexpr>^  s   øè ø€ Ò>¨Qœ  1 a¡4×(Ñ>ùs   ƒ)r   rZ   r  Úsumr²   r   r‘   )r4   r›  rb   rØ   ro   r»   s     `   r5   rŒ   z marcumq._eval_rewrite_as_besseliY  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ð !'ˆ|ð r8   c                 ó>   — t        d„ | j                  D «       «      ryy )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr=   )r_   )rà  rž   s     r5   rá  z(marcumq._eval_is_zero.<locals>.<genexpr>b  s   è ø€ Ò0˜sˆs�{�{Ñ0ùs   ‚T)Úallr2   r3   s    r5   Ú_eval_is_zerozmarcumq._eval_is_zeroa  s   € ÜÑ0 d§i¡iÔ0Ô0Øð 1r8   Nrq   )rr   rs   rt   ru   rw   rC   rL   rÙ  rÝ  rŒ   ræ  r>   r8   r5   rÑ  rÑ  ü  s8   „ ñ.ð` ñ,ó ð,ó.5ò^ò_ò
Sór8   rÑ  c                   ó4   ‡ — e Zd ZdZˆ fd„Zd„ Zdˆ fd„	Zˆ xZS )rß   zq
    Helper function to make the $\mathrm{besseli}(nu, z)$
    function tractable for the Gruntz algorithm.

    c           
      ó  •— ddl m} ddlm} |d   }|t        j
                  t        j                  fv r»| j                  \  }}	t        |«      D �
cg c]]  }
 |t        d|z  dz
  d«      |
«       |t        d|z  dz   d«      |
«      z  d|
z  |	t        d|
z  dz   d«      z  z  t        |
«      z  z  ‘Œ_ }}
t        t        dz  «      t        |Ž z   |d|	t        d|z  dz   d«      z  z  |«      z   S t        ‰| �=  ||||«      S c c}
w rë   ©rî   r   r­   r¬   r   r   r€   r2   r²   r   r   r    r   r   r›   rï   ©r4   r‡   rñ   ra   r–   r   r¬   rò   rA   rB   r¼   rh  rH   s               €r5   rï   z_besseli._eval_aseriesl  s  ø€ ÝLÝ,Ø�a‘ˆà”Q—Z‘Z¤×!3Ñ!3Ð4Ñ4Ø—I‘I‰EˆB�äkpÐqrÓksöuØfgñ #¤8¨A¨b©D°1©H°aÓ#8¸!Ó<¹_Ü˜Q˜r™T A™X qÓ)¨1ó>.ñ .Ø12°a±¸¼XÀaÈÁcÈAÁgÈqÓ=QÑ9RÑ0RÔS\Ð]^ÓS_Ñ0_óað uˆAð uäœ˜A™“<¤ a Ñ)©E°!°A¼ÀÀ1ÁÀqÁÈ!Ó8LÑ4MÑ2MÈqÓ,QÑQÐQä‰wÑ$ Q¨¨q°$Ó7Ð7ùò	uó   ÁA"Dc                 ó4   — t        | «      t        ||«      z  S r=   )r   rZ   r‹   s       r5   Ú_eval_rewrite_as_intractablez%_besseli._eval_rewrite_as_intractabley  s   € Ü�A�2‹w”w˜r 1“~Ñ%Ð%r8   c                 óÔ   •— | j                   d   j                  |d«      }|j                  r, | j                  | j                   Ž }|j	                  |||«      S t
        ‰| �  |||«      S ro  ©r2   Úlimitr_   rí  r°   r›   ©r4   ra   r‡   r–   r—   Úx0rk   rH   s          €r5   r°   z_besseli._eval_nseries|  óa   ø€ Ø�Y‰Y�q‰\×Ñ  1Ó%ˆØ�:Š:Ø1�×1Ñ1°4·9±9Ð=ˆAØ—?‘? 1 a¨Ó.Ð.Ü‰wÑ$ Q¨¨4Ó0Ð0r8   r½   ©rr   rs   rt   ru   rï   rí  r°   r¾   r¿   s   @r5   rß   rß   e  s   ø„ ñô8ò&÷1ñ 1r8   rß   c                   ó4   ‡ — e Zd ZdZˆ fd„Zd„ Zdˆ fd„	Zˆ xZS )rþ   zq
    Helper function to make the $\mathrm{besselk}(nu, z)$
    function tractable for the Gruntz algorithm.

    c           
      ó  •— ddl m} ddlm} |d   }|t        j
                  t        j                  fv r»| j                  \  }}	t        |«      D �
cg c]]  }
 |t        d|z  dz
  d«      |
«       |t        d|z  dz   d«      |
«      z  d|
z  |	t        d|
z  dz   d«      z  z  t        |
«      z  z  ‘Œ_ }}
t        t        dz  «      t        |Ž z   |d|	t        d|z  dz   d«      z  z  |«      z   S t        ‰| �=  ||||«      S c c}
w r  ré  rê  s               €r5   rï   z_besselk._eval_aseries‹  s  ø€ ÝLÝ,Ø�a‘ˆà”Q—Z‘Z¤×!3Ñ!3Ð4Ñ4Ø—I‘I‰EˆB�älqÐrsÓltövØghñ #¤8¨A¨b©D°1©H°aÓ#8¸!Ó<¹_Ü˜Q˜r™T A™X qÓ)¨1ó>.ñ .Ø13°q±	¸!¼hÀqÈÁsÈQÁwÐPQÓ>RÑ:SÑ0SÔT]Ð^_ÓT`Ñ0`óbð vˆAð väœ˜A™“<¤ a Ñ)©E°!°A¼ÀÀ1ÁÀqÁÈ!Ó8LÑ4MÑ2MÈqÓ,QÑQÐQä‰wÑ$ Q¨¨q°$Ó7Ð7ùò	vrë  c                 ó2   — t        |«      t        ||«      z  S r=   )r   rô   r‹   s       r5   rí  z%_besselk._eval_rewrite_as_intractable˜  s   € Ü�1‹v”g˜b !“nÑ$Ð$r8   c                 óÔ   •— | j                   d   j                  |d«      }|j                  r, | j                  | j                   Ž }|j	                  |||«      S t
        ‰| �  |||«      S ro  rï  rñ  s          €r5   r°   z_besselk._eval_nseries›  ró  r8   r½   rô  r¿   s   @r5   rþ   rþ   „  s   ø„ ñô8ò%÷1ñ 1r8   rþ   N)rO  é   )XÚ	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   rî   r   r   Ú(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+   r^  r,   r-   r/   rY   rŽ   rZ   rô   r
  r  r  r  r$  r&  r]   r^   r;  r[   r\   rk  rm  r|  rŸ  r‚  r®  rÑ  rß   rþ   r>   r8   r5   ú<module>r     s¨  ðÝ å Ý Ý $Ý  ß MÑ Mß 0ß .Ñ .Ý  ß @Ñ @Ý &ß Oß GÓ GÝ 7ß ;ß EÑ Eß VÕ Vß NÑ NÝ /Ý 6ç ôC �ô C ôLmDˆjô mDô`YDˆjô YDôxf8ˆjô f8ôR~8ˆjô ~8ôB+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#ˆô #ô6ihˆXô ihôXnhˆXô nhôbZr�(ô Zrôzar�(ô arôHgˆoô gôR1ˆô 1ô>1ˆõ 1r8   