U
    ZÊ¹j|-  ã                   @   sj  d dl mZmZ edd„ ƒZedd„ ƒZedd„ ƒZedd	„ ƒZed;dd„ƒZedd„ ƒZedd„ ƒZ	ed<dd„ƒZ
ed=dd„ƒZed>dd„ƒZed?dd„ƒZed@dd„ƒZedAdd„ƒZedBdd „ƒZed!d"„ ƒZedCd#d$„ƒZed%d&„ ƒZed'd(„ ƒZed)d*„ ƒZed+d,„ ƒZed-d.„ ƒZed/d0„ ƒZed1d2„ ƒZed3d4„ ƒZed5d6„ ƒZed7d8„ ƒZed9d:„ ƒZdS )Dé   )ÚdefunÚdefun_wrappedc                 C   sL   |   |d¡}d|  | j¡ | |  dd|¡ }|  |¡sH|  |¡| j }|S )Néÿÿÿÿé   ©r   r   ©é   r   ©Úsquare_exp_argÚsqrtÚpiZhyp1f1Ú_reÚ_imÚj©ÚctxÚzÚz2Úv© r   ú\/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mpmath/functions/expintegrals.pyÚ_erf_complex   s
    "
r   c                 C   s|   |   |¡dkrL|  |¡}| j|dd�}|  |¡|  | j¡ |  dd|¡ }nd|  |¡ }|  |¡sxd|  	|¡| j
  }|S )Nr   T©Úexactr   r   )Úrer
   ÚfnegÚexpr   r   Zhyperur   r   r   r   )r   r   r   Znz2r   r   r   r   Ú_erfc_complex   s    
&
r   c                 C   s|   |   |¡}|  |¡r6z|  |¡W S  tk
r4   Y nX |  |¡rr|jsrzt|ƒ|  |j¡ƒW S  tk
rp   Y nX |  |¡S ©N)	ÚconvertÚ_is_real_typeZ_erfÚNotImplementedErrorÚ_is_complex_typeÚimagÚtypeÚrealr   ©r   r   r   r   r   Úerf   s    

r'   c                 C   s|   |   |¡}|  |¡r6z|  |¡W S  tk
r4   Y nX |  |¡rr|jsrzt|ƒ|  |j¡ƒW S  tk
rp   Y nX |  |¡S r   )	r   r    Z_erfcr!   r"   r#   r$   r%   r   r&   r   r   r   Úerfc'   s    

r(   Fc                 C   sb   | j d d }|r6| j|||d�}| j| j||d�}n| j|||d�}|dkr^| j||dd�}|S )Né   é   )Úprecr   Tr   )r+   ÚfmulZfdivÚone)r   r   ZmultZ
reciprocalr+   r   r   r   r   r
   6   s    r
   c                 C   sR   |s|S |   |¡}d|  | j¡ | |  dd|¡ }|  |¡sN|  |¡| j }|S )Nr   r   r   r	   r   r   r   r   ÚerfiB   s    
"
r.   c                    sâ   ˆ   ˆ¡}|ˆks"|dk s"|dkr,ˆ  d¡S |‰ˆs8ˆS ˆdkrFˆ jS ˆdkrTˆ jS tˆƒdk rvdˆd  dˆ  }nHˆ  dˆ j tˆƒd d  ¡}ˆ  ˆ¡ˆ  |ˆ  |¡ ¡ ˆ  d¡ }ˆ  j	d	7  _	ˆ  
‡ ‡fd
d„|¡S )Nr   r   z*erfinv(x) is defined only for -1 <= x <= 1gÍÌÌÌÌÌì?g¨o™Óe1á?r   g†åÏ·ê?r   é
   c                    s   ˆ   | ¡ˆ S r   )r'   )Út©r   Úxr   r   Ú<lambda>]   ó    zerfinv.<locals>.<lambda>)r   Z
bad_domainÚinfÚninfÚabsÚlnr   Úsignr   r+   Zfindroot)r   r2   ZxreÚaÚur   r1   r   ÚerfinvL   s     

    (r<   é    c                 C   s>   |   |¡}|  || d  d|d   ¡||  d| j ¡  S )Nr   )r   r   r   r   )r   r2   ÚmuÚsigmar   r   r   Únpdf_   s    
r@   c                 C   sD   || ||   d¡  }|dk r.|  | ¡d S d|  |¡ d S d S )Nr   r=   r   )r   r(   r'   )r   r2   r>   r?   r:   r   r   r   Úncdfd   s    rA   c                 C   s  ||krd}nì|sV|dkr0|dkr0|   ||¡}qú|| |  |d| |d |¡ | }n¤|  |¡\}}|dkr®|| j k r˜| j
 }	|  jd9  _||	7 }n|dk r®|  j|8  _|| |  |d| |d |¡ }
