o
    lhF                     @   sf  d dl mZ G dd deZdd Zdd Z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edd Zedd Zedd Zed d! Zed"d# Zedhd%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did4d5Zedjd7d8Zed9d: Zed;d< Zed=d> Zed?d@ Z edAdB Z!edCdD Z"edEdF Z#edkdHdIZ$edJdK Z%edLdM Z&edNdO Z'edPdQ Z(dRdS Z)d3dGl*Z*d3dGl+Z+dTdU Z,dVdW Z-edidXdYZ.edhdZd[Z/djd\d]Z0ed^d_ Z1ed`da Z2edbdc Z3edjdddeZ4edjdfdgZ5dGS )l   )xrangec                   @   s   e Zd ZdZi ZdZdd Zedd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) SpecialFunctionsa  
    This class implements special functions using high-level code.

    Elementary and some other functions (e.g. gamma function, basecase
    hypergeometric series) are assumed to be predefined by the context as
    "builtins" or "low-level" functions.
    gP?c              
   C   s.  | j }|jD ]}|j| \}}|||| q| d| _| d| _| d| _| d| _| d| _| d| _	| d| _
| d| _| d	| _| d
| _| d| _| d| _| d| _| d| _| d| _| d| _| d| _i | _| jdddddddd | | j| _d S )N)   r       r   )r   r   )   r   )r      )r      )r   r	   )   r   )r   r   )   r   )r
   r   )r   r   )r   r   )r   r   )r      )r
   r   )r
   r   argconjrootpsizetafibfac)phase	conjugatenthroot	polygammahurwitz	fibonacci	factorial)	__class__defined_functions_wrap_specfun_mpqmpq_1mpq_0mpq_1_2mpq_3_2mpq_1_4mpq_1_16mpq_3_16mpq_5_2mpq_3_4mpq_7_4mpq_5_4mpq_1_3mpq_2_3mpq_4_3mpq_1_6mpq_5_6mpq_5_3_misc_const_cache_aliasesupdatememoizezetazerozetazero_memoized)selfclsnamefwrap r;   n/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/mpmath/functions/functions.py__init__   s@   
zSpecialFunctions.__init__c                 C   s   t | || d S N)setattr)r7   r8   r9   r:   r;   r;   r<   r   =   s   zSpecialFunctions._wrap_specfunc                 C      t r>   NotImplementedErrorctxnzr;   r;   r<   _besseljD       zSpecialFunctions._besseljc                 C   r@   r>   rA   rD   rF   r;   r;   r<   _erfE   rH   zSpecialFunctions._erfc                 C   r@   r>   rA   rI   r;   r;   r<   _erfcF   rH   zSpecialFunctions._erfcc                 C   r@   r>   rA   )rD   rF   ar;   r;   r<   _gamma_upper_intG   rH   z!SpecialFunctions._gamma_upper_intc                 C   r@   r>   rA   rC   r;   r;   r<   _expint_intH   rH   zSpecialFunctions._expint_intc                 C   r@   r>   rA   rD   sr;   r;   r<   _zetaI   rH   zSpecialFunctions._zetac                 C   r@   r>   rA   )rD   rP   rL   rE   derivativesreflectr;   r;   r<   _zetasum_fastJ   rH   zSpecialFunctions._zetasum_fastc                 C   r@   r>   rA   rI   r;   r;   r<   _eiK   rH   zSpecialFunctions._eic                 C   r@   r>   rA   rI   r;   r;   r<   _e1L   rH   zSpecialFunctions._e1c                 C   r@   r>   rA   rI   r;   r;   r<   _ciM   rH   zSpecialFunctions._cic                 C   r@   r>   rA   rI   r;   r;   r<   _siN   rH   zSpecialFunctions._sic                 C   r@   r>   rA   rO   r;   r;   r<   _altzetaO   rH   zSpecialFunctions._altzetaN)__name__
__module____qualname____doc__r   THETA_Q_LIMr=   classmethodr   rG   rJ   rK   rM   rN   rQ   rT   rU   rV   rW   rX   rY   r;   r;   r;   r<   r      s&    +
r   c                 C      | dft j| j< | S )NTr   r   rZ   r9   r;   r;   r<   defun_wrappedQ      rc   c                 C   r`   )NFra   rb   r;   r;   r<   defunU   rd   re   c                 C   s   t t| j|  | S r>   )r?   r   rZ   rb   r;   r;   r<   defun_staticY   s   rf   c                 C      | j | | S r>   )onetanrI   r;   r;   r<   cot]      rj   c                 C   rg   r>   )rh   cosrI   r;   r;   r<   sec`   rk   rm   c                 C   rg   r>   )rh   sinrI   r;   r;   r<   cscc   rk   ro   c                 C   rg   r>   )rh   tanhrI   r;   r;   r<   cothf   rk   rq   c                 C   rg   r>   )rh   coshrI   r;   r;   r<   sechi   rk   rs   c                 C   rg   r>   )rh   sinhrI   r;   r;   r<   cschl   rk   ru   c                 C      |s| j d S | | j| S )N      ?)piatanrh   rI   r;   r;   r<   acoto      
rz   c                 C      |  | j| S r>   )acosrh   rI   r;   r;   r<   asecv   rk   r~   c                 C   r|   r>   )asinrh   rI   r;   r;   r<   acscy   rk   r   c                 C   rv   )Ny              ?)rx   atanhrh   rI   r;   r;   r<   acoth|   r{   r   c                 C   r|   r>   )acoshrh   rI   r;   r;   r<   asech   rk   r   c                 C   r|   r>   )asinhrh   rI   r;   r;   r<   acsch   rk   r   c                 C   sH   |  |}|r| |r|S | |r|dkr| jS | j S |t| S )Nr   )convertisnan_is_real_typerh   absrD   xr;   r;   r<   sign   s   

