
    g                     v    d dl mZ ddlZddlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ  G d d	e          ZdS )
   )StandardBaseContext    N)math2)function_docs)mpf_bernoullito_float	int_types)libmpc                      e Zd ZdZd Zd Zej        Zd Zd Z	d Z
d ZdZ eee	          Z ee
e          Zd	Zd
Zej        Zej        Zej        Zej        ZdZed             Zd Zej        Zej         Z ej!        Z!dZ"dZ#dZ$dZ%dZ&dZ!dZ'dZ(dZ)dZ*e+xZ,Z-d Z.d Z/d Z0d Z1d Z2e3Z4e5Z6d Z7 e8ej9                  Z: e8ej;                  Z; e8ej<                  Z< e8ej=                  xZ>Z= e8ej?                  Z? e8ej@                  Z@ e8ejA                  ZA e8ejB                  ZB e8ejC                  ZC e8ejD                  ZD e8ejE                  ZE e8ejF                  ZF e8ejG                  ZG e8ejH                  ZH e8ejI                  ZI e8ejJ                  ZJ e8ejK                  xZLZK e8ejM                  ZM e8ejN                  ZN e8ejO                  ZO e8ejP                  ZP e8ejQ                  ZQ e8ejR                  ZS e8ejT                  ZU e8ejV                  ZW e8ejX                  xZYZZd Z[d Z\d  Z]e^j_        Z_e^j`        Z`d! Zad" Zbd# Zcd$ Zdd% Zed& Zfd1d(Zgd) Zhd* Zi e8ejj                  Zjd+ ZkelZmd, Znd- Zo e8ejp                  Zq e8ejr                  Zsd2d/Ztd0S )3	FPContextz
    Context for fast low-precision arithmetic (53-bit precision, giving at most
    about 15-digit accuracy), using Python's builtin float and complex.
    c                     t          j        |            t          j        | _        i | _        d| _        |                                  d S )NF)r   __init__r   loggamma_bernoulli_cachepretty_init_aliasesctxs    I/var/www/html/ai-engine/env/lib/python3.11/site-packages/mpmath/ctx_fp.pyr   zFPContext.__init__   sE    $S))) ~!
    c                 >    t          |d                   |d         z  S Nr   r   )float)clsxs     r   <lambda>zFPContext.<lambda>   s    %!++ad* r   c                     dS )N5    r   s    r   	_get_preczFPContext._get_prec    s    rrr   c                     d S Nr   r   ps     r   	_set_preczFPContext._set_prec!   s    66r   c                     dS )N   r   r   s    r   _get_dpszFPContext._get_dps"   s    bbr   c                     d S r"   r   r#   s     r   _set_dpszFPContext._set_dps#   s    &&r   T              ?y              ?c                     |rfd}n}t           j                            |j                  |_        t	          | ||           d S )Nc                 H    | j         fd|D             } | g|R i |S )Nc                 &    g | ]} |          S r   r   ).0aconverts     r   
<listcomp>z>FPContext._wrap_specfun.<locals>.f_wrapped.<locals>.<listcomp>8   s!    111q

