grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]}ã*@s­dddddddddd d d d d ddddddddddddddddddd d!d"d#g$ZeZd$Zd%Zd&Zd'd(lZd'd(lZd'd(l Z y#d'd)l m Z e dd*ƒZ Wnek rñd+d,„Z YnXdZdZdZdZdZdZdZdZd-Ze jd.d/d0krUd1Zd1Zd1 Znd2Zd2Zd2 Zeed0ZGd3d„deƒZGd4d„deƒZGd5d„deƒZ Gd6d„de ƒZ!Gd7d „d ee"ƒZ#Gd8d„de ƒZ$Gd9d„de e"ƒZ%Gd:d „d eƒZ&Gd;d„de ƒZ'Gd<d „d eƒZ(Gd=d „d eƒZ)Gd>d „d e&e(ƒZ*Gd?d„de&e(e)ƒZ+Gd@d„dee,ƒZ-ee#e&e*e(e+e e)e-g Z.e!e e$e e%e e'e iZ/eeeeeeeefZ0yd'd(l1Z1Wn4ek r_GdAdB„dBe2ƒZ3e3ƒZ1[3YnXy e1j4WnKe5k r¸e6e1j7ƒdCƒrœe1j7ƒ`8dDd„Z9dEd„Z:YnFXe1j4ƒZ4e6e4dCƒrÚe4`8e4dFd„Z:e4dGd„Z9[1[4d(dHd„Z;GdId„de2ƒZ<dJdKdL„Z=ej>j?e<ƒGdMdN„dNe2ƒZ@GdOd„de2ƒZAGdPdQ„dQe2ƒZBd'dRdS„ZCeDjEZFdTdU„ZGdVdW„ZHdXdY„ZIdZd[„ZJd\d]d^„ZKd_d`„ZLdadb„ZMGdcdd„dde2ƒZNeNƒjOZPd\dedf„ZQdgdh„ZRdidj„ZSdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|i d}d~„ZTdJdJdd€„ZUdJd�d‚„ZVeAdƒd„d…ed†e#e*e gd‡gdˆd‰dŠd‰ d‹d0dŒd'ƒZWeAdƒd�d…ed†e#e*e ee+gd‡gƒZXeAdƒd�d…ed†gd‡gƒZYd'd(lZZZeZj[dŽeZj\eZj]Bƒj^Z_eZj[d�ƒj^Z`eZj[d�ƒj^ZaeZj[d‘eZj\eZjbBƒZc[Zyd'd(ldZeWnek rÈYnXd(d’d“„Zfd”d•„Zgd–d—„Zhd0d˜d™„Zidšd›„Zjdœd�„Zke<džƒZle<dŸƒZme<d ƒZne<d'ƒZoe<d0ƒZpe<d0 ƒZqelemfZre jsjtZue jsjvZwe jsjxZyezdzeud.euƒZ{[ d(S)¡ÚDecimalÚContextÚ DecimalTupleÚDefaultContextÚ BasicContextÚExtendedContextÚDecimalExceptionÚClampedÚInvalidOperationÚDivisionByZeroÚInexactÚRoundedÚ SubnormalÚOverflowÚ UnderflowÚFloatOperationÚDivisionImpossibleÚInvalidContextÚConversionSyntaxÚDivisionUndefinedÚ ROUND_DOWNÚ ROUND_HALF_UPÚROUND_HALF_EVENÚ ROUND_CEILINGÚ ROUND_FLOORÚROUND_UPÚROUND_HALF_DOWNÚ ROUND_05UPÚ setcontextÚ getcontextÚ localcontextÚMAX_PRECÚMAX_EMAXÚMIN_EMINÚ MIN_ETINYÚ HAVE_THREADSZdecimalz1.70z2.4.1éN)Ú namedtuplezsign digits exponentcGs|S)N©)Úargsr'r'ú//opt/alt/python35/lib64/python3.5/_pydecimal.pyÚ¡sr*Téé?élÿÇNÎZoi@üTc@seZdZdd„ZdS)rcGsdS)Nr')ÚselfÚcontextr(r'r'r)ÚhandleÏszDecimalException.handleN)Ú__name__Ú __module__Ú __qualname__r0r'r'r'r)r¼s c@seZdZdS)rN)r1r2r3r'r'r'r)rÓs c@seZdZdd„ZdS)r cGs:|r6t|dj|djddƒ}|j|ƒStS)Nr%ÚnT)Ú_dec_from_tripleÚ_signÚ_intÚ_fix_nanÚ_NaN)r.r/r(Úansr'r'r)r0ös# zInvalidOperation.handleN)r1r2r3r0r'r'r'r)r ßs c@seZdZdd„ZdS)rcGstS)N)r9)r.r/r(r'r'r)r0szConversionSyntax.handleN)r1r2r3r0r'r'r'r)rüs c@seZdZdd„ZdS)r cGst|S)N)Ú_SignedInfinity)r.r/Úsignr(r'r'r)r0szDivisionByZero.handleN)r1r2r3r0r'r'r'r)r s c@seZdZdd„ZdS)rcGstS)N)r9)r.r/r(r'r'r)r0szDivisionImpossible.handleN)r1r2r3r0r'r'r'r)rs c@seZdZdd„ZdS)rcGstS)N)r9)r.r/r(r'r'r)r0)szDivisionUndefined.handleN)r1r2r3r0r'r'r'r)r!s c@seZdZdS)r N)r1r2r3r'r'r'r)r ,s c@seZdZdd„ZdS)rcGstS)N)r9)r.r/r(r'r'r)r0CszInvalidContext.handleN)r1r2r3r0r'r'r'r)r8s c@seZdZdS)r N)r1r2r3r'r'r'r)r Fs c@seZdZdS)r N)r1r2r3r'r'r'r)r Rs c@seZdZdd„ZdS)rcGs·|jttttfkr#t|S|dkrk|jtkrFt|St|d|j|j |jdƒS|dkr³|jt krŽt|St|d|j|j |jdƒSdS)Nr%Ú9r-) Úroundingrrrrr;rr5ÚprecÚEmaxr)r.r/r<r(r'r'r)r0ss   zOverflow.handleN)r1r2r3r0r'r'r'r)r]s c@seZdZdS)rN)r1r2r3r'r'r'r)rƒs c@seZdZdS)rN)r1r2r3r'r'r'r)r’s c@seZdZedd„ZdS)Ú MockThreadingcCs |jtS)N)ÚmodulesÚ __xname__)r.Úsysr'r'r)Úlocal¼szMockThreading.localN)r1r2r3rDrEr'r'r'r)rA»s rAÚ__decimal_context__cCs>|tttfkr+|jƒ}|jƒ|tjƒ_dS)N)rrrÚcopyÚ clear_flagsÚ threadingÚcurrent_threadrF)r/r'r'r)rËs  c CsFytjƒjSWn.tk rAtƒ}|tjƒ_|SYnXdS)N)rIrJrFÚAttributeErrorr)r/r'r'r)rÒs   c Cs:y |jSWn(tk r5tƒ}||_|SYnXdS)N)rFrKr)Ú_localr/r'r'r)ræs     cCs8|tttfkr+|jƒ}|jƒ||_dS)N)rrrrGrHrF)r/rLr'r'r)rôs  cCs|dkrtƒ}t|ƒS)N)rÚ_ContextManager)Úctxr'r'r)rýs$ c@sÍeZdZdùZdddd„Zed d „ƒZd d „Zd d„Zdddd„Z dd„Z dd„Z dd„Z ddd„Z ddd„Zddd„Zddd„Zddd „Zdd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)dd*d+„Zdd,d-„Zdd.d/„Zdd0d1„Zd2dd3d4„Zdd5d6„ZeZdd7d8„Zdd9d:„Zdd;d<„ZeZ dd=d>„Z!d?d@„Z"ddAdB„Z#ddCdD„Z$ddEdF„Z%ddGdH„Z&ddIdJ„Z'ddKdL„Z(ddMdN„Z)ddOdP„Z*dQdR„Z+dSdT„Z,e,Z-dUdV„Z.e/e.ƒZ.dWdX„Z0e/e0ƒZ0dYdZ„Z1d[d\„Z2d]d^„Z3d_d`„Z4dadb„Z5dcdd„Z6dedf„Z7dgdh„Z8didj„Z9dkdl„Z:dmdn„Z;dodp„Z<e=dqe5dre6dse7dte8due9dve:dwe;dxe<ƒZ>ddydz„Z?d{d|„Z@d}d~„ZAddd€„ZBdd�d‚„ZCdƒd„„ZDddd…d†„ZEdd‡dˆ„ZFdd‰dŠ„ZGddd‹dŒ„ZHdd�dŽ„ZId�d�„ZJd‘d’„ZKddd“d”„ZLddd•d–„ZMeMZNdd—d˜„ZOdd™dš„ZPdd›dœ„ZQd�dž„ZRdŸd „ZSd¡d¢„ZTd£d¤„ZUdd¥d¦„ZVdd§d¨„ZWdd©dª„ZXd«d¬„ZYd­d®„ZZdd¯d°„Z[dd±d²„Z\d³d´„Z]dµd¶„Z^d·d¸„Z_d¹dº„Z`dd»d¼„Zad½d¾„Zbd¿dÀ„ZcdÁd„ZdddÃdÄ„ZedÅdÆ„ZfdÇdÈ„ZgddÉdÊ„ZhdËdÌ„ZiddÍd΄ZjddÏdЄZkdÑdÒ„ZldÓdÔ„ZmddÕdÖ„Zndd×dØ„ZoddÙdÚ„ZpddÛdÜ„ZqddÝdÞ„Zrddßdà„Zsddádâ„Ztddãdä„Zuddådæ„Zvddçdè„Zwdédê„Zxddëdì„Zyddídî„Zzddïdð„Z{dñdò„Z|dódô„Z}dõdö„Z~ddd÷dø„ZdS)úrÚ_expr7r6Ú _is_specialÚ0Nc CsÅtj|ƒ}t|tƒr—t|jƒƒ}|dkre|dkrQtƒ}|jtd|ƒS|j dƒdkr†d|_ n d|_ |j dƒ}|dk r|j dƒp¼d}t |j d ƒpÔd ƒ}tt ||ƒƒ|_ |t |ƒ|_d |_n�|j d ƒ}|dk rxtt |p<d ƒƒjd ƒ|_ |j d ƒrld|_qŠd|_nd |_ d|_d|_|St|t ƒrò|dkr¾d|_ n d|_ d|_tt|ƒƒ|_ d |_|St|tƒr5|j|_|j |_ |j |_ |j|_|St|tƒr�|j|_ t|j ƒ|_ t |jƒ|_d |_|St|ttfƒr:t |ƒdkr´tdƒ‚t|dt ƒoÔ|ddksãtdƒ‚|d|_ |ddkr"d |_ |d|_d|_ng} xk|dD]_} t| t ƒr†d| ko_dknr†| sv| dkr’| j| ƒq3tdƒ‚q3W|ddkrÚdjtt| ƒƒ|_ |d|_d|_n\t|dt ƒr*djtt| pdgƒƒ|_ |d|_d |_n tdƒ‚|St|tƒr±|dkr^tƒ}|jtdƒtj|ƒ}|j|_|j |_ |j |_ |j|_|Std|ƒ‚dS)NzInvalid literal for Decimal: %rr<ú-r-r%ÚintZfracÚÚexprQFÚdiagÚsignalÚNr4ÚFTéztInvalid tuple size in creation of Decimal from list or tuple. The list or tuple should have exactly three elements.z|Invalid sign. The first value in the tuple should be an integer; either 0 for a positive number or 1 for a negative number.r+é zTThe second value in the tuple must be composed of integers in the range 0 through 9.zUThe third value in the tuple must be an integer, or one of the strings 'F', 'n', 'N'.z;strict semantics for mixing floats and Decimals are enabledzCannot convert %r to Decimal)r%r-)r4rX) ÚobjectÚ__new__Ú isinstanceÚstrÚ_parserÚstriprÚ _raise_errorrÚgroupr6rSr7ÚlenrOrPÚlstripÚabsrÚ_WorkRepr<rUÚlistÚtupleÚ ValueErrorÚappendÚjoinÚmapÚfloatrÚ from_floatÚ TypeError) ÚclsÚvaluer/r.ÚmÚintpartÚfracpartrUrVÚdigitsZdigitr'r'r)r]4s¬          $                 #     +  $          zDecimal.__new__cCsðt|tƒr||ƒSt|tƒs4tdƒ‚tj|ƒsRtj|ƒrb|t|ƒƒStjd|ƒdkrƒd}nd}t |ƒj ƒ\}}|j ƒd}t |t |d|ƒ| ƒ}|tkrâ|S||ƒSdS)Nzargument must be int or float.gð?r%r-é)r^rSrnrpÚ_mathÚisinfÚisnanÚreprÚcopysignrfÚas_integer_ratioÚ bit_lengthr5r_r)rqÚfr<r4ÚdÚkÚresultr'r'r)roÊs   ! zDecimal.from_floatcCs6|jr2|j}|dkr"dS|dkr2dSdS)Nr4r-rXr+r%)rPrO)r.rUr'r'r)Ú_isnanòs    zDecimal._isnancCs$|jdkr |jrdSdSdS)NrYr-r%éÿÿÿÿ)rOr6)r.r'r'r)Ú _isinfinitys  zDecimal._isinfinitycCs°|jƒ}|dkr!d}n |jƒ}|s9|r¬|dkrNtƒ}|dkrm|jtd|ƒS|dkrŒ|jtd|ƒS|rŸ|j|ƒS|j|ƒSdS)NFr+ÚsNaNr%)rƒrrbr r8)r.Úotherr/Ú self_is_nanÚ other_is_nanr'r'r)Ú _check_nanss"             zDecimal._check_nanscCs§|dkrtƒ}|js'|jr£|jƒrF|jtd|ƒS|jƒre|jtd|ƒS|jƒr„|jtd|ƒS|jƒr£|jtd|ƒSdS)Nzcomparison involving sNaNzcomparison involving NaNr%)rrPÚis_snanrbr Úis_qnan)r.r‡r/r'r'r)Ú_compare_check_nans.s(          zDecimal._compare_check_nanscCs|jp|jdkS)NrQ)rPr7)r.r'r'r)Ú__bool__OszDecimal.__bool__cCs^|js|jrN|jƒ}|jƒ}||kr:dS||krJdSdS|sj|s^dSd|j S|s{d|jS|j|jkr‘dS|j|jkr§dS|jƒ}|jƒ}||kr7|jd|j|j}|jd|j|j}||krdS||kr)d|j Sd |jSn#||krNd |jSd |j SdS) Nr%r-rQr„r„r„r„r„r„r„r„)rPr…r6Úadjustedr7rO)r.r‡Zself_infZ other_infÚ self_adjustedZother_adjustedÚ self_paddedZ other_paddedr'r'r)Ú_cmpVs>              z Decimal._cmpcCsTt||ddƒ\}}|tkr+|S|j||ƒrAdS|j|ƒdkS)NÚ equality_opTFr%)Ú_convert_for_comparisonÚNotImplementedrŠr’)r.r‡r/r'r'r)Ú__eq__–s  zDecimal.__eq__cCsTt||ƒ\}}|tkr%|S|j||ƒ}|rAdS|j|ƒdkS)NFr%)r”r•r�r’)r.r‡r/r:r'r'r)Ú__lt__žs zDecimal.__lt__cCsTt||ƒ\}}|tkr%|S|j||ƒ}|rAdS|j|ƒdkS)NFr%)r”r•r�r’)r.r‡r/r:r'r'r)Ú__le__§s zDecimal.__le__cCsTt||ƒ\}}|tkr%|S|j||ƒ}|rAdS|j|ƒdkS)NFr%)r”r•r�r’)r.r‡r/r:r'r'r)Ú__gt__°s zDecimal.__gt__cCsTt||ƒ\}}|tkr%|S|j||ƒ}|rAdS|j|ƒdkS)NFr%)r”r•r�r’)r.r‡r/r:r'r'r)Ú__ge__¹s zDecimal.__ge__cCsYt|ddƒ}|js*|rF|jrF|j||ƒ}|rF|St|j|ƒƒS)NÚraiseitT)Ú_convert_otherrPrŠrr’)r.r‡r/r:r'r'r)ÚcompareÂs zDecimal.comparecCsÇ|jrF|jƒr$tdƒ‚n"|jƒr4tS|jrBt StS|jdkrmtd|jt ƒ}ntt |j t ƒ}t |j ƒ|t }|dkr¬|n| }|dkrÃdS|S)Nz"Cannot hash a signaling NaN value.r%é r-r+r„éþÿÿÿ) rPr‹rpÚis_nanÚ _PyHASH_NANr6Ú _PyHASH_INFrOÚpowÚ_PyHASH_MODULUSÚ _PyHASH_10INVrSr7)r.Zexp_hashZhash_r:r'r'r)Ú__hash__Ôs    zDecimal.__hash__cCs(t|jttt|jƒƒ|jƒS)N)rr6rirmrSr7rO)r.r'r'r)Úas_tupleîszDecimal.as_tuplecCsdt|ƒS)Nz Decimal('%s'))r_)r.r'r'r)Ú__repr__õszDecimal.__repr__Fc CsÉddg|j}|jr`|jdkr3|dS|jdkrQ|d|jS|d|jS|jt|jƒ}|jdkrš|dkrš|}nE|s©d }n6|jd krÍ|d d d }n|d d d }|dkr d }d d | |j}nf|t|jƒkrF|jd |t|jƒ}d}n*|jd|…}d |j|d…}||kr…d}n4|dkrštƒ}ddg|jd||}||||S)NrTrRrYZInfinityr4ÚNaNr†r%ér-rQrZÚ.ÚeÚEz%+diúÿÿÿ)r6rPrOr7rdrÚcapitals) r.Úengr/r<Ú leftdigitsÚdotplacertrurUr'r'r)Ú__str__ús:         zDecimal.__str__cCs|jddd|ƒS)Nr¯Tr/)r²)r.r/r'r'r)Ú to_eng_string.szDecimal.to_eng_stringcCsx|jr%|jd|ƒ}|r%|S|dkr:tƒ}| r_|jtkr_|jƒ}n |jƒ}|j|ƒS)Nr/)rPrŠrr>rÚcopy_absÚ copy_negateÚ_fix)r.r/r:r'r'r)Ú__neg__7s    zDecimal.__neg__cCsx|jr%|jd|ƒ}|r%|S|dkr:tƒ}| r_|jtkr_|jƒ}n t|ƒ}|j|ƒS)Nr/)rPrŠrr>rr´rr¶)r.r/r:r'r'r)Ú__pos__Ms    zDecimal.__pos__TcCsi|s|jƒS|jr5|jd|ƒ}|r5|S|jrS|jd|ƒ}n|jd|ƒ}|S)Nr/)r´rPrŠr6r·r¸)r.Úroundr/r:r'r'r)Ú__abs__bs   zDecimal.__abs__c Csbt|ƒ}|tkr|S|dkr1tƒ}|jsC|jr¹|j||ƒ}|r_|S|jƒr£|j|jkr™|jƒr™|jtdƒSt |ƒS|jƒr¹t |ƒSt |j |j ƒ}d}|j t krû|j|jkrûd}| rO| rOt |j|jƒ}|r*d}t|d|ƒ}|j|ƒ}|S|sšt||j |jdƒ}|j||j ƒ}|j|ƒ}|S|såt||j |jdƒ}|j||j ƒ}|j|ƒ}|St|ƒ}t|ƒ}t|||jƒ\}}tƒ} |j|jkrÉ|j|jkrjt|d|ƒ}|j|ƒ}|S|j|jkr‰||}}|jdkr½d| _|j|j|_|_qÿd| _n6|jdkröd| _d\|_|_n d| _|jdkr$|j|j| _n|j|j| _|j| _t | ƒ}|j|ƒ}|S)Nz -INF + INFr%r-rQ)r%r%)rœr•rrPrŠr…r6rbr rÚminrOr>rr5r¶Úmaxr?Ú_rescalergÚ _normalizer<rSrU) r.r‡r/r:rUZ negativezeror<Úop1Úop2r‚r'r'r)Ú__add__xs|        !          zDecimal.__add__cCsft|ƒ}|tkr|S|js.|jrM|j|d|ƒ}|rM|S|j|jƒd|ƒS)Nr/)rœr•rPrŠrÁrµ)r.r‡r/r:r'r'r)Ú__sub__Ðs  zDecimal.__sub__cCs/t|ƒ}|tkr|S|j|d|ƒS)Nr/)rœr•rÂ)r.r‡r/r'r'r)Ú__rsub__Þs  zDecimal.__rsub__cCsÁt|ƒ}|tkr|S|dkr1tƒ}|j|jA}|jsS|jrÃ|j||ƒ}|ro|S|jƒr™|s‘|jtdƒSt |S|jƒrÃ|s»|jtdƒSt |S|j |j }| sá| rt |d|ƒ}|j |ƒ}|S|j dkr=t ||j |ƒ}|j |ƒ}|S|j dkrtt ||j |ƒ}|j |ƒ}|St|ƒ}t|ƒ}t |t|j|jƒ|ƒ}|j |ƒ}|S)Nz (+-)INF * 0z 0 * (+-)INFrQÚ1)rœr•rr6rPrŠr…rbr r;rOr5r¶r7rgr_rS)r.r‡r/Z resultsignr:Z resultexpr¿rÀr'r'r)Ú__mul__æsH        "zDecimal.__mul__c Csct|ƒ}|tkrtS|dkr1tƒ}|j|jA}|jsS|jrÝ|j||ƒ}|ro|S|jƒr—|jƒr—|jtdƒS|jƒr«t |S|jƒrÝ|jt dƒt |d|j ƒƒS|s |sù|jt dƒS|jtd|ƒS|s+|j|j}d}nt|jƒt|jƒ|jd}|j|j|}t|ƒ}t|ƒ} |dkr°t|jd|| jƒ\}} n$t|j| jd| ƒ\}} | r÷|d dkr>|d7}nG|j|j} x4|| kr=|ddkr=|d}|d7}q Wt |t|ƒ|ƒ}|j|ƒS) Nz(+-)INF/(+-)INFzDivision by infinityrQz0 / 0zx / 0r%r-ržrw)rœr•rr6rPrŠr…rbr r;rr5ÚEtinyrr rOrdr7r?rgÚdivmodrSr_r¶) r.r‡r/r<r:rUÚcoeffÚshiftr¿rÀÚ remainderÚ ideal_expr'r'r)Ú __truediv__sP       '   &$  zDecimal.__truediv__c Csˆ|j|jA}|jƒr(|j}nt|j|jƒ}|jƒ|jƒ}| sr|jƒsr|dkr—t|ddƒ|j||jƒfS||jkrlt |ƒ}t |ƒ}|j |j krð|j d|j |j 9_ n|j d|j |j 9_ t |j |j ƒ\}} |d|jkrlt|t |ƒdƒt|jt | ƒ|ƒfS|jtdƒ} | | fS)Nr+rQr%ržz%quotient too large in //, % or divmodrŸ)r6r…rOr»r�r5r½r>r?rgrUrSrÇr_rbr) r.r‡r/r<rËÚexpdiffr¿rÀÚqÚrr:r'r'r)Ú_divideZs*       zDecimal._dividecCs/t|ƒ}|tkr|S|j|d|ƒS)Nr/)rœr•rÌ)r.r‡r/r'r'r)Ú __rtruediv__{s  zDecimal.__rtruediv__cCs/t|ƒ}|tkr|S|dkr1tƒ}|j||ƒ}|rS||fS|j|jA}|jƒr±|jƒr—|jtdƒ}||fSt||jtdƒfS|sþ|sÙ|jt dƒ}||fS|jt d|ƒ|jtdƒfS|j ||ƒ\}}|j |ƒ}||fS)Nzdivmod(INF, INF)zINF % xz divmod(0, 0)zx // 0zx % 0) rœr•rrŠr6r…rbr r;rr rÐr¶)r.r‡r/r:r<ZquotientrÊr'r'r)Ú __divmod__‚s0         zDecimal.__divmod__cCs/t|ƒ}|tkr|S|j|d|ƒS)Nr/)rœr•rÒ)r.r‡r/r'r'r)Ú __rdivmod__¦s  zDecimal.__rdivmod__cCs¾t|ƒ}|tkr|S|dkr1tƒ}|j||ƒ}|rM|S|jƒri|jtdƒS|s•|r…|jtdƒS|jtdƒS|j||ƒd}|j |ƒ}|S)NzINF % xzx % 0z0 % 0r-) rœr•rrŠr…rbr rrÐr¶)r.r‡r/r:rÊr'r'r)Ú__mod__­s"     zDecimal.__mod__cCs/t|ƒ}|tkr|S|j|d|ƒS)Nr/)rœr•rÔ)r.r‡r/r'r'r)Ú__rmod__Ès  zDecimal.__rmod__c Csp|dkrtƒ}t|ddƒ}|j||ƒ}|rC|S|jƒr_|jtdƒS|s‹|r{|jtdƒS|jtdƒS|jƒr°t|ƒ}|j|ƒSt |j |j ƒ}|sít |j d|ƒ}|j|ƒS|j ƒ|j ƒ}||jdkr#|jtƒS|d krQ|j||jƒ}|j|ƒSt|ƒ}t|ƒ}|j|jkr›|jd |j|j9_n|jd |j|j9_t|j|jƒ\}} d| |d@|jkr| |j8} |d7}|d |jkr%|jtƒS|j } | d krKd| } | } t | t| ƒ|ƒ}|j|ƒS) Nr›Tzremainder_near(infinity, x)zremainder_near(x, 0)zremainder_near(0, 0)rQr-r+ržr%rŸ)rrœrŠr…rbr rrr¶r»rOr5r6r�r?rr½r>rgrUrSrÇr_) r.r‡r/r:Úideal_exponentrÍr¿rÀrÎrÏr<r'r'r)Úremainder_nearÏsZ                      zDecimal.remainder_nearcCsÔt|ƒ}|tkr|S|dkr1tƒ}|j||ƒ}|rM|S|jƒr‡|jƒru|jtdƒSt|j|jAS|sÀ|r°|jt d|j|jAƒS|jt dƒS|j ||ƒdS)Nz INF // INFzx // 0z0 // 0r%) rœr•rrŠr…rbr r;r6r rrÐ)r.r‡r/r:r'r'r)Ú __floordiv__s$       zDecimal.__floordiv__cCs/t|ƒ}|tkr|S|j|d|ƒS)Nr/)rœr•rØ)r.r‡r/r'r'r)Ú __rfloordiv__6s  zDecimal.__rfloordiv__cCsR|jƒr<|jƒr$tdƒ‚|jr3dnd}n t|ƒ}t|ƒS)Nz%Cannot convert signaling NaN to floatz-nanÚnan)rƒr‹rjr6r_rn)r.Úsr'r'r)Ú __float__=s     zDecimal.__float__cCsœ|jr<|jƒr$tdƒ‚n|jƒr<tdƒ‚d|j}|jdkrt|t|jƒd|jS|t|jd|j…p“dƒSdS)NzCannot convert NaN to integerz"Cannot convert infinity to integerr-r%ržrQr„) rPrƒrjr…Ú OverflowErrorr6rOrSr7)r.rÛr'r'r)Ú__int__Gs     zDecimal.__int__cCs|S)Nr')r.r'r'r)ÚrealVsz Decimal.realcCs tdƒS)Nr%)r)r.r'r'r)ÚimagZsz Decimal.imagcCs|S)Nr')r.r'r'r)Ú conjugate^szDecimal.conjugatecCstt|ƒƒS)N)Úcomplexrn)r.r'r'r)Ú __complex__aszDecimal.__complex__cCsq|j}|j|j}t|ƒ|krg|t|ƒ|d…jdƒ}t|j||jdƒSt|ƒS)NrQT) r7r?Úclamprdrer5r6rOr)r.r/ZpayloadZmax_payload_lenr'r'r)r8ds  #zDecimal._fix_nancCs|jr,|jƒr"|j|ƒSt|ƒS|jƒ}|jƒ}|s´|j|g|j}tt |j |ƒ|ƒ}||j krª|j t ƒt |jd|ƒSt|ƒSt|jƒ|j |j}||kr|j td|jƒ}|j tƒ|j tƒ|S||k}|r+|}|j |kr§t|jƒ|j |} | dkrt |jd|dƒ}d} |j|j} | || ƒ} |jd| …p´d} | dkrtt| ƒdƒ} t| ƒ|jkr| dd…} |d7}||kr/|j td|jƒ}nt |j| |ƒ}| r]|r]|j tƒ|rp|j tƒ| rƒ|j tƒ|j tƒ|s£|j t ƒ|S|rº|j tƒ|jdkr|j |kr|j t ƒ|jd|j |} t |j| |ƒSt|ƒS)NrQz above Emaxr%rÄr-r„)rPrƒr8rrÆÚEtopr@rär»r¼rOrbrr5r6rdr7r?rr r Ú_pick_rounding_functionr>r_rSrr )r.r/rÆråÚexp_maxZnew_expZexp_minr:Zself_is_subnormalrvZrounding_methodÚchangedrÈr‘r'r'r)r¶psn                        z Decimal._fixcCst|j|ƒrdSdSdS)Nr%r-r„)Ú _all_zerosr7)r.r?r'r'r)Ú _round_downÖszDecimal._round_downcCs|j|ƒ S)N)rê)r.r?r'r'r)Ú _round_upÝszDecimal._round_upcCs5|j|dkrdSt|j|ƒr-dSdSdS)NZ56789r-r%r„)r7ré)r.r?r'r'r)Ú_round_half_upás zDecimal._round_half_upcCs't|j|ƒrdS|j|ƒSdS)Nr-r„)Ú _exact_halfr7rì)r.r?r'r'r)Ú_round_half_downêszDecimal._round_half_downcCsJt|j|ƒr9|dks5|j|ddkr9dS|j|ƒSdS)Nr%r-Ú02468r„)rír7rì)r.r?r'r'r)Ú_round_half_evenñs#zDecimal._round_half_evencCs(|jr|j|ƒS|j|ƒ SdS)N)r6rê)r.r?r'r'r)Ú_round_ceilingùs  zDecimal._round_ceilingcCs(|js|j|ƒS|j|ƒ SdS)N)r6rê)r.r?r'r'r)Ú _round_floors  zDecimal._round_floorcCs<|r*|j|ddkr*|j|ƒS|j|ƒ SdS)Nr-Z05)r7rê)r.r?r'r'r)Ú _round_05ups zDecimal._round_05uprrrrrrrrcCs�|dk rGt|tƒs'tdƒ‚tdd| ƒ}|j|ƒS|jrw|jƒrktdƒ‚n tdƒ‚t|j dt ƒƒS)Nz+Second argument to round should be integralr%rÄzcannot round a NaNzcannot round an infinity) r^rSrpr5ÚquantizerPr rjrÝr½r)r.r4rUr'r'r)Ú __round__s/      zDecimal.__round__cCsF|jr0|jƒr$tdƒ‚n tdƒ‚t|jdtƒƒS)Nzcannot round a NaNzcannot round an infinityr%)rPr rjrÝrSr½r)r.r'r'r)Ú __floor__Ws    zDecimal.__floor__cCsF|jr0|jƒr$tdƒ‚n tdƒ‚t|jdtƒƒS)Nzcannot round a NaNzcannot round an infinityr%)rPr rjrÝrSr½r)r.r'r'r)Ú__ceil__fs    zDecimal.__ceil__cCs‰t|ddƒ}t|ddƒ}|js6|jr7|dkrKtƒ}|jdkrm|jtd|ƒS|jdkr�|jtd|ƒS|jdkr§|}qy|jdkr¿|}qy|jdkrû|sä|jtdƒSt|j|jA}qy|jdkry|s |jtdƒSt|j|jA}nBt|j|jAt t |j ƒt |j ƒƒ|j|jƒ}|j ||ƒS) Nr›TrXr†r4rYzINF * 0 in fmaz0 * INF in fma) rœrPrrOrbr r;r6r5r_rSr7rÁ)r.r‡Zthirdr/Úproductr'r'r)Úfmaus6       z Decimal.fmac Cs‹t|ƒ}|tkr|St|ƒ}|tkr8|S|dkrMtƒ}|jƒ}|jƒ}|jƒ}|sƒ|sƒ|r|dkr¢|jtd|ƒS|dkrÁ|jtd|ƒS|dkrà|jtd|ƒS|ró|j|ƒS|r|j|ƒS|j|ƒS|jƒo4|jƒo4|jƒsG|jtdƒS|dkrc|jtdƒS|sy|jtdƒS|jƒ|j krž|jtdƒS| r¼| r¼|jtdƒS|j ƒrÑd}n |j }t t |ƒƒ}t|jƒƒ}t|jƒƒ} |j |td |j|ƒ|}x)t| jƒD]} t|d |ƒ}qDWt|| j |ƒ}t|t|ƒdƒS) Nr+r†z@pow() 3rd argument not allowed unless all arguments are integersr%zApow() 2nd argument cannot be negative when 3rd argument specifiedzpow() 3rd argument cannot be 0zSinsufficient precision: pow() 3rd argument must not have more than precision digitszXat least one of pow() 1st argument and 2nd argument must be nonzero ;0**0 is not definedrž)rœr•rrƒrbr r8Ú _isintegerr�r?Ú_isevenr6rfrSrgÚto_integral_valuer£rUÚranger5r_) r.r‡Úmodulor/rˆr‰Z modulo_is_nanr<ÚbaseÚexponentÚir'r'r)Ú _power_modulo¡sl                              $zDecimal._power_modulocCs9t|ƒ}|j|j}}x(|ddkrI|d}|d7}q"Wt|ƒ}|j|j}}x(|ddkr“|d}|d7}qlW|dkrs||9}x(|ddkrÔ|d}|d7}q­W|dkrådS|d|} |jdkr | } |jƒrQ|jdkrQ|jt|ƒ} t| | |dƒ} nd} tddd| | | ƒS|jdkrv|d} | dkrF|| @|kr­dSt |ƒd} |d d }|t t |ƒƒkrçdSt | ||ƒ} t |||ƒ}| dks%|dkr)dS| |kr9dSd | }nû| d kr=t |ƒd d } t d | |ƒ\}}|r‰dSx(|d dkr³|d }| d8} qŒW|dd}|t t |ƒƒkrÞdSt | ||ƒ} t |||ƒ}| dks|dkr dS| |kr0dSd| }ndS|d|krUdS| |}tdt |ƒ|ƒS|dkrš|d|d}}n|dkrÍt t t||ƒƒƒ| krÍdSt |ƒ}|dkr t t t|ƒ|ƒƒ| kr dS|d| }}x<|d|dko@dknr\|d}|d}q!Wx<|d |d kodknr›|d }|d }q`W|dkrk|dkrÄ||krÄdSt ||ƒ\}}|dkrédSdt |ƒ | >}xGt |||dƒ\}}||kr/Pq||d||}qW||ko^|dksedS|}|dkr•||dt|ƒkr•dS||}||9}|d|kr½dSt |ƒ}|jƒr|jdkr|jt|ƒ} t|| |t |ƒƒ} nd} td|d| || ƒS)Nržr%r-rÄrQr+érªéé]éArwérZéd)r+rrªr)rgrSrUr<rúr6rOr»r5Ú_nbitsrdr_Ú_decimal_lshift_exactrÇrfÚ _log10_lb)r.r‡ÚpÚxÚxcÚxeÚyÚycÚyerrÖZzerosZ last_digitr¬ZemaxrÊrsr4Zxc_bitsÚremÚarÎrÏZstr_xcr'r'r)Ú _power_exactösÒ:                  / /' '    &    zDecimal._power_exactcCs—|dk r|j|||ƒSt|ƒ}|tkr;|S|dkrPtƒ}|j||ƒ}|rl|S|sŒ|sˆ|jtdƒStSd}|jdkrä|j ƒrÂ|j ƒsØd}n|rØ|jtdƒS|j ƒ}|s|jdkr t |ddƒSt |S|jƒrD|jdkr4t |St |ddƒS|tkr|j ƒrØ|jdkrtd}n'||jkr�|j}n t|ƒ}|j|}|d|jkrÿd|j}|jtƒn'|jtƒ|jtƒd|j}t |dd| |ƒS|jƒ}|jƒrc|jdk|dkkr[t |ddƒSt |Sd}d} |jƒ|jƒ} |dk|jdkkr×| tt|jƒƒkrt |d|jdƒ}n;|jƒ} | tt| ƒƒkrt |d| dƒ}|dkrm|j||jdƒ}|dk rm|dkrgt d|j|jƒ}d} |dkrN|j} t|ƒ} | j| j}}t|ƒ}|j|j}}|jdkrÖ| }d }xWt||||| |ƒ\}}|d d tt|ƒƒ| dr(P|d 7}qßWt |t|ƒ|ƒ}| r„|j ƒ r„t|jƒ|jkrº|jdt|jƒ}t |j|jd||j|ƒ}|j ƒ}|j!ƒxt"D]}d|j#|rPrŠr…rrbr rÆrOr@r5r6r¶r�r?r½rdr7ÚEminr r r )r.rUr>r/r:r�r'r'r)rôÛ sT      (           zDecimal.quantizecCsbt|ddƒ}|js$|jrR|jƒr<|jƒpQ|jƒoQ|jƒS|j|jkS)Nr›T)rœrPr Ú is_infiniterO)r.r‡r/r'r'r)Ú same_quantum s zDecimal.same_quantumcCs|jrt|ƒS|s,t|jd|ƒS|j|kr`t|j|jd|j||ƒSt|jƒ|j|}|dkr¥t|jd|dƒ}d}|j|}|||ƒ}|jd|…p×d}|dkrütt |ƒdƒ}t|j||ƒS)NrQr%rÄr-) rPrr5r6rOr7rdrær_rS)r.rUr>rvZ this_functionrèrÈr'r'r)r½' s"      zDecimal._rescalecCsŽ|dkrtdƒ‚|js(| r2t|ƒS|j|jƒd||ƒ}|jƒ|jƒkrŠ|j|jƒd||ƒ}|S)Nr%z'argument should be at least 1 in _roundr-)rjrPrr½r�)r.Úplacesr>r:r'r'r)Ú_roundI s     zDecimal._roundcCsÇ|jr/|jd|ƒ}|r%|St|ƒS|jdkrHt|ƒS|sat|jddƒS|dkrvtƒ}|dkr‹|j}|jd|ƒ}||kr¶|j t ƒ|j t ƒ|S)Nr/r%rQ) rPrŠrrOr5r6rr>r½rbr r )r.r>r/r:r'r'r)Úto_integral_exact` s$          zDecimal.to_integral_exactcCs†|dkrtƒ}|dkr*|j}|jrY|jd|ƒ}|rO|St|ƒS|jdkrrt|ƒS|jd|ƒSdS)Nr/r%)rr>rPrŠrrOr½)r.r>r/r:r'r'r)rü} s       zDecimal.to_integral_valuecCsv|dkrtƒ}|jr_|jd|ƒ}|r:|S|jƒr_|jdkr_t|ƒS|sŽt|jd|jdƒ}|j|ƒS|jdkr­|j t dƒS|j d}t |ƒ}|j d?}|j d@r|jd}t|jƒd?d}n |j}t|jƒdd?}||}|dkrT|d|9}d } n!t|d| ƒ\}} | } ||8}d|} x,|| } | | kr¦PqŒ| | d?} qŒW| oË| | |k} | r |dkrñ| d|} n| d| 9} ||7}n| d dkr'| d7} tdt| ƒ|ƒ}|jƒ}|jtƒ} |j|ƒ}| |_|S) Nr/r%rQr+r-zsqrt(-x), x > 0ržrTrw)rrPrŠr…r6rr5rOr¶rbr r?rgrUrSrdr7rÇr_Ú _shallow_copyÚ _set_roundingrr>)r.r/r:r?Úopr¬ÚcÚlrÉrrÊr4rÎr>r'r'r)Úsqrt� s`                       z Decimal.sqrtcCs t|ddƒ}|dkr'tƒ}|js9|jr·|jƒ}|jƒ}|s]|r·|dkr‚|dkr‚|j|ƒS|dkr§|dkr§|j|ƒS|j||ƒS|j|ƒ}|dkrá|j|ƒ}|dkrö|}n|}|j|ƒS)Nr›Tr-r%r„)rœrrPrƒr¶rŠr’Ú compare_total)r.r‡r/ÚsnÚonr-r:r'r'r)r¼ó s&          z Decimal.maxcCs t|ddƒ}|dkr'tƒ}|js9|jr·|jƒ}|jƒ}|s]|r·|dkr‚|dkr‚|j|ƒS|dkr§|dkr§|j|ƒS|j||ƒS|j|ƒ}|dkrá|j|ƒ}|dkrö|}n|}|j|ƒS)Nr›Tr-r%r„)rœrrPrƒr¶rŠr’r0)r.r‡r/r1r2r-r:r'r'r)r» s&          z Decimal.mincCsJ|jr dS|jdkr dS|j|jd…}|dt|ƒkS)NFr%TrQ)rPrOr7rd)r.Úrestr'r'r)rú? s  zDecimal._isintegercCs2| s|jdkrdS|jd|jdkS)Nr%Tr-rïr„)rOr7)r.r'r'r)rûH szDecimal._isevenc Cs9y|jt|jƒdSWntk r4dSYnXdS)Nr-r%)rOrdr7rp)r.r'r'r)r�N s zDecimal.adjustedcCs|S)Nr')r.r'r'r)Ú canonicalV szDecimal.canonicalcCsAt|ddƒ}|j||ƒ}|r.|S|j|d|ƒS)Nr›Tr/)rœr�r�)r.r‡r/r:r'r'r)Úcompare_signal^ s zDecimal.compare_signalcCsÎt|ddƒ}|jr)|j r)tS|j r@|jr@tS|j}|jƒ}|jƒ}|sm|rj||krát|jƒ|jf}t|jƒ|jf}||krÃ|r¿tStS||krÝ|rÙtStStS|r*|dkr÷tS|dkrtS|dkrtS|dkrjtSn@|dkr:tS|dkrJtS|dkrZtS|dkrjtS||krztS||krŠtS|j|jkrª|r¦tStS|j|jkrÊ|rÆtStStS)Nr›Tr-r+) rœr6Ú _NegativeOnerrƒrdr7Ú_ZerorO)r.r‡r/r<Zself_nanZ other_nanZself_keyZ other_keyr'r'r)r0j sf                 zDecimal.compare_totalcCs7t|ddƒ}|jƒ}|jƒ}|j|ƒS)Nr›T)rœr´r0)r.r‡r/rÛÚor'r'r)Úcompare_total_mag³ s  zDecimal.compare_total_magcCstd|j|j|jƒS)Nr%)r5r7rOrP)r.r'r'r)r´¾ szDecimal.copy_abscCsE|jr%td|j|j|jƒStd|j|j|jƒSdS)Nr%r-)r6r5r7rOrP)r.r'r'r)rµÂ s zDecimal.copy_negatecCs1t|ddƒ}t|j|j|j|jƒS)Nr›T)rœr5r6r7rOrP)r.r‡r/r'r'r)Ú copy_signÉ szDecimal.copy_signc Cs‡|dkrtƒ}|jd|ƒ}|r1|S|jƒd krGtS|sQtS|jƒdkrmt|ƒS|j}|jƒ}|jdkrÐ|t t |j ddƒƒkrÐt dd|j dƒ}n€|jdkr%|t t |j ƒ ddƒƒkr%t dd|j ƒdƒ}n+|jdkrg|| krgt ddd|dd| ƒ}né|jdkr©|| dkr©t dd|d| dƒ}n§t|ƒ}|j|j}}|jdkrÞ| }d}xQt||||ƒ\} } | dd t t | ƒƒ|dr*P|d7}qçWt dt | ƒ| ƒ}|jƒ}|jtƒ} |j|ƒ}| |_|S) Nr/r-r%rZrÄrQr=rwržr„)rrŠr…r7rrr?r�r6rdr_r@r5rÆrgrSrUr<Ú_dexpr*r+rr¶r>) r.r/r:r Úadjr,r-r¬rrÈrUr>r'r'r)rUÏ sJ     26& " &  z Decimal.expcCsdS)NTr')r.r'r'r)Ú is_canonical szDecimal.is_canonicalcCs|j S)N)rP)r.r'r'r)Ú is_finite" szDecimal.is_finitecCs |jdkS)NrY)rO)r.r'r'r)r%* szDecimal.is_infinitecCs |jdkS)Nr4rX)r4rX)rO)r.r'r'r)r . szDecimal.is_nancCs<|js| rdS|dkr)tƒ}|j|jƒkS)NF)rPrr$r�)r.r/r'r'r)Ú is_normal2 s   zDecimal.is_normalcCs |jdkS)Nr4)rO)r.r'r'r)rŒ: szDecimal.is_qnancCs |jdkS)Nr-)r6)r.r'r'r)Ú is_signed> szDecimal.is_signedcCs |jdkS)NrX)rO)r.r'r'r)r‹B szDecimal.is_snancCs<|js| rdS|dkr)tƒ}|jƒ|jkS)NF)rPrr�r$)r.r/r'r'r)Ú is_subnormalF s   zDecimal.is_subnormalcCs|j o|jdkS)NrQ)rPr7)r.r'r'r)Úis_zeroN szDecimal.is_zerocCsù|jt|jƒd}|dkrBtt|ddƒƒdS|dkrnttd|ddƒƒdSt|ƒ}|j|j}}|dkrØt|d| ƒ}t|ƒ}t|ƒt|ƒ||kS|ttd| |ƒƒdS)Nr-éržr+r%rŸr„)rOrdr7r_rgrSrU)r.r<r,r-r¬ÚnumÚdenr'r'r)Ú _ln_exp_boundR s      zDecimal._ln_exp_boundc Csn|dkrtƒ}|jd|ƒ}|r1|S|s;tS|jƒdkrQtS|tkratS|jdkr€|jt dƒSt |ƒ}|j |j }}|j }||jƒd}xMt|||ƒ}|ddttt|ƒƒƒ|drþP|d7}q¿Wtt |dkƒtt|ƒƒ| ƒ}|jƒ}|jtƒ} |j|ƒ}| |_|S) Nr/r-zln of a negative valuer+rwržrZr%)rrŠÚ_NegativeInfinityr…Ú _Infinityrr7r6rbr rgrSrUr?rFÚ_dlogrdr_rfr5r*r+rr¶r>) r.r/r:r,r-r¬r r'rÈr>r'r'r)Úlnk s:      ,+  z Decimal.lncCs|jt|jƒd}|dkr:tt|ƒƒdS|dkr^ttd|ƒƒdSt|ƒ}|j|j}}|dkrÐt|d| ƒ}td|ƒ}t|ƒt|ƒ||kdStd| |ƒ}t|ƒ||dkdS) Nr-r+r%ržéçZ231rŸr„)rOrdr7r_rgrSrU)r.r<r,r-r¬rDrEr'r'r)r� s     "zDecimal._log10_exp_boundc Cs¾|dkrtƒ}|jd|ƒ}|r1|S|s;tS|jƒdkrQtS|jdkrp|jtdƒS|jddkrÐ|jdd…dt |jƒdkrÐt |j t |jƒdƒ}n·t |ƒ}|j |j}}|j}||jƒd}xMt|||ƒ}|dd t tt|ƒƒƒ|drNP|d 7}qWtt |dkƒtt|ƒƒ| ƒ}|jƒ}|jtƒ} |j|ƒ}| |_|S) Nr/r-zlog10 of a negative valuer%rÄrQr+rwržrZ)rrŠrGr…rHr6rbr r7rdrrOrgrSrUr?rÚ_dlog10r_rfr5r*r+rr¶r>) r.r/r:r,r-r¬r r'rÈr>r'r'r)Úlog10» s:   =#  ,+  z Decimal.log10cCsy|jd|ƒ}|r|S|dkr1tƒ}|jƒrAtS|sZ|jtddƒSt|jƒƒ}|j|ƒS)Nr/zlogb(0)r-) rŠrr…rHrbr rr�r¶)r.r/r:r'r'r)Úlogbî s    z Decimal.logbcCsJ|jdks|jdkr"dSx!|jD]}|dkr,dSq,WdS)Nr%FZ01T)r6rOr7)r.Údigr'r'r)Ú _islogical s  zDecimal._islogicalcCsª|jt|ƒ}|dkr0d||}n |dkrP||j d…}|jt|ƒ}|dkr€d||}n |dkr ||j d…}||fS)Nr%rQ)r?rd)r.r/ÚopaÚopbZdifr'r'r)Ú _fill_logical s    zDecimal._fill_logicalcCs³|dkrtƒ}t|ddƒ}|jƒ sA|jƒ rN|jtƒS|j||j|jƒ\}}djdd„t||ƒDƒƒ}t d|j dƒp¬ddƒS)Nr›TrTcSs2g|](\}}tt|ƒt|ƒ@ƒ‘qSr')r_rS)Ú.0rÚbr'r'r)ú 5 s z'Decimal.logical_and..r%rQ) rrœrPrbr rSr7rlÚzipr5re)r.r‡r/rQrRr‚r'r'r)Ú logical_and' s   !%zDecimal.logical_andcCs8|dkrtƒ}|jtdd|jdƒ|ƒS)Nr%rÄ)rÚ logical_xorr5r?)r.r/r'r'r)Úlogical_invert8 s  zDecimal.logical_invertcCs³|dkrtƒ}t|ddƒ}|jƒ sA|jƒ rN|jtƒS|j||j|jƒ\}}djdd„t||ƒDƒƒ}t d|j dƒp¬ddƒS)Nr›TrTcSs2g|](\}}tt|ƒt|ƒBƒ‘qSr')r_rS)rTrrUr'r'r)rVM s z&Decimal.logical_or..r%rQ) rrœrPrbr rSr7rlrWr5re)r.r‡r/rQrRr‚r'r'r)Ú logical_or? s   !%zDecimal.logical_orcCs³|dkrtƒ}t|ddƒ}|jƒ sA|jƒ rN|jtƒS|j||j|jƒ\}}djdd„t||ƒDƒƒ}t d|j dƒp¬ddƒS)Nr›TrTcSs2g|](\}}tt|ƒt|ƒAƒ‘qSr')r_rS)rTrrUr'r'r)rV^ s z'Decimal.logical_xor..r%rQ) rrœrPrbr rSr7rlrWr5re)r.r‡r/rQrRr‚r'r'r)rYP s   !%zDecimal.logical_xorcCst|ddƒ}|dkr'tƒ}|js9|jr·|jƒ}|jƒ}|s]|r·|dkr‚|dkr‚|j|ƒS|dkr§|dkr§|j|ƒS|j||ƒS|jƒj|jƒƒ}|dkrí|j|ƒ}|dkr|}n|}|j|ƒS)Nr›Tr-r%r„) rœrrPrƒr¶rŠr´r’r0)r.r‡r/r1r2r-r:r'r'r)Úmax_maga s&          zDecimal.max_magcCst|ddƒ}|dkr'tƒ}|js9|jr·|jƒ}|jƒ}|s]|r·|dkr‚|dkr‚|j|ƒS|dkr§|dkr§|j|ƒS|j||ƒS|jƒj|jƒƒ}|dkrí|j|ƒ}|dkr|}n|}|j|ƒS)Nr›Tr-r%r„) rœrrPrƒr¶rŠr´r’r0)r.r‡r/r1r2r-r:r'r'r)Úmin_mag s&          zDecimal.min_magcCsÞ|dkrtƒ}|jd|ƒ}|r1|S|jƒdkrGtS|jƒdkrvtdd|j|jƒƒS|jƒ}|jt ƒ|j ƒ|j |ƒ}||kr¸|S|j tdd|j ƒdƒ|ƒS)Nr/r-r%r=rÄr„)rrŠr…rGr5r?rårGr+rÚ_ignore_all_flagsr¶rÂrÆ)r.r/r:Únew_selfr'r'r)Ú next_minus� s"      zDecimal.next_minuscCsÞ|dkrtƒ}|jd|ƒ}|r1|S|jƒdkrGtS|jƒdkrvtdd|j|jƒƒS|jƒ}|jt ƒ|j ƒ|j |ƒ}||kr¸|S|j tdd|j ƒdƒ|ƒS)Nr/r-r=r%rÄr„)rrŠr…rHr5r?rårGr+rr^r¶rÁrÆ)r.r/r:r_r'r'r)Ú next_plus´ s"      zDecimal.next_pluscCs7t|ddƒ}|dkr'tƒ}|j||ƒ}|rC|S|j|ƒ}|dkrk|j|ƒS|dkr‰|j|ƒ}n|j|ƒ}|jƒr×|jt d|j ƒ|jt ƒ|jt ƒn\|j ƒ|jkr3|jtƒ|jtƒ|jt ƒ|jt ƒ|s3|jtƒ|S)Nr›Tr%r-z Infinite result from next_towardr„)rœrrŠr’r:rar`r…rbrr6r r r�r$rr r)r.r‡r/r:Z comparisonr'r'r)Ú next_towardË s4               zDecimal.next_towardcCs¶|jƒrdS|jƒr dS|jƒ}|dkr<dS|d krLdS|jƒri|jredSdS|dkr~tƒ}|jd|ƒr¡|jr�d Sd S|jr®d Sd SdS)Nr†r©r-z +Infinityz -Infinityz-Zeroz+Zeror/z -Subnormalz +Subnormalz-Normalz+Normalr„)r‹rŒr…rBr6rrA)r.r/Úinfr'r'r)Ú number_classù s,           zDecimal.number_classcCs tdƒS)Nrž)r)r.r'r'r)Úradix#sz Decimal.radixcCsP|dkrtƒ}t|ddƒ}|j||ƒ}|rC|S|jdkr_|jtƒS|j t|ƒkoƒ|jkns•|jtƒS|jƒr«t |ƒSt|ƒ}|j }|jt |ƒ}|dkrðd||}n|dkr || d…}||d…|d|…}t |j |jdƒpFd|jƒS)Nr›Tr%rQ)rrœrŠrOrbr r?rSr…rr7rdr5r6re)r.r‡r/r:ÚtorotÚrotdigÚtopadZrotatedr'r'r)Úrotate's,   )        zDecimal.rotatecCs|dkrtƒ}t|ddƒ}|j||ƒ}|rC|S|jdkr_|jtƒSd|j|j}d|j|j}|t|ƒko¤|kns¶|jtƒS|j ƒrÌt |ƒSt |j |j |jt|ƒƒ}|j|ƒ}|S)Nr›Tr%r+rŸ)rrœrŠrOrbr r@r?rSr…rr5r6r7r¶)r.r‡r/r:ZliminfZlimsupr€r'r'r)ÚscalebHs"   "   %zDecimal.scalebcCss|dkrtƒ}t|ddƒ}|j||ƒ}|rC|S|jdkr_|jtƒS|j t|ƒkoƒ|jkns•|jtƒS|jƒr«t |ƒSt|ƒ}|j }|jt |ƒ}|dkrðd||}n|dkr || d…}|dkr,|d|…}n"|d|}||j d…}t |j |jdƒpid|jƒS)Nr›Tr%rQ)rrœrŠrOrbr r?rSr…rr7rdr5r6re)r.r‡r/r:rfrgrhZshiftedr'r'r)rÉas2   )         z Decimal.shiftcCs|jt|ƒffS)N)Ú __class__r_)r.r'r'r)Ú __reduce__ˆszDecimal.__reduce__cCs)t|ƒtkr|S|jt|ƒƒS)N)Útyperrkr_)r.r'r'r)Ú__copy__‹szDecimal.__copy__cCs)t|ƒtkr|S|jt|ƒƒS)N)rmrrkr_)r.Úmemor'r'r)Ú __deepcopy__�szDecimal.__deepcopy__cCs|dkrtƒ}t|d|ƒ}|jr~t|j|ƒ}t|jƒƒ}|ddkrn|d7}t|||ƒS|ddkr¥ddg|j|d<|ddkrÔt |j|j |j dƒ}|j }|d}|dk ry|ddkr|j |d |ƒ}n]|dd krB|j| |ƒ}n7|dd kryt|j ƒ|kry|j ||ƒ}| r±|j d kr±|dd kr±|jd |ƒ}|j t|j ƒ} |ddkr| r÷|dk r÷d |} qSd } nS|dd kr| } n:|dd krS|j d krM| dkrM| } nd } | d krzd} d| |j } nh| t|j ƒkr¶|j d| t|j ƒ} d} n,|j d| …pÌd} |j | d…} | | } t|j| | | |ƒS)NÚ _localeconvrmú%ÚgÚGr+Ú precisionÚeEr-zfF%ZgGr%rªrQrTiúÿÿÿ)rÚ_parse_format_specifierrPÚ _format_signr6r_r´Ú _format_alignr®r5r7rOr>r(r½rdÚ_format_number)r.Z specifierr/rqÚspecr<Úbodyr>rur°r±rtrurUr'r'r)Ú __format__—sZ       %&       zDecimal.__format__)rOr7r6rP)€r1r2r3Ú __slots__r]Ú classmethodrorƒr…rŠr�rŽr’r–r—r˜r™ršr�r¦r§r¨r²r³r·r¸rºrÁÚ__radd__rÂrÃrÅÚ__rmul__rÌrÐrÑrÒrÓrÔrÕr×rØrÙrÜrÞÚ __trunc__rßÚpropertyràrárãr8r¶rêrërìrîrðrñròróÚdictrærõrör÷rùrrrr r#rôr&r½r(r)rüÚ to_integralr/r¼r»rúrûr�r4r5r0r9r´rµr:rUr=r>r%r r?rŒr@r‹rArBrFrJrrMrNrPrSrXrZr[rYr\r]r`rarbrdrerirjrÉrlrnrpr}r'r'r'r)r+s –(   !  @       4 V7; !$K        f        >  ,U íØ= " c*"    I  K         2 3  .* !'   FcCs7tjtƒ}||_||_||_||_|S)N)r\r]rr6r7rOrP)r<Z coefficientrZspecialr.r'r'r)r5és     r5c@s4eZdZdd„Zdd„Zdd„ZdS)rMcCs|jƒ|_dS)N)rGÚ new_context)r.r†r'r'r)Ú__init__sz_ContextManager.__init__cCs tƒ|_t|jƒ|jS)N)rÚ saved_contextrr†)r.r'r'r)Ú __enter__ s  z_ContextManager.__enter__cCst|jƒdS)N)rrˆ)r.ÚtÚvÚtbr'r'r)Ú__exit__ sz_ContextManager.__exit__N)r1r2r3r‡r‰r�r'r'r'r)rMs   rMc @seZdZddddddddddd„ Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z e Zddd„Zdd„Zdd„Zdd„ZdZd d!„Zd"d#„Zd$d%„Zd&d'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Z d;d<„Z!d=d>„Z"d?d@„Z#dAdB„Z$dCdD„Z%dEdF„Z&dGdH„Z'dIdJ„Z(dKdL„Z)dMdN„Z*dOdP„Z+dQdR„Z,dSdT„Z-dUdV„Z.dWdX„Z/dYdZ„Z0d[d\„Z1d]d^„Z2d_d`„Z3dadb„Z4dcdd„Z5dedf„Z6dgdh„Z7didj„Z8dkdl„Z9dmdn„Z:dodp„Z;dqdr„Z<dsdt„Z=dudv„Z>dwdx„Z?dydz„Z@d{d|„ZAd}d~„ZBdd€„ZCd�d‚„ZDdƒd„„ZEd…d†„ZFdd‡dˆ„ZGd‰dŠ„ZHd‹dŒ„ZId�dŽ„ZJd�d�„ZKd‘d’„ZLd“d”„ZMd•d–„ZNd—d˜„ZOd™dš„ZPd›dœ„ZQd�dž„ZRdŸd „ZSd¡d¢„ZTd£d¤„ZUeUZVdS)¥rNc s¿y t} Wntk rYnX|dk r1|n| j|_|dk rO|n| j|_|dk rm|n| j|_|dk r‹|n| j|_|dk r©|n| j|_|dk rÇ|n| j|_| dkrëg|_n | |_ˆdkr| j j ƒ|_ nAt ˆt ƒsMt ‡fdd†t ˆDƒƒ|_ n ˆ|_ ˆdkrzt jt dƒ|_nAt ˆt ƒs²t ‡fdd†t ˆDƒƒ|_n ˆ|_dS)Nc3s'|]}|t|ˆkƒfVqdS)N)rS)rTrÛ)rr'r)ú <sz#Context.__init__..r%c3s'|]}|t|ˆkƒfVqdS)N)rS)rTrÛ)rr'r)rŽCs)rÚ NameErrorr?r>r$r@r®räÚ_ignored_flagsrrGr^r„rÚfromkeysr) r.r?r>r$r@r®rärrr�Zdcr')rrr)r‡#s.      )  )zContext.__init__cCsÔt|tƒstd|ƒ‚|dkrV||krÁtd||||fƒ‚nk|dkr�||krÁtd||||fƒ‚n4||ks¥||krÁtd||||fƒ‚tj|||ƒS)Nz%s must be an integerz-infz%s must be in [%s, %d]. got: %srcz%s must be in [%d, %s]. got: %sz%s must be in [%d, %d]. got %s)r^rSrprjr\Ú __setattr__)r.ÚnamerrZvminZvmaxr'r'r)Ú_set_integer_checkGs    zContext._set_integer_checkcCsŒt|tƒstd|ƒ‚x*|D]"}|tkr&td|ƒ‚q&Wx*tD]"}||krStd|ƒ‚qSWtj|||ƒS)Nz%s must be a signal dictz%s is not a valid signal dict)r^r„rprÚKeyErrorr\r’)r.r“r€Úkeyr'r'r)Ú_set_signal_dictUs    zContext._set_signal_dictcCs@|dkr"|j||ddƒS|dkrD|j||ddƒS|dkrf|j||ddƒS|dkrˆ|j||ddƒS|d krª|j||ddƒS|d krå|tkrÒtd |ƒ‚tj|||ƒS|d ksý|d kr |j||ƒS|dkr,tj|||ƒStd|ƒ‚dS)Nr?r-rcr$z-infr%r@r®rär>z%s: invalid rounding moderrr�z.'decimal.Context' object has no attribute '%s')r”Ú_rounding_modesrpr\r’r—rK)r.r“rrr'r'r)r’`s(        zContext.__setattr__cCstd|ƒ‚dS)Nz%s cannot be deleted)rK)r.r“r'r'r)Ú __delattr__yszContext.__delattr__c Csodd„|jjƒDƒ}dd„|jjƒDƒ}|j|j|j|j|j|j|j ||ffS)NcSs"g|]\}}|r|‘qSr'r')rTÚsigr‹r'r'r)rV~s z&Context.__reduce__..cSs"g|]\}}|r|‘qSr'r')rTršr‹r'r'r)rVs ) rÚitemsrrkr?r>r$r@r®rä)r.rrr'r'r)rl}s zContext.__reduce__cCs¢g}|jdt|ƒƒdd„|jjƒDƒ}|jddj|ƒdƒdd„|jjƒDƒ}|jddj|ƒdƒdj|ƒd S) NzrContext(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d, clamp=%(clamp)dcSs%g|]\}}|r|j‘qSr')r1)rTrr‹r'r'r)rV‹s z$Context.__repr__..zflags=[z, ú]cSs%g|]\}}|r|j‘qSr')r1)rTrŠr‹r'r'r)rV�s ztraps=[ú))rkÚvarsrr›rlr)r.rÛÚnamesr'r'r)r¨„s zContext.__repr__cCs%x|jD]}d|j|r$r@r®rärrr�)r.Úncr'r'r)r*›s zContext._shallow_copyc CsOt|j|j|j|j|j|j|jjƒ|j jƒ|j ƒ }|S)N) rr?r>r$r@r®rärrGrr�)r.r¢r'r'r)rG¢s   z Context.copycGsqtj||ƒ}||jkr4|ƒj||ŒSd|j|<|j|sa|ƒj||ŒS||ƒ‚dS)Nr-)Ú_condition_mapÚgetr�r0rr)r.Z conditionZ explanationr(Úerrorr'r'r)rb«s  zContext._raise_errorcCs |jtŒS)N)Ú _ignore_flagsr)r.r'r'r)r^ÁszContext._ignore_all_flagscGs |jt|ƒ|_t|ƒS)N)r�rh)r.rr'r'r)r¦ÅszContext._ignore_flagscGsN|r)t|dttfƒr)|d}x|D]}|jj|ƒq0WdS)Nr%)r^rirhr�Úremove)r.rr r'r'r)Ú _regard_flagsÌs  zContext._regard_flagscCst|j|jdƒS)Nr-)rSr$r?)r.r'r'r)rÆÖsz Context.EtinycCst|j|jdƒS)Nr-)rSr@r?)r.r'r'r)råÚsz Context.EtopcCs|j}||_|S)N)r>)r.rmr>r'r'r)r+Þs  zContext._set_roundingrQcCs‹t|tƒr1||jƒkr1|jtdƒSt|d|ƒ}|jƒr~t|jƒ|j |j kr~|jtdƒS|j |ƒS)Nz/no trailing or leading whitespace is permitted.r/zdiagnostic info too long in NaN) r^r_rarbrrrƒrdr7r?rär¶)r.rDr€r'r'r)Úcreate_decimalñs! + zContext.create_decimalcCstj|ƒ}|j|ƒS)N)rror¶)r.rr€r'r'r)Úcreate_decimal_from_floatsz!Context.create_decimal_from_floatcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrº)r.rr'r'r)rfsz Context.abscCsNt|ddƒ}|j|d|ƒ}|tkrFtd|ƒ‚n|SdS)Nr›Tr/zUnable to convert %s to Decimal)rœrÁr•rp)r.rrUrÏr'r'r)Úadd)s  z Context.addcCst|j|ƒƒS)N)r_r¶)r.rr'r'r)Ú_apply>szContext._applycCs%t|tƒstdƒ‚|jƒS)Nz,canonical requires a Decimal as an argument.)r^rrpr4)r.rr'r'r)r4As  zContext.canonicalcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœr�)r.rrUr'r'r)r�Ns!zContext.comparecCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœr5)r.rrUr'r'r)r5rs zContext.compare_signalcCst|ddƒ}|j|ƒS)Nr›T)rœr0)r.rrUr'r'r)r0•szContext.compare_totalcCst|ddƒ}|j|ƒS)Nr›T)rœr9)r.rrUr'r'r)r9²szContext.compare_total_magcCst|ddƒ}|jƒS)Nr›T)rœr´)r.rr'r'r)r´ºs zContext.copy_abscCst|ddƒ}t|ƒS)Nr›T)rœr)r.rr'r'r)Ú copy_decimalÇs zContext.copy_decimalcCst|ddƒ}|jƒS)Nr›T)rœrµ)r.rr'r'r)rµÔs zContext.copy_negatecCst|ddƒ}|j|ƒS)Nr›T)rœr:)r.rrUr'r'r)r:ászContext.copy_signcCsNt|ddƒ}|j|d|ƒ}|tkrFtd|ƒ‚n|SdS)Nr›Tr/zUnable to convert %s to Decimal)rœrÌr•rp)r.rrUrÏr'r'r)Údivideùs  zContext.dividecCsNt|ddƒ}|j|d|ƒ}|tkrFtd|ƒ‚n|SdS)Nr›Tr/zUnable to convert %s to Decimal)rœrØr•rp)r.rrUrÏr'r'r)Ú divide_ints  zContext.divide_intcCsNt|ddƒ}|j|d|ƒ}|tkrFtd|ƒ‚n|SdS)Nr›Tr/zUnable to convert %s to Decimal)rœrÒr•rp)r.rrUrÏr'r'r)rÇ5s  zContext.divmodcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrU)r.rr'r'r)rUJsz Context.expcCs(t|ddƒ}|j||d|ƒS)Nr›Tr/)rœrù)r.rrUr-r'r'r)rùbsz Context.fmacCs%t|tƒstdƒ‚|jƒS)Nz/is_canonical requires a Decimal as an argument.)r^rrpr=)r.rr'r'r)r=ys  zContext.is_canonicalcCst|ddƒ}|jƒS)Nr›T)rœr>)r.rr'r'r)r>†szContext.is_finitecCst|ddƒ}|jƒS)Nr›T)rœr%)r.rr'r'r)r%œs zContext.is_infinitecCst|ddƒ}|jƒS)Nr›T)rœr )r.rr'r'r)r «s zContext.is_nancCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr?)r.rr'r'r)r?»szContext.is_normalcCst|ddƒ}|jƒS)Nr›T)rœrŒ)r.rr'r'r)rŒÒs zContext.is_qnancCst|ddƒ}|jƒS)Nr›T)rœr@)r.rr'r'r)r@ászContext.is_signedcCst|ddƒ}|jƒS)Nr›T)rœr‹)r.rr'r'r)r‹òs zContext.is_snancCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrA)r.rr'r'r)rAszContext.is_subnormalcCst|ddƒ}|jƒS)Nr›T)rœrB)r.rr'r'r)rBszContext.is_zerocCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrJ)r.rr'r'r)rJ)sz Context.lncCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrM)r.rr'r'r)rM?sz Context.log10cCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrN)r.rr'r'r)rN[sz Context.logbcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœrX)r.rrUr'r'r)rXuszContext.logical_andcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrZ)r.rr'r'r)rZ�szContext.logical_invertcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœr[)r.rrUr'r'r)r[£szContext.logical_orcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœrY)r.rrUr'r'r)rY¾szContext.logical_xorcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœr¼)r.rrUr'r'r)r¼Ùsz Context.maxcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœr\)r.rrUr'r'r)r\ôszContext.max_magcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœr»)r.rrUr'r'r)r»sz Context.mincCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœr])r.rrUr'r'r)r] szContext.min_magcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr·)r.rr'r'r)Úminus1sz Context.minuscCsNt|ddƒ}|j|d|ƒ}|tkrFtd|ƒ‚n|SdS)Nr›Tr/zUnable to convert %s to Decimal)rœrÅr•rp)r.rrUrÏr'r'r)ÚmultiplyBs  zContext.multiplycCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr`)r.rr'r'r)r`bszContext.next_minuscCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœra)r.rr'r'r)ravszContext.next_pluscCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœrb)r.rrUr'r'r)rbŠs zContext.next_towardcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr#)r.rr'r'r)r#­szContext.normalizecCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrd)r.rr'r'r)rdÅs/zContext.number_classcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr¸)r.rr'r'r)Úplus÷sz Context.pluscCsQt|ddƒ}|j||d|ƒ}|tkrItd|ƒ‚n|SdS)Nr›Tr/zUnable to convert %s to Decimal)rœrr•rp)r.rrUrþrÏr'r'r)Úpowers I z Context.powercCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœrô)r.rrUr'r'r)rôXs7zContext.quantizecCs tdƒS)Nrž)r)r.r'r'r)re’sz Context.radixcCsNt|ddƒ}|j|d|ƒ}|tkrFtd|ƒ‚n|SdS)Nr›Tr/zUnable to convert %s to Decimal)rœrÔr•rp)r.rrUrÏr'r'r)rÊšs  zContext.remaindercCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœr×)r.rrUr'r'r)r×ÀszContext.remainder_nearcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœri)r.rrUr'r'r)riâszContext.rotatecCst|ddƒ}|j|ƒS)Nr›T)rœr&)r.rrUr'r'r)r&ÿszContext.same_quantumcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœrj)r.rrUr'r'r)rjszContext.scalebcCs%t|ddƒ}|j|d|ƒS)Nr›Tr/)rœrÉ)r.rrUr'r'r)rÉ*sz Context.shiftcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr/)r.rr'r'r)r/Hsz Context.sqrtcCsNt|ddƒ}|j|d|ƒ}|tkrFtd|ƒ‚n|SdS)Nr›Tr/zUnable to convert %s to Decimal)rœrÂr•rp)r.rrUrÏr'r'r)Úsubtracths  zContext.subtractcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr³)r.rr'r'r)r³szContext.to_eng_stringcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr²)r.rr'r'r)Ú to_sci_string›szContext.to_sci_stringcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœr))r.rr'r'r)r)£szContext.to_integral_exactcCs"t|ddƒ}|jd|ƒS)Nr›Tr/)rœrü)r.rr'r'r)rüÁszContext.to_integral_value)Wr1r2r3r‡r”r—r’r™rlr¨rHr¡r*rGrnrbr^r¦r¨r¦rÆrår+r©rªrfr«r¬r4r�r5r0r9r´r­rµr:r®r¯rÇrUrùr=r>r%r r?rŒr@r‹rArBrJrMrNrXrZr[rYr¼r\r»r]r°r±r`rarbr#rdr²r³rôrerÊr×rir&rjrÉr/r´r³rµr)rür…r'r'r'r)rs¬   "                   $ #    %                            #  2 P :  & "         c@s7eZdZd Zddd„Zdd„ZeZdS) rgr<rSrUNcCs‘|dkr*d|_d|_d|_nct|tƒrf|j|_t|jƒ|_|j|_n'|d|_|d|_|d|_dS)Nr%r-r+)r<rSrUr^rr6r7rO)r.rrr'r'r)r‡çs       z_WorkRep.__init__cCsd|j|j|jfS)Nz (%r, %r, %r))r<rSrU)r.r'r'r)r¨ösz_WorkRep.__repr__)r<rSrU)r1r2r3r~r‡r¨r²r'r'r'r)rgás  rgcCsÑ|j|jkr!|}|}n |}|}tt|jƒƒ}tt|jƒƒ}|jtd||dƒ}||jd|kržd|_||_|jd|j|j9_|j|_||fS)Nr-r+ržr„)rUrdr_rSr»)r¿rÀr?Útmpr‡Ztmp_lenZ other_lenrUr'r'r)r¾ýs    r¾cCs{|dkrdS|dkr(|d|Stt|ƒƒ}t|ƒt|jdƒƒ}|| krjdS|d| SdS)Nr%ržrQ)r_rfrdÚrstrip)r4r¬Zstr_nZval_nr'r'r)r s   r cCs[|dks|dkr$tdƒ‚d}x*||krV||| |d?}}q-W|S)Nr%z3Both arguments to _sqrt_nearest should be positive.r-)rj)r4rrUr'r'r)Ú _sqrt_nearest2s  r¸cCs7d|>||?}}|d||d@|d@|kS)Nr-r+r')r rÉrUrÎr'r'r)Ú_rshift_nearestAsr¹cCs/t||ƒ\}}|d||d@|kS)Nr+r-)rÇ)rrUrÎrÏr'r'r)Ú _div_nearestIsrºrc Cs7||}d}x�||kr9t|ƒ||>|ks_||kr¡t|ƒ||?|kr¡t||d>|t||t||ƒ|ƒƒ}|d7}qWtdtt|ƒƒd|ƒ }t||ƒ}t||ƒ}x>t|dddƒD]&}t||ƒt|||ƒ}qüWt|||ƒS)Nr%r-ržrZiöÿÿÿr„)rfrºr¸r¹rSrdr_rý) r ÚMÚLrÚRÚTZyshiftÚwr�r'r'r)Ú_ilogQs )&'%$rÀc Csï|d7}tt|ƒƒ}||||dk}|dkrÄd|}|||}|dkru|d|9}nt|d| ƒ}t||ƒ}t|ƒ}t|||ƒ}||} nd}t|d| ƒ} t| |dƒS)Nr+r-r%ržr)rdr_rºrÀÚ _log10_digits) r-r¬r r.rr»r�Úlog_dZlog_10Z log_tenpowerr'r'r)rL�s       rLc Cs|d7}tt|ƒƒ}||||dk}|dkr•|||}|dkrk|d|9}nt|d| ƒ}t|d|ƒ}nd}|rúttt|ƒƒƒd}||dkrñt|t||ƒd|ƒ}qd}nd}t||dƒS)Nr+r-r%ržr)rdr_rºrÀrfrÁ) r-r¬r r.rr�rÂrZ f_log_tenr'r'r)rI£s"   $ rIc@s(eZdZdd„Zdd„ZdS)Ú _Log10MemoizecCs d|_dS)NZ/23025850929940456840179914546843642076011014886)rv)r.r'r'r)r‡Ósz_Log10Memoize.__init__cCsË|dkrtdƒ‚|t|jƒkr°d}x^d||d}tttd||ƒdƒƒ}|| d…d|kr†P|d7}q6W|jdƒdd …|_t|jd|d…ƒS) Nr%zp should be nonnegativerZržr+rrQr-r„)rjrdrvr_rºrÀr·rS)r.r rr»rvr'r'r)Ú getdigitsÖs  "z_Log10Memoize.getdigitsN)r1r2r3r‡rÄr'r'r'r)rÃÏs  rÃc CsÜt||>|ƒ}tdtt|ƒƒd|ƒ }t||ƒ}||>}x9t|dddƒD]!}t|||||ƒ}qiWxCt|ddd ƒD]+}||d>}t||||ƒ}q¥W||S) NržrZr-r%r+iöÿÿÿr„r„r„)r rSrdr_rºrý) r r»r¼r½r¾rZMshiftrr�r'r'r)Ú_iexpôs% rÅc CsÃ|d7}td|tt|ƒƒdƒ}||}||}|dkr^|d|}n|d| }t|t|ƒƒ\}}t|d|ƒ}tt|d|ƒdƒ||dfS)Nr+r%r-ržièrZ)r¼rdr_rÇrÁrºrÅ) r-r¬r rrÎrÉZcshiftZquotrr'r'r)r;s #   r;c Cs*ttt|ƒƒƒ|}t||||dƒ}||}|dkra||d|}nt||d| ƒ}|dkrætt|ƒƒ|dk|dkkrÍd|ddd|} } q d|d| } } n:t||d |dƒ\} } t| dƒ} | d7} | | fS)Nr-r%rž)rdr_rfrIrºr;) rrrrr rUZlxcrÉZpcrÈrUr'r'r)r=s   ( ! rrÄrÚ2éFÚ3é5Ú4é(Ú5éÚ6rCÚ7éÚ8ržr=rwcCs>|dkrtdƒ‚t|ƒ}dt|ƒ||dS)Nr%z0The argument to _log10_lb should be nonnegative.r)rjr_rd)r-Z correctionZstr_cr'r'r)r gs   r cCsht|tƒr|St|tƒr,t|ƒS|rNt|tƒrNtj|ƒS|rdtd|ƒ‚tS)NzUnable to convert %s to Decimal)r^rrSrnrorpr•)r‡r›Z allow_floatr'r'r)rœrs  rœcCst|tƒr||fSt|tjƒru|jsbt|jtt|j ƒ|j ƒ|j ƒ}|t|j ƒfS|r¥t|tj ƒr¥|jdkr¥|j}t|tƒrötƒ}|rÓd|jtrrr@i?Br$r®rär[a· # A numeric string consists of: # \s* (?P[-+])? # an optional sign, followed by either... ( (?=\d|\.\d) # ...a number (with at least one digit) (?P\d*) # having a (possibly empty) integer part (\.(?P\d*))? # followed by an optional fractional part (E(?P[-+]?\d+))? # followed by an optional exponent, or... | Inf(inity)? # ...an infinity, or... | (?Ps)? # ...an (optionally signaling) NaN # NaN (?P\d*) # with (possibly empty) diagnostic info. ) # \s* \Z z0*$z50*$zÉ\A (?: (?P.)? (?P[<>=^]) )? (?P[-+ ])? (?P\#)? (?P0)? (?P(?!0)\d+)? (?P,)? (?:\.(?P0|(?!0)\d+))? (?P[eEfFgGn%])? \Z cCs tj|ƒ}|dkr+td|ƒ‚|jƒ}|d}|d}|ddk |d<|dr¡|dk r…td|ƒ‚|dk r¡td|ƒ‚|pªd|d<|pºd|d<|d dkrÛd |d r<rRÚ minimumwidthrQrur%rmZgGnr-r4rsÚ thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: ÚgroupingÚ decimal_pointrTrZr«)Ú_parse_format_specifier_regexÚmatchrjÚ groupdictrSÚ_localeÚ localeconv)Ú format_specrqrsZ format_dictrÕrÖr'r'r)rwsN                  rwc Csè|d}|d}||t|ƒt|ƒ}|d}|dkrY|||}n‹|dkrv|||}nn|dkr“|||}nQ|dkrØt|ƒd}|d|…||||d…}n td ƒ‚|S) NrÚrÕrÖúusT                    &          .ÿÿÿÿÿÿÿÿÿÿÿÿÊÿÿÿÿÿÿ×     0 " ,# % $ +' *          P  % )