U
    ZÊ¹j2”  ã                   @   sF  d dl mZmZ edd„ ƒZedd„ ƒZededd„ƒZedfd	d
„ƒZedgdd„ƒZedd„ ƒZedd„ ƒZ	edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZdd„ Zedd „ ƒZed!d"„ ƒZed#d$„ ƒZed%d&„ ƒZed'd(„ ƒZed)d*„ ƒZed+d,„ ƒZed-d.„ ƒZd/d0„ Zed1d2„ ƒZed3d4„ ƒZed5d6„ ƒZed7d8„ ƒZd9d:„ Zd;d<„ Zedhd=d>„ƒZ edid?d@„ƒZ!djdBdC„Z"edkdDdE„ƒZ#edldFdG„ƒZ$dHdI„ Z%edJdK„ ƒZ&edLdM„ ƒZ'ei fdNdO„ƒZ(edmdQdR„ƒZ)ei fdSdT„ƒZ*edndUdV„ƒZ+dWdX„ Z,dYdZ„ Z-d[d\„ Z.d]i fd^d_„Z/edod`da„ƒZ0edpdbdc„ƒZ1ddS )qé   )ÚdefunÚdefun_wrappedc                 C   s   |   d|¡S )zCComputes the Bessel function `J_0(x)`. See :func:`~mpmath.besselj`.é    ©Úbesselj©ÚctxÚx© r
   úV/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mpmath/functions/bessel.pyÚj0   s    r   c                 C   s   |   d|¡S )zDComputes the Bessel function `J_1(x)`.  See :func:`~mpmath.besselj`.r   r   r   r
   r
   r   Új1   s    r   r   c           	         s&  t ˆƒtkrd}n&ˆ ˆ¡‰ˆ ˆ¡}|r8tˆ ˆ¡ƒ‰|r`ˆdk r`dˆ ˆjˆ ˆ|f|Ž S ˆ ˆ¡‰ˆ ˆ¡‰ |�r$ˆ |¡‰ˆ ˆ¡rüˆdkrütˆƒ‰ˆj}z8ˆ jd7  _ˆ ‡‡‡‡fdd„t	ˆd ƒD ƒ¡}W 5 |ˆ_X |ˆ 
d¡ˆ  9 }n$‡ ‡‡fd	d
„}ˆj|ˆˆgf|Ž}� nþ|�sr|�rrtˆ ƒdk �rrtˆƒdk �rrzˆ ˆˆ¡W S  tk
�rp   Y nX ˆ�s¸ˆ�sŽˆjˆ ˆ }n(ˆ ˆ¡dk�r¨ˆˆ }nˆjˆ ˆ }ndˆj}zTˆ jtdtˆ ƒ ˆjƒ7  _ˆjˆddd�‰‡ ‡‡fdd
„}ˆj|ˆgf|Ž}W 5 |ˆ_X |
 }|S )NTr   éÿÿÿÿé   c                 3   s:   | ]2}d | ˆ   ˆ|¡ ˆ  d| ˆ ˆ ˆ¡ V  qdS )r   é   N)Zbinomialr   )Ú.0Úk)r   ÚdÚnÚzr
   r   Ú	<genexpr>%   s   ÿzbesselj.<locals>.<genexpr>r   r   c                    s’   ˆj ˆj ˆˆˆjˆ  d�ddd�}d| | d  d| | d  g}dˆjˆg|d|   d| | gg || d d | d d g|| d g |fg}|S )N©Úprecç      Ð¿T©Úexactç      à?r   r   ©Úfmulr   Úpi©r   r   ÚrÚBÚT©ÚMr   r   r
   r   Úh+   s    " Lzbesselj.<locals>.hé
   é   é   r   r   c                    sJ   ˆj ˆjˆˆtdˆjˆ  ƒd�dd�}ˆg| gg | d gg | d g|fgS )Nr   r   Tr   r   )Zfnegr   Úmaxr   )r   r!   )r%   r   Úwr
   r   r&   G   s    &)ÚtypeÚintÚconvertÚisintÚ_rer   Úmagr   ÚfsumÚrangeÚmpfÚ	hypercombÚabsZ_besseljÚNotImplementedErrorÚoneÚreÚinfÚminr   )	r   r   r   Ú
derivativeÚkwargsZn_isintÚorigÚvr&   r
   )r%   r   r   r   r+   r   r   r      sX    





ÿ(
r   c           	         sì   ˆ  |¡}ˆ  ˆ¡‰ˆsˆ|r t‚|s0d| ˆ S ˆ |¡rFd|ˆ  S ˆ |¡}|dkrfˆj|ˆ  S |dkrzd|ˆ  S ˆj|ˆ  S ˆ ˆ¡‰ |rÆˆ  |¡}‡ ‡‡fdd„}ˆj|||gf|Ž}n"‡ ‡‡fdd„}ˆj||gf|Ž}|S )Nr   r   c                    s”   ˆj ˆj ˆˆˆjˆ  d�ddd�}d| | d  d| | d  | d g}dˆjˆg|d|   d| | g| d g|| d d | d d g||fg}|S )Nr   ç      Ð?Tr   r   r   r   r   r    r$   r
   r   r&   f   s    "&Hzbesseli.<locals>.hc                    sP   ˆj ˆddd�}ˆj ||tdˆjˆ  ƒd�}|g| gg | d gg | d g|fgS )Nr   Tr   r   r   r   )r   r*   r   )r   r+   r!   r$   r
   r   r&   m   s    )r.   Ú
ValueErrorr/   r9   Únanr:   r1   r5   )	r   r   r   r<   r=   r!   r   r&   r?   r
   r$   r   ÚbesseliP   s.    