r   r   c                 C   s2   |dkr	|  |S | |}| |}| ||S Nr   )agm1r   _agm)rD   rL   br;   r;   r<   agm   s
   


r   c                 C   s,   |  |r	d| S |s|d S | || S r   )isinfrn   r   r;   r;   r<   sinc   s
   
r   c                 C   s2   |  |r	d| S |s|d S | || j|  S r   )r   sinpirx   r   r;   r;   r<   sincpi   s
   
r   c                    sB   s j S   j k rdd   S   fdddS )Nrw   r   c                      s   t  dgS N)iterexpr;   r   r;   r<   <lambda>       zexpm1.<locals>.<lambda>r   )zeromagprecsum_accuratelyr   r;   r   r<   expm1   s
   r   c                 C   sH   |s| j S | || j k r|d|d   S | | jd|d| j dS )Nrw   r   r   r   )r   r   r   logfaddr   r;   r;   r<   log1p   s
   r   c           
         s   | j }| j}  | }||}|dkr|S |s%r# dv r%| r%|S  | }|}|  }	|||	 | j k rH|	 |	 d d  S |  fdddS )Ni)r   r   y              ?y             r   c                      s   t   dgS r   )r   r;   r   yr;   r<   r      s    zpowm1.<locals>.<lambda>r   )r   rh   isintlnr   r   )
rD   r   r   r   rh   wMx1magylnxr;   r   r<   powm1   s   
r   c                 C   sx   t |}t |}||; }|s| jS d| |kr| j S d| |kr$| jS d| d| kr0| j S | d| | | S )Nr   r   r   )intrh   jexpjpimpf)rD   krE   r;   r;   r<   _rootof1   s   r   r   c                 C   s   t |}| |}|rN|d@ r+d| |d kr+| |s+| |dk r+| | | S | j}z|  jd7  _| ||d| || }W || _|
 S || _w | ||S )Nr   r   r   
   )r   r   imrer   r   r   _nthroot)rD   r   rE   r   r   vr;   r;   r<   r      s   
0r   Fc                    st    j  j}z(  jd7  _|r fddtD }n fddtD }W | _n| _w dd |D S )Nr   c                    s&   g | ]}|d kr  |qS r   r   .0r   rD   gcdrE   r;   r<   
<listcomp>   s   & zunitroots.<locals>.<listcomp>c                    s   g | ]}  |qS r;   r   r   )rD   rE   r;   r<   r     s    c                 S   s   g | ]}|
 qS r;   r;   )r   r   r;   r;   r<   r     r   )_gcdr   range)rD   rE   	primitiver   r   r;   r   r<   	unitroots   s   r   c                 C   s*   |  |}| |}| |}| ||S r>   )r   _re_imatan2)rD   r   r   r   r;   r;   r<   r     s   


