o
    lh;C                     @   s.  d dl Z ddlmZ ddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m)Z)m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 eefZ2ddl3m4Z4 e5j6Z7dd	 Z8G d
d de5Z9G dd de5Z:dd Z;e;ee%\e9_<e9_=e:_<e:_=e;ee&\e9_>e9_?e:_>e:_?e;ee'\e9_@e9_Ae:_@e:_Ae;ee(\e9_Be9_Ce:_Be:_Ce;e!e)\e9_De9_Ee:_De:_Ee9jBe9_Fe9jCe9_Ge:jBe:_Fe:jCe:_GG dd de9ZHG dd de4ZIzd dlJZJeJjKLe: eJjMLe9 W dS  eNy   Y dS w )    N   )libmp)
basestring),	int_typesMPZ_ONEprec_to_dpsdps_to_precrepr_dpsround_floorround_ceilingfzerofinffninffnanmpf_lempf_negfrom_int
from_floatfrom_strfrom_rationalmpi_mid	mpi_deltampi_strmpi_absmpi_posmpi_negmpi_addmpi_submpi_mulmpi_divmpi_pow_intmpi_powmpi_from_strmpci_posmpci_negmpci_addmpci_submpci_mulmpci_divmpci_powmpci_absr)   mpci_expmpci_logComplexResultmpf_hashmpc_hash)_matrix)StandardBaseContextc                 C   sV   t | dr| jS t| trt| ||S t| trt| ||S t| tr)t| ||S t	)N_mpf_)
hasattrr2   
isinstancer   r   floatr   r   r   NotImplementedError)xprecrounding r:   a/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/mpmath/ctx_iv.pyconvert_mpf_   s
   r<   c                   @   s(  e Zd ZdZd=ddZdd Zdd Zd	d
 Zdd Zdd Z	e
dd Ze
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dd  ZeZeZeZe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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd>d;d<Z d:S )?ivmpfzH
    Interval arithmetic class. Precision is controlled by iv.prec.
    r   c                 C   s   | j |S N)ctxconvert)clsr7   r:   r:   r;   __new__+      zivmpf.__new__c                 C   s"   | j \}}||kr|||S tr>   )_mpi_
ValueError)selfrA   	f_convertabr:   r:   r;   cast.   s   
z
ivmpf.castc                 C      |  ttjS r>   )rJ   intr   to_intrF   r:   r:   r;   __int__4      zivmpf.__int__c                 C   rK   r>   )rJ   r5   r   to_floatrN   r:   r:   r;   	__float__7   rP   zivmpf.__float__c                 C   rK   r>   )rJ   complexr   rQ   rN   r:   r:   r;   __complex__:   rP   zivmpf.__complex__c                 C   s$   | j \}}||krt|S t| j S r>   )rD   r.   hashrF   rH   rI   r:   r:   r;   __hash__=   s   

zivmpf.__hash__c                 C      | S r>   r:   rN   r:   r:   r;   realD      z
ivmpf.realc                 C   s   | j jS r>   )r?   zerorN   r:   r:   r;   imagG      z
ivmpf.imagc                 C   rX   r>   r:   rN   r:   r:   r;   	conjugateJ   s    zivmpf.conjugatec                 C   s   | j \}}| j||fS r>   rD   r?   make_mpfrV   r:   r:   r;   rH   L      
zivmpf.ac                 C   s   | j \}}| j||fS r>   r_   rV   r:   r:   r;   rI   Q   ra   zivmpf.bc                 C   "   | j }t| j|j}|||fS r>   )r?   r   rD   r8   r`   rF   r?   vr:   r:   r;   midV      z	ivmpf.midc                 C   rb   r>   )r?   r   rD   r8   r`   rc   r:   r:   r;   delta\   rf   zivmpf.deltac                 C   s
   | j tfS r>   )rD   mpi_zerorN   r:   r:   r;   _mpci_b   s   
