o
    ¨"`™  ã                   @   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ˆ   |¡  |¡ q|D ]}||gˆ   |¡  |¡ q-t|ƒt|ƒk rGˆ jS t|ƒt|ƒkrv|rs‡ fdd„|D ƒ}‡ fdd„|D ƒ}ˆ  ˆ  || || ¡¡ˆ j S ˆ jS ˆ j}	ˆ j}
zF|
d ˆ _|r¤| 	¡ }| 	¡ }|	d||  ˆ  
d| ¡ ˆ  
d| ¡ 9 }	|s„|D ]	}|	ˆ  
|¡9 }	q¦|D ]	}|	ˆ  
|¡ }	q²W |
ˆ _|	
 S |
ˆ _w )	Nc                    ó   g | ]}ˆ   |¡‘qS © ©Úconvert©Ú.0Úx©Úctxr   ú=/usr/lib/python3/dist-packages/mpmath/functions/factorials.pyÚ
<listcomp>   ó    zgammaprod.<locals>.<listcomp>c                    r   r   r   r
   r   r   r   r      r   c                    ó(   g | ]}|r|d ˆ j   p|ˆ j  ‘qS ©r   ©Úepsr
   r   r   r   r      ó   ( c                    r   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   ÚpZorigÚiÚjr   r   r   r      s:   "" 
,ýÿr   c                 C   sÀ   |   |¡}|   |¡}|  |¡r||}}|  |¡rL|| jkrI|  |¡sI|| jkr+| jS |dkr2| jS |  |¡r:| jS |dk rI|  |  	|¡¡| 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   r4   c                 C   s&   | j ||d| j d}|  |g|g¡S )Nr   r(   )r-   r   r   )r   r   r2   Zxnr   r   r   ÚrfD   s   r5   c                 C   sN   | j |dd| j d}| j | j||d| j ddd| j d}|  |g|g¡S r0   r1   )r   r   r2   Zx1Zxn1r   r   r   ÚffI   s   (r6   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
   

:r9   c                 C   s”  |   |¡r|| jkr|S | jS |  |¡r|S |  |¡s.|  |¡dkr.|  |  |¡¡r.|d S t|ƒdkrC|  jd|  	t|ƒd¡ 7  _|  
|¡| j k r d| }d| j }|  d| ¡}| j| j d | j| j |d  d  ||  d| ¡  | j|  d|¡ |  }|  d| ¡|  |¡ ||  }|  |¡rž|  |¡}|S | jd d }d}t|ƒ|k s¶|  
|¡dk rÎ||  |¡ }|d7 }t|ƒ|k s¶|  
|¡dk s¶|d8 }|  d¡d }||  	| j¡8 }|||  	d| j ¡ d 7 }||d d |  d¡d  |  	|¡ 7 }|d|d  d 8 }|d  }	}
td|d ƒD ](}|  d| d ¡d| |d  |	  }t|ƒ| jk r9 n
|	|
9 }	||7 }q||  |¡ S )Nr'   é   r   r   é   é   r7   )r)   r   r+   Zisnanr*   Ú_rer,   ÚabsZdpsÚlogÚrer8   Zexpjpir&   ZlnZpolylogÚbarnesgÚexpZ_is_real_typer!   ZmpfZglaisherr   Z	bernoullir   )r   ÚzÚwZpi2ÚuÚvÚNÚGÚsZz2kZz2r3   Útr   r   r   rA   W   sR   


(
8ÿ 

þ(&rA   c                 C   s   |   |d ¡S )Nr   )rA   )r   rC   r   r   r   Úsuperfacˆ   s   rK   c                 C   sð   || j kr|S t|ƒdkrdt|  t|ƒd¡ƒ }nd}|  j|7  _|  |¡s\|  |¡dk r\|  |  |¡¡r\t|  |¡ƒ}|  	| d ¡}|d d d@ rQ| }|  
|¡rZ|d S |S |d }|  ||  |¡ ¡}|  j|8  _||  |¡ S )Nr:   r7   r   r'   r   y                )r   r>   Úintr?   r   r*   r=   r,   r@   ÚhyperfacZ_is_complex_typerB   ZloggammarA   )r   rC   Zextrar2   ÚhZzp1rF   r   r   r   rM   Œ   s$   
(
rM   N)F)Zlibmp.backendr   Z	functionsr   r   r   r/   r4   r5   r6   r9   rA   rK   rM   r   r   r   r   Ú<module>   s*    $





0