111r   )r2   )r   argskwargsr2   fs      @r   	f_wrappedz*FPContext._wrap_specfun.<locals>.f_wrapped6   sD    +1111D111q.t...v...r   )r   __dict__get__doc__setattr)r   namer6   wrapr7   s     `  r   _wrap_specfunzFPContext._wrap_specfun3   se     	/ / / / / /
 I)266tQYGG	T9%%%%%r   c                 ~    | j         }||v r||         S t          t          |dd          d          ||<   ||         S )Nr   nT)strict)r   r   r   )r   r@   caches      r   	bernoullizFPContext.bernoulli?   sG    $::8OM!R55dCCCaQxr   g;f?gw@gw?g9B.?gUk@gox?g]O?gm<B{@g!;?gs/O҄?c                     ||z
  dk    S )Nr+   r   r   r   s     r   
is_specialzFPContext.is_specialV   s    1u|r   c                     ||k    S r"   r   rE   s     r   isnanzFPContext.isnanY   s    Avr   c                 <    t          |          t          j        k    S r"   )absr   INFrE   s     r   isinfzFPContext.isinf\   s    1vv""r   c                     |r	||z
  dk    S dS )Nr+   Fr   rE   s     r   isnormalzFPContext.isnormal_   s     	 q5C<ur   c                     t          |          t          u r|j        rdS |j        }|dk    ot	          |          |k    S )NFr+   )typecompleximagrealroundrE   s     r   isnpintzFPContext.isnpintd   sB    77gv uACx)E!HHM)r   c                 N    	 t          |          S #  t          |          cY S xY wr"   )r   rQ   rE   s     r   r2   zFPContext.convertn   s-    	88O	1::s    $c                 ^    t          |          }t          j        |j        |j                  S r"   )rQ   mathatan2rR   rS   r   zs     r   argzFPContext.arg   s#    AJJz!&!&)))r   c                 <    |                      | j        |z            S r"   )expjrE   s     r   expjzFPContext.expj   s    wwsuQwr   c                 L    |                      | j        | j        z  |z            S r"   )r^   r_   pirE   s     r   expjpizFPContext.expjpi   s     wwsuSV|A~&&&r   c                 d    |r(|                      t          |                    d         S | j        S )Nr   )frexprJ   ninfrZ   s     r   magzFPContext.mag   s.     	(99SVV$$Q''xr   c                 z    t          |d          r|j        rdS |j        }	 |t          |          k    S #  Y dS xY w)NrR   F)hasattrrR   rS   intrZ   s     r   isintzFPContext.isint   sO    1f 	v uA	A;	55s   5 :c                     t          |d          rt          |j                  }nt          |          }||k    r	|| j        fS ||                     t          ||z
                      fS )NrR   )ri   rT   rS   rf   rg   rJ   )r   r[   r@   s      r   nint_distancezFPContext.nint_distance   sd    1f 	afAAaA66ch;#''#ac((####r   c                     t          |          t          u r|\  }}|                     |          |z  dfS t          |d          rt	          |j                  }nt	          |          }||k    r|dfS |dfS )NRrR   Z)rP   tuplempfri   rj   rS   )r   r[   r$   qintzs        r   _convert_paramzFPContext._convert_param   s}    77eDAq771::>3&&1f 	qv;;DDq66D999#vr   c                 V    t          |t                    pt          |t                    S r"   )
isinstancer   r	   rZ   s     r   _is_real_typezFPContext._is_real_type   s!    !U##?z!Y'?'??r   c                 ,    t          |t                    S r"   )rw   rQ   rZ   s     r   _is_complex_typezFPContext._is_complex_type   s    !W%%%r   p  c                 :   t          |          }t          |          }t          |||z             }	| j        }
dx}}d}	 |D ]}|||         |z   z  }|	D ]}|||         |z   z  }|dz  }||z  }||z  }||z  }t          |          |
k     r|S ||k    r| j        ])Nr,   r   r   )listrangeepsrJ   NoConvergence)r   r$   rs   typescoeffsr[   maxtermsr5   numdentolstkis                  r   hypsumzFPContext.hypsum   s    fAhhAacllgA	(,,!q	!,!!,,!q	!,!!FAAFAAFAAFA1vv||8||''	(r   c                 ,    t          j        ||          S r"   )rX   rY   )r   r   ys      r   rY   zFPContext.atan2   s    z!Qr   c                     t          |          }|dk    r|                     |          S d|dz   z  |                     |          z  |                     |dz   |          z  S )Nr   r   )rj   digammafaczeta)r   mr[   s      r   psizFPContext.psi   sZ    FF66;;q>>!ac{SWWQZZ'#((1Q3*:*:::r   c                     |                      |          }|dk    s|dk    r|S |                     |dz             | j        z   S r   )r2   r   eulerrE   s     r   harmoniczFPContext.harmonic   sD    KKNN66Q!VVH{{1Q3#)++r   c                 F    t          t          j        ||                    S r"   )rj   rX   ldexp)r   r   precs      r   to_fixedzFPContext.to_fixed   s    4:a&&'''r   c                 2    dd l }|                                 S )Nr   )random)r   r   s     r   randzFPContext.rand   s    }}r   r   c                     | j         }d} |            D ]8}||z  }||z  s'|r%t          |          dt          |          z  k    r n|dz  }9|S )Nr   gC]r2<r   )zerorJ   )r   terms
check_stepr   r   terms         r   sum_accuratelyzFPContext.sum_accurately   so    HEGG 	 	DIA
N  t99c!ff,,EFAAr   N)r{   )r   )u__name__
__module____qualname__r:   r   _mpqr
   r   r    r%   r(   r*   _fixed_precisionpropertyr   dpsr   oner   EPSr   rK   infNINFrf   NANnanr_   classmethodr>   rC   rb   er   sqrt2sqrt5philn2ln10catalankhinchinaperyglaisherrJ   absminabsmaxrF   rH   rL   rN   rU   r   rr   rQ   mpcr2   staticmethodpowpowersqrtr^   loglncossintancos_sinacosasinatancoshsinhtanhgammargamma	factorialr   floorceilcospisinpicbrtnthroot_nthrootei_eie1_e1r   _zeta	_zeta_intr\   r`   rc   rX   r   re   rg   rk   rm   ru   rx   rz   r   rY   r   r   r   strnstrr   r   erf_erferfc_erfcr   r   r   r   r   r      s        
   +*D'M!!!!!!      8Iy))D
(8X
&
&CD
C
)C
)C:D
)C
A 	& 	& [	&   
BAKE!E!E
C
 CD"E$G$H!E$HFV    # # #  
* * * C
C   L##E<
##D
,uy
!
!C|EI&&&B
,uy
!
!C
,uy
!
!C
,uy
!
!Cl5=))G<
##D<
##D<
##D<
##D<
##D<
##DL%%E\%,''F"l5?333C)L%%E<
##DL%%EL%%E<
##D|EM**H
,ux
 
 C
,ux
 
 C$UZ000EI* * *     ' ' ' JEJE  
  $ $ $
 
 
@ @ @& & &( ( ( (      ; ; ; l5=))G, , , D( ( (   <	""DL$$E	 	 	 	 	 	r   r   )ctx_baser   rX   cmath r   r   r
   r   r   r	   r   r   r   r   <module>r      s    ) ) ) ) ) )               5 5 5 5 5 5 5 5 5 5      q q q q q# q q q q qr   