
    g2                        d dl mZmZ ed             Zed             Zed6d            Zed6d            Zed6d            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d6d             Z ed6d!            Z!d7d#Z"ed6d$            Z#ed8d%            Z$d& Z%ed'             Z&ed(             Z'ei fd)            Z(ed9d+            Z)ei fd,            Z*ed9d-            Z+d. Z,d/ Z-d0 Z.d1i fd2Z/ed6d3            Z0ed6d4            Z1d5S ):   )defundefun_wrappedc                 .    |                      d|          S )zCComputes the Bessel function `J_0(x)`. See :func:`~mpmath.besselj`.    besseljctxxs     S/var/www/html/ai-engine/env/lib/python3.11/site-packages/mpmath/functions/bessel.pyj0r           ;;q!    c                 .    |                      d|          S )zDComputes the Bessel function `J_1(x)`.  See :func:`~mpmath.besselj`.r   r   r	   s     r   j1r      r   r   r   c                 F   	
 t                    t          u rd}nN                                                              }|r"t                                                   |rdk     rdz    j         |fi |z  S                                                               	|r׉                     |          
                     
          r
dk    rt          
          
 j        }	  xj        dz  c_                              
fdt          
dz             D                       }| _        n# | _        w xY w| 
                    d          
 z  z  }n+	 fd}  j        |
gfi |}n|sO|rMt          	          d	k     r:t                    d
k     r'	                                S # t          $ r Y nw xY ws=s j        z   z   }n                               dk    rz  }n j        z   z   }n~ j        }	  xj        t%          dt          	          z   j                  z  c_                             dd          	 fd}  j        |gfi |}| _        n# | _        w xY w|
 }|S )NTr      c              3      K   | ]@}d |z                       |          z                      d|z  z   z
            z  V  AdS )r      N)binomialr   ).0kr
   dnzs     r   	<genexpr>zbesselj.<locals>.<genexpr>%   sm       ) ) !1Ws||Aa'8'883;;qs1uQwq;Q;QQ ) ) ) ) ) )r   r   r   c                                                              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P!A#a%[#qs1u+.lAacE#ac?2a!A#sAaC98MaQRSTQTPUgVWXYr   
         r$   r"   c                                                              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   sb    !QS38A:5F5F!G!GtT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      sK   Aww#~~KKNN))A,, 	 CGGAJJA B1q55QwaRJAA&AAAAAA

A 3KK
##
 99Q<< 	2AFFAA8D BHH ) ) ) ) ) ) )"1Q3ZZ) ) ) ) )  4qb!!AA      
 a!A11&11AA  	 	CFFRKKCFFRKK||Aq)))&    	  $GaKMQaCGaK!O 8D
  C#a&&#(333HHQ4H00A A A A A A A "CM!aS33F334BHs,    AE 	E;G 
GG(A"J 	Jc                    	                       |          }                                ss|rt          |sd|z   z   S                      |          rd|z   z  S                      |          }|dk    r j        |z   z  S |dk    rd|z   z  S  j        |z   z   S                                	|r.                      |          }	 fd}  j        |||gfi |}n	 fd}  j        ||gfi |}|S )Nr   r   c                                                              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    !QSXaZ88$dKKAac!ec1Q3q5k1Q3/ASVA,!A#c!A#!uQ1c	1Q3)7LQqQRAHr   c           	                               dd          }                     ||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   si    Ct,,AAC#(1*$5$56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   sp   AAAA ! 	 	Q3q5L99Q<< 	ac7NFF1II667AaC= UUac7N7AaC= 

A ,KK
##	 	 	 	 	 	 	
 CM!aU--f--	9 	9 	9 	9 	9 	9 	9 CM!aS++F++Hr   c                    |s|rt           |s| j         ||z   z   S |                     |          r| j        ||z   z  S |                     |          }|dz   }|                     |          r|dk    r| j         ||z   z   S d||z   z  S |dk     r2t          |                     |                    dz  r| j        ||z   z   S | j        ||z   z   S | xj	        dz  c_	        | 
                    |          \  }}|| j	         k     r| j        
 }	| xj	        dz  c_	        ||	z  }n|dk     r| xj	        |z  c_	        |                     |          \  }
} | 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    $ 	 	$G8qs##66!99 	#7ac?"FF1IIcE99Q<< 	!1uux1Q3''AaCy q55S1&&*57ac?"8qs##HHNHHQDAqCH9}}WHA	Q	
QAq!!HCCK!J00004QBq--f--./23 3r   c                      s j         S                                }|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           	      v    j         dz                                 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   sS    fQh377A2;;/r23AB!H. / /r   )rD   r:   r    r>   )r
   r   r   rG   r,   r-   s   ` `   r   besselkrg      s     w

