
    "`2                        d dl mZmZ ed        Zed        Zed3d       Zed3d       Zed3d       Zed        Zed        Z	ed	        Z
ed
        Zed        Zed        Zed        Zed        Zd Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zd Zed        Zed        Zed        Zed        Zd Zd Zed3d       Z ed3d        Z!d4d!Z"ed3d"       Z#ed5d#       Z$d$ Z%ed%        Z&ed&        Z'ei fd'       Z(ed6d(       Z)ei fd)       Z*ed6d*       Z+d+ Z,d, Z-d- Z.d.i fd/Z/ed3d0       Z0ed3d1       Z1y2)7   )defundefun_wrappedc                 &    | j                  d|      S )zCComputes the Bessel function `J_0(x)`. See :func:`~mpmath.besselj`.    besseljctxxs     9/usr/lib/python3/dist-packages/mpmath/functions/bessel.pyj0r           ;;q!    c                 &    | j                  d|      S )zDComputes the Bessel function `J_1(x)`.  See :func:`~mpmath.besselj`.r   r   r	   s     r   j1r      r   r   c                    	
 t              t        u rd}n> j                         j                        }|rt         j	                              |r!dk  rdz    j
                   |fi |z  S  j                         j                        	|r j                  |      
 j                  
      r|
dk\  rwt        
      
 j                  }	  xj                  dz  c_         j                   
fdt        
dz         D              }| _        | j                  d      
 z  z  }|S 	 fd}  j                  |