rC   c                 K   sJ  |s®|rt ‚|s | j ||  S |  |¡r8| j||  S |  |¡}|d }|  |¡rx|dkrl| j ||  S d||  S |dk r t|  |¡ƒd r | j||  S | j||  S |  j	d7  _	|  
|¡\}}|| j	 k rö| j
 }	|  j	d9  _	||	7 }n|dk �r|  j	|8  _	|  |¡\}
}| j|||f|Ž|
 | j| ||f|Ž | S )Nr   r   r   r'   )rA   r:   ÚimrB   r9   r/   r-   ÚfloorÚninfr   Znint_distanceÚepsÚcospi_sinpir   )r   r   r   r<   r=   r!   ÚqÚmr   r&   ÚcosÚsinr
   r
   r   Úbesselyt   s<    




ÿÿrM   c                    sX   ˆs
ˆ j S ˆ  ˆ¡}|dk r*‡fdd„}nˆ  j|7  _‡ ‡fdd„}ˆ j||gf|ŽS )Nr   c                    sf   ˆ d d }ˆ dg|  | d g| gg g d|  g|f}ˆ dg| |  d g|  gg g d|  g|f}||fS )Nr   r   r
   )r   r!   ÚT1ÚT2©r   r
   r   r&   Ÿ   s    (*zbesselk.<locals>.hc              	      sB   ˆ j d ˆˆ  ˆ ¡gdddgg g | d d|  gg ddˆ  fgS )Nr   r   ç      à¿r   r   )r   Úexp©r   ©r   r   r
   r   r&   ª   s
    "  
ÿ)r:   r1   r   r5   )r   r   r   r=   r%   r&   r
   rT   r   Úbesselk˜   s    

rU   c                 K   s&   | j ||f|Ž| j| j||f|Ž  S ©N©r   ÚjrM   ©r   r   r	   r=   r
   r
   r   Úhankel1¯   s    rZ   c                 K   s&   | j ||f|Ž| j| j||f|Ž  S rV   rW   rY   r
   r
   r   Úhankel2³   s    r[   c                 K   s„   |dkr<|   |¡dkr|S |   |¡dk r2| j| S | j| S | jd|dd�}d| }|  |¡||  | j|| dd|  |f|Ž S )Nr   rQ   Tr   r   r   r   )r9   r:   rB   r   rR   Zhyp1f1)r   r   rJ   r   r=   r	   Úyr
   r
   r   Úwhitm·   s    

r]   c                 K   s†   |dkr>t |  |¡ƒ}|dk r"|S |dkr4| j| S | j| S | jd|dd�}d| }|  |¡||  | j|| dd|  |f|Ž S )Nr   r   rQ   Tr   r   r   )r6   r9   r:   rB   r   rR   Úhyperu)r   r   rJ   r   r=   Úgr	   r\   r
   r
   r   ÚwhitwÅ   s    