A1uu	 	 	 	 	 	 	A	/ 	/ 	/ 	/ 	/ 	/ 3=QC**6***r   c                 P     | j         ||fi || j         | j        ||fi |z  z   S Nr   jr]   r
   r   r   rG   s       r   hankel1rm      @    3;q$$V$$su[S[1-F-Fv-F-F'FFFr   c                 P     | j         ||fi || j         | j        ||fi |z  z
  S ri   rj   rl   s       r   hankel2rp      rn   r   c                 B   |dk    rH|                      |          dk    r|S |                      |          dk     r
| j        |z   S | j        |z  S |                     d|d          }d|z   }|                     |          ||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    Avv66!99tHVVAYY7Q;7Q;q%%AAA771::1zsz!A#q1uaBB6BBBBr   c                 :   |dk    rDt          |                     |                    }|dk     r|S |dk    r
| j        |z   S | j        |z  S |                     d|d          }d|z   }|                     |          ||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    Avvq		NNs77HWW7Q;7Q;q%%AAA771::1zsz!A#q1uaBB6BBBBr   c                 `                          |          \  }}                      |          \  }}                               sD                     |          dk    r!                     d|z
  g||z
  dz   g          S  j        z   S d|z   |z
  }                      |          \  }}	  j        }		  xj        dz  c_                             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        |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    IIaLLvaj!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      s   !!!$$HAu!!!$$HAuAA 66!99>>==!A#!Aw///7Q;	
1QB##B''JB	x	HHNHH

1a%1b'2a4#(
SSAq!t8CHHtCHOOOO        
 3=QqE,,V,,,s*   /D	 7>C= 5D	 =	DD	 	
DDc                                            |          }                                 fd}  j        ||gfi |S )Nc                     dz  d                     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   sb    A#s388CF+++,qsBiaeWqcCQRSVQV<[\]^[^abZbYbcddr   r7   r>   r
   r   r   rG   r-   s   ` `  r   struvehr      sd    AAAAe e e e e e3=QC**6***r   c                                            |          }                                 fd}  j        ||gfi |S )Nc                     dz  d                     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#s388CF+++,qsBiaeWqcCQRSVQV<Z[\]Z]`aYabccr   r   r   s   ` `  r   struvelr      sd    AAAAd d d d d d3=QC**6***r   c                                            |          d         }                                fd}  j        ||gfi |S )Nr   c                 :   j         }| |z  }|dz  }||z
  ||z   d|z
  d|z   f\  }}}}                    |          \  }}	dk    r