gfi |}|S |s1|r/t        	      d	k  r!t              d
k  r	  j                        S sBs j                  z   z   }n j!                        dkD  rz  }n j"                  z   z   }ny j                  }	  xj                  t%        dt        	      z   j                        z  c_         j'                  dd      	 fd}  j                  |gfi |}| _        |}|S # | _        w xY w# t        $ r Y w xY w# | _        w xY w)NTr      c              3      K   | ]8  }d |z  j                  |      z  j                  d|z  z   z
        z   : yw)r      N)binomialr   ).0kr
   dnzs     r   	<genexpr>zbesselj.<locals>.<genexpr>%   sI      ) !1Ws||Aa'883;;qs1uQwq;QQ )s   >Ar   r   c                 
   j                  j                  j                  z         dd      }d| |z
  dz   z  d| |z
  dz   z  g}dj                  g|d| z  z
  d| |z
  gg || dz   dz  | dz   dz  g|| dz   gz   |fg}|S )Nprec      пTexact      ?r   r   fmulr    pir   r   rBTMr
   r   s        r   hzbesselj.<locals>.h+   s    HHSXXa!X<e4HP!A#a%[#qs1u+.lAacE#ac?2a!A#sAaC98MaQRSTQTPUgVWXYr   
         r$   r"   c                     j                  j                  t        dj                  z               d      }g| gg | dz   gg | dz   g|fgS )Nr   r   Tr"   r   )fnegr&   maxr    )r   r)   r,   r
   ws     r   r-   zbesselj.<locals>.hG   s[    !QS388A:5F!GtTAS1#rAaC5"qseQ?@@r   )typeintconvertisint_rer   magr    fsumrangempf	hypercombabs_besseljNotImplementedErroronereinfminr&   )r
   r   r   
derivativekwargsn_isintorigvr-   r,   r   r4   s   ```      @@@r   r   r      s_   Aw#~KKN))A,CGGAJA1q5QwaRJA&AAAAA
AKK
#
 99Q<AFAA88D BHH )"1Q3Z) )  qb!!AJ HG
 a!A1&1A< H7 CFRKCFRK||Aq)) GGaKMQaCGGaK!O 88D
  C#a&#((33HHQ4H0A "CMM!aS3F3BHM   ' ,  s+   >I >I !A%I- 	I	I*)I*-	I6c                    	  j                  |      } j                        sr|rt        |sd|z   z   S  j                  |      rd|z   z  S  j                  |      }|dk(  r j                  |z   z  S |dkD  rd|z   z  S  j
                  |z   z   S  j                        	|r0 j                  |      }	 fd}  j                  |||gfi |}|S 	 fd}  j                  ||gfi |}|S )Nr   r   c                    j                  j                  j                  z         dd      }d| |z
  dz   z  d| |z
  dz   z  | dz   g}dj                  g|d| z  z
  d| |z
  g| dz   g|| dz   dz  | dz   dz  g||fg}|S )Nr         ?Tr"   r$   r   r   r%   r(   s        r   r-   zbesseli.<locals>.hf   s    !QSXXaZ8$dKAac!ec1Q3q5k1Q3/ASVVA,!A#c!A#!uQ1c	1Q3)7LQqQRAHr   c           	          j                  dd      }j                  ||t        dj                  z               }|g| gg | dz   gg | dz   g|fgS )Nr$   Tr"   r   r   r   )r&   r3   r    )r   r4   r)   r,   r
   r   s      r   r-   zbesseli.<locals>.hm   sb    Ct,AAC#((1*$56AS1#rAaC5"qseQ788r   )r7   
ValueErrorr8   rC   nanrD   r:   r>   )
r
   r   r   rF   rG   r)   r   r-   rJ   r,   s
   ` `      @r   besselirQ   P   s	   AAAAQ3q5L99Q<ac7NFF1I677AaC= Uac7N77AaC= 
AKK
#	
 CMM!aU-f- H	9 CMM!aS+F+Hr   c                 "   |s|rt         |s| j                   ||z   z   S | j                  |      r| j                  ||z   z  S | j	                  |      }|dz   }| j                  |      r |dkD  r| j                   ||z   z   S d||z   z  S |dk  r/t        | j                  |            dz  r| j                  ||z   z   S | j                  ||z   z   S | xj                  dz  c_	        | j                  |      \  }}|| j                   k  r(| j                  }	| xj                  dz  c_	        ||	z  }n|dk  r| xj                  |z  c_	        | j                  |      \  }
} | j                  |||fi ||
z   | j                  | ||fi |z
  |z  S )Nr$   r   r   r.   )rO   rD   imrP   rC   r8   r6   floorninfr    nint_distanceepscospi_sinpir   )r
   r   r   rF   rG   r)   qmr   r-   cossins               r   besselyr]   t   s   GG8qs##66!977ac?"FF1IcE99Q<1ux1Q3''AaCy q5S1&*77ac?"88qs##HHNHQDAqCHH9}WWHA	Q	
QAq!HCCKK!J004QBq-f-./23 3r   c                      s j                   S  j                        }|dk  rfd}n xj                  |z  c_         fd}  j                  ||gfi |S )Nr   c                 v    dz  dz  }dg|  | dz
  g| gg g d| z
  g|f}dg| |  dz
  g|  gg g d| z   g|f}||fS )Nr   r    )r   r)   T1T2r   s       r   r-   zbesselk.<locals>.h   so    1qAQ1"acQCR!A#9BQ!aRTaRD"b1Q3%:Br6Mr   c           	      x    j                   dz  j                         gg dg g | dz   d| z
  gg ddz  z  fgS )Nr   )r$         r   r$   r   )r'   expr   r
   r   s    r   r-   zbesselk.<locals>.h   sO    ffQh377A2;/r23AB!H. / /r   )rD   r:   r    r>   )r
   r   r   rG   r,   r-   s   ` `   r   besselkrg      sX    ww
A1u	 	A	/ 3==QC*6**r   c                 n     | j                   ||fi || j                   | j                  ||fi |z  z   S Nr   jr]   r
   r   r   rG   s       r   hankel1rm      :    3;;q$V$suu[S[[1-Fv-F'FFFr   c                 n     | j                   ||fi || j                   | j                  ||fi |z  z
  S ri   rj   rl   s       r   hankel2rp      rn   r   c                 :   |dk(  rH| j                  |      dkD  r|S | j                  |      dk  r| j                  |z   S | j                  |z  S | j                  d|d      }d|z   }| j	                  |      ||z  z   | j
                  ||z
  dd|z  z   |fi |z  S )Nr   rd   Tr"   r$   r   r   )rC   rD   rP   r&   re   hyp1f1)r
   r   rZ   r   rG   r   ys          r   whitmrt      s    Av66!9tHVVAY77Q;77Q;q%AAA771:1zszz!A#q1uaB6BBBr   c                 2   |dk(  rDt        | j                  |            }|dk  r|S |dkD  r| j                  |z   S | j                  |z  S | j	                  d|d      }d|z   }| j                  |      ||z  z   | j                  ||z
  dd|z  z   |fi |z  S )Nr   r$   rd   Tr"   r   r   )r?   rC   rD   rP   r&   re   hyperu)r
   r   rZ   r   rG   gr   rs   s           r   whitwrx      s    Avq	Ns7HW77Q;77Q;q%AAA771:1zszz!A#q1uaB6BBBr   c                 b     j                  |      \  }} j                  |      \  }} j                        s@ j                  |      dk  r j                  d|z
  g||z
  dz   g      S  j                  z   S d|z   |z
  } j                  |      \  }}	  j
                  }		  xj
                  dz  c_         j                  dd||f||gdz   j
                        }
|
|z  z  |	 _        S # |	 _        w xY w#  j                  $ r Y nw xY w fd}  j                  |||gfi |S )Nr   r.   r   r   r   )maxtermsc                     j                  |      }j                  |gddgg | |z
  dz   |g| g|gf}j                   |gddd|z
  gg | d|z
  g| |z
  dz   gd|z
  gf}||fS )Nr   r   r   )sinpir'   )abr4   ra   rb   r
   r   s        r   r-   zhyperu.<locals>.h   s    IIaLvvaj!BAaCE!9aS!Q7wqmQr!A#Jr1QqS'1Q3q5'1Q3%B2vr   )	_convert_paramr7   rC   	gammaprodrD   r    hypsumNoConvergencer>   )r
   r}   r~   r   rG   atypebtypebbbbtyperI   rJ   r-   s   `  `        r   rv   rv      s8   !!!$HAu!!!$HAuAA66!9>==!A#!Aw//77Q;	
1QB##B'JB	xx	HHNH

1a%1b'2a4#((
SAq!t8CHtCH 
 3==QqE,V,,s+   D  (AC4 ,D  4	C==D   DDc                       j                  |      } j                         fd}  j                  ||gfi |S )Nc                     dz  dj                  j                        z  g| dz   dgg | dz   gdgd| dz   gdz  dz   fgS Nr   r$   r   r         ?sqrtr'   rf   s    r   r-   zstruveh.<locals>.h   sa    A#s388CFF++,qsBiaeWqcCQRSVQV<[\]^[^abZbYbcddr   r7   r>   r
   r   r   rG   r-   s   ` `  r   struvehr      s=    AAAAe3==QC*6**r   c                       j                  |      } j                         fd}  j                  ||gfi |S )Nc                     dz  dj                  j                        z  g| dz   dgg | dz   gdgd| dz   gdz  dz  fgS r   r   rf   s    r   r-   zstruvel.<locals>.h   s^    A#s388CFF++,qsBiaeWqcCQRSVQV<Z[\]Z]`aYabccr   r   r   s   ` `  r   struvelr      s=    AAAAd3==QC*6**r   c                       j                  |      d   } j                         fd}  j                  ||gfi |S )Nr   c                 0   j                   }| |z  }|dz  }||z
  ||z   d|z
  d|z   f\  }}}}j                  |      \  }}	dk(  r
|z  |	g|g}}
dk(  r|z  | g|	g}}
j                  d      }
ddgg ||gdg||g|f}dgg ||gdg||g|f}||fS )Nr0   r   r   r!   mult)mpq_1_2rX   square_exp_arg)rJ   r~   urZ   a1a2b1b2csAr*   r4   ra   rb   r
   whichr   s                  r   r-   z_anger.<locals>.h  s    KKaCaCc1Q3!QqS(2bq!1A:aC8aSqAA:aC!9qcqAqu-ARGaS2b'14R"R1#2w12vr   r   r7   r>   )r
   r   rJ   r   rG   r-   s   `` `  r   _angerr     sF    1a AAA 3==QC*6**r   c                      t        | d||fi |S Nr   r   r
   rJ   r   rG   s       r   angerjr         #q!Q)&))r   c                      t        | d||fi |S Nr   r   r   s       r   weberer     r   r   c                       j                  |      d   } j                  |      d   } j                         fd}  j                  |||gfi |S )Nr   c           	          j                   }j                  d      }| |z
  dz   | |z   dz   gdd| dz   gg g dg|| |z
  dz   z  || |z   dz   z  g|ffS )Nr!   r   r   r   r0   r   r   )r   rJ   r~   r4   r
   r   s       r   r-   zlommels1.<locals>.h"  s    KKqu-1Q!Aq!BAaC="b1#!AYq!A#a%y!1& ' 	'r   r   r
   r   rJ   r   rG   r-   s   `  `  r   lommels1r     s]    1a A1a AAA'
 3==QqE,V,,r   c                       j                  |      d   } j                  |      d   } j                         fd}  j                  |||gfi |S )Nr   c           	      f   j                   }j                  d      }| |z
  dz   | |z   dz   gdd| dz   gg g dg|| |z
  dz   z  || |z   dz   z  g|f}dg| |z   dz
  | g||| |z   dz   z  g||| z
  dz   z  gg d|z
  g|f}dg| |z
  dz
  |g| || |z
  dz   z  g|d| z
  |z
  z  gg d|z   g|f}|||fS )Nr!   r   r   r   r0   r   r   )	r   rJ   r~   r4   ra   rb   T3r
   r   s	          r   r-   zlommels2.<locals>.h4  s   KKqu-c!eQqSUAR1r2sQ!AYq!A#a%y<QSTTVac!eaR[1a1Qi.1ac!e9+rAaC5!KVac!eQZ1"a1Qi1ac!e9+rAaC5!K 2rzr   r   r   s   `  `  r   lommels2r   )  s]    1a A1a AAA  3==QqE,V,,r   c                       j                  |      } j                         fd}  j                  ||gfi |S )Nc           	          dz  dz   }j                  d| z        \  }}|dz  gd| gg | dz   gg dd| dz   z  d| z  dz   g|f}|dz  gd| dz   gg | dz   gg dd| dz   z  d| z  dz   g|f}||fS )N         r   r   r$   r   r0   rX   r   r)   r[   r\   ra   rb   r
   r   s         r   r-   zber.<locals>.hK  s    cAXI??57+S1Q3Z!QacUBc1Q3iQq0I1L1Q3Z!QqS2!ub3QqS	3q572KQN2vr   r   r   s   ` `  r   berr   F  >    AAAA 3==QC*6**r   c                       j                  |      } j                         fd}  j                  ||gfi |S )Nc           	          dz  dz   }j                  d| z        \  }}|dz  gd| dz   gg | dz   gg dd| dz   z  d| z  dz   g|f}|dz  gd| gg | dz   gg dd| dz   z  d| z  dz   g|f}||fS )Nr         ?r   r   r   r$   r0   r   r   s         r   r-   zbei.<locals>.hX  s    cAXI??46*S1Q3Z!QqS2!ub3QqS	3q572KQN1Q3Z!QacUBc1Q3iQq0I1L2vr   r   r   s   ` `  r   beir   S  r   r   c                       j                  |      } j                         fd}  j                  ||gfi |S )Nc           
         dz  dz   }
j                  d| z        \  }}
j                  d| z        \  }}dd|z  g|  dz
  | dg|  gg g ddd| z   z  d| dz   z  g|f}d| g|  dz
  d| z   dg|  dz
  gg g ddd| z   z  d| dz   z  g|f}dd|z  g| dz
  |  dg| gg g ddd| z
  z  dd| z  z
  g|f}d| g| dz
  d| z
  dg| dz
  gg g ddd| z
  z  dd| z  z
  g|f}	||||	fS )	Nr   rM   r   r   r0   r   r$   r   r   r   r)   cos1sin1cos2sin2ra   rb   r   T4r
   r   s             r   r-   zker.<locals>.he  so   cAXI__T!V,
d__T!V,
dAdF^qbdAq\QB4R#sAaCy#qQRs)9TVWWTE]aRT1Q3NaRTFBS#qs)SRSTURUY<WYZZAdF^acA2q\A3Bc1Q3i3q58QSTTTE]QqS!A#qMAaC5"b3QqS	1SQRU7:SUVV2r2~r   r   r   s   ` `  r   kerr   `  >    AAAA 3==QC*6**r   c                       j                  |      } j                         fd}  j                  ||gfi |S )Nc           
         dz  dz   }