r`   c                    s
  ˆ   |¡\}}ˆ   |¡\}}ˆ  ˆ¡‰ˆs^ˆ  |¡dkrTˆ  d| g|| d g¡S ˆ jˆ S d| | }ˆ   |¡\}}zXˆ j}	zDˆ  jd7  _ˆ jdd||f||gdˆ ˆ jd�}
|
ˆ|  W ¢W S |	ˆ _X W n ˆ jk
ræ   Y nX ‡ ‡fdd„}ˆ j|||gf|ŽS )	Nr   r'   r   r   r   )Úmaxtermsc                    s|   ˆ   |¡}ˆ j|gddgg | | d |g| g|gˆf}ˆ j |ˆgddd| gg | d| g| | d gd| gˆf}||fS )Nr   r   r   )Úsinpir   )ÚaÚbr+   rN   rO   rT   r
   r   r&   é   s    
,>zhyperu.<locals>.h)	Ú_convert_paramr.   r9   Z	gammaprodr:   r   ZhypsumÚNoConvergencer5   )r   rc   rd   r   r=   ZatypeZbtypeZbbZbbtyper>   r?   r&   r
   rT   r   r^   Ó   s(    

$r^   c                    s4   ˆ   |¡}ˆ   ˆ¡‰‡ ‡fdd„}ˆ j||gf|ŽS )Nc                    sJ   ˆd dˆ   ˆ j¡ g| d dgg | d gdgd| d gˆd d  fgS ©Nr   r   r   r   ç      ø?©Úsqrtr   rS   rT   r
   r   r&   õ   s    zstruveh.<locals>.h©r.   r5   ©r   r   r   r=   r&   r
   rT   r   Ústruvehð   s    

rm   c                    s4   ˆ   |¡}ˆ   ˆ¡‰‡ ‡fdd„}ˆ j||gf|ŽS )Nc                    sH   ˆd dˆ   ˆ j¡ g| d dgg | d gdgd| d gˆd d fgS rg   ri   rS   rT   r
   r   r&   þ   s    zstruvel.<locals>.hrk   rl   r
   rT   r   Ústruvelù   s    

rn   c                    s:   ˆ   |¡d }ˆ  ˆ¡‰‡ ‡‡fdd„}ˆ j||gf|ŽS )Nr   c                    sÖ   ˆ j }| | }|d }|| || d| d| f\}}}}ˆ  |¡\}}	ˆdkrd|ˆ |	g|g }
}ˆdkr‚|ˆ | g|	g }
}ˆ jˆdd�}|
ddgg ||gdg||g|f}|dgg ||gdg||g|f}||fS )Nr)   r   r   r   ©Zmult)Úmpq_1_2rH   Úsquare_exp_arg)r?   rd   ÚurJ   Úa1Úa2Úb1Úb2ÚcÚsÚAr"   r+   rN   rO   ©r   Úwhichr   r
   r   r&     s    $ z_anger.<locals>.h©re   r.   r5   )r   r{   r?   r   r=   r&   r
   rz   r   Ú_anger  s    
r}   c                 K   s   t | d||f|ŽS ©Nr   ©r}   ©r   r?   r   r=   r
   r
   r   Úangerj  s    r�   c                 K   s   t | d||f|ŽS ©Nr   r   r€   r
   r
   r   Úwebere  s    rƒ   c                    sH   ˆ   |¡d }ˆ   |¡d }ˆ  ˆ¡‰‡ ‡fdd„}ˆ j|||gf|ŽS )Nr   c              	      sf   ˆ j }ˆ jˆdd�}| | d | | d ˆgdd| d gg g dg|| | d  || | d  g|ffS )Nr   ro   r   r   r)   ©rp   rq   )rr   r?   rd   r+   rT   r
   r   r&   "  s    , ÿzlommels1.<locals>.hr|   ©r   rr   r?   r   r=   r&   r
   rT   r   Úlommels1  s
    
r†   c                    sH   ˆ   |¡d }ˆ   |¡d }ˆ  ˆ¡‰‡ ‡fdd„}ˆ j|||gf|ŽS )Nr   c              	      sþ   ˆ j }ˆ jˆdd�}| | d | | d ˆgdd| d gg g dg|| | d  || | d  g|f}dˆg| | d | g||| | d  g|||  d  gg d| g|f}dˆg| | d |g| || | d  g|d|  |  gg d| g|f}|||fS )Nr   ro   r   r   r)   r   r„   )rr   r?   rd   r+   rN   rO   ÚT3rT   r
   r   r&   4  s    PHH
zlommels2.<locals>.hr|   r…   r
   rT   r   Úlommels2)  s
    
rˆ   c                    s4   ˆ   |¡}ˆ   ˆ¡‰‡ ‡fdd„}ˆ j||gf|ŽS )Nc              	      s    ˆd d  }ˆ   d|  ¡\}}|ˆd gd| gg | d gg dd| d  d|  d g|f}|ˆd gd| d gg | d gg dd| d  d|  d g|f}||fS )Né   ç      è¿r   r   r   rh   r)   ©rH   ©r   r!   rK   rL   rN   rO   rT   r
   r   r&   K  s
    :>zber.<locals>.hrk   rl   r
   rT   r   ÚberF  s    

r�   c                    s4   ˆ   |¡}ˆ   ˆ¡‰‡ ‡fdd„}ˆ j||gf|ŽS )Nc              	      s    ˆd d  }ˆ   d|  ¡\}}|ˆd gd| d gg | d gg dd| d  d|  d g|f}|ˆd gd| gg | d gg dd| d  d|  d g|f}||fS )Nr‰   ç      è?r   r   rh   r   r)   r‹   rŒ   rT   r
   r   r&   X  s
    >:zbei.<locals>.hrk   rl   r
   rT   r   ÚbeiS  s    

r�   c                    s4   ˆ   |¡}ˆ   ˆ¡‰‡ ‡fdd„}ˆ j||gf|ŽS )Nc           
   
      sL  ˆd d  }ˆ   d|  ¡\}}ˆ   d|  ¡\}}dˆd| g|  d | dg|  gg g ddd|   d| d  g|f}dˆ| g|  d d|  dg|  d gg g ddd|   d| d  g|f}dˆd| g| d |  dg| gg g ddd|   dd|   g|f}dˆ| g| d d|  dg| d gg g ddd|   dd|   g|f}	||||	fS )	Nr‰   r@   rŽ   r   r)   r   r   rh   r‹   ©
r   r!   Zcos1Zsin1Zcos2Zsin2rN   rO   r‡   ZT4rT   r
   r   r&   e  s    BH@Dzker.<locals>.hrk   rl   r
   rT   r   Úker`  s    

	r‘   c                    s4   ˆ   |¡}ˆ   ˆ¡‰‡ ‡fdd„}ˆ j||gf|ŽS )Nc           
   
      sH  ˆd d  }ˆ   d|  ¡\}}ˆ   d|  ¡\}}| dˆgd| d d|  g| d gg g ddd|   dd|   g|f}| dˆgd| d |  g| gg g ddd|   dd|   g|f}| dˆgd|  d | g|  gg g dd| d  d| d  g|f}| dˆgd|  d | d g|  d gg g dd| d  d| d  g|f}	||||	fS )	Nr‰   rŽ   r@   r   r   r)   rh   r   r‹   r�   rT   r
   r   r&   u  s    D>@Hzkei.<locals>.hrk   rl   r
   rT   r   Úkeip  s    

	r’   c                    s   ˆ j ‰‡ ‡fdd„}|S )Nc                    sJ   | j }| j}| ˆd¡\}}||kr*|
 S |ˆ | ƒf|ˆ< |ˆ d S d S )N)r   r   r   )Z_misc_const_cacher   Úget)r   Úcacher   Úpr?   ©ÚfÚnamer
   r   Ú	f_wrappedƒ  s    zc_memo.<locals>.f_wrapped)Ú__name__)r—   r™   r
   r–   r   Úc_memo�  s    	r›   c                 C   s"   d|   d¡|  |  d¡d ¡  S )Nr   é	   r   r)   ©ZcbrtÚgammar4   ©r   r
   r
   r   Ú
_airyai_C1Ž  s    r    c                 C   s"   d|   d¡|  |  d¡d ¡  S )Nr   r)   r   r�   rŸ   r
   r
   r   Ú
_airyai_C2’  s    r¡   c                 C   s$   d|   dd¡|  |  d¡d ¡  S )Nr   r)   é   r   ©Únthrootrž   r4   rŸ   r
   r
   r   Ú
_airybi_C1–  s    r¥   c                 C   s    |   dd¡|  |  d¡d ¡ S )Nr)   r¢   r   r£   rŸ   r
   r
   r   Ú
