a
    <b                     @   s   d dl mZ ddlmZm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d Zedd Zedd ZdS )   )xrange   )defundefun_wrappedFc                    s   fdd|D } fdd|D }g }g }g }g }|D ]}||g  | | q8|D ]}||g  | | qZt|t|k r jS t|t|kr|r fdd|D } fdd|D }  || ||  j S  jS  j}	 j}
z|
d  _|rJ|	 }|	 }|	d||   
d|   
d|  9 }	q|D ]}|	 
|9 }	qN|D ]}|	 
| }	qhW |
 _n|
 _0 |	
 S )	Nc                    s   g | ]}  |qS  convert.0xctxr   k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/mpmath/functions/factorials.py
<listcomp>       zgammaprod.<locals>.<listcomp>c                    s   g | ]}  |qS r   r   r	   r   r   r   r      r   c                    s(   g | ] }|r|d  j   p"| j  qS r   epsr	   r   r   r   r      r   c                    s(   g | ] }|r|d  j   p"| j  qS r   r   r	   r   r   r   r      r      r   )Zisnpintappendlenzerosign	gammaprodinfZoneprecpopgamma)r   abZ_infsignZ	poles_numZ	poles_denZregular_numZregular_denr   porigijr   r   r   r      s6    "" 
0r   c                 C   s   |  |}|  |}| |r(|| }}| |r|| jkr| |s|| jkrV| jS |dkrd| jS | |rt| jS |dk r| | 	|| j S | jS | j
||d| j d}| ||g|gS )N    r   r   )r   isinfr   _imZninfnanr   isintr   r   faddr   r   )r   r   yZxyr   r   r   beta)   s"    






r-   c                 C   sT   | j |dd| j d}| j |dd| j d}| j||d| j d}| |g||gS Nr   r   r&   r+   r   Zfsubr   )r   nkZn1Zk1Znk1r   r   r   binomial=   s    r2   c                 C   s&   | j ||d| j d}| |g|gS )Nr   r&   )r+   r   r   )r   r   r0   Zxnr   r   r   rfD   s    r3   c                 C   sN   | j |dd| j d}| j | j||d| j ddd| j d}| |g|gS r.   r/   )r   r   r0   x1Zxn1r   r   r   ffI   s    (r5   c                 C   sX   |  |r|| jkr|S | jS d|d  | jd | |d d   | |d d  S )Nr   r      )r'   r   r)   piZcospir   )r   r   r   r   r   fac2O   s
    

r8   c                 C   s  |  |r|| jkr|S | jS | |r,|S | |s\| |dkr\| | |r\|d S t|dkr|  jd| 	t|d 7  _| 
|| j k rDd| }d| j }| d| }| j| j d | j| j |d  d  || d|   | j| d| |  }| d| | | ||  }| |r@| |}|S | jd d }d}t||k st| 
|dk r|| | }|d7 }qV|d8 }| dd }|| 	| j8 }||| 	d| j  d 7 }||d d | dd  | 	| 7 }|d|d  d 8 }|d  }	}
td|d D ]R}| d| d d| |d  |	  }t|| jk rf qz|	|
9 }	||7 }q&|| | S )Nr%      r   r         r6   )r'   r   r)   isnanr(   _rer*   absZdpslogrer7   Zexpjpir$   lnZpolylogbarnesgexpZ_is_real_typer   ZmpfZglaisherr   Z	bernoullir   )r   zwZpi2uvNGsZz2kZz2r1   tr   r   r   rB   W   sP    


(
8 
(&rB   c                 C   s   |  |d S )Nr   )rB   )r   rD   r   r   r   superfac   s    rL   c                 C   s   || j kr|S t|dkr4dt| t|d }nd}|  j|7  _| |s| |dk r| | |rt| |}| 	| d }|d d d@ r| }| 
|r|d S |S |d }| || | }|  j|8  _|| | S )Nr9   r6   r   r%   r   y                )r   r>   intr?   r   r(   r=   r*   r@   hyperfacZ_is_complex_typerC   ZloggammarB   )r   rD   extrar0   hZzp1rG   r   r   r   rN      s$    
(
rN   N)F)Zlibmp.backendr   Z	functionsr   r   r   r-   r2   r3   r5   r8   rB   rL   rN   r   r   r   r   <module>   s(   $





0