j                  d| z        \  }}
j                  d| z        \  }}| dgd| dz
  d| z
  g| dz
  gg g ddd| z
  z  dd| z  z
  g|f}| dgd| dz
  |  g| gg g ddd| z
  z  dd| z  z
  g|f}| dgd|  dz
  | g|  gg g dd| dz   z  d| dz   z  g|f}| dgd|  dz
  | dz   g|  dz
  gg g dd| dz   z  d| dz   z  g|f}	||||	fS )	Nr   r   rM   r   r   r0   r   r$   r   r   s             r   r-   zkei.<locals>.hu  sk   cAXI__T!V,
d__T!V,
deQ]Q!QqSMAaC5"b3QqS	1SQRU7:SUVVeQ]Q!aRL1#r2S!A#Y#a%7PRSSeQ]Q1aLA2$Bc1Q3iaPQc8SUVVeQ]Q1acNaRTFBS#qs)SRSTURUY<WYZZ2r2~r   r   r   s   ` `  r   keir   p  r   r   c                 .      j                    fd}|S )Nc                     | j                   }| j                  }|j                  d      \  }}||k\  r|S | |       f|<   |   d   S )N)r   r   r   )_misc_const_cacher    get)r
   cacher    prJ   fnames        r   	f_wrappedzc_memo.<locals>.f_wrapped  sX    %%xxiif%!92I3.E$K;q>!r   )__name__)r   r   r   s   ` @r   c_memor     s    ::D" r   c                 r    d| j                  d      | j                  | j                  d      dz        z  z  S )Nr   	   r   r0   cbrtgammar=   r
   s    r   
_airyai_C1r     s/    cii
15566r   c                 r    d| j                  d      | j                  | j                  d      dz        z  z  S )Nr   r0   r   r   r   s    r   
_airyai_C2r     s/    !syyA6677r   c                 t    d| j                  dd      | j                  | j                  d      dz        z  z  S )Nr   r0      r   nthrootr   r=   r   s    r   
_airybi_C1r     s2    Aa 399SWWQZ\#::;;r   c                 n    | j                  dd      | j                  | j                  d      dz        z  S )Nr0   r   r   r   r   s    r   
_airybi_C2r     s-    ;;qcii
1555r   c                     | j                   }	 | j                  dd      | j                  d      z  d| j                  z  z  }|| _         |S # || _         w xY w)Nr0   2/3r   )r    powerr   r'   )r
   r    rJ   s      r   _airybi_n2_infr     sT    88DIIasyy//366:2I s   4A 	Ac                    |dk(  r|dk  r|S | j                   }| j                  }	 | xj                  dz  c_        | j                  |dz   |z        | j                  d||z        z  | j                  z  }|dk(  r3|| j                  d|dz   z  |z        z  }|| j                  dd      z  }n;|t        | j                  d|dz   z  |z              z  }|| j                  dd      z  }|| _        ||z   S t        # || _        w xY w)	NZr   r.   r   r0   r   r   z1/6)mpq_1_3r    r   r   r'   r|   r?   rA   )r
   r   r   ntyper   r)   r    rJ   s           r   _airyderiv_0r     s   |q5HKKxx
	HHNH		1Q3'"SYYq1%55>AzSYYq!A#wqy))SYYq''S1ac719-..SYYq''CHrAv "!	 CHs   CC; ;	Dc           	           j                        |r j                  |      \  }}nd} j                        sr|rdk(  r|dk(  rR j                  k(  r j	                  d      dz  dz  z   S  j
                  k(  r j	                  d      dz  dz  z   S |dk  r) j                  k(  rS  j
                  k(  r	d|z   z  S |s j                  k(  s j
                  k(  rdz  S t        d      r(t        dt        d j                        z              nd|r|dk(  r fd	}  j                  |g fi |S dk(  rt         |d      S  fd
}  j                  ||gfi |} j                        r" j                  |      r j                  |      }|S  fd}  j                  |g fi |S )Nr   r   r   r   r0   zessential singularity of Ai(z)r   c                  B   j                  
      dkD  rxj                  	z  c_        
dz  } d| z  }d| z  dz  }xj                  	z  c_        j                  |       dj                  j                        z  z  j                  
d      z  }|gdgg g dd	gg |ffS xj                  	z  c_        
dz  d
z  } xj                  	z  c_        t              dz  }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   r0   r   r   )r   r   )   r   r   r$   )
r9   r    re   r   r'   r   r   r   mpq_5_3r   r4   r)   r   CC1C2ra   rb   r
   	extraprecr   s           r   r-   zairyai.<locals>.h  s,   771:>HH	)H3AE!GAaQHH	)HQsxx'7%78Qq9IIACBr6%.A>?? HH	)H1qAHH	)H#C3.B#CBQ1bB}Q>Bqc"RCKK=:Br6Mr   c                    xj                   z  c_         dz  dz  }xj                   z  c_         j                  j                  j                  }}}|}d}d| z
  |z  }d| z
  |z  }d| |z  z
  }	dg| |z
  |  g|g|||	g||g|||	g|f}
|}d| z
  |z  }d| |z  z
  }d| z
  |z  }	d g| |z
  |  dg|g|||	g||g|||	g|f}|
|fS Nr0   r   r   r   r   )r    r   mpq_2_3mpq_4_3)r   r4   q13q23q43r   r   r   r   b3ra   rb   r
   r   r   s               r   r-   zairyai.<locals>.h  s   I%qDFI%!kk3;;C1!A#sb!SyBQquW"VaeaR[2$Br
GbBZ+AaC91S5bac3Y"QBZ!C%!Q"2bzGbBZ+2vr   c                  <   j                  
      dkD  rxj                  	z  c_        
dz  } d| z  }d| z  dz  }xj                  	z  c_        j                  |      dj                  j                        z  j                  
d      z  z  }|gdgg g dd	gg |ffS xj                  	z  c_        
dz  d
z  } xj                  	z  c_        t              }t              }|gdgg g g j                  g| f}
|z  gdgg g g j                  g| f}||fS )Nr   r   r   r   r0   r   r   )r   r   )   r   r   )
r9   r    re   r   r'   r   r   r   r   r   r   s           r   r-   zairyai.<locals>.h  s%   wwqzA~ I%sFaART!VI%GGAJ#((366"2 23;;q3C CDQC2uUmBq9::I%qD1HI%__T1#bB}Q6dVQC2b#++q82vr   )r7   r   isnormalrD   r=   rU   rO   r3   r6   r:   r>   r   _is_real_typer8   r9   	r
   r   rF   rG   r   r   r-   rJ   r   s	   ``      @r   airyair
    s   AA%%j15<<?q#Bw<771:a<!A#--=772;q=1Q3..2v<H=7qb>)qCGG|qCHH}Q3J9::3s3771:~./		6"$ !3==B1&11Av#CAua88 a!//A  #		!GGAJH	& s}}Q-f--r   c           	            j                        |r j                  |      \  }}nd} j                        sr|rMdk(  rH j                  k(  rS  j                  k(  r(|dk(  rdz  S |dk(  rt               S |dk  r	d|z   z  S |s% j                  k(  rS  j                  k(  rdz  S t        d      r(t        dt        d j                        z              nd|r|dk(  r fd}  j                  |g fi |S dk(  rt         |d      S  fd	}  j                  ||gfi |} j                        r" j                  |      r j                  |      }|S  fd
}  j                  |g fi |S )Nr   r   r   r   r   zessential singularity of Bi(z)r   c                      xj                   z  c_         dz  dz  } xj                   z  c_         t              dz  }t              }|gddgg g g j                  g| f}|gdgg g g j                  g| f}||fS )Nr0   r   r$   r   r   )r    r   r   r   r   r4   r   r   ra   rb   r
   r   r   s        r   r-   zairybi.<locals>.h;  s    I%qD1HI%_S(_VQqE"RCKK=:T1#bB}Q62vr   c                    xj                   z  c_         dz  dz  }xj                   z  c_         j                  j                  j                  }}}j                  }j
                  }|}d}d| z
  |z  }	d| z
  |z  }
d| |z  z
  }dg| |z
  |  g|g|	|
|g||g|	|
|g|f}|}d| z
  |z  }	d| |z  z
  }
d| z
  |z  }dg| |z
  d| z
  g|g|	|
|g||g|	|
|g|f}||fS r   )r    r   r   r   mpq_1_6mpq_5_6)r   r4   r  r  r  q16q56r   r   r   r   r  ra   rb   r
   r   r   s                 r   r-   zairybi.<locals>.hH  s&   I%qDFI%!kk3;;Ckkkk1!A#sb!SyBQquW"VaeaR[2$Br
GbBZ+AaC91S5bac3Y"VaeQqS\B4"RGbBZ+2vr   c                      xj                   z  c_         dz  dz  } xj                   z  c_         t              }t              }|gdgg g g j                  g| f}|z  gdgg g g j                  g| f}||fS )Nr0   r   r   )r    r   r   r   r   r  s        r   r-   zairybi.<locals>.h[  s    HH	!H1qAHH	!HCBCBqc"RCKK=2BB$Br"ckk]14Br6Mr   )r7   r   r  rD   rU   r   rO   r3   r6   r:   r>   r   r  r8   r9   r	  s	   ``      @r   airybir    s   AA%%j15<<?q#CGG|CHH}7Q3J7)#..r67qb>)CGG|CHH}s
9::3s3771:~./		6 !3==B1&11Av#CAua88 a!//A  #		!GGAJH	 s}}Q-f--r   c                 (    d }d }t        |      }|dk  rt        d      |dvrt        d      |dk(  rs|r5 j                   fd |d	 j                  z  d
|z  d	z
  z  dz               S  j                   j                   |d	 j                  z  d
|z  dz
  z  dz               S |dk(  rx|dk(  rs|r5 j                   fd |d	 j                  z  d
|z  dz
  z  dz               S  j                   j
                   |d	 j                  z  d
|z  d	z
  z  dz               S |dk(  r|dk(  r|rld	 j                  z  d
|z  d	z
  z  dz  d j                  z  z   } j                   j                  d      d	z         ||      z  } j                   fd|      S d	 j                  z  d
|z  dz
  z  dz  d j                  z  z   } j                   j                  d      d	z         ||      z  } j                   j
                  |      S y y )Nc                 *    | dz  dd| dz  dz  z  z
  z  S )NUUUUUU?r   r   r   0   r`   ts    r   Uz_airy_zero.<locals>.Uh       QY!QT"W+..r   c                 *    | dz  dd| dz  dz  z  z   z  S )Nr  r   r  r   r  r`   r  s    r   r+   z_airy_zero.<locals>.Ti  r  r   r   zk cannot be less than 1r   r   z%Derivative should lie between 0 and 1r   c                 (    j                  | d      S r   )r
  r   r
   s    r   <lambda>z_airy_zero.<locals>.<lambda>q      #**Qq/ r   r0   r      Fc                 (    j                  | d      S r   r  r   s    r   r!  z_airy_zero.<locals>.<lambda>v  r"  r   Ty              ?c                 (    j                  | d      S r   r%  r   s    r   r!  z_airy_zero.<locals>.<lambda>}  r"  r   )	r6   rO   findrootr'   r
  r  ln2expjpir=   )	r
   r   r   rF   complexr  r+   r  r   s	   `        r   
_airy_zeror+  f  s   ..AA1u233@AAz<< 91SVV8QqSU#A%&&( (||CJJ1SVV8QqSU+;A+=)>(>??zg&<< 91SVV8QqSU#A%&&( (||CJJ1SVV8QqSU+;A+=)>(>??zgo#&&!A#a% "U377]2A

3771:a<(1Q4/A<< 91==cffHac!eQsww.JJswwqz!|$qt+||CJJ** &zr   c                      t        | d||d      S )Nr   Fr+  )r
   r   rF   s      r   
airyaizeror.    s    c1aU33r   c                      t        | d|||      S r   r-  )r
   r   rF   r*  s       r   
airybizeror0    s    c1aW55r   c           	      F     j                         j                        r? j                  k(  rdk(  rdz  S dk(  rS  j                  k(  rdz  S t	        d      r(t        dt        d j                        z              ndj                  d      rt        	  j                        dkD  rdk(  rRt         j                               j                  dz  dz  k  r% fd} j                  |g  j                  d	
      S dk(  rVt         j                               d j                  z  dz  dz  k  r% fd} j                  |g  j                  d	
      S  fd}  j                  |g fi S #  j                  $ r Y .w xY w)Nr   r   zessential singularityr   rF   r0   g+?c            	      D     j                   gddgg g g dg ddz  z  ffS Nr   ))r   r0   )r   r0   r   r   r0   r'   r
   r   s   r   r-   z_scorer.<locals>.h  s/    !ffQZB2ob1a4PRRr   T)rz   force_seriesr   c            	      F     j                    gddgg g g dg ddz  z  ffS r3  r4  r5  s   r   r-   z_scorer.<locals>.h  s1    "vvga["RBr!AqD&QSSr   c                  6    j                   	fi dz  } dj                  z  }dk(  r
| dz  } |dz  }xj                  z  c_        	dz  dz  }xj                  z  c_        | gdgg g g g df}|	gddgg g dgj                  j                  g|f}||fS )Nr0   r   r   r   r   r   r   )r  r'   r    r   r   )
r   r*   r4   ra   rb   r
   r   rG   r   r   s
        r   r-   z_scorer.<locals>.h  s    CJJq#F#A%svvIA:FAGAIqDFIS1#r2r2q(URFBQC#++ckk)BAE2vr   )r7   isinfrD   rU   rO   r3   r6   r:   r   rA   r?   argr'   r>   r    r   )r
   r   r   rG   r-   r   s   ```` @r   _scorerr;    s   AA
yy|<z!A#:z!8=Q3J0113s3771:~./		zz,!!771:>zc#''!*oq50@@S}}QSXXD}QQzc#''1"+.366!e1CCT}}QSXXD}QQ  3==B)&))  s   +A*F AF F F c                     t        | |d|      S r   r;  r
   r   rG   s      r   scorergir?        31f%%r   c                     t        | |d|      S r   r=  r>  s      r   scorerhirB    r@  r   c                    ||f|v r"|||f   d   | j                   k\  r|||f   d   S | j                  d|z  dz         }| j                  d|z   | j                  |z  z         }| j                  d|z   | j                  |z  z
        }d|z  | j                  | j                   |z  |z   |z   dz  |z
        z  }| j                  |      s"| j                  |      s| j                  |      }| j                   |f|||f<   |S )Nr   r   r   )r    loggammark   re   r'   rS   rC   )r
   leta_cacheG3G1G2rJ   s           r   coulombcrK    s    	3x6fQsUmA.#((:qua   	ac!e	B	ac#%%)m	$B	ac#%%)m	$B	1swwBr)1,r122AFF1IFF1IXXqMF1S5MHr   c                       fd}  j                   |||gfi |}|rX j                  |      sG j                  |      s6 j                        s% j                        dk\  r j                  |      }|S )Nc                 :   	 j                   z  }j                  |	d      }j                  |dd      }j                  | |      }|	j                  |      gd| dz   dgg g d| z   ||z  z   gd| z  dz   g|f}|fS # t        $ r dgdgg g g g df}Y |fS w xY w)NTr"   r   r   r   r   r   )rk   r&   rK  re   rO   )
rE  rF  jwjwzjwz2r   ra   r
   r4   r   s
          r   r-   zcoulombf.<locals>.h  s    	.qB((2q(-C88C480DQ$AQ%1Q3{BQqSCZL1QB u  	.rdBBA-Bu	.s   A;B BBr   )r>   rS   rC   	r
   rE  rF  r   r4   choprG   r-   rJ   s	   `  ``    r   coulombfrS    sg    
 	a!C+F+ASVVAYsvvay	aFF1IHr   c                      f|v r!|f   d    j                   k\  r
