o
    lhH                     @   sn  d Z ddlZddlZddlZdZdZdZdZdZdZ	d	Z
d
ZdZdZdZdZdd Zdd Zdd Zzed dd Zdd ZW n eefyR   ejZejZY nw eejdd ZeeejZeeejZeejejZeejejZeejejZeejejZeejejZeejejZeej ej Z eej!ej!Z!eej"ej"Z"eej#ej#Z#eej$dd Z$eej%dd Z%edd dd Z&ed d d!d Z'd"d# Z(d$d% Z)d&d' Z*d(d) Z+d*d+ Z,ee*e,Z-ee)e+Z.d,d- Z/d.d/ Z0d0Z1e1 Z2e1e1 Z3d1Z4e1d2d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEfZ5e6e5dF Z7dGZ8dHZ9dIdJ Z:dKdL Z;ee:e;Z<dMdN Z=dOdP Z>dQdR Z?dSdT Z@g dUZAdVdW ZBdXdY ZCeeBeCZDg dZddd[ ZEg d\ddd[ ZFd]d^ ZGd_d` ZHdadb ZIdcdd ZJdedf ZKdgdh ZLg diZMdjZNd{dldmZOd{dndoZPd{dpdqZQdrds ZRg dtZSg duddd[ ZTg dvddd[ ZUg dwZVg dxZWdydz ZXdS )|z
This module complements the math and cmath builtin modules by providing
fast machine precision versions of some additional functions (gamma, ...)
and wrapping math/cmath functions so that they can be called with either
real or complex arguments.
    Ng-DT!	@giW
@g;f?gw@gw?g9B.?gUk@gox?g]O?gm<B{@!;?gHP?c                        fdd}j |_ |S )Nc              	      sb   t | tu r
| S t | tu r | S z	t| } | W S  ttfy0   t| }  |  Y S w N)typefloatcomplex	TypeError
ValueErrorxkwargs	f_complexf_real `/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/mpmath/math2.pyf   s   
z_mathfun_real.<locals>.f__name__r   r   r   r   r   r   _mathfun_real   s   r   c                    r   )Nc              	      sF   t | tu r
 | S zt| W S  ttfy"    t|  Y S w r   )r   r   r   r   r	   r
   r   r   r   r   +   s   z_mathfun.<locals>.fr   r   r   r   r   _mathfun*   s   r   c                    r   )Nc               	      s>   z
dd | D  W S  t tfy    dd | D   Y S w )Nc                 s       | ]}t |V  qd S r   )r   .0r   r   r   r   	<genexpr>8       z(_mathfun_n.<locals>.f.<locals>.<genexpr>c                 s   r   r   r   r   r   r   r   r   :   r   )r   r	   )argsr   r   r   r   r   6   s
   z_mathfun_n.<locals>.fr   r   r   r   r   
_mathfun_n5   s   r   g       c                 C   s   | dkrt dt| S N        zmath domain error)r	   mathlogr   r   r   r   math_logB      
r%   c                 C   s   | dk rt dt| S r    )r	   r"   sqrtr$   r   r   r   	math_sqrtF   r&   r(   c                 C   s   t | | S r   r   )r   yr   r   r   <lambda>N   s    r*   c                 C      t t| jt| jS r   )r   r"   floorrealimagzr   r   r   r*   `       c                 C   r+   r   )r   r"   ceilr-   r.   r/   r   r   r   r*   b   r1   c                 C      t | t | fS r   )r"   cossinr$   r   r   r   r*   e       c                 C   r3   r   )cmathr4   r5   r/   r   r   r   r*   f   r6   c                 C      | d S NgUUUUUU?r   r$   r   r   r   r*   h       c                 C   r8   r9   r   r/   r   r   r   r*   h   r:   c              	   C   s:   d| }zt | | W S  ttfy   t| |  Y S w N      ?)r   r	   r   r   r   nrr   r   r   nthrootj   s   r@   c                 C   s   | dk r
t |   S t| d\}}|t9 }|d; }|dkr"t|S |dkr+t|S |dkr5t| S |dkr?t| S d S Nr         ?            )_sinpi_realdivmodpir"   r5   r4   r=   r   r   r   rG   q   s   rG   c                 C   s|   | dk r|  } t | d\}}|t9 }|d; }|dkrt|S |dkr)t| S |dkr3t| S |dkr<t|S d S rA   )rH   rI   r"   r4   r5   r=   r   r   r   _cospi_real|   s   rJ   c                 C   s   | j dk rt|   S t| j d\}}tt|| j } |d; }|dkr(t| S |dkr1t| S |dkr;t|  S |dkrEt|  S d S rA   )	r-   _sinpi_complexrH   rI   r   r.   r7   r5   r4   r0   r>   r?   r   r   r   rK      s   
rK   c                 C   s   | j dk r|  } t| j d\}}tt|| j } |d; }|dkr%t| S |dkr/t|  S |dkr9t|  S |dkrBt| S d S rA   )r-   rH   rI   r   r.   r7   r4   r5   rL   r   r   r   _cospi_complex   s   
rM   c                 C   L   z	t | t|  W S  ty%   t| jdkrY dS t| jdk r$Y dS  w )N
                 ?             )sinpicospiOverflowErrorr   r.   r$   r   r   r   tanpi      rU   c                 C   rN   )NrO   rQ   rP   )rS   rR   rT   r   r.   r$   r   r   r   cotpi   rV   rW   g      g      <r<          @      @g      8@g      ^@g     @g     @g     @g     &Ag    KAg    Ag    Ag   2Ag   (;L4Bg  uwsBg  uwBg  7Bg  s6Cg h0{Cg ZACrD      )	gP?gö)$@gԎgشa@g]/Qfg)@gU(+gO2NNQ>g?P5>c                 C   s   t | }|| kr|dkrtd|tkrt| S | dk r(tt| td|    S | d8 } td }tdt	d D ]}|t| | |  7 }q7| t	 d }d|| d   t