_airybi_C2š  s    r¦   c                 C   s:   | j }z$|  dd¡|  d¡ d| j  }W 5 || _ X |
 S )Nr)   ú2/3r   )r   Úpowerrž   r   )r   r   r?   r
   r
   r   Ú_airybi_n2_infž  s
    $r©   c                 C   sØ   |dkrÐ|dk r|S | j }| j}zœ|  jd7  _|  |d | ¡|  d|| ¡ | j }|dkrŒ||  d|d  | ¡9 }||  dd¡ }n.|t|  d|d  | ¡ƒ9 }||  dd¡ }W 5 || _X |
 | S t‚d S )	NÚZr   r'   r   r)   r   r§   z1/6)Úmpq_1_3r   rž   r¨   r   rb   r6   r7   )r   r   r   Úntyper{   r!   r   r?   r
   r
   r   Ú_airyderiv_0¨  s     (
r­   c                    s´  ˆ   ˆ¡‰|rˆ  |¡\}}nd}ˆ  ˆ¡sÚˆrÚ|r²|dkr²|dkr„ˆˆ jkrdˆ  d¡d dˆ  S ˆˆ jkr„ˆ  d¡d dˆ  S |dk r²ˆˆ jkršˆS ˆˆ jkr²d| ˆ  S |sÀˆˆ jksÊˆˆ jkrÒdˆ S tdƒ‚ˆrøtdtdˆ  	ˆ¡ ƒƒ‰nd‰|�r�|dk�r,‡ ‡‡fd	d
„}ˆ j
|g f|ŽS ˆdk�rFtˆ ˆ||dƒS ‡ ‡‡fdd
„}ˆ j
||gf|Ž}ˆ  ˆ¡�rŠˆ  |¡�rŠˆ  |¡}|S n ‡ ‡‡fdd
„}ˆ j
|g f|ŽS d S )Nr   rª   r   r   r)   éþÿÿÿzessential singularity of Ai(z)rh   c                     s
  ˆ   ˆ¡dkrŠˆ  jˆ7  _ˆd } d|  }d|  d }ˆ  jˆ8  _ˆ  |¡ dˆ  ˆ j¡  ˆ  ˆd¡ }|gdgg g dd	gg |ffS ˆ  jˆ7  _ˆd d
 } ˆ  jˆ8  _tˆ ƒd }tˆ ƒ}|ˆgddgg g g ˆ jg| f}|gdgg g g ˆ j	g| f}||fS d S )Nr‰   rh   rŠ   r®   r)   r   r   )r   r¢   )é   r¢   rœ   r   )
r0   r   rR   rj   r   r¤   r    r¡   Úmpq_5_3r«   ©r+   r!   rr   ÚCÚC1ÚC2rN   rO   ©r   Ú	extraprecr   r
   r   r&   Ý  s       (zairyai.<locals>.hc                    s  ˆ  j ˆ7  _ ˆd d }ˆ  j ˆ8  _ ˆ jˆ jˆ j  }}}|}d}d|  | }d|  | }d| |  }	dˆg| | |  g|g|||	g||g|||	g|f}
|}d|  | }d| |  }d|  | }	dˆˆ g| | |  dg|g|||	g||g|||	g|f}|
|fS ©Nr)   rœ   r   r   r‰   )r   r«   Úmpq_2_3Úmpq_4_3)r   r+   Úq13Úq23Úq43rs   rt   ru   rv   Úb3rN   rO   rµ   r
   r   r&   ô  s0          ÿ   $  ÿc                     s  ˆ   ˆ¡dkrˆˆ  jˆ7  _ˆd } d|  }d|  d }ˆ  jˆ8  _ˆ  |¡dˆ  ˆ j¡ ˆ  ˆd¡  }|gdgg g dd	gg |ffS ˆ  jˆ7  _ˆd d
 } ˆ  jˆ8  _tˆ ƒ}tˆ ƒ}|gdgg g g ˆ jg| f}ˆ| gdgg g g ˆ j	g| f}||fS d S )Nr‰   rh   rŠ   r®   r)   r   r   )r   r¢   )é   r¢   rœ   )
r0   r   rR   rj   r   r¤   r    r¡   r¸   r¹   r±   rµ   r
   r   r&     s       &)r.   re   Úisnormalr:   r4   rF   rA   r*   r-   r1   r5   r­   Ú_is_real_typer/   r0   ©r   r   r<   r=   r   r¬   r&   r?   r
   rµ   r   Úairyai¾  sF    







rÂ   c                    s�  ˆ   ˆ¡‰|rˆ  |¡\}}nd}ˆ  ˆ¡s¶ˆr¶|rŠ|dkrŠˆˆ jkrJˆS ˆˆ jkrŠ|dkrddˆ S |dkrttˆ ƒS |dk rŠd| ˆ  S |s®ˆˆ jkrœˆS ˆˆ jkr®dˆ S tdƒ‚ˆrÔtdtdˆ  	ˆ¡ ƒƒ‰nd‰|�rl|dk�r‡ ‡‡fdd	„}ˆ j
|g f|ŽS ˆdk�r"tˆ ˆ||dƒS ‡ ‡‡fd
d	„}ˆ j
||gf|Ž}ˆ  ˆ¡�rfˆ  |¡�rfˆ  |¡}|S n ‡ ‡‡fdd	„}ˆ j
|g f|ŽS d S )Nr   rª   r   r   r®   zessential singularity of Bi(z)rh   c                     s|   ˆ  j ˆ7  _ ˆd d } ˆ  j ˆ8  _ tˆ ƒd }tˆ ƒ}|ˆgddgg g g ˆ jg| f}|gdgg g g ˆ jg| f}||fS )Nr)   rœ   r   r   r   )r   r¥   r¦   r°   r«   ©r+   r³   r´   rN   rO   rµ   r
   r   r&   ;  s    zairybi.<locals>.hc                    s  ˆ  j ˆ7  _ ˆd d }ˆ  j ˆ8  _ ˆ jˆ jˆ j  }}}ˆ j}ˆ j}|}d}d|  | }	d|  | }