|f   d   S  fd} j                  |d      } j                   |f|f<   |S )Nr   r   c                      dz
  } j                   z  }j                  dz   |z         dz  j                  dz   |z
        dz  j                  d| z   |z         dz  j                  d| z   |z
        dz  dz    j                  z  gS )Nr   y             y              ?r$   )rk   rD  r'   )l2jetar
   rF  rE  s     r   termsz_coulomb_chi.<locals>.terms  s    RTuuSyQqSX&%0LL1T"d+LL2d#t,LL2d#u-eHSVVO	 	r   )r    sum_accurately)r
   rE  rF  rG  rX  rJ   s   ```   r   _coulomb_chirZ    sm    	3x6fQsUmA.#((:ae}Q 	5!$AXXqMF1S5MHr   c                 >     j                  |      s j                  |      } fd}  j                  |||gfi |}|rX j                  |      sG j                  |      s6 j                        s% j                        dk\  r j                  |      }|S )Nc                 8   j                  | dz        rdgdgg g g g df}|fS |  dz
  }	 j                  | |      }j                  z  }j                  |      }j	                  |      }j                  | |      }j                  ||      }	j                  |z        }
d|z  z  }|||
|gdd| dz   ddgg g d| z   ||z  z   gd| z  dz   g|f}| |	|
gdd|dz   dgg g d|z   ||z  z   gd|z  dz   g|f}||fS # t        $ r dgdgg g g g df}|fcY S w xY w)Nr   r   r   r   r   )r8   rZ  rk   r\   r[   rK  re   rO   )rE  rF  ra   rV  chirN  r   r   r   r   r   r   rb   r
   r4   r   s                r   r-   zcoulombg.<locals>.h  s}   99QqS>rdBBA-B5LRT	""1c*CqBA#''#,aa$Bb%B1A2aARAq!B1Q31#5r21RVqs1ugq)B"b!QB2a4#3B2bf"Qx+Br6M 	rdBBA-B5L	s   CC? ?DDr   )_imr9   r>   rQ  s	   `  ``    r   coulombgr_    s    
 771:GGAJ, 	a!C+F+ASWWQZ#''#,	qGGAJHr   c                 R   d|dz  z  }|dk(  r |sd|z  d|z  z   dz
  | j                   z  dz  }|dk(  r |sd|z  d|z  z   dz
  | j                   z  dz  }|dk(  r |rd|z  d|z  z   dz
  | j                   z  dz  }|dk(  r |rd|z  d|z  z   dz
  | j                   z  dz  }|s}|dz
   d|z  z  }d|dz
  z  d|z  dz
  z  dd|z  dz  z  z  }	d	|dz
  z  d