r   c                 C   s   t | |S r>   )r   r   r   r;   r;   r<   fabs  s   r   c                 C   s   |  |}t|dr|jS |S )Nreal)r   hasattrr   r   r;   r;   r<   r     s   

r   c                 C   s    |  |}t|dr|jS | jS )Nimag)r   r   r   r   r   r;   r;   r<   r     s   

r   c                 C   s,   |  |}z| W S  ty   | Y S w r>   )r   r   AttributeErrorr   r;   r;   r<   r      s   

r   c                 C   s   |  || |fS r>   )r   r   rI   r;   r;   r<   polar(     r   c                 C   s   || j | |  S r>   )mpccos_sin)rD   rphir;   r;   r<   rect,  r   r   Nc                 C   s8   |d u r	|  |S | jd }| j ||d| j ||d S )N   r   )r   r   )rD   r   r   wpr;   r;   r<   r   0  s   

r   c                 C   s   |  |dS )Nr   )r   r   r;   r;   r<   log107  s   r   c                 C   s   |  ||  | S r>   )r   )rD   r   r   r;   r;   r<   fmod;  r   r   c                 C   s
   || j  S r>   degreer   r;   r;   r<   degrees?     
r   c                 C   s
   || j  S r>   r   r   r;   r;   r<   radiansC  r   r   c                 C   sv   |s|s|S | j | S || jkr"|dkr|S |d| | j | j  S || j kr6| d| d | j | j  S | |S )Nr   r   r   )ninfinfrx   r   r   )rD   rF   r   r;   r;   r<   _lambertw_specialG  s   