|| |  |d| |d |¡ }|
| | }|�r||   ||¡ }|S )Nr=   r   r   éüÿÿÿ)ÚbetaZhyp2f1Znint_distancer+   Úeps)r   r:   ÚbÚx1Zx2Úregularizedr   ÚmÚdÚhÚs1Ús2r   r   r   Úbetaincl   s(    &
  rM   Nc                 C   s   t |ƒ}|  |¡}|d kr&| j}d}n|  |¡}|| jk}|d krN| j}d}n|  |¡}|| jk}|s¦|s¦|rœ|  |¡dk r‚| jS |  |¡dkr–| jS | jS |  |¡S ||kr´| jS |  |¡|  |¡krÚ|  ||||¡ S |rô|rô|  	||||¡
 S |�r|  
|||¡S |�r|  |||¡S d S )NFr=   )Úboolr   Úzeror5   r   r-   ÚnanÚgammaÚgammaincÚ_gamma3Ú_upper_gammaÚ_lower_gamma)r   r   r:   rE   rG   Zlower_modifiedZupper_modifiedr   r   r   rR   …   s<    





rR   c                    sP   ˆ  |¡rt|ƒˆjƒS |g| ‰ ˆjˆdd�‰‡ ‡‡‡fdd„}ˆ ||g¡S )NTr   c                    s2   ˆ  ˆ¡ˆ| gd| dgg ˆ dgd|  gˆf}|fS )Nr   r   ©r   )r   ÚT1©ÚGrE   r   Znegbr   r   rJ   µ   s    ,z_lower_gamma.<locals>.h)Úisnpintr$   r5   r   Ú	hypercomb)r   r   rE   rG   rJ   r   rX   r   rU   ®   s    

rU   c                    sH  ˆ  |¡rŒzl|rfˆ |¡r*t|ƒˆjƒW S ˆj}z*ˆ jd7  _ˆ |ˆ¡ˆ |¡ W ¢W S |ˆ_X nˆ |ˆ¡W S W n tk
rŠ   Y nX |dkr¨ˆdkr¨|ˆ d S |dkrÌˆdksÀˆdkrÌ|ˆ d S ˆjˆdd	�‰|g| ‰ z&‡ ‡‡‡fd
d„}ˆj	||gdd�W S  ˆj
k
�rB   ‡ ‡‡‡fdd„}ˆ 	||g¡ Y S X d S )Nr/   r   r   r=   r   y      ð¿      ð¿y      ð¿      ð?Tr   c                    s4   | d }ˆ  ˆ¡ˆgd|gg ˆ d| gg dˆ fgS ©Nr   rV   )r   Úr©rY   r:   r   Znegar   r   rJ   Ö   s    z_upper_gamma.<locals>.h)Úforce_seriesc                    sR   g d| d g| gˆ g g df}ˆ  ˆ¡ ˆ| gd| dgg ˆ dgd|  gˆf}||fS )Nr   r=   r   rV   )r   rW   ÚT2r^   r   r   rJ   Û   s    .)ÚisintrZ   r$   rO   r+   Z_gamma_upper_intrQ   r!   r   r[   ÚNoConvergence)r   r   r:   rG   ÚorigrJ   r   r^   r   rT   º   s2    