zivmpf._mpci_c                  G      t d)Nz-no ordering relation is defined for intervals	TypeError)argsr:   r:   r;   _comparef   r]   zivmpf._comparec                 C   s$   | j |}| j|jko|j| jkS r>   )r?   mpfrH   rI   )rF   tr:   r:   r;   __contains__n      zivmpf.__contains__c                 C   s   t | j| jjS r>   )r   rD   r?   r8   rN   r:   r:   r;   __str__r      zivmpf.__str__c                 C   sJ   | j jrt| S | j\}}t| j j}t||}t||}d||f S )Nzmpi(%r, %r))r?   prettystrrD   r	   r8   r   to_str)rF   rH   rI   nr:   r:   r;   __repr__u   s   
zivmpf.__repr__c                 C   s8   t |dsz| j|}W n   t Y S || j|jS )NrD   )r3   r?   r@   NotImplementedrD   )srp   cmpfunr:   r:   r;   rn   ~   s   
c                 C      |  |tjS r>   )rn   r   mpi_eqr{   rp   r:   r:   r;   __eq__       zivmpf.__eq__c                 C   r}   r>   )rn   r   mpi_ner   r:   r:   r;   __ne__   r   zivmpf.__ne__c                 C   r}   r>   )rn   r   mpi_ltr   r:   r:   r;   __lt__   r   zivmpf.__lt__c                 C   r}   r>   )rn   r   mpi_ler   r:   r:   r;   __le__   r   zivmpf.__le__c                 C   r}   r>   )rn   r   mpi_gtr   r:   r:   r;   __gt__   r   zivmpf.__gt__c                 C   r}   r>   )rn   r   mpi_ger   r:   r:   r;   __ge__   r   zivmpf.__ge__c                 C      | j t| j| j jS r>   )r?   r`   r   rD   r8   rN   r:   r:   r;   __abs__      zivmpf.__abs__c                 C   r   r>   )r?   r`   r   rD   r8   rN   r:   r:   r;   __pos__   r   zivmpf.__pos__c                 C   r   r>   )r?   r`   r   rD   r8   rN   r:   r:   r;   __neg__   r   zivmpf.__neg__Nc                 C      | j | |||S r>   r?   almosteqr{   rp   rel_epsabs_epsr:   r:   r;   ae      zivmpf.ae)r   NN)!__name__
__module____qualname____doc__rB   rJ   rO   rR   rT   rW   propertyrY   r\   r^   rH   rI   re   rg   ri   rn   r   r   r   rq   rs   ry   r   r   r   r   r   r   r   r:   r:   r:   r;   r=   &   sT    







	r=   c                   @   s   e Zd Zd.dd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dd Zdd Zdd Zd/ddZdd  Zd!d" Zd#d$ Ze Z ZZd%d& Zd'd( Zd)d* Zd0d,d-Zd+S )1ivmpcr   c                 C   s2   | j |}| j |}t| }|j|jf|_|S r>   )r?   r@   newrD   ri   )rA   reimyr:   r:   r;   rB      s
   zivmpc.__new__c                 C   s8   | j \\}}\}}||kr||krt||fS t| j S r>   )ri   r/   rU   rF   rH   rI   cdr:   r:   r;   rW      s   
zivmpc.__hash__c                 C   s(   | j jrt| S dt| jt| jf S )Nziv.mpc(%s, %s))r?   ru   rv   reprrY   r\   r{   r:   r:   r;   ry      s   zivmpc.__repr__c                 C   s   dt | jt | jf S )N(%s + %s*j))rv   rY   r\   r   r:   r:   r;   rs      r   zivmpc.__str__c                 C   s"   | j \\}}\}}| j||fS r>   ri   r?   r`   r   r:   r:   r;   rH         zivmpc.ac                 C   s"   | j \\}}\}}| j||fS r>   r   r   r:   r:   r;   rI      r   zivmpc.bc                 C   s"   | j \\}}\}}| j||fS r>   r   r   r:   r:   r;   r      r   zivmpc.cc                 C   s"   | j \\}}\}}| j||fS r>   r   r   r:   r:   r;   r      r   zivmpc.dc                 C      | j | jd S Nr   r?   r`   ri   r   r:   r:   r;   rY         z
ivmpc.realc                 C   r   Nr   r   r   r:   r:   r;   r\      r   z
ivmpc.imagc                 C   s   | j \}}| j|t|fS r>   )ri   r?   make_mpcr   )r{   rH   rI   r:   r:   r;   r^      s   
zivmpc.conjugatec                 C   s  | j |}| j|j  ko| jkn  pA| j|j  ko!| jkn  pA|j| j  ko0|jkn  pA|j| j  ko?|jkn  }| j|j  koN| jkn  p}| j|j  ko]| jkn  p}|j| j  kol|jkn  p}|j| j  ko{|jkn  }|o|S r>   )r?   r@   rH   rI   r   r   )r{   rp   real_overlapimag_overlapr:   r:   r;   overlap   s   xxzivmpc.overlapc                 C   s$   | j |}|j| jv o|j| jv S r>   )r?   r@   rY   r\   r   r:   r:   r;   rq      rr   zivmpc.__contains__Fc                 C   sl   t || jjsz| j|}W n   t Y S t|dr"|jtf}nt|dr*|j}|r1| j|kS | j|kS NrD   ri   )	r4   r?   _typesr@   rz   r3   rD   rh   ri   )r{   rp   netvalr:   r:   r;   rn      s   