d| |  }dˆg| | |  g|g|	|
|g||g|	|
|g|f}|}d|  | }	d| |  }
d|  | }dˆg| | d|  g|g|	|
|g||g|	|
|g|f}||fS r·   )r   r«   r¸   r¹   Zmpq_1_6Zmpq_5_6)r   r+   rº   r»   r¼   Zq16Zq56rs   rt   ru   rv   r½   rN   rO   rµ   r
   r   r&   H  s4          ÿ      ÿc                     sx   ˆ  j ˆ7  _ ˆd d } ˆ  j ˆ8  _ tˆ ƒ}tˆ ƒ}|gdgg g g ˆ jg| f}ˆ| gdgg g g ˆ jg| f}||fS )Nr)   rœ   r   )r   r¥   r¦   r¸   r¹   rÃ   rµ   r
   r   r&   [  s    )r.   re   r¿   r:   rF   r©   rA   r*   r-   r1   r5   r­   rÀ   r/   r0   rÁ   r
   rµ   r   Úairybi  sJ    





	

	rÄ   Fc           	         sÐ  dd„ }dd„ }t |ƒ}|dk r(tdƒ‚|dkr8tdƒ‚|d	krž|rtˆ  ‡ fd
d„|dˆ j d| d  d ƒ ¡S ˆ  ˆ j|dˆ j d| d  d ƒ ¡S |dk�r|dk�r|ræˆ  ‡ fdd„|dˆ j d| d  d ƒ ¡S ˆ  ˆ j|dˆ j d| d  d ƒ ¡S |dk�rÌ|dk�rÌ|�r~dˆ j d| d  d dˆ j  }ˆ  ˆ  d¡d ¡||ƒ }ˆ  ‡ fdd„|¡S dˆ j d| d  d dˆ j  }ˆ  ˆ  d¡d ¡||ƒ }ˆ  ˆ j|¡S d S )Nc                 S   s   | d dd| d d    S )NçUUUUUUå?r   r¯   r   é0   r
   ©Útr
   r
   r   ÚUh  ó    z_airy_zero.<locals>.Uc                 S   s   | d dd| d d    S )NrÅ   r   r¾   r   rÆ   r
   rÇ   r
   r
   r   r#   i  rÊ   z_airy_zero.<locals>.Tr   zk cannot be less than 1©r   r   z%Derivative should lie between 0 and 1r   c                    s   ˆ   | d¡S r‚   )rÂ   rP   rŸ   r
   r   Ú<lambda>q  rÊ   z_airy_zero.<locals>.<lambda>r)   r‰   é   Fc                    s   ˆ   | d¡S r‚   ©rÄ   rP   rŸ   r
   r   rÌ   v  rÊ   Ty              è?c                    s   ˆ   | d¡S r‚   rÎ   rP   rŸ   r
   r   rÌ   }  rÊ   )	r-   rA   Úfindrootr   rÂ   rÄ   Zln2Zexpjpir4   )	r   r{   r   r<   ÚcomplexrÉ   r#   rÈ   rx   r
   rŸ   r   Ú
_airy_zerof  s6    ÿ*ÿ*$$rÑ   c                 C   s   t | d||dƒS )Nr   F©rÑ   )r   r   r<   r
   r
   r   Ú
airyaizero‚  s    rÓ   c                 C   s   t | d|||ƒS r‚   rÒ   )r   r   r<   rÐ   r
   r
   r   Ú
airybizero†  s    rÔ   c                    sp  ˆ   ˆ¡‰ˆ  ˆ¡rTˆˆ jkr:ˆdkr.dˆ S ˆdkr:ˆS ˆˆ jkrLdˆ S tdƒ‚ˆrrtdtdˆ  ˆ¡ ƒƒ‰nd‰ˆ d¡r„t	‚z®ˆ  ˆ¡dk�r0ˆdkrÞt
ˆ  ˆ¡ƒˆ jd d k rÞ‡ ‡fdd	„}ˆ j|g ˆ jd
d�W S ˆdk�r0t
ˆ  ˆ ¡ƒdˆ j d d k �r0‡ ‡fdd	„}ˆ j|g ˆ jd
d�W S W n ˆ jk
�rJ   Y nX ‡ ‡‡‡‡fdd	„}ˆ j|g fˆŽS )Nr   r   zessential singularityrh   r<   r)   g+‡ÙÎ÷ï?c                	      s,   ˆ j ˆgddgg g dddgg dˆd  ffS ©Nr   )r   r)   )r   r)   r   rœ   r)   ©r   r
   rT   r
   r   r&   ž  s    z_scorer.<locals>.hT)ra   Zforce_seriesr   c                	      s.   ˆ j  ˆgddgg g dddgg dˆd  ffS rÕ   rÖ   r
   rT   r
   r   r&   ¢  s    c                     sž   ˆ j ˆfˆŽd } dˆ j }ˆdkr4| d9 } |d9 }ˆ  jˆ7  _ˆd d }ˆ  jˆ8  _| gdgg g g g df}|ˆgddgg g dgˆ jˆ jg|f}||fS )Nr)   r®   r   r   r   rœ   r   )rÄ   r   r   r¹   r°   )ry   r"   r+   rN   rO   ©r   r¶   r=   r{   r   r
   r   r&   §  s    