|dz  z  d|z  z
  dz   z  dd|z  dz  z  z  }
d|dz
  z  d|dz  z  d|dz  z  z
  d|z  z   dz
  z  dd|z  dz  z  z  }|r}|dz    d|z  z  }dd|dz  z  d|z  z   dz
  z  dd|z  dz  z  z  }	d	d
|dz  z  d|dz  z  z   d|z  z
  dz   z  dd|z  dz  z  z  }
dd|dz  z  d|dz  z  z   d|dz  z  z
  d|z  z   dz
  z  dd|z  dz  z  z  }	
g}|}d}t        dt        |            D ]9  }t        ||         t        ||dz
           k  r	|||   z  },t        ||         }; t        |      dz
  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   r0   r#  r      iS   i  i  r   r  ii%  iX iO2 iu_ i   R   r   i  i  i  i, i il"q iQY g        r   )r'   r<   lenr?   )r
   kindprimerJ   rZ   r   r~   s1s2s3s4s5rX  r   erris                   r   mcmahonrp    s    	
!Q$AqyQqS1WQY$6q$8qyQqS1WQY$6q$8qyU1QqSCFF 21 4AqyU1QqSCFF 21 4AsVQqS\1Xqs2v1Q3(
+!A#Y1a4Ad*+R1q[9!A#YQT	&A+-gai7?@#qsQh,OsVQqS\1a41QAaC!8,"QT'$q!t)#DF*4/0"acAX+>$q!t)F1a4K'14WQY>wFGaPQcTUXV2bE
A
C1SZ   uQx=3uQqSz?*qMAeAh-C	 
 	CJqL%)nc6Mr   c                 R   |dk  rt        d      |dz   }g }g }	 | j                  |||      }|D cg c]  }| j                   ||             }}t        |dz
        D 	cg c]   }	||	   ||	dz      z  dk(  r||	   ||	dz      f" }
}	t	        |
      |k(  r|
S |dz  }c c}w c c}	w )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 1r   r   )rO   linspacesignr<   rf  )r
   r   r}   r~   r   Npointssignsr   ro  ok_intervalss              r   generalized_bisectionrx  ;  s     	1u233	!AFE
