a
    <b|-                     @   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   m/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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   sx   |  |}| |r4z| |W S  ty2   Y n0 | |rn|jsnzt|| |jW S  tyl   Y n0 | |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   |  |}| |r4z| |W S  ty2   Y n0 | |rn|jsnzt|| |jW S  tyl   Y n0 | |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?goe1?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+   Zeps)r   r:   bx1Zx2regularizedr   mdhs1s2r   r   r   betaincl   s(    &
  rL   Nc                 C   s   t |}| |}|d u r&| j}d}n| |}|| jk}|d u 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:   rD   rF   Zlower_modifiedZupper_modifiedr   r   r   rQ      s<    





rQ   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   rI      s    ,z_lower_gamma.<locals>.h)isnpintr$   r5   r   	hypercomb)r   r   rD   rF   rI   r   rW   r   rT      s    

rT   c                    sH   |rzp|rj|r*t|jW S j}z. jd7  _|| W |_W S |_0 n|W S W n ty   Y n0 |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
yB    fdd}	||g Y S 0 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   rU   )r   rrX   r:   r   Znegar   r   rI      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   rU   )r   rV   T2r]   r   r   rI      s    .)isintrY   r$   rN   r+   Z_gamma_upper_intrP   r!   r   rZ   NoConvergence)r   r   r:   rF   origrI   r   r]   r   rS      s6    



rS   c           	   	   C   s   |  |}|r|r| jS z|  jd7  _| j|||d}| j|||d}|| }| |t| || | dkr|W |  jd8  _S |s| j|d||d}| j|d||d}|| }|W |  jd8  _S W |  jd8  _n|  jd8  _0 td S )N   )rF   ir=   )rY   rN   r+   rQ   magmaxr!   )	r   r   r:   rD   rF   ZpolerV   r_   Rr   r   r   rR      s*    
$
 rR   c                 C   s   |  |r6| |r6z| ||W S  ty4   Y n0 | |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   r=   r   r   )r`   r    Z_expint_intr!   isnanr5   r   r$   r-   r   rQ   )r   nr   r   r   r   expint   s$    
ri   c                 C   sT   |r.|dkr| j S | | || | j S |s6|S |dkrD| jS | | |S )Nr   r   )rN   eir8   Zln2r6   )r   r   offsetr   r   r   li  s    rl   c                 C   s.   z|  |W S  ty(   | | Y S 0 d S r   )Z_eir!   _ei_genericr&   r   r   r   rj     s    rj   c                 C   s  || j kr|S || jkr| jS | |dkrzr| j| }| || jddgg || jdd | }| |}|dkr|| j	| j
 7 }|dk r|| j	| j
 8 }|W S  | jy   Y n0 || dddd| | j }| |r |d| || | j|   7 }n|| t|7 }|S )Nr   T)Zmaxtermsr^   r=   r         ?)r5   r6   rN   rd   r-   r   Zhyperr+   r   r   r   ra   Zhyp2f2Zeulerlogr7   )r   r   r\   r   Zimr   r   r   rm   &  s2    



$rm   c                 C   s0   z|  |W S  ty*   | d| Y S 0 d S r[   )Z_e1r!   ri   r&   r   r   r   e1B  s    rp   c                 C   s.   z|  |W S  ty(   | | Y S 0 d S r   )Z_cir!   _ci_genericr&   r   r   r   ciI  s    rr   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   rn   r=                 ?)isinfr5   rN   r6   r   r,   r   r   rj   r   r   r    )r   r   jznjzr   zrealzimagr   r   r   rq   P  s"    



rq   c                 C   s.   z|  |W S  ty(   | | Y S 0 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 )Nrn         r   Tr   y             r=   r   r   g      п)ru   r5   r   r6   rd   r,   r   r   rj   r   r    hyp1f2)r   r   rv   rw   r   rx   r   r   r   rz   k  s     



rz   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   rn   r=   rt   rs   )r   rj   r   r   r   )r   r   nzr   rx   ry   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   rn   r=   rt   r   r   g      ?)rd   r   rj   r   r   r}   )r   r   r~   r   ry   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 )Nrn   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 )	Nrn   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   rL   rQ   rT   rS   rR   ri   rl   rj   rm   rp   rr   rq   r{   rz   r   r   r   r   r   r   r   r   <module>   sl   




	
(&