|z  |	g|g}}
dk    r|z  | g|	g}}
                    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    K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     so    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                                            |          d         }                      |          d         }                                fd}  j        |||gfi |S )Nr   c           	          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    K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                                            |          d         }                      |          d         }                                fd}  j        |||gfi |S )Nr   c           	      d   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   K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                                            |          }                                 fd}  j        ||gfi |S )Nc           	          dz  dz   }                     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                                            |          }                                 fd}  j        ||gfi |S )Nc           	          dz  dz   }                     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                                            |          }                                 fd}  j        ||gfi |S )Nc           
         dz  dz   }
                     d| z            \  }}
                     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  su   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                                            |          }                                 fd}  j        ||gfi |S )Nc           
         dz  dz   }
                     d| z            \  }}
                     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  sq   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        }|                    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  s\    %xiif%%!992I3.E$K;q>!r   )__name__)r   r   r   s   ` @r   c_memor     s1    :D" " " " " " r   c                     d|                      d          |                     |                     d          dz            z  z  S )Nr   	   r   r0   cbrtgammar=   r
   s    r   
_airyai_C1r     s6    cii

155566r   c                     d|                      d          |                     |                     d          dz            z  z  S )Nr   r0   r   r   r   s    r   
_airyai_C2r     s6    !syyA66677r   c                     d|                      dd          |                     |                     d          dz            z  z  S )Nr   r0      r   nthrootr   r=   r   s    r   
_airybi_C1r     s:    Aa  399SWWQZZ\#:#::;;r   c                     |                      dd          |                     |                     d          dz            z  S )Nr0   r   r   r   r   s    r   
_airybi_C2r     s5    ;;qcii

15555r   c                     | j         }	 |                     dd          |                     d          z  d| j        z  z  }|| _         n# || _         w xY w|
 S )Nr0   2/3r   )r    powerr   r'   )r
   r    rJ   s      r   _airybi_n2_infr     s\    8DIIasyy///36:42Is   7A 	Ac                 *   |dk    r|dk     r|S | j         }| j        }	 | xj        dz  c_        |                     |dz   |z            |                     d||z            z  | j        z  }|dk    r;||                     d|dz   z  |z            z  }||                     dd          z  }nG|t          |                     d|dz   z  |z                      z  }||                     dd          z  }|| _        n# || _        w xY w|
 |z   S t          )	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$   ||q55HKx
	HHNHH		1Q3'""SYYq1%5%55>AzzSYYq!A#wqy)))SYYq'''S1ac719--...SYYq'''CHHtCHOOOOrAv "!s   CC< <	Dc           	                                          |r                     |          \  }}nd}                               sr|r|dk    r|dk    rR j        k    r                     d          dz  dz  z   S  j        k    r                     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          r4t          dt          d 	                              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 |}                               r*                     |          r                     |          }|S  fd}  j
        |g fi |S )Nr   r   r   r   r0   zessential singularity of Ai(z)r   c                  .                        
          dk    rxj        	z  c_        
dz  } d| z  }d| z  dz  }xj        	z  c_                            |           d                    j                  z  z                      
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	)HH3AE!GAaQHH	)HHQsxx'7'7%78Qq9I9IIACBr6%.A>?? HH	)HH1qAHH	)HH#C3.B#CBQ1bB}Q>Bqc"RCK=: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%!k3;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                  (                        
          dk    rxj        	z  c_        
dz  } d| z  }d| z  dz  }xj        	z  c_                            |          d                    j                  z                      
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  s7   wwqzzA~~ I%sFaART!VI%GGAJJ#((36"2"2 23;;q3C3C 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155<<?? ;q ; 
	*#Bww<<771::a<!A#--==772;;q=1Q3..2vv<<H==7qb>) 	qCG||qCH}}Q3J9::: 3s3771::~..//			 =.66" " " " " " "$ !3=B11&111Avv#CAua888       a!////A  ## 		! GGAJJH	 	 	 	 	 	 	& s}Q--f---r   c           	      N                                    |r                     |          \  }}nd}                               sr}|rM|dk    rG 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          r4t          dt          d 	                              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 |}                               r*                     |          r                     |          }|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CK=:T1#bB}Q62vr   c                 z   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%!k3;Ckk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	!HH1qAHH	!HHCBCBqc"RCK=2BB$Br"ck]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155<<?? ;q ; 		*#CG||CH}}77Q3J77)#...r667qb>) 	CG||CH}}s
9::: 3s3771::~..//			 ,.66       !3=B11&111Avv#CAua888       a!////A  ## 		! GGAJJH	 	 	 	 	 	 	 s}Q--f---r   Fc                 V    d }d }t          |          }|dk     rt          d          |dvrt          d          |dk    rr|r7                      fd |d	 j        z  d
|z  d	z
  z  dz                       S                       j         |d	 j        z  d
|z  dz
  z  dz                       S |dk    rx|dk    rr|r7                      fd |d	 j        z  d
|z  dz
  z  dz                       S                       j         |d	 j        z  d
|z  d	z
  z  dz                       S |dk    r|dk    r|rqd	 j        z  d
|z  d	z
  z  dz  d j        z  z   }                                          d          d	z             ||          z  }                      fd|          S d	 j        z  d
|z  dz
  z  dz  d j        z  z   }                                          d          d	z             ||          z  }                      j        |          S d S d S )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                 0                         | d          S r   )r
  r   r
   s    r   <lambda>z_airy_zero.<locals>.<lambda>q      #**Qq// r   r0   r      Fc                 0                         | d          S r   r  r   s    r   r!  z_airy_zero.<locals>.<lambda>v  r"  r   Ty              ?c                 0                         | 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1uu2333@AAAzz 	(<< 9 9 9 91SV8QqSU#A%&&&( ( (||CJ1SV8QqSU+;A+=)>)>(>???zzg&& 	(<< 9 9 9 91SV8QqSU#A%&&&( ( (||CJ1SV8QqSU+;A+=)>)>(>???zzgoo 	>#&!A#a% "U37]2A

3771::a<((11Q44/A<< 9 9 9 91===cfHac!eQsw.JJswwqzz!|$$qqtt+||CJ*** zoor   c                 (    t          | d||d          S )Nr   Fr+  )r
   r   rF   s      r   
airyaizeror.    s    c1aU333r   c                 (    t          | d|||          S r   r-  )r
   r   rF   r*  s       r   
airybizeror0    s    c1aW555r   c           	      |                                                                   r= j        k    rdk    rdz  S dk    rS  j        k    rdz  S t	          d          r4t          dt          d                               z                      nd                    d          rt          	                                dk    rdk    rUt                                                    j        dz  dz  k     r$ fd}                     |g  j        d	
          S dk    rYt                                                    d j        z  dz  dz  k     r$ fd}                     |g  j        d	
          S n#  j        $ r Y nw xY w fd}  j        |g fi S )Nr   r   zessential singularityr   rF   r0   g+?c            	      :     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  s1    !fQZB2ooob1a4PRRr   T)rz   force_seriesr   c            	      <     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  s3    "vga["RBr!AqD&QSSr   c                       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    CJq##F##A%svIA::FAGAIqDFIS1#r2r2q(URFBQC#+ck)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|| 2<<zz!A#:zz!8==Q3J0111 3s3771::~..//			zz, "!!771::>>zzc#''!**ooq50@@@S S S S S S}}QSXD}QQQzzc#''1"++..36!e1CCCT T T T T T}}QSXD}QQQ            3=B))&)))s   A3F 6A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 |                     d|z  dz             }|                     d|z   | j        |z  z             }|                     d|z   | j        |z  z
            }d|z  |                     | j         |z  |z   |z   dz  |z
            z  }|                     |          s*|                     |          s|                     |          }| 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22AFF1II  FF1IIXqMF1S5MHr   Tc                      fd}  j         |||gfi |}|rm                     |          sX                     |          sC                               s.                               dk    r                     |          }|S )Nc                 P   	 j         z  }                    |	d          }                    |dd          }                    | |          }|	                    |          gd| dz   dgg g d| z   ||z  z   gd| z  dz   g|f}n# t          $ r dgdgg g g g df}Y nw xY w|fS )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00DQ$$AQ%1Q3{BQqSCZL1QBB 	. 	. 	.rdBBA-BBB	.us   BB
 
B"!B"r   )r>   rS   rC   	r
   rE  rF  r   r4   choprG   r-   rJ   s	   `  ``    r   coulombfrS    s    
 
 
 
 
 
 
 	a!C++F++A SVVAYY  svvayy 	aFF1IIHr   c                      f|v r)|f         d          j         k    r|f         d         S  fd}                     |d          } j         |f|f<   |S )Nr   r   c                  *    dz
  } j         z  }                    dz   |z             dz                      dz   |z
            dz                      d| z   |z             dz                      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uSyQqSX&&%0LL1T""d+LL2d##t,LL2d##u-eHSVO	 	r   )r    sum_accurately)r
   rE  rF  rG  rX  rJ   s   ```   r   _coulomb_chirZ    s    	3x6fQsUmA.#(::ae}Q       	5!$$AXqMF1S5MHr   c                 n                          |          s                     |          } fd}  j        |||gfi |}|rm                      |          sX                      |          sC                                s.                               dk    r                     |          }|S )Nc                 h                        | dz            rdgdgg g g g df}|fS |  dz
  }	                     | |          }j        z  }                    |          }                    |          }                    | |          }                    ||          }	                    |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5LLL	s   C&D D10D1r   )_imr9   r>   rQ  s	   `  ``    r   coulombgr_    s    
 771:: GGAJJ      , 	a!C++F++A SWWQZZ #''#,,  	qGGAJJHr   c                    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 ]R}t          ||                   t          ||dz
                     k     r|||         z  }=t          ||                   }S|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qyyyQqS1WQY$6q$8qyyyQqS1WQY$6q$8qyyUy1QqSCF 21 4AqyyUy1QqSCF 21 4A PsVQqS\1Xqs2v1Q3(
+!A#Y1a4Ad*+R1q[9!A#YQT	&A+-gai7?@#qsQh,O W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ZZ      uQx==3uQqSz??**qMAAeAh--CCCJJqL%)nnc6Mr   c                     |dk     rt          d          |dz   }g g 	                      |||           fdD             fdt          |dz
            D             }t          |          |k    r|S |dz  }`)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                 L    g | ] }                      |                    !S r`   )sign)r   r   r
   r   s     r   