zivmpc._comparec                 C   s
   |  |S r>   rn   r   r:   r:   r;   r         
 zivmpc.__eq__c                 C   s   |  |dS )NTr   r   r:   r:   r;   r      s    zivmpc.__ne__c                 C   rj   )Nz#complex intervals cannot be orderedrk   r   r:   r:   r;   r      s    zivmpc.__lt__c                 C   r   r>   )r?   r   r$   ri   r8   r   r:   r:   r;   r          zivmpc.__neg__c                 C   r   r>   )r?   r   r#   ri   r8   r   r:   r:   r;   r      r   zivmpc.__pos__c                 C   r   r>   )r?   r`   r*   ri   r8   r   r:   r:   r;   r      r   zivmpc.__abs__Nc                 C   r   r>   r   r   r:   r:   r;   r      r   zivmpc.ae)r   r   )Fr   )r   r   r   rB   rW   ry   rs   r   rH   rI   r   r   rY   r\   r^   r   rq   rn   r   r   r   r   r   r   r   r   r   r   r:   r:   r:   r;   r      s:    







r   c                    sZ    fddfddfdd}fdd}fd	d
}fdd}||||fS )Nc                    s   |   ||| jS r>   )r   r8   r?   svalr   )	f_complexr:   r;   	g_complex   s   z_binary_op.<locals>.g_complexc                    sF   z|   ||| jW S  ty"   |tf}|tf}| || Y S w r>   )r`   r8   r-   rh   r   )f_realr   r:   r;   g_real   s   z_binary_op.<locals>.g_realc                    sf   t |trtS | j}t ||js||}t|dr"|| j|jS t|dr1 || jtf|j	S tS r   )
r4   r0   rz   r?   r   r@   r3   rD   rh   ri   r{   rp   r?   r   r   r:   r;   lop_real   s   z_binary_op.<locals>.lop_realc                    sX   | j }t||js||}t|dr||j| jS t|dr* ||j| jtfS tS r   )	r?   r4   r   r@   r3   rD   ri   rh   rz   r   r   r:   r;   rop_real  s
   z_binary_op.<locals>.rop_realc              	      s^   t |trtS | j}t || jjs'z| j|}W n ttfy&   t Y S w  || j|jS r>   )	r4   r0   rz   r?   r   r@   rE   rl   ri   r   r   r:   r;   lop_complex  s   z_binary_op.<locals>.lop_complexc                    s0   | j }t|| j js| j |} ||j| jS r>   )r?   r4   r   r@   ri   r   r   r:   r;   rop_complex  s   z_binary_op.<locals>.rop_complexr:   )r   r   r   r   r   r   r:   )r   r   r   r   r;   
_binary_op   s   	r   c                   @   s$   e Zd Zdd Zdd ZeeZdS )ivmpf_constantc                 C   s   t | }||_|S r>   )r   _f)rA   frF   r:   r:   r;   rB   %  s   zivmpf_constant.__new__c                 C   s,   | j jd }| |t}| |t}||fS r   )r?   _precr   r
   r   )rF   r8   rH   rI   r:   r:   r;   	_get_mpi_)  s   zivmpf_constant._get_mpi_N)r   r   r   rB   r   r   rD   r:   r:   r:   r;   r   $  s    r   c                   @   s   e Zd Zdd Zd7ddZdd Zd7dd	Zed
