o
    "`|-                     @   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d?ddZed?dd Zed!d" Zed?d#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 )@   )defundefun_wrappedc                 C   sL   |  |d}d| | j | | dd| }| |s$| || j }|S )N   r   r      r   square_exp_argsqrtpiZhyp1f1_re_imjctxzz2v r   ?/usr/lib/python3/dist-packages/mpmath/functions/expintegrals.py_erf_complex   s
   "
r   c                 C   s|   |  |dkr&| |}| j|dd}| || | j | dd| }nd| | }| |s<d| 	|| 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   x   |  |}| |rz| |W S  ty   Y nw | |r7|js7zt|| |jW S  ty6   Y nw | |S N)	convert_is_real_typeZ_erfNotImplementedError_is_complex_typeimagtyperealr   r   r   r   r   r   erf      


r(   c                 C   r   r   )	r    r!   Z_erfcr"   r#   r$   r%   r&   r   r'   r   r   r   erfc'   r)   r*   Fc                 C   sb   | j d d }|r| 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| }| |s'| || j }|S )Nr   r   r   r	   r   r   r   r   erfiB   s   
"
r0   c                    s     }|ks|dk s|dkr dS |sS dkr# jS dkr* jS tdk r;dd  d  }n$ 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 r   )r(   )tr   xr   r   <lambda>]   s    zerfinv.<locals>.<lambda>)r   Z
bad_domaininfninfabslnr   signr   r-   Zfindroot)r   r4   Zxreaur   r3   r   erfinvL   s   

 (r=       c                 C   s>   |  |}| || d  d|d   || d| j   S )Nr   )r    r   r   r   )r   r4   musigmar   r   r   npdf_   s   
4rA   c                 C   s@   || ||  d  }|dk r| | d S d| | d S )Nr   r>   r   )r   r*   r(   )r   r4   r?   r@   r;   r   r   r   ncdfd   s   rB   c                 C   s  ||krd}nv|s+|dkr|dkr|  ||}ne|| | |d| |d | | }nR| |\}}|dkrW|| j k rL| j
 }	|  jd9  _||	7 }n|dk rW|  j|8  _|| | |d| |d | }
|| | |d| |d | }|
| | }|r||  || }|S )Nr>   r   r   )ZbetaZhyp2f1Znint_distancer-   Zeps)r   r;   bZx1Zx2regularizedr   mdhs1s2r   r   r   betaincl   s(   &
  rK   Nc                 C   s  t |}| |}|d u r| j}d}n
| |}|| jk}|d u r'| j}d}n
| |}|| jk}|sS|sS|rN| |dk rA| jS | |dkrK| jS | jS | |S ||krZ| jS | || |krm| |||| S |rz|rz| 	||||
 S |r| 
|||S |r| |||S d S )NFr>   )boolr    zeror6   r   r/   nangammagammainc_gamma3_upper_gamma_lower_gamma)r   r   r;   rD   rE   Zlower_modifiedZupper_modifiedr   r   r   rP      s>   





rP   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GrD   r   Znegbr   r   rH      s   ,z_lower_gamma.<locals>.h)isnpintr%   r6   r   	hypercomb)r   r   rD   rE   rH   r   rV   r   rS      s   

rS   c                    s<   |rDz5|r4|rt|jW S j}z jd7  _|| W |_W S |_w |W S  tyC   Y nw |dkrRdkrR| d S |dkrddks^dkrd| d S jdd	|g|  z fd
d}j	||gddW S  j
y    fdd}	||g Y S w )Nr1   r   r   r>   r   y            y            ?Tr   c                    s4   | d } gd|gg  d| gg d fgS Nr   rT   )r   rrW   r;   r   Znegar   r   rH      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   rT   )r   rU   T2r\   r   r   rH      s   .)isintrX   r%   rM   r-   Z_gamma_upper_intrO   r"   r   rY   NoConvergence)r   r   r;   rE   ZorigrH   r   r\   r   rR      s6   