a!$)/0A!A$009>qs *AQxac
"b(  6!A#;/ * *|!aC 0*s   B"%B$c                 ,    | j                  ||dd      S )NillinoisF)solververify)r'  )r
   r   abs      r   find_in_intervalr~  Q  s    <<2j<??r   g{Gz?c           	      h     j                   }t        | j                         j                  |            dz   }	 | _          j                        t	        |      }t	        |      }dk  rt        d      |dk  rt        d      |dvrt        d      |dk(  r|r fd}	n fd	}	|d
k(  r|r fd}	n fd}	|dk(  r`|r^|dk(  rYdk(  r j                  | _         S dk  r<d
 j                  dz   z  d
z   z        z  }
t         	|
dz  d
|
z  f      | _         S |||f|v rt         	||||f         | _         S t         |||      \  }
}||k  rt         	|
|z
  |
|z   f      | _         S |dk(  r|sd}|dk(  r|rd}|d
k(  r|sd}|d
k(  r|rd}|dz   }	 t         |||      \  }}||k  rct         |||dz         \  }}t         	d||z   z  |      }t        |      D ]  \  }}|||||dz   f<    t         |	||dz
           | _         S |d
z  }# | _         w xY w)Nr.   r   zv cannot be negativer   zm cannot be less than 1r  z prime should lie between 0 and 1c                 ,    j                  | d      S Nr   )rF   r   r   r
   rJ   s    r   r!  zbessel_zero.<locals>.<lambda>c      CKK!qK$A r   c                 (    j                  |       S ri   r   r  s    r   r!  zbessel_zero.<locals>.<lambda>d      CKK!$4 r   r   c                 ,    j                  | d      S r  r]   r  s    r   r!  zbessel_zero.<locals>.<lambda>f  r  r   c                 (    j                  |       S ri   r  r  s    r   r!  zbessel_zero.<locals>.<lambda>g  r  r   g333333@g?g?g       @r$   )r    r3   r:   r=   r6   rO   zeror   r~  rp  rx  	enumerate)r
   rg  rh  rJ   rZ   isoltol_interval_cacher    workprecr   r)   rn  lowr   r1r2err2	intervalsr   r}  s   `  `                r   bessel_zeror  T  s   88D4SWWQZ03H0GGAJFE
q5344q5677~?@@19Aa4a19Aa4a 1916Avxx6 5 Avchhq!A#w!}--'Q2qs<. - q.#CODqN,KL* ) dE1a03=#CQwY'	,BC$ ! 19U#C19c19U#C19caCc415GBW}"3eQ!<D1#q#sBrE{AN	&y1 ;EAr8:ODq1$45;'Q	!A#?  aC  s+   B!H( '9H( (H( +H( >BH( "H( (	H1c                 "    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
   rJ   rZ   rF   s       r   besseljzeror    s    ` Q
Aq111r   c                 "    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  s       r   besselyzeror    s    r Q
Aq111r   N)r   )F)r   F)r   T)2	functionsr   r   r   r   r   rQ   r]   rg   rm   rp   rt   rx   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r+  r.  r0  r;  r?  rB  rK  rS  rZ  r_  rp  rx  r~  r  r  r  r`   r   r   <module>r     sF   +    @ @D ! !F !3 !3F + +, G G G G C C C C - -8 + + + ++& * * * * 	- 	- - -8 
+ 
+ 
+ 
+ + + + +  7 7 8 8 < < 6 6", Y. Y.v I. I.V+8 4 4 6 6)*V & & & & !# 
 
  , %'      D%N,@ 15b 3j o2 o2b X2 X2r   