$)r.   Úisinfr:   rF   rA   r*   r-   r1   r“   r7   r6   Úargr   r5   r   rf   )r   r   r{   r=   r&   r
   r×   r   Ú_scorerŠ  s6    


  

$.rÚ   c                 K   s   t | |d|ƒS r~   ©rÚ   ©r   r   r=   r
   r
   r   Úscorergiµ  s    rÝ   c                 K   s   t | |d|ƒS r‚   rÛ   rÜ   r
   r
   r   Úscorerhi¹  s    rÞ   c                 C   sÔ   ||f|kr4|||f d | j kr4|||f d 
 S |  d| d ¡}|  d| | j|  ¡}|  d| | j|  ¡}d| |  | j | | | d | ¡ }|  |¡s¾|  |¡s¾|  |¡}| j |f|||f< |S )Nr   r   r   )r   ÚloggammarX   rR   r   rD   r9   )r   ÚlÚetaÚ_cacheZG3ZG1ZG2r?   r
   r
   r   Úcoulombc½  s    "*
rã   Tc           	         sb   ‡ ‡‡fdd„}ˆ j |||gf|Ž}|r^ˆ  |¡s^ˆ  |¡s^ˆ  ˆ¡s^ˆ  ˆ¡dkr^ˆ  |¡}|S )Nc              
      s¬   zzˆ j ˆ }ˆ j|ˆdd�}ˆ j|ddd�}ˆ  | |¡}|ˆˆ  |¡gd| d dgg g d|  ||  gd|  d g|f}W n* tk
r¤   dgdgg g g g df}Y nX |fS )NTr   r®   r   r   r   r   )rX   r   rã   rR   rA   )rà   rá   ÚjwZjwzZjwz2r²   rN   ©r   r+   r   r
   r   r&   Ð  s    
. ÿzcoulombf.<locals>.hr   )r5   rD   r9   ©	r   rà   rá   r   r+   Zchopr=   r&   r?   r
   rå   r   ÚcoulombfÊ  s    "ÿ
rç   c                    sd   ˆˆf|kr2|ˆˆf d ˆ j kr2|ˆˆf d S ‡ ‡‡fdd„}ˆ  |d¡}ˆ j |f|ˆˆf< |S )Nr   r   c                     sv   ˆ d } ˆ j ˆ }ˆ  dˆ | ¡d ˆ  dˆ | ¡d ˆ  d|  | ¡d ˆ  d|  | ¡d ˆd  ˆ j gS )Nr   y       €      à¿y              à?r   )rX   rß   r   )Úl2Zjeta©r   rá   rà   r
   r   Útermså  s    

üz_coulomb_chi.<locals>.terms)r   Zsum_accurately)r   rà   rá   râ   rê   r?   r
   ré   r   Ú_coulomb_chiá  s    "rë   c           	         sv   ˆ   |¡sˆ  |¡}‡ ‡‡fdd„}ˆ j|||gf|Ž}|rrˆ   |¡srˆ   |¡srˆ   ˆ¡srˆ  ˆ¡dkrrˆ  |¡}|S )Nc              
      sT  ˆ   | d ¡r*dgdgg g g g df}|fS |  d }zèˆ  | |¡}ˆ jˆ }ˆ  |¡}ˆ  |¡}ˆ  | |¡}ˆ  ||¡}	ˆ  |ˆ ¡}
d| ˆ }||ˆ|
|gdd| d ddgg g d|  ||  gd|  d g|f}| |	ˆ|
gdd|d dgg g d| ||  gd| d g|f}||fW S  tk
�rN   dgdgg g g g df}|f Y S X d S )Nr   r   r   r   r®   )r/   rë   rX   rL   rK   rã   rR   rA   )rà   rá   rN   rè   Úchirä   rx   rw   r³   r´   rr   r	   rO   rå   r
   r   r&   ø  s6    


 
   ÿ  ÿ
zcoulombg.<locals>.hr   )Z_imr0   r5   ræ   r
   rå   r   Úcoulombgñ  s    

"ÿ
rí   c                 C   sº  d|d  }|dkr6|s6d| d|  d | j  d }|dkr`|s`d| d|  d | j  d }|dkrŠ|rŠd| d|  d | j  d }|dkr´|r´d| d|  d | j  d }|�sl|}|d  d|  }d|d  d| d  dd| d   }	d	|d  d
|d  d|  d  dd| d   }
d|d  d|d  d|d   d|  d  dd| d   }|�r0|}|d  d|  }dd|d  d|  d  dd| d   }	d	d
|d  d|d   d|  d  dd| d   }
dd|d  d|d   d|d   d|  d  dd| d   }|||	|
|g}|}d}tdt|ƒƒD ]>}t|| ƒt||d  ƒk �r„||| 7 }nt|| ƒ}�qT|t|ƒd k�r²t|d ƒ}||fS ) aj  
    Computes an estimate for the location of the Bessel function zero
    j_{v,m}, y_{v,m}, j'_{v,m} or y'_{v,m} using McMahon's asymptotic
    expansion (Abramowitz & Stegun 9.5.12-13, DLMF 20.21(vi)).

    Returns (r,err) where r is the estimated location of the root
    and err is a positive number estimating the error of the
    asymptotic expansion.
    r‰   r   r   r)   rÍ   éüÿÿÿr¯   é   iàÿÿÿéS   iÖ  iÃ  r   r¾   iÀÿÿÿi%  iÿX iO2 iuÈ_ éi   éR   rœ   i  iß  iÑ  i,† i il"q i»QY g        r   )r   r3   Úlenr6   )r   ÚkindÚprimer?   rJ   rr   rd   Ús1Ús2Zs3Zs4Zs5rê   rx   ÚerrÚir
   r
   r   Úmcmahon  s>    
    (4@,8Drú   c                    s|   |dk rt dƒ‚|d }g ‰g ‰ˆ  |||¡‰‡ ‡fdd„ˆD ƒ‰‡‡fdd„t|d ƒD ƒ}t|ƒ|krn|S |d }q dS )zî
    Given f known to have exactly n simple roots within [a,b],
    return a list of n intervals isolating the roots
    and having opposite signs at the endpoints.

    TODO: this can be optimized, e.g. by reusing evaluation points.
    r   zn cannot be less than 1c                    s   g | ]}ˆ   ˆ|ƒ¡‘qS r
   )Úsign)r   r	   )r   r—   r
   r   Ú
