K inddlmZddlZddlZddlmZddlmZddlmZm Z m Z ddlmZGdd eZ y) )StandardBaseContextN)math2) function_docs) mpf_bernoullito_float int_types)libmpcReZdZdZdZdZejZdZdZ dZ dZ dZ e ee Ze e e Zd Zd Zej&Zej*Zej.Zej2Zd Zed Zd Zej>Zej@Z ejBZ!dZ"dZ#dZ$dZ%dZ&dZ!dZ'dZ(dZ)dZ*e+xZ,Z-dZ.dZ/dZ0dZ1dZ2e3Z4e5Z6dZ7e8ejrZ:e8ejvZ;e8ejxZ<e8ejzxZ>Z=e8ej~Z?e8ejZ@e8ejZAe8ejZBe8ejZCe8ejZDe8ejZEe8ejZFe8ejZGe8ejZHe8ejZIe8ejZJe8ejxZLZKe8ejZMe8ejZNe8ejZOe8ejZPe8ejZQe8ejZSe8ejZUe8ejZWe8ejxZYZZdZ[dZ\d Z]e^jZ_e^jZ`d!Zad"Zbd#Zcd$Zdd%Zed&Zfd/d'Zgd(Zhd)Zie8ejZjd*ZkelZmd+Znd,Zoe8ejZqe8ejZsd0d-Zty.)1 FPContextz Context for fast low-precision arithmetic (53-bit precision, giving at most about 15-digit accuracy), using Python's builtin float and complex. ctj|tj|_i|_d|_|j y)NF)r__init__rloggamma_bernoulli_cachepretty _init_aliasesctxs S/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mpmath/ctx_fp.pyrzFPContext.__init__s8$$S)~~ !  c*t|d|dz SNrr)float)clsxs rzFPContext.s%!+ad*rcy)N5rs r _get_preczFPContext._get_prec srrcyNrrps r _set_preczFPContext._set_prec!s6rcy)Nrrs r_get_dpszFPContext._get_dps"sbrcyr"rr#s r_set_dpszFPContext._set_dps#s&rT?y?c|rfd}n}tjj|j|_t |||y)Nch|j}|Dcgc] }|| }}|g|i|Scc}wr")convert)rargskwargsr/afs r f_wrappedz*FPContext._wrap_specfun..f_wrapped6s=++,01q 11.t.v..2s/)r__dict__get__doc__setattr)rnamer3wrapr4s ` r _wrap_specfunzFPContext._wrap_specfun3s=  / I)2266tQYYG T9%rcl|j}||vr||Stt|ddd||<||S)NrnT)strict)rrr)rr=caches r bernoullizFPContext.bernoulli?s?$$ :8OM!R5dCaQxrg;f?gw@gw?g9B.?gUk@gox?g]O?g m t|S#t|cYSxYwr")rrNrBs rr/zFPContext.convertns! 8O 1: s clt|}tj|j|jSr")rNmathatan2rOrPrzs rargz FPContext.args$ AJzz!&&!&&))rc>|j|j|zSr")expjrBs rexpjzFPContext.expjswwsuuQwrcX|j|j|jz|zSr")r[r\pirBs rexpjpizFPContext.expjpis!wwsuuSVV|A~&&rcX|r|jt|dS|jS)Nr)frexprGninfrWs rmagz FPContext.mags& 99SV$Q' 'xxrcxt|dr|jry|j} |t|k(S#YyxYw)NrOF)hasattrrOrPintrWs risintzFPContext.isints< 1f vvA A;  s 59ct|drt|j}n t|}||k(r||jfS||j t ||z fS)NrO)rfrQrPrcrdrG)rrXr=s r nint_distancezFPContext.nint_distancesS 1f aff AaA 6chh; #''#ac(###rct|tur|\}}|j||z dfSt|drt |j }n t |}||k(r|dfS|dfS)NRrOZ)rMtuplempfrfrgrP)rrXr$qintzs r_convert_paramzFPContext._convert_paramsh 7e DAq771:>3& & 1f qvv;Dq6D 99 #v rcFt|txst|tSr") isinstancerr rWs r _is_real_typezFPContext._is_real_types!U#?z!Y'??rc"t|tSr")rtrNrWs r_is_complex_typezFPContext._is_complex_types!W%%rc &t|}t|}t|||z} |j} dx} } d} |D] }| ||| zz} | D] }| ||| zz} | dz } | | z} | |z} | | z } t| | kr| S| |kDr |jZ)Nr,rr)listrangeepsrG NoConvergence)rr$rptypescoeffsrXmaxtermsr1numdentolstkis rhypsumzFPContext.hypsumsfAhAaclgg A  ,!q ! ,! , ,!q ! ,! , FAAFAAFAAFA1v|8|'''rc.tj||Sr")rUrV)rrys rrVzFPContext.atan2szz!Qrct|}|dk(r|j|Sd|dzz|j|z|j|dz|zS)Nrr)rgdigammafaczeta)rmrXs rpsiz FPContext.psisO F 6;;q> !ac{SWWQZ'#((1Q3*:::rc~|j|}|dk(s|dk(r|S|j|dz|jzSr)r/reulerrBs rharmoniczFPContext.harmonics= KKN 6Q!VH{{1Q3#))++rc@ttj||Sr")rgrUldexp)rrprecs rto_fixedzFPContext.to_fixeds4::a&''rc*ddl}|jS)Nr)random)rrs rrandzFPContext.rands}}rc|j}d}|D]0}||z }||zs|rt|dt|zkr|S|dz }2|S)NrgC]r2rs,) 55q#qr