|  | S )Nr   zgamma function polerB   rD   r<   rE   '@)intZeroDivisionError_max_exact_gamma_exact_gammarI   rG   _gamma_real
_lanczos_prange
_lanczos_gr"   exp)r   _intxr?   itr   r   r   r`      s    r`   c                 C   s   | j s
tt| jS | jdk rtt| td|    S | d8 } td }tdt	d D ]}|t| | |  7 }q*| t	 d }d|| d   t
|  | S )NrB   rD   r<   r   rE   r[   )r.   r   r`   r-   rI   rK   _gamma_complexra   rb   rc   r7   rd   )r   r?   rf   rg   r   r   r   rh      s   
 rh   c                 C   s*   zdt |  W S  ty   | d  Y S w )Nr<   r!   )gammar]   r$   r   r   r   rgamma   s
   rj   c                 C   s   t | d S r;   )ri   r$   r   r   r   	factorial   s   rk   c                 C   s(   t | tu rtd| S t| j| jS )Nr!   )r   r   r"   atan2r.   r-   r$   r   r   r   arg   s   rm   c              	   C   sR  t | ttfvrzt| } W n ttfy   t| } Y nw z| j}| j}W n ty3   | }d}Y nw |dk rt| dk rNt	t
| }|dkrL| }|S d|  }z|j}|j}W n tyg   |}d}Y nw t|}|dkrsd}n	|dk rzd}nd}t d t| dt|  t t	t||  t| dt | |  S | dks| dkr| d S d}	t| d	k r|	t	| 8 }	| d7 } t| d	k sd
| d t	|   |  }
d|  }|| }|
d| 7 }
||9 }|
d| 7 }
||9 }|
d| 7 }
||9 }|
d| 7 }
||9 }|
d| 7 }
||9 }|
d| 7 }
||9 }|
d| 7 }
||9 }|
d| 7 }
|
|	 S )Nr!   rB   r   rD   rP   r<   rX      gdg?UUUUUU?gllfgJ?g88Cg#+K?g}<ٰj_gAAz?gSˆB)r   r   r   r	   r   r-   r.   AttributeErrorabsr#   ri   	conjugater,   rI   logpirR   loggamma)r   xrealximagvr0   reimrefloorimsignpsr?   r2r   r   r   ru      sv   

 ru   )
rp   ggAAp?gqg|?gYYrp   g^^^^^^ܿg柛n@gLQt:c                 C   s   t | }|| kr|dkrtd| dk rd|  } tt|  }nd}| dk r3|d|  8 }| d7 } | dk s%| d }|}tD ]}||| 8 }|dk rI n||9 }q;|t|  d|   S )	Nr   zpolygamma polerB   r<   r!         $@#B;)r\   r]   rI   rW   
_psi_coeffr%   )r   re   r~   x2rg   cr   r   r   _digamma_real;  s(   
r   c                 C   s   | j s
tt| jS | jdk rd|  } tt|  }nd}t| dk r2|d|  8 }| d7 } t| dk s"| d }|}tD ]}||| 8 }t|dk rJ n||9 }q:|t	|  d|   S )NrB   r<   r!   r   r   r   )
r.   r   r   r-   rI   rW   rr   r   r7   r#   )r   r~   r   rg   r   r   r   r   _digamma_complexQ  s$   

r   )	gS  ?g}^.@gCGb@g߸G?g1R5?gߵy?gLy~F?goO$y?gŕX3=?rn   )
r<   ga	o
@ghr@g-@gF@gv#o?g,?gE㦰u?g󟿑?gan$hI?c                 C   s*   | d }| dd  D ]}|||  }q
|S )Nr   rD   r   )coeffsr   r}   r   r   r   r   _polyval  s   r   c                 C   s   | |  }|  }}d}t |dkr>||| 9 }|||| d  8 }|d7 }||| 9 }|||| d  7 }|d7 }t |dksd| S )NrD   FFg<gmBP?)rr   )r   r   r~   rg   r>   r   r   r   _erf_taylor  s   r   c                 C   s"   t |  |  tt|  tt|  S r   )rd   r   _erfc_coeff_P_erfc_coeff_Qr$   r   r   r   	_erfc_mid  s   "r   c                 C   s   | |  }t | |  d }d|  }}d}tdddD ]%}||8 }|||d  9 }||7 }|||d  9 }t|dk r@ || S q|| S )	NgmBP?rB   r<   rD      rC   rE   r   )rd   rb   rr   )r   r   rx   r?   rg   r~   r>   r   r   r   _erfc_asymp  s   r   c                 C   sP   t | } | | kr
| S | dk rt|   S | dkr$| dkrdS dt|  S t| S )z
    erf of a real number.
    r!   r<   rY   )r   erfr   r   r$   r   r   r   r     s   r   c                 C   sb   t | } | | kr
| S | dk r| dk rdS dt|   S | dkr#t| S | dkr+t| S dt|  S )z 
    erfc of a real number.
    r!   g      rX   g      "@r<   )r   erfcr   r   r   r$   r   r   r   r     s   r   )*)gt?dsp?)gtr   )g+K ?rҹ?)g+K r   )gvV?5@}?)gvVr   )gL?=Y?)gLr   )gj?{y?)gjr   )gM&?u85?)gM&r   )g?N?)gr   )gұ,n?T!~?)gұ,nr   )gqE?
sjΦ?)gqEr   )gu=8|
?r?)gu=8|
r   )gY֮sj?ʴ?)gY֮sjr   )gc#?1?)gc#r   )g,?N@?)g,r   )gԦV;?K?)gԦV;r   )gW99?)ǰ?)gW99ݿr   )gN%؟N?ۿ78a?)gN%؟Nٿr   )gׄ??)gׄԿr   )gQ'p_?,J?)gQ'p_пr   )g^>?KX?)g^>ǿr   )g\S;S?QSβ?)g\S;Sr   )g|?M_6?)g|ꢿr   g      D@Fc           	      C   s   d|  }d }}d}	 ||| 9 }||7 }t |dk rn|d7 }q|t|  |  }|rLt| tu r8| j}| j}n| }d}|dkrJ|dkrJ|td 7 }|S t| tu rh| jdkr]|td 7 }| jdk rh|td 8 }|S )Nr<   rD   gؗҜ<r!   rP   r   )rr   rd   r   r   r-   r.   rI   )	r0   _e1r?   r~   rg   krx   zrealzimagr   r   r   ei_asymp  s4   

r   c                 C   s   |  }}d}	 ||  | }|| }t |dk rn	||7 }|d7 }q|t7 }|r0|t|  7 }|S t| tu s;| jdkrE|tt | 7 }|S |t| 7 }|S )NrE   rD   r   r!   )rr   eulerr#   r   r   r.   r%   r7   )r0   r   r~   rg   r   termr   r   r   	ei_taylor  s&   r   c              	   C   s>  t | }|ttfvr$zt| } t}W n ttfy#   t| } t}Y nw | s)t S t| }|tkr6t| |S |dksB|tu rG| dkrGt	| |S |tu rZ| j
dkrZ| | }t	||}nt|  | }t||}||  d }||  d }d}t | tu r}tj}	ntj}	tD ]\}
}||
 | }|||	| | 7 }q||| 8 }|S )NrX   r!   rB   )r   r   r   r   r	   INFrr   EI_ASYMP_CONVERGENCE_RADIUSr   r   r-   r7   rd   r"   gauss42)r0   r   typezabszzrefrefCDr~   _expr   wrg   r   r   r   ei'  s@   


r   c              	   C   sv   t | }t | ttfvr&zt| } t}W n ttfy%   t| } t}Y nw |tu r3| js3t| jd} t|  dd S )Nr!   T)r   )r   r   r   r   r	   r.   r-   r   )r0   r   r   r   r   e1L  s   r   )g      r!   gSbQ?r   gH*2Q?g|ʎA?gE	G?g92"?gcj?g9?g[:?gH1?g,[
?g ?g+9@ ?g  ?gL ?g9 ?gNe  ?ga;  ?g  ?g֕  ?g1@  ?g    ?gZ>   ?g   ?g   ?)	gA   gpgp 6g| Upg %gE3+Ӿgf{g'(
gѲG])	r<   g/"=g{%gh{srg9D"glXxkվg%ygծ*geuy-)g]u:=g h#%.Jg`5'>>g^ҹgU3 gPF; ?g2Mg=Ƨ_ΚcgviT{?g\?gH$  ?)ggI;g.k^>gPNg/wogS' ?g7z2Mg)cg?g|ɐ?rB   c                 C   sz  t | ttfs8zt| } W n* ttfy7   zt| } | js(tt| jW  Y S W t	 ttfy6   Y t	w w | dkr@td| dkrPdd|    d|    S t| }|| krf|dkr`t
| S |d sfd	S | d	krd|  t| d   td
|   td|   td|   S | dkr| dkrtt| | d  S tt| | d  S tt| tt|  }dd|    d|    d|   |  S )z.
    Riemann zeta function, real argument
    rD   zzeta(1) pole   r<   rX   g      @r   rE   r!   rB   g      @)
isinstancer   r\   r	   r   r   r.   zetar-   NotImplementedError	_zeta_intrI   rG   r`   r   _zeta_0_zeta_1_zeta_P_zeta_Q)r~   r>   r0   r   r   r   r     sB   8&r   )F)Y__doc__operatorr"   r7   rI   esqrt2sqrt5philn2ln10r   catalankhinchinaperyrt   r   r   r   r#   r%   r(   r	   r   r'   powrd   r4   r5   tanacosasinatancoshsinhtanhr,   r2   cos_sincbrtr@   rG   rJ   rK   rM   rS   rR   rU   rW   r   NINFNANEPSr_   lenr^   rc   ra   r`   rh   ri   rj   rk   rm   ru   r   r   r   digammar   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    






7
	
,


%