<listcomp>J  s     z)generalized_bisection.<locals>.<listcomp>c                    s8   g | ]0}ˆ| ˆ|d    dkrˆ | ˆ |d   f‘qS )r   r   r
   )r   rù   )ÚpointsÚsignsr
   r   rü   K  s    ÿr   N)rA   Zlinspacer3   ró   )r   r—   rc   rd   r   ÚNZok_intervalsr
   )r   r—   rý   rþ   r   Úgeneralized_bisection;  s    r   c                 C   s   | j ||ddd�S )NZillinoisF)ZsolverÚverify)rÏ   )r   r—   Úabr
   r
   r   Úfind_in_intervalQ  s    r  g{®Gáz„?c                    sª  ˆ j }t|ˆ  ˆ¡ˆ  |¡ƒd }�zx|ˆ _ ˆ  ˆ¡‰t|ƒ}t|ƒ}ˆdk rVtdƒ‚|dk rftdƒ‚|dkrvtdƒ‚|dkr |r’‡ ‡fdd	„}	n‡ ‡fd
d	„}	|dkrÊ|r¼‡ ‡fdd	„}	n‡ ‡fdd	„}	|dk�r>|�r>|dk�r>ˆdkrøˆ jW �¢¨S ˆdk�r>dˆ  ˆdˆ  ˆd  ¡ }
tˆ |	|
d d|
 fƒW �¢bS ||ˆ|f|k�rntˆ |	|||ˆ|f ƒW �¢2S t	ˆ ||ˆ|ƒ\}
}||k �r¨tˆ |	|
| |
| fƒW ¢øS |dk�r¼|�s¼d}|dk�rÐ|�rÐd}|dk�rä|�säd}|dk�rø|�rød}|d }t	ˆ ||ˆ|ƒ\}}||k �rŽt	ˆ ||ˆ|d ƒ\}}t
ˆ |	|d||  |ƒ}t|ƒD ]\}}||||ˆ|d f< �qVtˆ |	||d  ƒW ¢S |d }�q W 5 |ˆ _ X d S )Nr'   r   zv cannot be negativer   zm cannot be less than 1rË   z prime should lie between 0 and 1c                    s   ˆ j ˆ| dd�S ©Nr   )r<   r   ©r	   ©r   r?   r
   r   rÌ   c  rÊ   zbessel_zero.<locals>.<lambda>c                    s   ˆ   ˆ| ¡S rV   r   r  r  r
   r   rÌ   d  rÊ   r   c                    s   ˆ j ˆ| dd�S r  ©rM   r  r  r
   r   rÌ   f  rÊ   c                    s   ˆ   ˆ| ¡S rV   r  r  r  r
   r   rÌ   g  rÊ   g333333@gÍÌÌÌÌÌü?gš™™™™™é?g       @r   )r   r*   r1   r4   r-   rA   Úzerorj   r  rú   r   Ú	enumerate)r   rô   rõ   r?   rJ   ZisoltolZ_interval_cacher   Zworkprecr—   r!   rø   Úlowr   Úr1Úr2Zerr2Z	intervalsr   r  r
   r  r   Úbessel_zeroT  sd    
  

    
