K i2ddlmZmZedZedZed3dZed3dZed3dZedZedZ ed Z ed Z ed Z ed Z ed ZedZdZedZedZedZedZedZedZedZedZdZedZedZedZedZdZdZed3dZ ed3d Z!d4d!Z"ed3d"Z#ed5d#Z$d$Z%ed%Z&ed&Z'eifd'Z(ed6d(Z)eifd)Z*ed6d*Z+d+Z,d,Z-d-Z.d.ifd/Z/ed3d0Z0ed3d1Z1y2)7)defun defun_wrappedc&|jd|S)zCComputes the Bessel function `J_0(x)`. See :func:`~mpmath.besselj`.besseljctxxs ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mpmath/functions/bessel.pyj0r  ;;q! c&|jd|S)zDComputes the Bessel function `J_1(x)`. See :func:`~mpmath.besselj`.rrr s r j1rrrc  tturd}n>jj}|rtj |r!dkrdzj  |fi|zSjj  |rj| j r| dk\rwt  j} xjdz c_j fdt dzD}|_|jd zz}|S fd}j| gfi|}|S|s1|r/t d kr!td kr jSsBsjzz}nj!dkDrz}nj"zz}nyj} xjt%d t zjz c_j'd d  fd}j|gfi|}|_|}|S#|_wxYw#t$rYwxYw#|_wxYw)NTrc3K|]8}d|zj|zjd|zzz z:yw)rN)binomialr).0kr dnzs r zbesselj..%sI)!1Ws||Aa'883;;qs1uQwq;QQ)s>Arrc jjjzdd}d||z dzzd||z dzzg}djg|d|zz d||z gg||dzdz|dzdzg||dzgz|fg}|S)NprecпTexact?rrfmulr pirrrBTMr rs r hzbesselj..h+sHHSXXa!X.hGs[!QS388A:5F!GtTAS1#rAaC5"qseQ?@@r)typeintconvertisint_rermagr fsumrangempf hypercombabs_besseljNotImplementedErroronereinfminr&) r rr derivativekwargsn_isintorigvr-r,rr4s ``` @@@r rr s_ Aw#~ KKN))A, CGGAJA1q5QwaRJA&AAA AA  A KK # 99QI>I!A%I- I I*)I*- I6c  j|}jsr|rt|sd|zzSj|rd|zzSj|}|dk(rj|zzS|dkDrd|zzSj |zzSj  |r0j|} fd}j|||gfi|}|S fd}j||gfi|}|S)Nrrc jjjzdd}d||z dzzd||z dzz|dzg}djg|d|zz d||z g|dzg||dzdz|dzdzg||fg}|S)Nr?Tr"r$rrr%r(s r r-zbesseli..hfs!QSXXaZ8$dKAac!ec1Q3q5k1Q3/ASVVA,!A#c!A#!uQ1c 1Q3)7LQqQRAHrc jdd}j||tdjz}|g|gg|dzgg|dzg|fgS)Nr$Tr"rrr)r&r3r )rr4r)r,r rs r r-zbesseli..hmsbCt,AAC#((1*$56AS1#rAaC5"qseQ78 8r)r7 ValueErrorr8rCnanrDr:r>) r rrrFrGr)rr-rJr,s ` ` @r besselirQPs  AA AA  Q3q5L 99Q<ac7N FF1I 677AaC= Uac7N77AaC=   A KK #  CMM!aU -f - H  9 CMM!aS +F + Hrc "|s|rt|s|j ||zzS|j|r|j||zzS|j |}|dz}|j |r |dkDr|j ||zzSd||zzS|dkr/t |j|dzr|j||zzS|j||zzS|xjdz c_ |j|\}}||j kr(|j} |xjdzc_ || z }n|dkr|xj|zc_ |j|\} } |j|||fi|| z|j| ||fi|z | z S)Nr$rrr.)rOrDimrPrCr8r6floorninfr nint_distanceeps cospi_sinpir) r rrrFrGr)qmrr-cossins r besselyr]ts  GG8qs# # 66!977ac? " FF1I cE 99Q<1ux1Q3''AaCy q5S1&*77ac? "88qs# #HHNH   Q DAqCHH9} WWH A  Q Q A q!HC CKK!J 0 0 4 QBq-f- ./2 33rc s jSj}|dkrfd}nxj|z c_fd}j||gfi|S)Nrcvdz dz}dg| |dz g|gggd|z g|f}dg|| dz g| gggd|zg|f}||fS)Nrr)rr)T1T2rs r r-zbesselk..hso1qAQ1"acQCR!A#9BQ!aRTaRD"b1Q3%:Br6Mrc xjdz j ggdgg|dzd|z ggddzz fgS)Nr)r$rr$r)r'exprr rs r r-zbesselk..hsOffQh377A2;/r23AB!H./ /r)rDr:r r>)r rrrGr,r-s` ` r besselkrgsX ww  A1u  A  / 3==QC *6 **rc n|j||fi||j|j||fi|zzSNrjr]r rr rGs r hankel1rm: 3;;q $V $suu[S[[1-Fv-F'F FFrc n|j||fi||j|j||fi|zz Srirjrls r hankel2rprnrc :|dk(rH|j|dkDr|S|j|dkr|j|zS|j|zS|jd|d}d|z}|j |||zz|j ||z dd|zz|fi|zS)NrrdTr"r$rr)rCrDrPr&rehyp1f1)r rrZrrGr ys r whitmrtsAv 66!9t H VVAY 77Q; 77Q;  q%A AA 771:1 zszz!A#q1uaB6B BBrc 2|dk(rDt|j|}|dkr|S|dkDr|j|zS|j|zS|j d|d}d|z}|j |||zz|j ||z dd|zz|fi|zS)Nrr$rdTr"rr)r?rCrDrPr&rehyperu)r rrZrrGgr rss r whitwrxsAv q N s7H W77Q; 77Q;  q%A AA 771:1 zszz!A#q1uaB6B BBrc bj|\}}j|\}}js@j|dkrjd|z g||z dzgSjzSd|z|z }j|\}} j } xj dz c_j dd||f||gdz j } | |zz | _S#| _wxYw#j$rYnwxYwfd} j| ||gfi|S)Nrr.rrr)maxtermscj|}j|gddgg||z dz|g|g|gf}j |gddd|z gg|d|z g||z dzgd|z gf}||fS)Nrrr)sinpir')abr4rarbr rs r r-zhyperu..hs IIaLvvaj!BAaCE!9aS!Q 7wqmQr!A#Jr1QqS'1Q3q5'1Q3% B2v r) _convert_paramr7rC gammaprodrDr hypsum NoConvergencer>) r r}r~rrGatypebtypebbbbtyperIrJr-s ` ` r rvrvs8!!!$HAu!!!$HAu AA 66!9>==!A#!Aw/ /77Q;  1QB##B'JB  xx  HHNH 1a%1b'2a4#(( SAq!t8CHtCH       3==QqE ,V ,,s+ D(AC4,D4 C==DDDc j|}jfd}j||gfi|S)Ncdz djjzg|dzdgg|dzgdgd|dzgdz dz fgSNrr$rr?sqrtr'rfs r r-zstruveh..hsaA#s388CFF++,qsBiaeWqcCQRSVQV<[\]^[^abZbYbcddrr7r>r rrrGr-s` ` r struvehrs= AA AAe 3==QC *6 **rc j|}jfd}j||gfi|S)Ncdz djjzg|dzdgg|dzgdgd|dzgdz dzfgSrrrfs r r-zstruvel..hs^A#s388CFF++,qsBiaeWqcCQRSVQV.hs KK aC aCc1Q3!QqS( 2bq!1 A:aC8aSqA A:aC!9qcqA   qu  - ARGaS2b'1 4 R"R1#2w 12v rrr7r>)r rrJrrGr-s`` ` r _angerrsF 1a A AA  3==QC *6 **rc t|d||fi|SNrrr rJrrGs r angerjr #q!Q )& ))rc t|d||fi|SNrrrs r webererrrc j|d}j|d}jfd}j|||gfi|S)Nrc j}jd}||z dz||zdzgdd|dzgggdg|||z dzz|||zdzzg|ffS)Nr!rrrr0rr)rrJr~r4r rs r r-zlommels1..h"s KK   qu  -1Q!Aq!BAaC="b1# !AYq!A#a%y !1&' 'rrr rrJrrGr-s` ` r lommels1rs] 1a A 1a A AA' 3==QqE ,V ,,rc j|d}j|d}jfd}j|||gfi|S)Nrc fj}jd}||z dz||zdzgdd|dzgggdg|||z dzz|||zdzzg|f}dg||zdz | g||||zdzzg|||z dzzggd|z g|f}dg||z dz |g| |||z dzzg|d|z |z zggd|zg|f}|||fS)Nr!rrrr0rr) rrJr~r4rarbT3r rs r r-zlommels2..h4s KK   qu  -c!eQqSUA R1 r2sQ!AYq!A#a%y.hKscAXI??57+S1Q3Z!QacUBc1Q3iQq0I1 L1Q3Z!QqS2!ub3QqS 3q572KQ N2v rrrs` ` r berrF> AA AA 3==QC *6 **rc j|}jfd}j||gfi|S)Nc dz dz }jd|z\}}|dz gd|dzgg|dzggdd|dzzd|zdzg|f}|dz gd|gg|dzggdd|dzzd|zdzg|f}||fS)Nr?rrrr$r0rrs r r-zbei..hXscAXI??46*S1Q3Z!QqS2!ub3QqS 3q572KQ N1Q3Z!QacUBc1Q3iQq0I1 L2v rrrs` ` r beirSrrc j|}jfd}j||gfi|S)Nc  dz dz } jd|z\}} jd|z\}}d d|zg| dz |dg| gggddd|zzd|dzzg|f}d | g| dz d|zdg| dz gggddd|zzd|dzzg|f}d d|zg|dz | dg|gggddd|z zdd|zz g|f}d | g|dz d|z dg|dz gggddd|z zdd|zz g|f} |||| fS) NrrMrrr0rr$rr rr)cos1sin1cos2sin2rarbrT4r rs r r-zker..hesocAXI__T!V, d__T!V, dAdF^qbdAq\QB4R#sAaCy#qQRs)9TVW WTE]aRT1Q3NaRTFBS#qs)SRSTURUY AA AA 3==QC *6 **rc j|}jfd}j||gfi|S)Nc  dz dz } jd|z\}} jd|z\}}| d gd|dz d|z g|dz gggddd|z zdd|zz g|f}| d gd|dz | g|gggddd|z zdd|zz g|f}| d gd| dz |g| gggdd|dzzd|dzzg|f}| d gd| dz |dzg| dz gggdd|dzzd|dzzg|f} |||| fS) NrrrMrrr0rr$rrs r r-zkei..huskcAXI__T!V, d__T!V, deQ]Q!QqSMAaC5"b3QqS 1SQRU7:SUV VeQ]Q!aRL1#r2S!A#Y#a%7PRS SeQ]Q1aLA2$Bc1Q3iaPQc8SUV VeQ]Q1acNaRTFBS#qs)SRSTURUY.f_wrappedsX%%xxiif%! 92I3.E$K;q> !r)__name__)rrrs` @r c_memors ::D" rcrd|jd|j|jddz zz S)Nr rr0cbrtgammar=r s r _airyai_C1rs/  cii 1 55 66rcrd|jd|j|jddz zz S)Nrr0rrrs r _airyai_C2rs/ !syyA66 77rctd|jdd|j|jddz zz S)Nrr0rnthrootrr=rs r _airybi_C1rs2  Aa 399SWWQZ\#:: ;;rcn|jdd|j|jddz z S)Nr0rrrrs r _airybi_C2rs- ;;q cii 1 5 55rc|j} |jdd|jdzd|jzz }||_|S#||_wxYw)Nr02/3r)r powerrr')r r rJs r _airybi_n2_infrsT 88D IIa syy/ /366 : 2Is 4A Ac|dk(r|dkr|S|j}|j} |xjdz c_|j|dz|z|jd||zz|jz }|dk(r3||j d|dzz|zz}||jddz}n;|t |j d|dzz|zz}||jddz}||_||zSt#||_wxYw) NZrr.rr0rrz1/6)mpq_1_3r rrr'r|r?rA)r rrntyperr)r rJs r _airyderiv_0rs | q5H KKxx  HHNH 1Q3'"SYYq1%55>AzSYYq!A#wqy))SYYq''S1ac719-..SYYq''CHrAv "! CHs CC;; Dc j|rj|\}}nd}jsr|rdk(r|dk(rRjk(rj ddz dz zSj k(rj ddz dz zS|dkr)jk(rSj k(r d|z zS|sjk(sj k(rdz St dr(tdtdjznd|r|dk(rfd }j|gfi|Sdk(rt|dSfd }j||gfi|}jr"j|rj|}|Sfd }j|gfi|S) Nrrrrr0zessential singularity of Ai(z)rcBj dkDrxj z c_ dz}d|z }d|zdz }xj zc_j| djjzz j dz}|gdgggdd gg|ffSxj z c_ dzd z }xj zc_t d z}t}| gddggggjg|f}|gdggggjg|f}||fS) Nrrrrr0rr)rr)rrr$) r9r rerr'rrrmpq_5_3r r4r)rCC1C2rarbr extraprecrs r r-zairyai..hs,771:>HH )H3AE!GAaQHH )H Qsxx'7%78Qq9IIACBr6%.A>??HH )H1qAHH )H#C3.B#CBQ1bB }Q>Bqc"RCKK=:Br6Mrc xj z c_dzdz } xj zc_ j j j}}}|}d}d|z |z}d|z |z}d||zz } dg||z | g|g||| g||g||| g|f} |}d|z |z}d||zz }d|z |z} d g||z | dg|g||| g||g||| g|f} | | fSNr0rrrr)r rmpq_2_3mpq_4_3)rr4q13q23q43rrrrb3rarbr rrs r r-zairyai..hsI%qDFI%!kk3;; C1!A#sb!SyBQquW"VaeaR[2$Br GbBZ+AaC91S5bac3Y"QBZ!C%!Q"2bzGbBZ+2v rc<j dkDrxj z c_ dz}d|z }d|zdz }xj zc_j|djjzj dzz }|gdgggdd gg|ffSxj z c_ dzd z }xj zc_t }t}|gdggggjg|f} |zgdggggjg|f}||fS) Nrrrrr0rr)rr)rr) r9r rerr'rrrrrrs r r-zairyai..hs%wwqzA~I%sFaART!VI%GGAJ#((366"2 23;;q3C CDQC2uUmBq9::I%qD1HI%__T1#bB }Q6dVQC2b#++q82v r)r7risnormalrDr=rUrOr3r6r:r>r _is_real_typer8r9 r rrFrGrrr-rJrs `` @r airyair s AA%%j15  <<?q #Bw<771:a)qCGG|qCHH}Q3J9::3s3771:~./   6 "$!3==B1&1 1Av#CAua88  a!//A  # ! GGAJH &s}}Q-f--rc j|rj|\}}nd}jsr|rMdk(rHjk(rSjk(r(|dk(rdz S|dk(r t S|dkr d|z zS|s%jk(rSjk(rdz St dr(tdtdjznd|r|dk(rfd}j|gfi|Sdk(rt|dSfd }j||gfi|}jr"j|rj|}|Sfd }j|gfi|S) Nrrrrrzessential singularity of Bi(z)rcxjz c_dzdz }xjzc_tdz}t}|gddggggjg|f}|gdggggjg|f}||fS)Nr0rr$rr)r rrrrr4rrrarbr rrs r r-zairybi..h;sI%qD1HI%_S(_VQqE"RCKK=:T1#bB }Q62v rcxjz c_dzdz }xjzc_jjj}}}j}j }|}d}d|z |z} d|z |z} d||zz } dg||z | g|g| | | g||g| | | g|f} |}d|z |z} d||zz } d|z |z} dg||z d|z g|g| | | g||g| | | g|f} | | fSr)r rrrmpq_1_6mpq_5_6)rr4rrrq16q56rrrrrrarbr rrs r r-zairybi..hHs&I%qDFI%!kk3;; Ckkkk1!A#sb!SyBQquW"VaeaR[2$Br GbBZ+AaC91S5bac3Y"VaeQqS\B4"RGbBZ+2v rcxjz c_dzdz }xjzc_t}t}|gdggggjg|f}|zgdggggjg|f}||fS)Nr0rr)r rrrrr s r r-zairybi..h[s HH !H1qA HH !HCBCBqc"RCKK=2BB$Br"ckk]14Br6Mr)r7rrrDrUrrOr3r6r:r>rrr8r9r s `` @r airybirs AA%%j15  <<?q #CGG|CHH}7Q3J7)#..r67qb>)CGG|CHH}s 9::3s3771:~./   6 !3==B1&1 1Av#CAua88  a!//A  # ! GGAJH s}}Q-f--rc(d}d}t|}|dkr td|dvr td|dk(rs|r5jfd|d jzd |zd z zd z  Sjj|d jzd |zdz zd z  S|dk(rx|d k(rs|r5jfd |d jzd |zdz zd z  Sjj |d jzd |zd z zd z  S|dk(r|dk(r|rld jzd |zd z zd z dj zz}jjdd z ||z}jfd|Sd jzd |zdz zd z dj zz}jjdd z ||z}jj |Syy)Nc*|dzdd|dzdzz z zS)NUUUUUU?rrr0r`ts r Uz_airy_zero..Uh QY!QT"W+ ..rc*|dzdd|dzdzz zzS)Nrrrrrr`rs r r+z_airy_zero..Tirrrzk cannot be less than 1rrz%Derivative should lie between 0 and 1rc(j|dSr)r rr s r z_airy_zero..q#**Qq/rr0rFc(j|dSrrr s r r!z_airy_zero..vr"rTy?c(j|dSrr%r s r r!z_airy_zero..}r"r) r6rOfindrootr'r rln2expjpir=) r rrrFcomplexrr+rrs ` r _airy_zeror+fs.. AA1u233  @AA z << 91SVV8QqSU#A%&&( (||CJJ1SVV8QqSU+;A+=)>(>?? zg& << 91SVV8QqSU#A%&&( (||CJJ1SVV8QqSU+;A+=)>(>?? zgo #&&!A#a% "U377]2A 3771:a<(1Q4/A<< 91= = cffHac!e Q sww . JJswwqz!| $qt +||CJJ**&zrc t|d||dS)NrFr+)r rrFs r airyaizeror.s c1aU 33rc t|d|||Srr-)r rrFr*s r airybizeror0s c1aW 55rc Fjjr?jk(rdk(rdz Sdk(rSjk(rdz St dr(t dt djzndjdrt jdkDrdk(rRtjjdz dzkr%fd}j|gjd Sdk(rVtj d jzdz dzkr%fd }j|gjd Sfd }j|gfiS#j$rY.wxYw)Nrrzessential singularityrrFr0g+?c Djgddggggdgddzz ffSNr))rr0)rr0rrr0r'r rsr r-z_scorer..hs/!ffQZB2ob1a4PRRrT)rz force_seriesrc Fj gddggggdgddzz ffSr3r4r5sr r-z_scorer..hs1"vvga["RBr!AqD&QSSrc6j fidz }djz}dk(r |dz}|dz}xjz c_ dzdz }xjzc_|gdgggggdf}| gddgggdgjjg|f}||fS)Nr0rrrrrr)rr'r rr) rr*r4rarbr rrGrrs r r-z_scorer..hs CJJq #F #A % svvI A: FA GA I qDF IS1#r2r2q (URFBQC#++ckk)BA E2v r)r7isinfrDrUrOr3r6r:rrAr?argr'r>r r)r rrrGr-rs```` @r _scorerr;s AA yy| <z!A#:z!8 =Q3J0113s3771:~./   zz,!!  771:>zc#''!*oq50@@S}}QSXXD}QQzc#''1"+.366!e1CCT}}QSXXD}QQ   3==B )& ))      s+A*FAFF F c t||d|Srr;r rrGs r scorergir? 31f %%rc t||d|Srr=r>s r scorerhirBr@rc||f|vr"|||fd|jk\r |||fdS|jd|zdz}|jd|z|j|zz}|jd|z|j|zz }d|z|j|j |z|z|zdz |z z}|j |s"|j |s|j |}|j|f|||f<|S)Nrrr)r loggammarkrer'rSrC)r leta_cacheG3G1G2rJs r coulombcrKs 3x6fQsUmA.#((:qu a   ac!e B ac#%%)m $B ac#%%)m $B 1sww Br)1,r122A FF1I FF1IXXqMF1S5M Hrc fd}j|||gfi|}|rXj|sGj|s6js%jdk\rj|}|S)Nc: jz}j| d}j|dd}j||}| j|gd|dzdgggd|z||zzgd|zdzg|f}|fS#t$rdgdgggggdf}Y|fSwxYw)NTr"rrrrr)rkr&rKrerO) rErFjwjwzjwz2rrar r4rs r r-zcoulombf..hs .qB((2q(-C88C480D Q$AQ %1Q3{BQqSCZL1QBu  .rdBBA-Bu  .sA;BBBr)r>rSrC r rErFrr4choprGr-rJs ` `` r coulombfrSsg   a!C+F+A SVVAYsvvay a FF1I Hrcf|vr!|fdjk\r |fdSfd}j|d}j|f|f<|S)Nrrc dz }jz}jdz|zdzjdz|z dzjd|z|zdzjd|z|z dzdz jzgS)Nryy?r$)rkrDr')l2jetar rFrEs r termsz_coulomb_chi..termssRTuuSy QqSX&%0 LL1T "d + LL2d #t , LL2d #u -eHSVVO  r)r sum_accurately)r rErFrGrXrJs``` r _coulomb_chirZsm 3x6fQsUmA.#((:ae}Q 5!$AXXqMF1S5M Hrc >j|sj|}fd}j|||gfi|}|rXj|sGj|s6js%jdk\rj|}|S)Nc8 j|dzrdgdgggggdf}|fS| dz } j||} jz} j|} j |} j ||} j ||} j |z} d|zz} ||| |gdd|dzddgggd|z||zzgd|zdzg| f}| | | gdd|dzdgggd|z||zzgd|zdzg| f} || fS#t$rdgdgggggdf}|fcYSwxYw)Nrrrrr)r8rZrkr\r[rKrerO)rErFrarVchirNrrrrrr rbr r4rs r r-zcoulombg..hs} 99QqS>rdBBA-B5LRT ""1c*CqB A#''#,aa$Bb%B1 A2aARAq!B1Q31#5r21RV qs1ugq)B"b!QB2a4#3B2bf "Qx+Br6M rdBBA-B5L sCC??DDr)_imr9r>rQs ` `` r coulombgr_s 771: GGAJ,  a!C+F+A SWWQZ#''#, q GGAJ HrcRd|dzz}|dk(r |sd|zd|zzdz |jzdz }|dk(r |sd|zd|zzdz |jzdz }|dk(r |rd|zd|zzdz |jzdz }|dk(r |rd|zd|zzdz |jzdz }|s}|dz d|zz }d|dz zd|zdz zdd|zdzzz } d |dz zd |dzzd |zz d zzd d|zdzzz } d|dz zd|dzzd|dzzz d|zzdz zdd|zdzzz } |r}|dz d|zz }dd|dzzd|zzdz zdd|zdzzz } d d |dzzd|dzzzd|zz dzzd d|zdzzz } dd|dzzd|dzzzd|dzzz d|zzdz zdd|zdzzz }    g} |} d}tdt| D]9}t| |t| |dz kr | | |z } ,t| |};t| dz k(rt| d}| |fS) 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. rrrr0r#riSiirrii%iXiO2iu_iRrii i i,i il"qiQYgr)r'r<lenr?)r kindprimerJrZrr~s1s2s3s4s5rXrerris r mcmahonrps !Q$A qyQqS1WQY$6q$8 qyQqS1WQY$6q$8 qyU1QqSCFF 21 4A qyU1QqSCFF 21 4A  sVQqS\ 1Xqs2v 1Q3( + !A#Y1a4A d* +R1q[ 9 !A#YQT &A+-gai7? @#qsQh, O sVQqS\ 1a41Q AaC!8 , "QT'$q!t)#DF*4/ 0"acAX+ > $q!t)F1a4K'1 4WQY>wF GaPQcTUX V 2b E A C 1SZ   uQx=3uQqSz? * qMAeAh-C   CJqL%)n c6MrcR|dkr td|dz}g}g} |j|||}|Dcgc]}|j||}}t|dz D cgc] } || || dzzdk(r || || dzf"} } t | |k(r| S|dz}cc}wcc} 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. rzn cannot be less than 1rr)rOlinspacesignr<rf) r rr}r~rNpointssignsr ro ok_intervalss r generalized_bisectionrx;s 1u233 !A F E a!$)/0A!A$009>qs*AQxac "b( 6!A#;/* * |  !  aC 0*s B"%B$c,|j||ddS)NillinoisF)solververify)r')r rabs r find_in_intervalr~Qs <<2j< ??rg{Gz?c hj}t|jj|dz} |_jt |}t |}dkr t d|dkr t d|dvr t d|dk(r|rfd} nfd } |d k(r|rfd } nfd } |dk(r`|r^|dk(rYdk(rj |_Sdkr.cCKK!qK$Arc(j|Srirrs r r!zbessel_zero..dCKK!$4rrc,j|dSrr]rs r r!zbessel_zero..frrc(j|Srirrs r r!zbessel_zero..grrg333333@g?g?g@r$) r r3r:r=r6rOzerorr~rprx enumerate)r rgrhrJrZisoltol_interval_cacher workprecrr)rnlowrr1r2err2 intervalsrr}s` ` r bessel_zerorTs 88D4SWWQZ03H0 GGAJ FE  q534 4 q567 7~?@ @ 19Aa4a 19Aa4a 1916Avxx65Avchhq!A#w!}--'Q2qs <.- q  .#CODqN,KL*)dE1a03 =#CQwY' ,BC$! 19U#C 19c 19U#C 19c aCc415GBW}"3eQ!<D1#q#sBrE{AN &y1;EAr8:ODq1$45;'Q !A#?aCs+B!H('9H((H( +H(>BH("H(( H1c"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 rrr rJrZrFs r besseljzerors` Q Aq 1 11rc"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 rrrs r besselyzerorsr Q Aq 1 11rN)r)F)rF)rT)2 functionsrrr rrrQr]rgrmrprtrxrvrrrrrrrrrrrrrrrrrrr rr+r.r0r;r?rBrKrSrZr_rprxr~rrrr`rr rsF+@ @ D! ! F!3!3F++,GGGG C C C C--8+++++&**** - ---8 + + + + + + + + 7788<<66",Y.Y.vI.I.V+84466)*V&&&&!#      ,%'        D%N,@15b3jo2o2bX2X2r