d Zdd Z	dd Z
edd e	Zedd e
Zdd Zdd Zdd Zdd Zd8d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d0d1 Zd2d3 Zd9d5d6ZdS ):MPIntervalContextc                 C   s   t dtfi | _t dtfi | _| j| jf| _t dtfi | _dg| _| 	d | jt
| jg | j_ | j_| j_|  | j_ | j_| j_d| _t|  |   d S )Nr=   r   r   5   F)typer=   ro   r   mpcr   r   	_constantr   	_set_precr   _ctxdatar?   ru   r1   __init___init_builtinsr?   r:   r:   r;   r   2  s   
"
zMPIntervalContext.__init__Nc                 C   s    |d u r	|  |S |  ||fS r>   )ro   )r?   rH   rI   r:   r:   r;   _mpi?  s   
zMPIntervalContext._mpic                 C   s  |  d| _|  d| _|  d| _| j | _|  d| _| dd| _| t	j
t	j| _| t	j| _| t	jt	j| _| t	jt	j| _| t	jt	j| _| t	j| _| t	jt	j| _| t	jt	j| _| t	j t	j!| _"| t	j#t	j$| _%| j%| _&| 'dd | _(| 't	j)| _*| 't	j+| _,| 't	j-| _.| 't	j/| _0| 't	j1| _2| 't	j3| _4| 't	j5| _6| 't	j7| _8| 't	j9| _:| 't	j;| _<d S )Nr   r   infnanc                 S   s   dt d|  dfS Nr   r   )r   )r8   rndr:   r:   r;   <lambda>W  s    z2MPIntervalContext._init_builtins.<locals>.<lambda>)=ro   oner[   r   ninfr   r   j_wrap_mpi_functionr   mpi_expr+   expmpi_sqrtsqrtmpi_logr,   lnmpi_cosmpci_coscosmpi_sinmpci_sinsinmpi_tantan	mpi_gamma
mpci_gammagammampi_loggammampci_loggammaloggamma
mpi_rgammampci_rgammargammampi_factorialmpci_factorial	factorialfacr   epsmpf_pipimpf_eempf_ln2ln2mpf_ln10ln10mpf_phiphi	mpf_eulereulermpf_catalancatalanmpf_glaisherglaishermpf_khinchinkhinchinmpf_twinprime	twinprimer   r:   r:   r;   r   D  s8   
z MPIntervalContext._init_builtinsc                    s    fdd}|S )Nc                    sh   |r| d jd }n jd } | } t| dr$ | j|S t| dr2 | j|S t)Nr8   r   rD   ri   )	getr   r@   r3   r`   rD   r   ri   rE   )r7   kwargsr8   r?   r   r   r:   r;   gd  s   



z/MPIntervalContext._wrap_mpi_function.<locals>.gr:   )r?   r   r   r  r:   r  r;   r   c  s   z$MPIntervalContext._wrap_mpi_functionc                    s&   |r	 fdd}n }t | || d S )Nc                    sZ   | j   fdd|D }| j}z|  jd7  _| g|R i |}W || _|
 S || _w )Nc                    s   g | ]} |qS r:   r:   ).0rH   r@   r:   r;   
<listcomp>v  s    zFMPIntervalContext._wrap_specfun.<locals>.f_wrapped.<locals>.<listcomp>
   )r@   r8   )r?   rm   r  r8   retvalr   r  r;   	f_wrappedt  s   z2MPIntervalContext._wrap_specfun.<locals>.f_wrapped)setattr)rA   namer   wrapr  r:   r  r;   _wrap_specfunq  s   zMPIntervalContext._wrap_specfunc                 C   s"   t dt|| jd< t|| _d S )Nr   r   )maxrL   r   r   _dpsr?   rx   r:   r:   r;   r     s   zMPIntervalContext._set_precc                 C   s"   t || jd< tdt|| _d S r   )r   r   r"  rL   r#  r$  r:   r:   r;   _set_dps  s   zMPIntervalContext._set_dpsc                 C   s
   | j d S r   )r   r   r:   r:   r;   r     r   zMPIntervalContext.<lambda>c                 C   s   | j S r>   )r#  r   r:   r:   r;   r     s    c                 C      t | j}||_|S r>   )r   ro   rD   r?   rd   rH   r:   r:   r;   r`        