<listcomp>z)generalized_bisection.<locals>.<listcomp>J  s+    000A!!A$$000r   c                 f    g | ]-}|         |d z            z  dk    |         |d z            f.S )r   r   r`   )r   ro  pointssignss     r   rt  z)generalized_bisection.<locals>.<listcomp>K  sO     * * *AQxac
"b((  6!A#;/(((r   r   )rO   linspacer<   rf  )	r
   r   r}   r~   r   Nok_intervalsrv  rw  s	   ``     @@r   generalized_bisectionr{  ;  s     	1uu2333	!AFEa!$$00000000* * * * *qs * * *|!!aCr   c                 4    |                      ||dd          S )NillinoisF)solververify)r'  )r
   r   abs      r   find_in_intervalr  Q  s    <<2j<???r   g{Gz?c           	           j         }t          |                                                    |                    dz   }	 | _                                        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    rf|rd|dk    r^dk    r j        | _         S dk    rDd
                     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     rtt           |||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                 4                         | d          S Nr   )rF   r   r   r
   rJ   s    r   r!  zbessel_zero.<locals>.<lambda>c      CKK!qK$A$A r   c                 0                         |           S ri   r   r  s    r   r!  zbessel_zero.<locals>.<lambda>d      CKK!$4$4 r   r   c                 4                         | d          S r  r]   r  s    r   r!  zbessel_zero.<locals>.<lambda>f  r  r   c                 0                         |           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  r{  	enumerate)r
   rg  rh  rJ   rZ   isoltol_interval_cacher    workprecr   r)   rn  lowr   r1r2err2	intervalsr   r  s   `  `                r   bessel_zeror  T  sP   8D4SWWQZZ003H0GGAJJFFE

q553444q556777~~?@@@199 5AAAAAaa44444a199 5AAAAAaa44444a 1999166Avvx6 5 Avvchhq!A#w!}---'Q2qs<<. - q..#CODqN,KLL* ) dE1a003==#CQwY'	,BCC$ ! 199U9#C1999c199U9#C1999caC		c4155GBW}}"3eQ!<<D1#q#sBrE{ANN	&y11 ; ;EAr8:ODq1$455'Q	!A#??  aC		 s-   B;I< AI< "I< <4I< 8B6I< 6I< <	J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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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  r{  r  r  r  r  r`   r   r   <module>r     s)   + + + + + + + +      @ @ @ @D ! ! ! !F !3 !3 !3 !3F + + +, G G G G G G C C C C C C - - -8 + + + + + ++ + +& * * * * * * 	- 	- 	- - - -8 
+ 
+ 
+ 
+ 
+ 
+ + + + + + +    7 7 7 8 8 8 < < < 6 6 6  " " ", Y. Y. Y. Y.v I. I. I. I.V+ + + +8 4 4 4 4 6 6 6 6)* )* )*V & & & & & & !# 
 
 
 
    , %'            D% % %N  ,@ @ @ 15b 3 3 3 3j o2 o2 o2 o2b X2 X2 X2 X2 X2 X2r   