r   c                 C   s  d}t | drt| j}| j}|rd|dk  }t|}nt| }d}d}|s(d}t||} |dkrd|  k r;dk rn nd|  k rGdk rn nt|r{|d	krWd
d| d   S |dkrcdd| d   S |dk rodd| d   S |dk r{dd| d   S |dk r|dkrdd| d   S dd| d   S d}|s||kr|} |dk rdd | | d!   d"| |   S |d!k r| S d#d$|   S |s|dkrt|}t|}nt| }t|}n|dkrXd}|s||  k rdk rn n|} |dkr|d%k rd&|  k rdk rn ndd | | d!   d"| |   S |s7d|  kr'dk r7n nt| }|t|  S |dkrL|sL|dk rLt| d' }nt| d( }t|}|| ||  ||d)  d)|d)    S )*Nr   r   r   g        g      g      @g      g      @      ?yx&1?p=
ף?yh|?5?ʡEƿy      ?      @g      ?y)\(?&1?y      ?L7A`y      ?      ?yx&1?p=
ףyh|?5?ʡE?y      ?      g      пy)\(?&1ʿy      ?L7A`?y      ?      g      y'1ZԿq=
ףp?yM`"r   y'1ZԿq=
ףpyM`"?g2,6V׿gɿg4@rw   g}tp?g?g333333?g?g333333y        -DT!	@y        -DT!@r   )r   floatr   r   complexmathr   cmath)rF   r   	imag_signr   r   r   L1L2r;   r;   r<   _lambertw_approx_hybridZ  s`   



0 
0 "
(r   c                    s    }d|  k rdk rn nd|  k rdk rn n|dk r	td dk r	|dksJ|d	kr= dksJ|dkr	 dk r	  fd
d}  | }  j|7  _ d j d  }  j|8  _ d	 dd d d	d}|dkr| } j}	t	t
d|D ]`vr݈ fddt	dD |< d d  d |d  d   d  | d  d  d   <  |  }
|	|
7 }	  |
| k r|	df  S d7 q  j|d 7  _|	dfS |dks|d	krt|dfS |dkr7|d	k r,d  dfS  } |}n=|d	krc scd   k rQdk rcn n  }| |  dfS  d j |  } |}|| ||  ||d  d|d    dfS )z
    Return rough approximation for W_k(z) from an asymptotic series,
    sufficiently accurate for the Halley iteration to converge to
    the correct value.
    ii  ii  r   g,6V?g?r   r   c                      s     dgS r   )r   r;   rI   r;   r<   r     s    z"_lambertw_series.<locals>.<lambda>r   r   c                 3   s(    | ]}|  d  |   V  qdS )r   Nr;   )r   r   )lur;   r<   	<genexpr>  s   & z#_lambertw_series.<locals>.<genexpr>r   TFg,6V׿y               @)r   r   r   r   r   sqrter   r   r   maxfsumr   r   r   rx   )rD   rF   r   tolmagzdeltacancellationprL   rP   termr   r   r;   )rD   r   r   rF   r<   _lambertw_series  sN   
6$T



8
,r   c                 C   s  |  |}t|}| |st| ||S | j}|  jd| |p d 7  _| j}|d }t| |||\}}|s| d}tdD ]7}	| 	|}
||
 }|| }||||
 || | || |     }| || | || kru|} n|}q@|	dkr| 
d|  || _|
 S )Nr   r   r
   r   d   z1Lambert W iteration failed to converge for z = %s)r   r   isnormalr   r   r   r   r   r   r   warn)rD   rF   r   r   r   r   r   donetwoiewwewwewzwnr;   r;   r<   lambertw  s0   



(r  c                 C   s   |  |}|s| |r|S t|dS | |s(| |s(| |s(| |r,|| S |dkr2|S |dkr<||d  S |dkrE| |S t| ||d| | S )Nr   r   r   T)r   r   typer   r   _polyexpr   )rD   rE   r   r;   r;   r<   bell  s   

(r  c                    s     fdd} j |ddS )Nc                  3   s@    r	  V  } d}	 | |  V  |d7 }|  | } qr   )r   )tr   rD   extrarE   r   r;   r<   _terms  s   z_polyexp.<locals>._termsr   )
check_step)r   )rD   rE   r   r  r	  r;   r  r<   r    s   	r  c                 C   s   |  |s|  |s| |s| |r|| S |dkr || S |dkr)| |S |dkr4| || S |dkrC| || |d  S t| ||S )Nr   r   r   )r   r   r   r   r  )rD   rP   rF   r;   r;   r<   polyexp  s   (r  c                 C   s  t |}|dk rtd| j}|dkr|S |dkr|| S |dkr%|| S d}d}d}d}td|d D ]6}|| sj| || }	| || }
|
rQ||
|	 9 }q4|	dkr^||9 }|d7 }q4|	dkrj||9 }|d7 }q4|r||krw|d9 }|S ||9 }|| }|S )Nr   zn cannot be negativer   r   r   )r   
ValueErrorrh   r   moebiusr   )rD   rE   rF   r   a_prodb_prod	num_zeros	num_polesdr   r   r;   r;   r<   
cyclotomic  sD   
r  c                 C   s  t |}|dk r| jS |d dkr ||d @ dkr| j
 S | jS dD ]*}|| sL|| d}}|dkrEt||\}}|rA| j  S |dks3| |  S q"| |rW| |S |dkr]td}	 t |d|  d }|dk rq| jS || |kr| |r| |S |d7 }q`)a  
    Evaluates the von Mangoldt function `\Lambda(n) = \log p`
    if `n = p^k` a power of a prime, and `\Lambda(n) = 0` otherwise.

    **Examples**

        >>> from mpmath import *
        >>> mp.dps = 25; mp.pretty = True
        >>> [mangoldt(n) for n in range(-2,3)]
        [0.0, 0.0, 0.0, 0.0, 0.6931471805599453094172321]
        >>> mangoldt(6)
        0.0
        >>> mangoldt(7)
        1.945910149055313305105353
        >>> mangoldt(8)
        0.6931471805599453094172321
        >>> fsum(mangoldt(n) for n in range(101))
        94.04531122935739224600493
        >>> fsum(mangoldt(n) for n in range(10001))
        10013.39669326311478372032

    r   r   r   )
r   r
   r                        l       73Me'r   rw   )r   r   ln2divmodr   isprimerB   )rD   rE   r   qr   r   r;   r;   r<   mangoldt;  s>   




r  c                 C   *   |  t|t|}|rt|S | |S r>   )
_stirling1r   r   rD   rE   r   exactr   r;   r;   r<   	stirling1w     
r$  c                 C   r   r>   )
_stirling2r   r   r"  r;   r;   r<   	stirling2  r%  r'  r   )r   )Fr>   )6libmp.backendr   objectr   rc   re   rf   rj   rm   ro   rq   rs   ru   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r$  r'  r;   r;   r;   r<   <module>   s    N















	













?6

	
*
;