r  c                 C   s   t | d|||ƒ
 S )aÿ  
    For a real order `\nu \ge 0` and a positive integer `m`, returns
    `j_{\nu,m}`, the `m`-th positive zero of the Bessel function of the
    first kind `J_{\nu}(z)` (see :func:`~mpmath.besselj`). Alternatively,
    with *derivative=1*, gives the first nonnegative simple zero
    `j'_{\nu,m}` of `J'_{\nu}(z)`.

    The indexing convention is that used by Abramowitz & Stegun
    and the DLMF. Note the special case `j'_{0,1} = 0`, while all other
    zeros are positive. In effect, only simple zeros are counted
    (all zeros of Bessel functions are simple except possibly `z = 0`)
    and `j_{\nu,m}` becomes a monotonic function of both `\nu`
    and `m`.

    The zeros are interlaced according to the inequalities

    .. math ::

        j'_{\nu,k} < j_{\nu,k} < j'_{\nu,k+1}

        j_{\nu,1} < j_{\nu+1,2} < j_{\nu,2} < j_{\nu+1,2} < j_{\nu,3} < \cdots

    **Examples**

    Initial zeros of the Bessel functions `J_0(z), J_1(z), J_2(z)`::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> besseljzero(0,1); besseljzero(0,2); besseljzero(0,3)
        2.404825557695772768621632
        5.520078110286310649596604
        8.653727912911012216954199
        >>> besseljzero(1,1); besseljzero(1,2); besseljzero(1,3)
        3.831705970207512315614436
        7.01558666981561875353705
        10.17346813506272207718571
        >>> besseljzero(2,1); besseljzero(2,2); besseljzero(2,3)
        5.135622301840682556301402
        8.417244140399864857783614
        11.61984117214905942709415

    Initial zeros of `J'_0(z), J'_1(z), J'_2(z)`::

        0.0
        3.831705970207512315614436
        7.01558666981561875353705
        >>> besseljzero(1,1,1); besseljzero(1,2,1); besseljzero(1,3,1)
        1.84118378134065930264363
        5.331442773525032636884016
        8.536316366346285834358961
        >>> besseljzero(2,1,1); besseljzero(2,2,1); besseljzero(2,3,1)
        3.054236928227140322755932
        6.706133194158459146634394
        9.969467823087595793179143

    Zeros with large index::

        >>> besseljzero(0,100); besseljzero(0,1000); besseljzero(0,10000)
        313.3742660775278447196902
        3140.807295225078628895545
        31415.14114171350798533666
        >>> besseljzero(5,100); besseljzero(5,1000); besseljzero(5,10000)
        321.1893195676003157339222
        3148.657306813047523500494
        31422.9947255486291798943
        >>> besseljzero(0,100,1); besseljzero(0,1000,1); besseljzero(0,10000,1)
        311.8018681873704508125112
        3139.236339643802482833973
        31413.57032947022399485808

    Zeros of functions with large order::

        >>> besseljzero(50,1)
        57.11689916011917411936228
        >>> besseljzero(50,2)
        62.80769876483536093435393
        >>> besseljzero(50,100)
        388.6936600656058834640981
        >>> besseljzero(50,1,1)
        52.99764038731665010944037
        >>> besseljzero(50,2,1)
        60.02631933279942589882363
        >>> besseljzero(50,100,1)
        387.1083151608726181086283

    Zeros of functions with fractional order::

        >>> besseljzero(0.5,1); besseljzero(1.5,1); besseljzero(2.25,4)
        3.141592653589793238462643
        4.493409457909064175307881
        15.15657692957458622921634

    Both `J_{\nu}(z)` and `J'_{\nu}(z)` can be expressed as infinite
    products over their zeros::

        >>> v,z = 2, mpf(1)
        >>> (z/2)**v/gamma(v+1) * \
        ...     nprod(lambda k: 1-(z/besseljzero(v,k))**2, [1,inf])
        ...
        0.1149034849319004804696469
        >>> besselj(v,z)
        0.1149034849319004804696469
        >>> (z/2)**(v-1)/2/gamma(v) * \
        ...     nprod(lambda k: 1-(z/besseljzero(v,k,1))**2, [1,inf])
        ...
        0.2102436158811325550203884
        >>> besselj(v,z,1)
        0.2102436158811325550203884

    r   ©r  ©r   r?   rJ   r<   r
   r
   r   Úbesseljzero‰  s    pr  c                 C   s   t | d|||ƒ
 S )aÆ  
    For a real order `\nu \ge 0` and a positive integer `m`, returns
    `y_{\nu,m}`, the `m`-th positive zero of the Bessel function of the
    second kind `Y_{\nu}(z)` (see :func:`~mpmath.bessely`). Alternatively,
    with *derivative=1*, gives the first positive zero `y'_{\nu,m}` of
    `Y'_{\nu}(z)`.

    The zeros are interlaced according to the inequalities

    .. math ::

        y_{\nu,k} < y'_{\nu,k} < y_{\nu,k+1}

        y_{\nu,1} < y_{\nu+1,2} < y_{\nu,2} < y_{\nu+1,2} < y_{\nu,3} < \cdots

    **Examples**

    Initial zeros of the Bessel functions `Y_0(z), Y_1(z), Y_2(z)`::

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> besselyzero(0,1); besselyzero(0,2); besselyzero(0,3)
        0.8935769662791675215848871
        3.957678419314857868375677
        7.086051060301772697623625
        >>> besselyzero(1,1); besselyzero(1,2); besselyzero(1,3)
        2.197141326031017035149034
        5.429681040794135132772005
        8.596005868331168926429606
        >>> besselyzero(2,1); besselyzero(2,2); besselyzero(2,3)
        3.384241767149593472701426
        6.793807513268267538291167
        10.02347797936003797850539

    Initial zeros of `Y'_0(z), Y'_1(z), Y'_2(z)`::

        >>> besselyzero(0,1,1); besselyzero(0,2,1); besselyzero(0,3,1)
        2.197141326031017035149034
        5.429681040794135132772005
        8.596005868331168926429606
        >>> besselyzero(1,1,1); besselyzero(1,2,1); besselyzero(1,3,1)
        3.683022856585177699898967
        6.941499953654175655751944
        10.12340465543661307978775
        >>> besselyzero(2,1,1); besselyzero(2,2,1); besselyzero(2,3,1)
        5.002582931446063945200176
        8.350724701413079526349714
        11.57419546521764654624265

    Zeros with large index::

        >>> besselyzero(0,100); besselyzero(0,1000); besselyzero(0,10000)
        311.8034717601871549333419
        3139.236498918198006794026
        31413.57034538691205229188
        >>> besselyzero(5,100); besselyzero(5,1000); besselyzero(5,10000)
        319.6183338562782156235062
        3147.086508524556404473186
        31421.42392920214673402828
        >>> besselyzero(0,100,1); besselyzero(0,1000,1); besselyzero(0,10000,1)
        313.3726705426359345050449
        3140.807136030340213610065
        31415.14112579761578220175

    Zeros of functions with large order::

        >>> besselyzero(50,1)
        53.50285882040036394680237
        >>> besselyzero(50,2)
        60.11244442774058114686022
        >>> besselyzero(50,100)
        387.1096509824943957706835
        >>> besselyzero(50,1,1)
        56.96290427516751320063605
        >>> besselyzero(50,2,1)
        62.74888166945933944036623
        >>> besselyzero(50,100,1)
        388.6923300548309258355475

    Zeros of functions with fractional order::

        >>> besselyzero(0.5,1); besselyzero(1.5,1); besselyzero(2.25,4)
        1.570796326794896619231322
        2.798386045783887136720249
        13.56721208770735123376018

    r   r  r  r
   r
   r   Úbesselyzeroû  s    Yr  N)r   )r   )r   )r   )r   )F)r   )r   F)r   T)r   T)r   )r   )2Z	functionsr   r   r   r   r   rC   rM   rU   rZ   r[   r]   r`   r^   rm   rn   r}   r�   rƒ   r†   rˆ   r�   r�   r‘   r’   r›   r    r¡   r¥   r¦   r©   r­   rÂ   rÄ   rÑ   rÓ   rÔ   rÚ   rÝ   rÞ   rã   rç   rë   rí   rú   r   r  r  r  r  r
   r
   r
   r   Ú<module>   s¨   

B##




















[K
+

"'5q