rT   c           	   	   C   sÐ   |   |¡}|r|r| jS zž|  jd7  _| j|||d�}| j|||d�}|| }|  |¡t|  |¡|  |¡ƒ dkr||W ¢>S |s´| j|d||d�}| j|d||d�}|| }|W ¢S W 5 |  jd8  _X t‚d S )Né   )rG   iöÿÿÿr=   )rZ   rO   r+   rR   ÚmagÚmaxr!   )	r   r   r:   rE   rG   ZpolerW   r`   ÚRr   r   r   rS   á   s"    
$rS   c                 C   sð   |   |¡r8|  |¡r8z|  ||¡W S  tk
r6   Y nX |  |¡sL|  |¡rT|| S || jkrfd| S |dkr˜|  |¡dkrŠt|ƒ| jƒS | j|d  S |dkr°|  	| ¡| S |dkrÔ|  	| ¡|d  |d  S ||d  |  
d| |¡ S )Nr   r=   r   r   )ra   r    Z_expint_intr!   Úisnanr5   r   r$   r-   r   rR   )r   Únr   r   r   r   Úexpintû   s$    
rj   c                 C   sT   |r.|dkr| j S |  |  |¡¡|  | j¡ S |s6|S |dkrD| jS |  |  |¡¡S )Nr   r   )rO   Úeir8   Zln2r6   )r   r   Úoffsetr   r   r   Úli  s    rm   c                 C   s0   z|   |¡W S  tk
r*   |  |¡ Y S X d S r   )Z_eir!   Ú_ei_genericr&   r   r   r   rk     s    rk   c                 C   s  || j kr|S || jkr| jS |  |¡dkr¶zr| j| }|  |¡| jddgg || jdd� | }|  |¡}|dkr‚|| j	| j
 7 }|dk rš|| j	| j
 8 }|W S  | jk
r´   Y nX ||  dddd|¡ | j }|  |¡�r|d|  |¡|  | j| ¡  7 }n||  t|ƒ¡7 }|S )Nr   T)Zmaxtermsr_   r=   r   ç      à?)r5   r6   rO   re   r-   r   Zhyperr+   r   r   r   rb   Zhyp2f2ZeulerÚlogr7   )r   r   r]   r   Zimr   r   r   rn   &  s4    


 ÿÿ
$rn   c                 C   s2   z|   |¡W S  tk
r,   |  d|¡ Y S X d S r\   )Z_e1r!   rj   r&   r   r   r   Úe1B  s    rq   c                 C   s0   z|   |¡W S  tk
r*   |  |¡ Y S X d S r   )Z_cir!   Ú_ci_genericr&   r   r   r   ÚciI  s    rs   c                 C   s  |   |¡r.|| jkr| jS || jkr.| jd S | j| j|dd�}| j|dd�}d|  |¡|  |¡  }|  	|¡}|  
|¡}|dkr®|dkr˜|| jd 7 }|dk r®|| jd 8 }|dk râ|dkrÌ|| jd 7 }|dk râ|| jd 8 }|  |¡rþ|dkrþ|  	|¡}|S )Nù              ð?Tr   ro   r=   ù              à?)Úisinfr5   rO   r6   r   r,   r   r   rk   r   r   r    )r   r   ÚjzÚnjzr   ÚzrealÚzimagr   r   r   rr   P  s.    

 
 


    
rr   c                 C   s0   z|   |¡W S  tk
r*   |  |¡ Y S X d S r   )Z_sir!   Ú_si_genericr&   r   r   r   Úsid  s    r|   c                 C   sæ   |   |¡r2|| jkrd| j S || jkr2d| j S |  |¡dkrÆ| j| j|dd�}| j|dd�}d|  |¡|  |¡  }|  	|¡}|dkr˜|d| j 8 }|dk r®|d| j 7 }|  
|¡rÂ|  	|¡}|S ||  dd	d	d
| | ¡ S d S )Nro   ç      à¿r   Tr   y       €      à¿r=   r   r   g      Ð¿)rv   r5   r   r6   re   r,   r   r   rk   r   r    Úhyp1f2)r   r   rw   rx   r   ry   r   r   r   r{   k  s$    

 

 



r{   c                 C   s„   | j |dd�}d|  |¡|  |¡  }|  |¡}|  |¡}|dkrR|| jd 7 }n.|dk rj|| jd 8 }n|dk r€|| jd 7 }|S )NTr   ro   r=   ru   rt   )r   rk   r   r   r   )r   r   Únzr   ry   rz   r   r   r   Úchi€  s    

r€   c                 C   sŽ   |   |¡dkrn| j|dd�}d|  |¡|  |¡  }|  |¡}|dkrT|d| j 8 }|dk rj|d| j 7 }|S ||  dddd	| | ¡ S d S )
Nr   Tr   ro   r=   ru   r   r   g      Ð?)re   r   rk   r   r   r~   )r   r   r   r   rz   r   r   r   ÚshiŽ  s    
  r�   c              	   C   s^   || j kr|  d¡S || jkr(|  d¡S | j|d  d |  ddd| jd  |d	  d
 ¡ S )Nro   r}   r   é   )r   r)   r   )é   r)   r   r)   é   )r5   Úmpfr6   r   r~   r&   r   r   r   Úfresnels›  s
    



r†   c              	   C   sP   || j kr|  d¡S || jkr(|  d¡S ||  ddd| jd  |d  d ¡ S )	Nro   r}   )r   r)   r   )é   r)   r   r)   r„   )r5   r…   r6   r~   r   r&   r   r   r   Úfresnelc£  s
    



rˆ   )r   F)r=   r   )r=   r   )r=   r   F)r=   NF)F)F)F)F)Z	functionsr   r   r   r   r'   r(   r
   r.   r<   r@   rA   rM   rR   rU   rT   rS   rj   rm   rk   rn   rq   rs   rr   r|   r{   r€   r�   r†   rˆ   r   r   r   r   Ú<module>   sl   




	
(&