zMPIntervalContext.make_mpfc                 C   r&  r>   )r   r   ri   r'  r:   r:   r;   r     r(  zMPIntervalContext.make_mpcc                 C   s:   |\}}t ||| jt}t ||| jt}| ||fS r>   )r   r   r8   r
   r   r`   )r?   pqpqrH   rI   r:   r:   r;   _mpq  s   zMPIntervalContext._mpqc              	   C   sB  t || j| jfr|S t || jr|
 S t |tst|dr0| |j}| |j}| ||S t |t	r@t
|| j}| |S t|drK|j\}}n:z|\}}W n ttfy`   | }}Y nw t|drl|jd }nt|| jt}t|dr~|jd }nt|| jt}|tks|tkrt}t}t||sJ d| ||fS )N_mpc_rD   r   r   z"endpoints must be properly ordered)r4   ro   r   r   rS   r3   r@   rY   r\   r   r"   r8   r`   rD   rl   rE   r<   r
   r   r   r   r   r   )r?   r7   r   r   rd   rH   rI   r:   r:   r;   r@     s:   




zMPIntervalContext.convert   c                 K   sx   |  |}t|drtj|j|fi |S t|dr:tj|jd |fi |}tj|jd |fi |}d||f S d S )NrD   ri   r   r   r   )r@   r3   r   
mpi_to_strrD   ri   )r?   r7   rx   r  r   r   r:   r:   r;   nstr  s   


zMPIntervalContext.nstrc                 C   s~   |  |}t|| jrt| |j| |jd S t|j	\}}|\}}}}|r.|| S |t
kr5| jS |tkr<| jS | jS r   )r@   r4   r   r"  magrY   r\   r   r   rD   r   r   r   r   r   r?   r7   rH   rI   signmanr   bcr:   r:   r;   r1    s   
zMPIntervalContext.magc                 C   s   dS )NFr:   r?   r7   r:   r:   r;   isnan  rZ   zMPIntervalContext.isnanc                 C   s
   || j kS r>   )r   r6  r:   r:   r;   isinf  s   
zMPIntervalContext.isinfc                 C   s@   |  |}|j\}}||kr|\}}}}|r|dkS |tkS d S r   )r@   rD   r   r2  r:   r:   r;   isint  s   

zMPIntervalContext.isintc                 C   s6   |  |j\}}t||}t||}| ||fS r>   )r@   rD   r   	mpf_shiftr`   )r?   r7   rx   rH   rI   r:   r:   r;   ldexp  s   zMPIntervalContext.ldexpc                 C      t | |jS r>   )absr@   rH   r6  r:   r:   r;   absmin  rt   zMPIntervalContext.absminc                 C   r<  r>   )r=  r@   rI   r6  r:   r:   r;   absmax  rt   zMPIntervalContext.absmaxc                 C   s.   |  |j}|  |j}| t||| jS r>   )r@   rD   r`   r   	mpi_atan2r8   )r?   r   r7   r:   r:   r;   atan2  s   zMPIntervalContext.atan2c                 C   st   t |tjr
|dfS t |tr|\}}| || | dfS | |}t || jr.|dfS t || jr8|dfS t)NZRC)r4   r   r   tuplero   r@   r   rE   )r?   r7   r*  r+  r:   r:   r;   _convert_param  s   

z MPIntervalContext._convert_paramc                 C   s   t || jp
t |tS r>   )r4   ro   r   r?   zr:   r:   r;   _is_real_type  s   zMPIntervalContext._is_real_typec                 C   s   t || jS r>   )r4   r   rG  r:   r:   r;   _is_complex_type  rC   z"MPIntervalContext._is_complex_typep  c                 K   s   t |}t|}t||| }	| j }
}d}	 |D ]
}||| | 9 }q|	D ]
}||| |  }q&|d7 }|| }||9 }|
|7 }
|dkrG|
S ||krN| jqr   )listranger   NoConvergence)r?   r*  r+  typescoeffsrH  maxtermsr  numdenr{   rp   kir:   r:   r;   hypsum	  s   
 zMPIntervalContext.hypsumr>   )r.  )rK  )r   r   r   r   r   r   r   classmethodr!  r   r%  r   r8   dpsr`   r   r,  r@   r0  r1  r7  r8  r9  r;  r>  r?  rA  rF  rI  rJ  rV  r:   r:   r:   r;   r   0  s8    



!	
r   )Ooperator r   libmp.backendr   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/   matrices.matricesr0   rh   ctx_baser1   objectrB   r   r<   r=   r   r   __add____radd____sub____rsub____mul____rmul____div____rdiv____pow____rpow____truediv____rtruediv__r   r   numbersComplexregisterRealImportErrorr:   r:   r:   r;   <module>   s:    q]' s