rR   c           	   	   C   s   |  |}|r|r| jS zd|  jd7  _| j|||d}| j|||d}|| }| |t| || | dkrD|W |  jd8  _S |sg| j|d||d}| j|d||d}|| }	 |W |  jd8  _S W |  jd8  _t|  jd8  _w )N   )rE   ir>   )rX   rM   r-   rP   magmaxr"   )	r   r   r;   rD   rE   ZpolerU   r^   Rr   r   r   rQ      s,   
$
	rQ   c                 C   s   |  |r| |rz| ||W S  ty   Y nw | |s%| |r)|| S || jkr2d| S |dkrK| |dkrDt|| jS | j|d  S |dkrW| 	| | S |dkri| 	| |d  |d  S ||d  | 
d| | S )Nr   r>   r   r   )r_   r!   Z_expint_intr"   Zisnanr6   r   r%   r/   r   rP   )r   nr   r   r   r   expint   s&   
rf   c                 C   sT   |r|dkr	| j S | | || | j S |s|S |dkr"| jS | | |S )Nr   r   )rM   eir9   Zln2r7   )r   r   offsetr   r   r   li  s   ri   c                 C   *   z|  |W S  ty   | | Y S w r   )Z_eir"   _ei_genericr'   r   r   r   rg     
   rg   c                 C   s  || j kr|S || jkr| jS | |dkrZz9| j| }| || jddgg || jdd | }| |}|dkrA|| j	| j
 7 }|dk rM|| j	| j
 8 }|W S  | jyY   Y nw || dddd| | j }| |r|d| || | j|   7 }|S || t|7 }|S )Nr   T)Zmaxtermsr]   r>   r         ?)r6   r7   rM   rb   r/   r   Zhyperr-   r   r   r   r`   Zhyp2f2Zeulerlogr8   )r   r   r[   r   Zimr   r   r   rk   &  s6   




"rk   c                 C   s,   z|  |W S  ty   | d| Y S w rZ   )Z_e1r"   rf   r'   r   r   r   e1B  s
   ro   c                 C   rj   r   )Z_cir"   _ci_genericr'   r   r   r   ciI  rl   rq   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rW|dkrL|| jd 7 }|dk rW|| jd 8 }|dk rq|dkrf|| jd 7 }|dk rq|| jd 8 }| |r|dkr| 	|}|S )N              ?Tr   rm   r>                 ?)isinfr6   rM   r7   r   r.   r   r   rg   r   r   r!   )r   r   jznjzr   zrealzimagr   r   r   rp   P  s"   



rp   c                 C   rj   r   )Z_sir"   _si_genericr'   r   r   r   sid  rl   rz   c                 C   s   |  |r|| jkrd| j S || jkrd| j S | |dkrc| j| j|dd}| j|dd}d| || |  }| 	|}|dkrL|d| j 8 }|dk rW|d| j 7 }| 
|ra| 	|}|S || dd	d	d
| |  S )Nrm         r   Tr   y             r>   r   r   g      п)rt   r6   r   r7   rb   r.   r   r   rg   r   r!   hyp1f2)r   r   ru   rv   r   rw   r   r   r   ry   k  s    



ry   c                 C   s   | j |dd}d| || |  }| |}| |}|dkr*|| jd 7 }|S |dk r7|| jd 8 }|S |dk rB|| jd 7 }|S )NTr   rm   r>   rs   rr   )r   rg   r   r   r   )r   r   nzr   rw   rx   r   r   r   chi  s   

r~   c                 C   s   |  |dkr7| j|dd}d| || |  }| |}|dkr*|d| j 8 }|dk r5|d| j 7 }|S || dddd	| |  S )
Nr   Tr   rm   r>   rs   r   r   g      ?)rb   r   rg   r   r   r|   )r   r   r}   r   rx   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 )Nrm   r{   r      )r   r+   r   )   r+   r   r+      )r6   mpfr7   r   r|   r'   r   r   r   fresnels  s
   



6r   c              	   C   sP   || j kr
| dS || jkr| dS || ddd| jd  |d  d  S )	Nrm   r{   )r   r+   r   )   r+   r   r+   r   )r6   r   r7   r|   r   r'   r   r   r   fresnelc  s
   



(r   )r   F)r>   r   )r>   r   F)r>   NF)F)Z	functionsr   r   r   r   r(   r*   r
   r0   r=   rA   rB   rK   rP   rS   rR   rQ   rf   ri   rg   rk   ro   rq   rp   rz   ry   r~   r   r   r   r   r   r   r   <module>   sn    




	
(&










