B
    <Z|-                 @   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pihyp1f1_re_imj)ctxzz2v r   <lib/python3.7/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)exact)r   r   r   )rer   fnegexpr   r	   Zhyperur   r   r   r   )r   r   r   Znz2r   r   r   r   _erfc_complex   s    
&
r   c             C   sx   |  |}| |r4y
| |S  tk
r2   Y nX | |rn|jsnyt|| |jS  tk
rl   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   sx   |  |}| |r4y
| |S  tk
r2   Y nX | |rn|jsnyt|| |jS  tk
rl   Y nX | |S )N)	r   r   Z_erfcr   r   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   T)r   )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	   r
   r   r   r   )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?goe1?r   gϷ?r   
   c                s     |  S )N)r!   )t)r   xr   r   <lambda>]   s    zerfinv.<locals>.<lambda>)r   Z
bad_domaininfninfabslnr	   Zsignr   r%   Zfindroot)r   r+   Zxreaur   )r   r+   r   erfinvL   s     

    (r3       c             C   s>   |  |}| || d  d|d   || d| j   S )Nr   )r   r   r   r	   )r   r+   musigmar   r   r   npdf_   s    
r7   c             C   sD   || ||  d  }|dk r.| | d S d| | d S d S )Nr   r4   r   )r   r"   r!   )r   r+   r5   r6   r1   r   r   r   ncdfd   s    r8   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 )Nr4   r   r   )ZbetaZhyp2f1Znint_distancer%   Zeps)r   r1   bZx1Zx2regularizedr   mdhs1s2r   r   r   betaincl   s(    &
  rA   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 )NFr4   )boolr   zeror-   r   r'   nangammagammainc_gamma3_upper_gamma_lower_gamma)r   r   r1   r:   r;   Zlower_modifiedZupper_modifiedr   r   r   rF      s<    





rF   c                sP    |rt|jS |g|  jdd fdd}||gS )NT)r   c                s2    | gd| dgg  dgd|  gf}|fS )Nr   r   )r   )r   T1)Gr:   r   negbr   r   r>      s    ,z_lower_gamma.<locals>.h)isnpintr   r-   r   	hypercomb)r   r   r:   r;   r>   r   )rK   r:   r   rL   r   rI      s    

rI   c                s8   |ryb|r^|r(t|jS j}z$ jd7  _|| S |_X n|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|  y$ fd
d}j	||gddS  j
k
r2    fdd}	||gS X d S )Nr)   r   r   r4   r   y            y            ?T)r   c                s4   | d } gd|gg  d| gg d fgS )Nr   )r   )r   r)rK   r1   r   negar   r   r>      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   r4   r   )r   )r   rJ   T2)rK   r1   r   rP   r   r   r>      s    .)isintrM   r   rC   r%   Z_gamma_upper_intrE   r   r   rN   NoConvergence)r   r   r1   r;   Zorigr>   r   )rK   r1   r   rP   r   rH      s2    



rH   c       	   	   C   s   |  |}|r|r| jS z|  jd7  _| j|||d}| j|||d}|| }| |t| || | dkrx|S |s| j|d||d}| j|d||d}|| }|S W d |  jd8  _X td S )N   )r;   ir4   )rM   rC   r%   rF   magmaxr   )	r   r   r1   r:   r;   ZpolerJ   rR   Rr   r   r   rG      s"    
$rG   c             C   s   |  |r6| |r6y| ||S  tk
r4   Y nX | |sJ| |rR|| S || jkrdd| S |dkr| |dkrt|| jS | j|d  S |dkr| 	| | S |dkr| 	| |d  |d  S ||d  | 
d| | S )Nr   r4   r   r   )rS   r   Z_expint_intr   Zisnanr-   r   r   r'   r   rF   )r   nr   r   r   r   expint   s$    
rZ   c             C   sT   |r.|dkr| j S | | || | j S |s6|S |dkrD| jS | | |S )Nr   r   )rC   eir0   Zln2r.   )r   r   offsetr   r   r   li  s    r]   c             C   s*   y
|  |S  tk
r$   | |S X d S )N)Z_eir   _ei_generic)r   r   r   r   r   r[     s    
r[   c             C   s  || j kr|S || jkr| jS | |dkryp| j| }| || jddgg || jdd | }| |}|dkr|| j	| j
 7 }|dk r|| j	| j
 8 }|S  | jk
r   Y nX || dddd| | j }| |r |d| || | j|   7 }n|| t|7 }|S )Nr   T)ZmaxtermsrQ   r4   r   g      ?)r-   r.   rC   rV   r'   r   Zhyperr%   r   r	   r   rT   Zhyp2f2Zeulerlogr/   )r   r   rO   r   Zimr   r   r   r^   &  s*    


(
$r^   c             C   s,   y
|  |S  tk
r&   | d|S X d S )Nr   )Z_e1r   rZ   )r   r   r   r   r   e1B  s    
r`   c             C   s*   y
|  |S  tk
r$   | |S X d S )N)Z_cir   _ci_generic)r   r   r   r   r   ciI  s    
rb   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 )Ny              ?T)r   g      ?r4   y              ?)isinfr-   rC   r.   r	   r&   r   r   r[   r   r   r   )r   r   jznjzr   zrealzimagr   r   r   ra   P  s.    

 
 


    
ra   c             C   s*   y
|  |S  tk
r$   | |S X d S )N)Z_sir   _si_generic)r   r   r   r   r   sid  s    
ri   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 )Ng      ?g      r   T)r   y             r4   )r   r   )r   r   g      п)rc   r-   r	   r.   rV   r&   r   r   r[   r   r   hyp1f2)r   r   rd   re   r   rf   r   r   r   rh   k  s$    

 

 



rh   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 )NT)r   g      ?r4   y              ?y              ?)r   r[   r   r   r	   )r   r   nzr   rf   rg   r   r   r   chi  s    

rl   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   T)r   g      ?r4   y              ?)r   r   )r   r   g      ?)rV   r   r[   r   r	   rj   )r   r   rk   r   rg   r   r   r   shi  s    
  rm   c          	   C   s^   || j kr| dS || jkr(| dS | j|d  d | ddd| jd  |d	  d
  S )Ng      ?g      r      )r   r#   )r   r   )   r#   r   r#      )r-   mpfr.   r	   rj   )r   r   r   r   r   fresnels  s
    



rr   c          	   C   sP   || j kr| dS || jkr(| dS || ddd| jd  |d  d  S )	Ng      ?g      )r   r#   )r   r   )   r#   r   r#   rp   )r-   rq   r.   rj   r	   )r   r   r   r   r   fresnelc  s
    



rt   )r   F)r4   r   )r4   r   )r4   r   F)r4   NF)F)F)F)F)Z	functionsr   r   r   r   r!   r"   r   r(   r3   r7   r8   rA   rF   rI   rH   rG   rZ   r]   r[   r^   r`   rb   ra   ri   rh   rl   rm   rr   rt   r   r   r   r   <module>   sH   	
(&