3 \Tƒã$@sFdddddddddd d d d d ddddddddddddddddddd d!d"d#g$ZeZd$Zd%Zd&Zd'd(lZd'd(lZd'd(l Z yd'd)l m Z e dd*ƒZ Wnek rªd+d,„Z YnXdZdZdZdZdZdZdZdZd-Ze jd”krèd1Zd1Zd•Zn d2Zd2Zd–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'Gdd „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/eeeeeeeefZ0y d'd(l1Z1Wn.ek �rdGdAdB„dBe2ƒZ3e3ƒZ1[3YnXy e1j4Wn>e5k �r®e6e1j7ƒdCƒ�rše1j7ƒ`8dDd„Z9dEd„Z:Yn6Xe1j4ƒZ4e6e4dCƒ�rÈe4`8e4fdFd„Z:e4fdGd„Z9[1[4d—dHd„Z;GdId„de2ƒZj?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„ZSdkdldmdndodpdqdrdsdtœ fdudv„ZTdœdwdx„ZUd�dydz„ZVeAd{ee#e*e ggd|džd0d'd}�ZWeAd~ee#e*e ee+ggd�ZXeAd~eggd�ZYd'd(lZZZeZj[d€eZj\eZj]Bƒj^Z_eZj[d�ƒj^Z`eZj[d‚ƒj^ZaeZj[dƒeZj\eZjbBƒZc[Zy d'd(ldZeWnek �rªYnXdŸd„d…„Zfd†d‡„Zgdˆd‰„Zhd dŠd‹„ZidŒd�„ZjdŽd�„Zke¡sr+Téé?élÿÇNÎZoi@üTc@seZdZdd„ZdS)rcGsdS)Nr()ÚselfÚcontextr)r(r(r*ÚhandleÏszDecimalException.handleN)Ú__name__Ú __module__Ú __qualname__r1r(r(r(r*r¼sc@s eZdZdS)rN)r2r3r4r(r(r(r*rÓs c@seZdZdd„ZdS)r cGs,|r(t|dj|djddƒ}|j|ƒStS)Nr&ÚnT)Ú_dec_from_tripleÚ_signÚ_intÚ_fix_nanÚ_NaN)r/r0r)Úansr(r(r*r1ös zInvalidOperation.handleN)r2r3r4r1r(r(r(r*r ßsc@seZdZdd„ZdS)rcGstS)N)r:)r/r0r)r(r(r*r1szConversionSyntax.handleN)r2r3r4r1r(r(r(r*rüsc@seZdZdd„ZdS)r cGst|S)N)Ú_SignedInfinity)r/r0Úsignr)r(r(r*r1szDivisionByZero.handleN)r2r3r4r1r(r(r(r*r s c@seZdZdd„ZdS)rcGstS)N)r:)r/r0r)r(r(r*r1szDivisionImpossible.handleN)r2r3r4r1r(r(r(r*rsc@seZdZdd„ZdS)rcGstS)N)r:)r/r0r)r(r(r*r1)szDivisionUndefined.handleN)r2r3r4r1r(r(r(r*r!sc@s eZdZdS)r N)r2r3r4r(r(r(r*r ,s c@seZdZdd„ZdS)rcGstS)N)r:)r/r0r)r(r(r*r1CszInvalidContext.handleN)r2r3r4r1r(r(r(r*r8s c@s eZdZdS)r N)r2r3r4r(r(r(r*r Fs c@s eZdZdS)r N)r2r3r4r(r(r(r*r Rs c@seZdZdd„ZdS)rcGsŽ|jttttfkrt|S|dkrR|jtkr4t|St|d|j|j |jdƒS|dkrŠ|jt krlt|St|d|j|j |jdƒSdS)Nr&Ú9r.) Úroundingrrrrr<rr6ÚprecÚEmaxr)r/r0r=r)r(r(r*r1ss     zOverflow.handleN)r2r3r4r1r(r(r(r*r]sc@s eZdZdS)rN)r2r3r4r(r(r(r*rƒs c@s eZdZdS)rN)r2r3r4r(r(r(r*r’s c@seZdZefdd„ZdS)Ú MockThreadingcCs |jtS)N)ÚmodulesÚ __xname__)r/Úsysr(r(r*Úlocal¼szMockThreading.localN)r2r3r4rErFr(r(r(r*rB»srBÚ__decimal_context__cCs,|tttfkr|jƒ}|jƒ|tjƒ_dS)N)rrrÚcopyÚ clear_flagsÚ threadingÚcurrent_threadrG)r0r(r(r*rËsc Cs4y tjƒjStk r.tƒ}|tjƒ_|SXdS)N)rJrKrGÚAttributeErrorr)r0r(r(r*rÒs   c Cs,y|jStk r&tƒ}||_|SXdS)N)rGrLr)Ú_localr0r(r(r*ræs cCs(|tttfkr|jƒ}|jƒ||_dS)N)rrrrHrIrG)r0rMr(r(r*rôscCs|dkrtƒ}t|ƒS)N)rÚ_ContextManager)Zctxr(r(r*rýs$c @sÚeZdZdôZdõdd„Zed d „ƒZd d „Zd d„Zdödd„Z dd„Z dd„Z dd„Z d÷dd„Z dødd„Zdùdd„Zdúdd„Zdûdd „Zdüd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zdýd,d-„Zdþd.d/„Zdÿd0d1„Z�dd2d3„Z�dd5d6„Z�dd7d8„ZeZ�dd9d:„Z�dd;d<„Z�dd=d>„Z e Z!�dd?d@„Z"dAdB„Z#�ddCdD„Z$�ddEdF„Z%�d dGdH„Z&�d dIdJ„Z'�d dKdL„Z(�d dMdN„Z)�d dOdP„Z*�ddQdR„Z+dSdT„Z,dUdV„Z-e-Z.dWdX„Z/e0e/ƒZ/dYdZ„Z1e0e1ƒZ1d[d\„Z2d]d^„Z3d_d`„Z4dadb„Z5dcdd„Z6dedf„Z7dgdh„Z8didj„Z9dkdl„Z:dmdn„Z;dodp„Ze6e7e8e9e:e;e          z Decimal._cmpcCs<t||dd�\}}|tkr|S|j||ƒr.dS|j|ƒdkS)NT)Ú equality_opFr&)Ú_convert_for_comparisonÚNotImplementedrŠr’)r/r‡r0r(r(r*Ú__eq__–s  zDecimal.__eq__cCs<t||ƒ\}}|tkr|S|j||ƒ}|r.dS|j|ƒdkS)NFr&)r”r•r�r’)r/r‡r0r;r(r(r*Ú__lt__žs zDecimal.__lt__cCs<t||ƒ\}}|tkr|S|j||ƒ}|r.dS|j|ƒdkS)NFr&)r”r•r�r’)r/r‡r0r;r(r(r*Ú__le__§s zDecimal.__le__cCs<t||ƒ\}}|tkr|S|j||ƒ}|r.dS|j|ƒdkS)NFr&)r”r•r�r’)r/r‡r0r;r(r(r*Ú__gt__°s zDecimal.__gt__cCs<t||ƒ\}}|tkr|S|j||ƒ}|r.dS|j|ƒdkS)NFr&)r”r•r�r’)r/r‡r0r;r(r(r*Ú__ge__¹s zDecimal.__ge__cCs>t|dd�}|js|r0|jr0|j||ƒ}|r0|St|j|ƒƒS)NT)Úraiseit)Ú_convert_otherrPrŠrr’)r/r‡r0r;r(r(r*ÚcompareÂs   zDecimal.comparecCs’|jr4|jƒrtdƒ‚n|jƒr$tS|jr0t StS|jdkrNtd|jt ƒ}ntt |j t ƒ}t |j ƒ|t }|dkr||n| }|dkrŽdS|S)Nz"Cannot hash a signaling NaN value.r&é r.r,r„éþÿÿÿ) rPr‹rrÚis_nanÚ _PyHASH_NANr7Ú _PyHASH_INFrOÚpowÚ_PyHASH_MODULUSÚ _PyHASH_10INVrUr8)r/Zexp_hashZhash_r;r(r(r*Ú__hash__Ôs  zDecimal.__hash__cCst|jttt|jƒƒ|jƒS)N)rr7rkrorUr8rO)r/r(r(r*Úas_tupleîszDecimal.as_tuplecCsØ|jr |jƒrtdƒ‚ntdƒ‚|s(dSt|jƒ}|jdkrR|d|jd}}nr|j }x(|dkr‚|ddkr‚|d}|d8}q\W|j }t|| @jƒd|ƒ}|r¸||L}||8}d||>}|j rÐ| }||fS)Nz#cannot convert NaN to integer ratioz(cannot convert Infinity to integer ratior&r.ržrz)r&r.) rPr rlÚ OverflowErrorrUr8rOÚminr~r7)r/r5r€Zd5Zd2Zshift2r(r(r*r}õs,     zDecimal.as_integer_ratiocCs dt|ƒS)Nz Decimal('%s'))r`)r/r(r(r*Ú__repr__'szDecimal.__repr__Fc Csdddg|j}|jrL|jdkr&|dS|jdkr>|d|jS|d|jS|jt|jƒ}|jdkrt|dkrt|}n6|s~d }n,|jd krš|d d d }n|d d d }|dkrÌd }d d | |j}nN|t|jƒk�rú|jd |t|jƒ}d}n |jd|…}d |j|d…}||k�r*d}n*|dk�r:tƒ}ddg|jd||}||||S)NrSrTrZZInfinityr5ÚNaNr†r&ér.rQr[Ú.ÚeÚEz%+diúÿÿÿ)r7rPrOr8rfrÚcapitals) r/Úengr0r=Ú leftdigitsÚdotplacervrwrVr(r(r*Ú__str__,s:     zDecimal.__str__cCs|jd|d�S)NT)r±r0)r´)r/r0r(r(r*Ú to_eng_string`szDecimal.to_eng_stringcCsT|jr|j|d�}|r|S|dkr(tƒ}| rB|jtkrB|jƒ}n|jƒ}|j|ƒS)N)r0)rPrŠrr?rÚcopy_absÚ copy_negateÚ_fix)r/r0r;r(r(r*Ú__neg__is  zDecimal.__neg__cCsT|jr|j|d�}|r|S|dkr(tƒ}| rB|jtkrB|jƒ}nt|ƒ}|j|ƒS)N)r0)rPrŠrr?rr¶rr¸)r/r0r;r(r(r*Ú__pos__s  zDecimal.__pos__TcCsJ|s |jƒS|jr&|j|d�}|r&|S|jr:|j|d�}n |j|d�}|S)N)r0)r¶rPrŠr7r¹rº)r/Úroundr0r;r(r(r*Ú__abs__”s  zDecimal.__abs__c Cslt|ƒ}|tkr|S|dkr"tƒ}|js.|jr‚|j||ƒ}|rB|S|jƒrr|j|jkrj|jƒrj|jtdƒSt |ƒS|jƒr‚t |ƒSt |j |j ƒ}d}|j t kr®|j|jkr®d}| rê| rêt |j|jƒ}|rÐd}t|d|ƒ}|j|ƒ}|S|�s"t||j |jdƒ}|j||j ƒ}|j|ƒ}|S|�sZt||j |jdƒ}|j||j ƒ}|j|ƒ}|St|ƒ}t|ƒ}t|||jƒ\}}tƒ} |j|jk�rþ|j|jk�r¸t|d|ƒ}|j|ƒ}|S|j|jk�rÐ||}}|jdk�röd| _|j|j|_|_nd| _n&|jdk�rd| _d\|_|_nd| _|jdk�r@|j|j| _n|j|j| _|j| _t | ƒ}|j|ƒ}|S)Nz -INF + INFr&r.rQ)r&r&)rœr•rrPrŠr…r7rdr rr©rOr?rr6r¸Úmaxr@Ú_rescaleriÚ _normalizer=rUrV) r/r‡r0r;rVZ negativezeror=Úop1Úop2r‚r(r(r*Ú__add__ªs|               zDecimal.__add__cCsHt|ƒ}|tkr|S|js |jr6|j||d�}|r6|S|j|jƒ|d�S)N)r0)rœr•rPrŠrÂr·)r/r‡r0r;r(r(r*Ú__sub__s zDecimal.__sub__cCs"t|ƒ}|tkr|S|j||d�S)N)r0)rœr•rÃ)r/r‡r0r(r(r*Ú__rsub__szDecimal.__rsub__cCsDt|ƒ}|tkr|S|dkr"tƒ}|j|jA}|js:|jrŽ|j||ƒ}|rN|S|jƒrn|sf|jtdƒSt |S|jƒrŽ|s†|jtdƒSt |S|j |j }| s¦| rÀt |d|ƒ}|j |ƒ}|S|j dkræt ||j |ƒ}|j |ƒ}|S|j dk�rt ||j |ƒ}|j |ƒ}|St|ƒ}t|ƒ}t |t|j|jƒ|ƒ}|j |ƒ}|S)Nz (+-)INF * 0z 0 * (+-)INFrQÚ1)rœr•rr7rPrŠr…rdr r<rOr6r¸r8rir`rU)r/r‡r0Z resultsignr;Z resultexprÀrÁr(r(r*Ú__mul__sH              zDecimal.__mul__c CsÊt|ƒ}|tkrtS|dkr"tƒ}|j|jA}|js:|jrž|j||ƒ}|rN|S|jƒrj|jƒrj|jtdƒS|jƒrzt |S|jƒrž|jt dƒt |d|j ƒƒS|sÀ|s²|jt dƒS|jtd|ƒS|sÖ|j|j}d}nÚt|jƒt|jƒ|jd}|j|j|}t|ƒ}t|ƒ} |dk�r:t|jd|| jƒ\}} nt|j| jd| ƒ\}} | �rt|d dk�r°|d7}n<|j|j} x.|| k�r®|ddk�r®|d}|d7}�q‚Wt |t|ƒ|ƒ}|j|ƒS) Nz(+-)INF/(+-)INFzDivision by infinityrQz0 / 0zx / 0r&r.ržrz)rœr•rr7rPrŠr…rdr r<rr6ÚEtinyrr rOrfr8r@riÚdivmodrUr`r¸) r/r‡r0r=r;rVÚcoeffÚshiftrÀrÁÚ remainderÚ ideal_expr(r(r*Ú __truediv__QsP          zDecimal.__truediv__c Cs |j|jA}|jƒr|j}nt|j|jƒ}|jƒ|jƒ}| sP|jƒsP|dkrjt|ddƒ|j||jƒfS||jk�r t |ƒ}t |ƒ}|j |j kr®|j d|j |j 9_ n|j d|j |j 9_ t |j |j ƒ\}} |d|jk�r t|t |ƒdƒt|jt | ƒ|ƒfS|jtdƒ} | | fS)Nr,rQr&ržz%quotient too large in //, % or divmodrŸ)r7r…rOr©r�r6r¾r?r@rirVrUrÈr`rdr) r/r‡r0r=rÌÚexpdiffrÀrÁÚqÚrr;r(r(r*Ú_divideŒs*    zDecimal._dividecCs"t|ƒ}|tkr|S|j||d�S)N)r0)rœr•rÍ)r/r‡r0r(r(r*Ú __rtruediv__­szDecimal.__rtruediv__cCsÖt|ƒ}|tkr|S|dkr"tƒ}|j||ƒ}|r:||fS|j|jA}|jƒr~|jƒrj|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Šr7r…rdr r<rr rÑr¸)r/r‡r0r;r=ZquotientrËr(r(r*Ú __divmod__´s0      zDecimal.__divmod__cCs"t|ƒ}|tkr|S|j||d�S)N)r0)rœr•rÓ)r/r‡r0r(r(r*Ú __rdivmod__ØszDecimal.__rdivmod__cCsˆt|ƒ}|tkr|S|dkr"tƒ}|j||ƒ}|r6|S|jƒrJ|jtdƒS|sj|r^|jtdƒS|jtdƒS|j||ƒd}|j |ƒ}|S)NzINF % xzx % 0z0 % 0r.) rœr•rrŠr…rdr rrÑr¸)r/r‡r0r;rËr(r(r*Ú__mod__ßs"     zDecimal.__mod__cCs"t|ƒ}|tkr|S|j||d�S)N)r0)rœr•rÕ)r/r‡r0r(r(r*Ú__rmod__úszDecimal.__rmod__c CsÐ|dkrtƒ}t|dd�}|j||ƒ}|r.|S|jƒrB|jtdƒS|sb|rV|jtdƒS|jtdƒS|jƒr|t|ƒ}|j|ƒSt |j |j ƒ}|s¦t |j d|ƒ}|j|ƒS|j ƒ|j ƒ}||jdkrÎ|jtƒS|d krî|j||jƒ}|j|ƒSt|ƒ}t|ƒ}|j|jk�r(|jd |j|j9_n|jd |j|j9_t|j|jƒ\}} d| |d@|jk�r~| |j8} |d7}|d |jk�r˜|jtƒS|j } | d k�r¶d| } | } t | t| ƒ|ƒ}|j|ƒS) NT)r›zremainder_near(infinity, x)zremainder_near(x, 0)zremainder_near(0, 0)rQr.r,ržr&rŸ)rrœrŠr…rdr rrr¸r©rOr6r7r�r@rr¾r?rirVrUrÈr`) r/r‡r0r;Úideal_exponentrÎrÀrÁrÏrÐr=r(r(r*Úremainder_nearsZ         zDecimal.remainder_nearcCsœt|ƒ}|tkr|S|dkr"tƒ}|j||ƒ}|r6|S|jƒrb|jƒrR|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…rdr r<r7r rrÑ)r/r‡r0r;r(r(r*Ú __floordiv__Ls$   zDecimal.__floordiv__cCs"t|ƒ}|tkr|S|j||d�S)N)r0)rœr•rÙ)r/r‡r0r(r(r*Ú __rfloordiv__hszDecimal.__rfloordiv__cCs8|jƒr(|jƒrtdƒ‚|jr"dnd}nt|ƒ}t|ƒS)Nz%Cannot convert signaling NaN to floatz-nanÚnan)rƒr‹rlr7r`rp)r/Úsr(r(r*Ú __float__os zDecimal.__float__cCst|jr(|jƒrtdƒ‚n|jƒr(tdƒ‚d|j}|jdkrT|t|jƒd|jS|t|jd|j…pjdƒSdS)NzCannot convert NaN to integerz"Cannot convert infinity to integerr.r&ržrQr„) rPrƒrlr…r¨r7rOrUr8)r/rÜr(r(r*Ú__int__ys   zDecimal.__int__cCs|S)Nr()r/r(r(r*Úrealˆsz Decimal.realcCstdƒS)Nr&)r)r/r(r(r*ÚimagŒsz Decimal.imagcCs|S)Nr()r/r(r(r*Ú conjugate�szDecimal.conjugatecCs tt|ƒƒS)N)Úcomplexrp)r/r(r(r*Ú __complex__“szDecimal.__complex__cCsR|j}|j|j}t|ƒ|krJ|t|ƒ|d…jdƒ}t|j||jdƒSt|ƒS)NrQT) r8r@Úclamprfrgr6r7rOr)r/r0ZpayloadZmax_payload_lenr(r(r*r9–s   zDecimal._fix_nancCsX|jr |jƒr|j|ƒSt|ƒS|jƒ}|jƒ}|s€|j|g|j}tt |j |ƒ|ƒ}||j krx|j t ƒt |jd|ƒSt|ƒSt|jƒ|j |j}||krÆ|j td|jƒ}|j tƒ|j tƒ|S||k}|rÖ|}|j |k�rüt|jƒ|j |} | dk�rt |jd|dƒ}d} |j|j} | || ƒ} |jd| …�p>d} | dk�r~tt| ƒdƒ} t| ƒ|jk�r~| dd…} |d7}||k�rš|j td|jƒ}nt |j| |ƒ}| �r¾|�r¾|j tƒ|�rÎ|j tƒ| �rÞ|j tƒ|j tƒ|�sø|j t ƒ|S|�r |j tƒ|jdk�rP|j |k�rP|j t ƒ|jd|j |} t |j| |ƒSt|ƒS)NrQz above Emaxr&rÅr.r„)rPrƒr9rrÇÚEtoprArär©r½rOrdrr6r7rfr8r@rr r Ú_pick_rounding_functionr?r`rUrr )r/r0rÇråÚexp_maxZnew_expZexp_minr;Zself_is_subnormalrxZrounding_methodÚchangedrÉr‘r(r(r*r¸¢sn                     z Decimal._fixcCst|j|ƒrdSdSdS)Nr&r.r„)Ú _all_zerosr8)r/r@r(r(r*Ú _round_downs zDecimal._round_downcCs |j|ƒ S)N)rê)r/r@r(r(r*Ú _round_upszDecimal._round_upcCs*|j|dkrdSt|j|ƒr"dSdSdS)NZ56789r.r&r„)r8ré)r/r@r(r(r*Ú_round_half_ups  zDecimal._round_half_upcCst|j|ƒrdS|j|ƒSdS)Nr.r„)Ú _exact_halfr8rì)r/r@r(r(r*Ú_round_half_downs zDecimal._round_half_downcCs8t|j|ƒr*|dks&|j|ddkr*dS|j|ƒSdS)Nr&r.Ú02468r„)rír8rì)r/r@r(r(r*Ú_round_half_even#s zDecimal._round_half_evencCs |jr|j|ƒS|j|ƒ SdS)N)r7rê)r/r@r(r(r*Ú_round_ceiling+s zDecimal._round_ceilingcCs |js|j|ƒS|j|ƒ SdS)N)r7rê)r/r@r(r(r*Ú _round_floor2s zDecimal._round_floorcCs0|r |j|ddkr |j|ƒS|j|ƒ SdS)Nr.Z05)r8rê)r/r@r(r(r*Ú _round_05up9s zDecimal._round_05up)rrrrrrrrcCsb|dk r2t|tƒstdƒ‚tdd| ƒ}|j|ƒS|jrR|jƒrJtdƒ‚ntdƒ‚t|j dt ƒƒS)Nz+Second argument to round should be integralr&rÅzcannot round a NaNzcannot round an infinity) r_rUrrr6ÚquantizerPr rlr¨r¾r)r/r5rVr(r(r*Ú __round__Ks/   zDecimal.__round__cCs0|jr |jƒrtdƒ‚ntdƒ‚t|jdtƒƒS)Nzcannot round a NaNzcannot round an infinityr&)rPr rlr¨rUr¾r)r/r(r(r*Ú __floor__‰s  zDecimal.__floor__cCs0|jr |jƒrtdƒ‚ntdƒ‚t|jdtƒƒS)Nzcannot round a NaNzcannot round an infinityr&)rPr rlr¨rUr¾r)r/r(r(r*Ú__ceil__˜s  zDecimal.__ceil__cCst|dd�}t|dd�}|js$|jrÚ|dkr2tƒ}|jdkrJ|jtd|ƒS|jdkrb|jtd|ƒS|jdkrr|}nf|jdkr‚|}nV|jdkr®|sœ|jtdƒSt|j|jA}n*|jdkrØ|sÈ|jtdƒSt|j|jA}n0t|j|jAt t |j ƒt |j ƒƒ|j|jƒ}|j ||ƒS) NT)r›rYr†r5rZzINF * 0 in fmaz0 * INF in fma) rœrPrrOrdr r<r7r6r`rUr8rÂ)r/r‡Zthirdr0Úproductr(r(r*Úfma§s6          z Decimal.fmac CsÚt|ƒ}|tkr|St|ƒ}|tkr(|S|dkr6tƒ}|jƒ}|jƒ}|jƒ}|sZ|sZ|rÂ|dkrp|jtd|ƒS|dkr†|jtd|ƒS|dkrœ|jtd|ƒS|rª|j|ƒS|r¸|j|ƒS|j|ƒS|jƒoØ|jƒoØ|jƒsæ|jtdƒS|dkrú|jtdƒS|�s |jtdƒS|jƒ|j k�r(|jtdƒS| �rD| �rD|jtdƒS|j ƒ�rTd}n|j }t t |ƒƒ}t|jƒƒ}t|jƒƒ} |j |td |j|ƒ|}x t| jƒD]} t|d |ƒ}�q¦Wt|| 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ƒrdr r9Ú _isintegerr�r@Ú_isevenr7rhrUriÚto_integral_valuer£rVÚranger6r`) r/r‡Úmodulor0rˆr‰Z modulo_is_nanr=ÚbaseÚexponentÚir(r(r*Ú _power_moduloÓsl        zDecimal._power_modulocCst|ƒ}|j|j}}x |ddkr6|d}|d7}qWt|ƒ}|j|j}}x |ddkrn|d}|d7}qPW|dk�r||9}x |ddkr¢|d}|d7}q„W|dkr°dS|d|} |jdkrÌ| } |jƒoÜ|jdk�r|jt|ƒ} t| | |dƒ} nd} tddd| | | ƒS|jdk�rÄ|d} | dk�rÊ|| @|k�rPdSt |ƒd} |d d }|t t |ƒƒk�r~dSt | ||ƒ} t |||ƒ}| dk�s®|dk�r²dS| |k�rÀdSd | }nÎ| d k�r”t |ƒd d } t d | |ƒ\}}|�rdSx$|d dk�r$|d }| d8} �qW|dd}|t t |ƒƒk�rHdSt | ||ƒ} t |||ƒ}| dk�sx|dk�r|dS| |k�rŠdSd| }ndS|d|k�rªdS| |}tdt |ƒ|ƒS|dk�râ|d|d}}nä|dk�r t t t||ƒƒƒ| k�r dSt |ƒ}|dk�r>t t t|ƒ|ƒƒ| k�r>dS|d| }}x:|d|dk�oldkn�rˆ|d}|d}�qPWx:|d |d k�o¨dkn�rÄ|d }|d }�qŒW|dk�rt|dk�rè||k�rèdSt ||ƒ\}}|dk�rdSdt |ƒ | >}x>t |||dƒ\}}||k�r>Pn||d||}�qW||k�oh|dk�spdS|}|dk�r˜||dt|ƒk�r˜dS||}||9}|d|k�rºdSt |ƒ}|jƒ�rþ|jdk�rþ|jt|ƒ} t|| |t |ƒƒ} nd} td|d| || ƒS)Nržr&r.rÅrQr,ér¬éé]éArzér[éd)r,rr¬r)rirUrVr=rúr7rOr©r6Ú_nbitsrfr`Ú_decimal_lshift_exactrÈrhÚ _log10_lb)r/r‡ÚpÚxÚxcÚxeÚyÚycÚyerr×ZzerosZ last_digitr®ZemaxrËrur5Zxc_bitsÚremÚarÏrÐZstr_xcr(r(r*Ú _power_exact(sÒ:                  &&&&    zDecimal._power_exactcCs@|dk r|j|||ƒSt|ƒ}|tkr*|S|dkr8tƒ}|j||ƒ}|rL|S|sd|s`|jtdƒStSd}|jdkr |j ƒrˆ|j ƒs˜d}n|r˜|jtdƒS|j ƒ}|sÂ|jdkrºt |ddƒSt |S|jƒrè|jdkrÜt |St |ddƒS|tk�rŽ|j ƒ�rZ|jdk�rd}n||jk�r"|j}nt|ƒ}|j|}|d|jk�rxd|j}|jtƒn|jtƒ|jtƒd|j}t |dd| |ƒS|jƒ}|jƒ�rÈ|jdk|dkk�rÀt |ddƒSt |Sd}d} |jƒ|jƒ} |dk|jdkk�r| tt|jƒƒk�rHt |d|jdƒ}n,|jƒ} | tt| ƒƒk�rHt |d| dƒ}|dk�rŒ|j||jdƒ}|dk �rŒ|dk�rˆt d|j|jƒ}d} |dk�r:|j} t|ƒ} | j| j}}t|ƒ}|j|j}}|jdk�rÚ| }d }xJt||||| |ƒ\}}|d d tt|ƒƒ| d�rP|d 7}�qàWt |t|ƒ|ƒ}| �r2|j ƒ �r2t|jƒ|jk�r�|jdt|jƒ}t |j|jd||j|ƒ}|j ƒ}|j!ƒxt"D]}d|j#|<�q¦W|j$|ƒ}|jtƒ|j%t&�rä|jt'ƒ|j%t(�r|jt(d |jƒx:t't&ttt)fD]}|j%|�r|j|ƒ�qWn |j$|ƒ}|S) Nz0 ** 0r&r.z+x ** y with x negative and y not an integerrQrÅFTr[rzržz above Emax)*rrœr•rrŠrdr Ú_Oner7rúrûr·r6r<r…r@rUrOr r r�Ú_log10_exp_boundrfr`rArÇrr8rirVr=Ú_dpowerrHrIÚ_signalsÚtrapsr¸Úflagsr rrr)r/r‡rþr0r;Z result_signZ multiplierrVZself_adjÚexactZboundrÇr r rrrrrÚextrarÉrÎZ newcontextZ exceptionr(r(r*Ú__pow__ sÊ                        "         zDecimal.__pow__cCs"t|ƒ}|tkr|S|j||d�S)N)r0)rœr•r)r/r‡r0r(r(r*Ú__rpow__í szDecimal.__rpow__cCs¼|dkrtƒ}|jr(|j|d�}|r(|S|j|ƒ}|jƒr>|S|sPt|jddƒS|j|jƒg|j }t |j ƒ}|j }x.|j |ddkr¢||kr¢|d7}|d8}qvWt|j|j d|…|ƒS)N)r0rQr&r.) rrPrŠr¸r…r6r7rArårärfr8rO)r/r0r;ÚduprçÚendrVr(r(r*Ú normalizeô s$    zDecimal.normalizecCs¨t|dd�}|dkrtƒ}|dkr(|j}|js4|jr||j||ƒ}|rH|S|jƒsX|jƒr||jƒrp|jƒrpt|ƒS|jtdƒS|j ƒ|j ko–|j kns¨|jtdƒS|sÆt |j d|j ƒ}|j|ƒS|jƒ}||j krä|jtdƒS||j d|jk�r|jtdƒS|j|j |ƒ}|jƒ|j k�r0|jtdƒSt|jƒ|jk�rN|jtdƒS|�rn|jƒ|jk�rn|jtƒ|j |j k�rš||k�r�|jtƒ|jtƒ|j|ƒ}|S) NT)r›zquantize with one INFz)target exponent out of bounds in quantizerQz9exponent of quantize result too large for current contextr.z7quantize result has too many digits for current context)rœrr?rPrŠr…rrdr rÇrOrAr6r7r¸r�r@r¾rfr8ÚEminr r r )r/rVr?r0r;r�r(r(r*rô sT           zDecimal.quantizecCsDt|dd�}|js|jr8|jƒr(|jƒp6|jƒo6|jƒS|j|jkS)NT)r›)rœrPr Ú is_infiniterO)r/r‡r0r(r(r*Ú same_quantumJ s  zDecimal.same_quantumcCsÆ|jrt|ƒS|s t|jd|ƒS|j|krHt|j|jd|j||ƒSt|jƒ|j|}|dkrzt|jd|dƒ}d}|j|}|||ƒ}|jd|…pžd}|dkr¸tt |ƒdƒ}t|j||ƒS)NrQr&rÅr.) rPrr6r7rOr8rfrær`rU)r/rVr?rxZ this_functionrèrÉr(r(r*r¾Y s"    zDecimal._rescalecCsh|dkrtdƒ‚|js| r$t|ƒS|j|jƒd||ƒ}|jƒ|jƒkrd|j|jƒd||ƒ}|S)Nr&z'argument should be at least 1 in _roundr.)rlrPrr¾r�)r/Úplacesr?r;r(r(r*Ú_round{ s  zDecimal._roundcCsŽ|jr"|j|d�}|r|St|ƒS|jdkr4t|ƒS|sFt|jddƒS|dkrTtƒ}|dkrb|j}|jd|ƒ}||kr€|j t ƒ|j t ƒ|S)N)r0r&rQ) rPrŠrrOr6r7rr?r¾rdr r )r/r?r0r;r(r(r*Úto_integral_exact’ s$      zDecimal.to_integral_exactcCs`|dkrtƒ}|dkr|j}|jr>|j|d�}|r6|St|ƒS|jdkrPt|ƒS|jd|ƒSdS)N)r0r&)rr?rPrŠrrOr¾)r/r?r0r;r(r(r*rü¯ s  zDecimal.to_integral_valuecCsà|dkrtƒ}|jrB|j|d�}|r(|S|jƒrB|jdkrBt|ƒS|sdt|jd|jdƒ}|j|ƒS|jdkrz|j t dƒS|j d}t |ƒ}|j d?}|j d@r¾|jd}t|jƒd?d}n|j}t|jƒdd?}||}|dkrø|d|9}d } nt|d| ƒ\}} | } ||8}d|} x(|| } | | k�r:Pn | | d?} �q$W| �o\| | |k} | �r”|dk�r|| d|} n| d| 9} ||7}n| d dk�rª| d7} tdt| ƒ|ƒ}|jƒ}|jtƒ} |j|ƒ}| |_|S) N)r0r&rQr,r.zsqrt(-x), x > 0ržrTrz)rrPrŠr…r7rr6rOr¸rdr r@rirVrUrfr8rÈr`Ú _shallow_copyÚ _set_roundingrr?)r/r0r;r@Úopr®ÚcÚlrÊrrËr5rÏr?r(r(r*Úsqrt s`              z Decimal.sqrtcCs¶t|dd�}|dkrtƒ}|js&|jr~|jƒ}|jƒ}|s>|r~|dkrX|dkrX|j|ƒS|dkrr|dkrr|j|ƒS|j||ƒS|j|ƒ}|dkrš|j|ƒ}|dkr¨|}n|}|j|ƒS)NT)r›r.r&r„)rœrrPrƒr¸rŠr’Ú compare_total)r/r‡r0ÚsnÚonr,r;r(r(r*r½% s&       z Decimal.maxcCs¶t|dd�}|dkrtƒ}|js&|jr~|jƒ}|jƒ}|s>|r~|dkrX|dkrX|j|ƒS|dkrr|dkrr|j|ƒS|j||ƒS|j|ƒ}|dkrš|j|ƒ}|dkr¨|}n|}|j|ƒS)NT)r›r.r&r„)rœrrPrƒr¸rŠr’r/)r/r‡r0r0r1r,r;r(r(r*r©O s&       z Decimal.mincCs8|jr dS|jdkrdS|j|jd…}|dt|ƒkS)NFr&TrQ)rPrOr8rf)r/Úrestr(r(r*rúq s  zDecimal._isintegercCs(| s|jdkrdS|jd|jdkS)Nr&Tr.rïr„)rOr8)r/r(r(r*rûz szDecimal._isevenc Cs.y|jt|jƒdStk r(dSXdS)Nr.r&)rOrfr8rr)r/r(r(r*r�€ szDecimal.adjustedcCs|S)Nr()r/r(r(r*Ú canonicalˆ szDecimal.canonicalcCs.t|dd�}|j||ƒ}|r |S|j||d�S)NT)r›)r0)rœr�r�)r/r‡r0r;r(r(r*Úcompare_signal� s   zDecimal.compare_signalcCsft|dd�}|jr|j rtS|j r0|jr0tS|j}|jƒ}|jƒ}|sP|�r||kr¤t|jƒ|jf}t|jƒ|jf}||krŒ|rˆtStS||kr |rœtStStS|rÚ|dkr´tS|dkrÀtS|dkrÌtS|dkrØtSn4|dkrætS|dkròtS|dk�rtS|dk�rtS||k�rtS||k�r*tS|j|jk�rF|�rBtStS|j|jk�rb|�r^tStStS)NT)r›r.r,) rœr7Ú _NegativeOnerrƒrfr8Ú_ZerorO)r/r‡r0r=Zself_nanZ other_nanZself_keyZ other_keyr(r(r*r/œ sf      zDecimal.compare_totalcCs&t|dd�}|jƒ}|jƒ}|j|ƒS)NT)r›)rœr¶r/)r/r‡r0rÜÚor(r(r*Úcompare_total_magå s zDecimal.compare_total_magcCstd|j|j|jƒS)Nr&)r6r8rOrP)r/r(r(r*r¶ð szDecimal.copy_abscCs2|jrtd|j|j|jƒStd|j|j|jƒSdS)Nr&r.)r7r6r8rOrP)r/r(r(r*r·ô szDecimal.copy_negatecCs"t|dd�}t|j|j|j|jƒS)NT)r›)rœr6r7r8rOrP)r/r‡r0r(r(r*Ú copy_signû s  zDecimal.copy_signc Csì|dkrtƒ}|j|d�}|r"|S|jƒd kr2tS|s:tS|jƒdkrNt|ƒS|j}|jƒ}|jdkr–|t t |j ddƒƒkr–t dd|j dƒ}�n0|jdkrÔ|t t |j ƒ ddƒƒkrÔt dd|j ƒdƒ}nò|jdkoæ|| k�r t ddd|dd| ƒ}n¼|jdk�rB|| dk�rBt dd|d| dƒ}n„t|ƒ}|j|j}}|jdk�rj| }d}xFt||||ƒ\} } | dd t t | ƒƒ|d�r¨P|d7}�qpWt dt | ƒ| ƒ}|jƒ}|jtƒ} |j|ƒ}| |_|S) N)r0r.r&r[rÅrQr>rzržr„)rrŠr…r6rrr@r�r7rfr`rAr6rÇrirUrVr=Ú_dexpr)r*rr¸r?) r/r0r;r Úadjr+r,r®rrÉrVr?r(r(r*rV sJ   $(  "  z Decimal.expcCsdS)NTr()r/r(r(r*Ú is_canonicalL szDecimal.is_canonicalcCs|j S)N)rP)r/r(r(r*Ú is_finiteT szDecimal.is_finitecCs |jdkS)NrZ)rO)r/r(r(r*r$\ szDecimal.is_infinitecCs |jdkS)Nr5rY)r5rY)rO)r/r(r(r*r ` szDecimal.is_nancCs,|js | rdS|dkrtƒ}|j|jƒkS)NF)rPrr#r�)r/r0r(r(r*Ú is_normald s  zDecimal.is_normalcCs |jdkS)Nr5)rO)r/r(r(r*rŒl szDecimal.is_qnancCs |jdkS)Nr.)r7)r/r(r(r*Ú is_signedp szDecimal.is_signedcCs |jdkS)NrY)rO)r/r(r(r*r‹t szDecimal.is_snancCs,|js | rdS|dkrtƒ}|jƒ|jkS)NF)rPrr�r#)r/r0r(r(r*Ú is_subnormalx s  zDecimal.is_subnormalcCs|j o|jdkS)NrQ)rPr8)r/r(r(r*Úis_zero€ szDecimal.is_zerocCsÆ|jt|jƒd}|dkr4tt|ddƒƒdS|dkrXttd|ddƒƒdSt|ƒ}|j|j}}|dkr¨t|d| ƒ}t|ƒ}t|ƒt|ƒ||kS|ttd| |ƒƒdS)Nr.éržr,r&rŸr„)rOrfr8r`rirUrV)r/r;r+r,r®ÚnumÚdenr(r(r*Ú _ln_exp_bound„ szDecimal._ln_exp_boundc Cs |dkrtƒ}|j|d�}|r"|S|s*tS|jƒdkr:tS|tkrFtS|jdkr\|jt dƒSt |ƒ}|j |j }}|j }||jƒd}x>t|||ƒ}|ddttt|ƒƒƒ|dr¼P|d7}qŠWtt |dkƒtt|ƒƒ| ƒ}|jƒ}|jtƒ} |j|ƒ}| |_|S) N)r0r.zln of a negative valuer,rzržr[r&)rrŠÚ_NegativeInfinityr…Ú _Infinityrr6r7rdr rirUrVr@rEÚ_dlogrfr`rhr6r)r*rr¸r?) r/r0r;r+r,r®r r&rÉr?r(r(r*Úln� s:    $   z Decimal.lncCsÊ|jt|jƒd}|dkr,tt|ƒƒdS|dkrHttd|ƒƒdSt|ƒ}|j|j}}|dkr t|d| ƒ}td|ƒ}t|ƒt|ƒ||kdStd| |ƒ}t|ƒ||dkdS) Nr.r,r&ržéçZ231rŸr„)rOrfr8r`rirUrV)r/r;r+r,r®rCrDr(r(r*rÏ s  zDecimal._log10_exp_boundc CsH|dkrtƒ}|j|d�}|r"|S|s*tS|jƒdkr:tS|jdkrP|jtdƒS|jddkr˜|jdd…dt |jƒdkr˜t |j t |jƒdƒ}nŠt |ƒ}|j |j}}|j}||jƒd}x>t|||ƒ}|dd t tt|ƒƒƒ|drøP|d 7}qÆWtt |dkƒtt|ƒƒ| ƒ}|jƒ}|jtƒ} |j|ƒ}| |_|S) N)r0r.zlog10 of a negative valuer&rÅrQr,rzržr[)rrŠrFr…rGr7rdr r8rfrrOrirUrVr@rÚ_dlog10r`rhr6r)r*rr¸r?) r/r0r;r+r,r®r r&rÉr?r(r(r*Úlog10í s:   . $   z Decimal.log10cCsV|j|d�}|r|S|dkr"tƒ}|jƒr.tS|s@|jtddƒSt|jƒƒ}|j|ƒS)N)r0zlogb(0)r.) rŠrr…rGrdr rr�r¸)r/r0r;r(r(r*Úlogb s  z Decimal.logbcCs8|jdks|jdkrdSx|jD]}|dkr dSq WdS)Nr&FZ01T)r7rOr8)r/Údigr(r(r*Ú _islogical> s  zDecimal._islogicalcCs€|jt|ƒ}|dkr$d||}n|dkr<||j d…}|jt|ƒ}|dkr`d||}n|dkrx||j d…}||fS)Nr&rQ)r@rf)r/r0ÚopaÚopbZdifr(r(r*Ú _fill_logicalL szDecimal._fill_logicalcCs~|dkrtƒ}t|dd�}|jƒ s.|jƒ r8|jtƒS|j||j|jƒ\}}djdd„t||ƒDƒƒ}t d|j dƒpxddƒS)NT)r›rScSs$g|]\}}tt|ƒt|ƒ@ƒ‘qSr()r`rU)Ú.0rÚbr(r(r*ú g sz'Decimal.logical_and..r&rQ) rrœrOrdr rRr8rnÚzipr6rg)r/r‡r0rPrQr‚r(r(r*Ú logical_andY s  zDecimal.logical_andcCs(|dkrtƒ}|jtdd|jdƒ|ƒS)Nr&rÅ)rÚ logical_xorr6r@)r/r0r(r(r*Úlogical_invertj szDecimal.logical_invertcCs~|dkrtƒ}t|dd�}|jƒ s.|jƒ r8|jtƒS|j||j|jƒ\}}djdd„t||ƒDƒƒ}t d|j dƒpxddƒS)NT)r›rScSs$g|]\}}tt|ƒt|ƒBƒ‘qSr()r`rU)rSrrTr(r(r*rU sz&Decimal.logical_or..r&rQ) rrœrOrdr rRr8rnrVr6rg)r/r‡r0rPrQr‚r(r(r*Ú logical_orq s  zDecimal.logical_orcCs~|dkrtƒ}t|dd�}|jƒ s.|jƒ r8|jtƒS|j||j|jƒ\}}djdd„t||ƒDƒƒ}t d|j dƒpxddƒS)NT)r›rScSs$g|]\}}tt|ƒt|ƒAƒ‘qSr()r`rU)rSrrTr(r(r*rU� sz'Decimal.logical_xor..r&rQ) rrœrOrdr rRr8rnrVr6rg)r/r‡r0rPrQr‚r(r(r*rX‚ s  zDecimal.logical_xorcCs¾t|dd�}|dkrtƒ}|js&|jr~|jƒ}|jƒ}|s>|r~|dkrX|dkrX|j|ƒS|dkrr|dkrr|j|ƒS|j||ƒS|jƒj|jƒƒ}|dkr¢|j|ƒ}|dkr°|}n|}|j|ƒS)NT)r›r.r&r„) rœrrPrƒr¸rŠr¶r’r/)r/r‡r0r0r1r,r;r(r(r*Úmax_mag“ s&      zDecimal.max_magcCs¾t|dd�}|dkrtƒ}|js&|jr~|jƒ}|jƒ}|s>|r~|dkrX|dkrX|j|ƒS|dkrr|dkrr|j|ƒS|j||ƒS|jƒj|jƒƒ}|dkr¢|j|ƒ}|dkr°|}n|}|j|ƒS)NT)r›r.r&r„) rœrrPrƒr¸rŠr¶r’r/)r/r‡r0r0r1r,r;r(r(r*Úmin_mag± s&      zDecimal.min_magcCs |dkrtƒ}|j|d�}|r"|S|jƒdkr2tS|jƒdkrTtdd|j|jƒƒS|jƒ}|jt ƒ|j ƒ|j |ƒ}||kr„|S|j tdd|j ƒdƒ|ƒS)N)r0r.r&r>rÅr„)rrŠr…rFr6r@rårHr*rÚ_ignore_all_flagsr¸rÃrÇ)r/r0r;Únew_selfr(r(r*Ú next_minusÏ s"     zDecimal.next_minuscCs |dkrtƒ}|j|d�}|r"|S|jƒdkr2tS|jƒdkrTtdd|j|jƒƒS|jƒ}|jt ƒ|j ƒ|j |ƒ}||kr„|S|j tdd|j ƒdƒ|ƒS)N)r0r.r>r&rÅr„)rrŠr…rGr6r@rårHr*rr]r¸rÂrÇ)r/r0r;r^r(r(r*Ú next_plusæ s"     zDecimal.next_pluscCsÞt|dd�}|dkrtƒ}|j||ƒ}|r.|S|j|ƒ}|dkrJ|j|ƒS|dkr^|j|ƒ}n |j|ƒ}|jƒr–|jt d|j ƒ|jt ƒ|jt ƒnD|j ƒ|jkrÚ|jtƒ|jtƒ|jt ƒ|jt ƒ|sÚ|jtƒ|S)NT)r›r&r.z Infinite result from next_towardr„)rœrrŠr’r9r`r_r…rdrr7r r r�r#rr r)r/r‡r0r;Z comparisonr(r(r*Ú next_towardý s4             zDecimal.next_towardcCsˆ|jƒr dS|jƒrdS|jƒ}|dkr,dS|d kr8dS|jƒrN|jrJdSdS|dkr\tƒ}|j|d�rv|jrrd Sd S|jr€d Sd SdS)Nr†r«r.z +Infinityz -Infinityz-Zeroz+Zero)r0z -Subnormalz +Subnormalz-Normalz+Normalr„)r‹rŒr…rAr7rr@)r/r0Úinfr(r(r*Ú number_class+s, zDecimal.number_classcCstdƒS)Nrž)r)r/r(r(r*ÚradixUsz Decimal.radixcCsø|dkrtƒ}t|dd�}|j||ƒ}|r.|S|jdkrB|jtƒS|j t|ƒko^|jknsn|jtƒS|jƒr~t |ƒSt|ƒ}|j }|jt |ƒ}|dkr°d||}n|dkrÆ|| d…}||d…|d|…}t |j |jdƒpðd|jƒS)NT)r›r&rQ)rrœrŠrOrdr r@rUr…rr8rfr6r7rg)r/r‡r0r;ÚtorotÚrotdigÚtopadZrotatedr(r(r*ÚrotateYs,    " zDecimal.rotatecCsÀ|dkrtƒ}t|dd�}|j||ƒ}|r.|S|jdkrB|jtƒSd|j|j}d|j|j}|t|ƒkox|knsˆ|jtƒS|j ƒr˜t |ƒSt |j |j |jt|ƒƒ}|j|ƒ}|S)NT)r›r&r,rŸ)rrœrŠrOrdr rAr@rUr…rr6r7r8r¸)r/r‡r0r;ZliminfZlimsupr€r(r(r*Úscalebzs"      zDecimal.scalebcCs|dkrtƒ}t|dd�}|j||ƒ}|r.|S|jdkrB|jtƒS|j t|ƒko^|jknsn|jtƒS|jƒr~t |ƒSt|ƒ}|j }|jt |ƒ}|dkr°d||}n|dkrÆ|| d…}|dkrÜ|d|…}n|d|}||j d…}t |j |jdƒ�p d|jƒS)NT)r›r&rQ)rrœrŠrOrdr r@rUr…rr8rfr6r7rg)r/r‡r0r;rerfrgZshiftedr(r(r*rÊ“s2    "  z Decimal.shiftcCs|jt|ƒffS)N)Ú __class__r`)r/r(r(r*Ú __reduce__ºszDecimal.__reduce__cCst|ƒtkr|S|jt|ƒƒS)N)Útyperrjr`)r/r(r(r*Ú__copy__½s zDecimal.__copy__cCst|ƒtkr|S|jt|ƒƒS)N)rlrrjr`)r/Úmemor(r(r*Ú __deepcopy__Âs zDecimal.__deepcopy__cCsN|dkrtƒ}t||d�}|jrXt|j|ƒ}t|jƒƒ}|ddkrL|d7}t|||ƒS|ddkrvddg|j|d<|ddkr˜t |j|j |j dƒ}|j }|d}|dk �r|ddkrÎ|j |d |ƒ}nF|dd krê|j| |ƒ}n*|dd k�rt|j ƒ|k�r|j ||ƒ}| �rB|j d k�rB|dd k�rB|jd |ƒ}|j t|j ƒ} |ddk�r‚| �r||dk �r|d |} nd } nB|dd k�r–| } n.|dd k�rÄ|j d k�rÀ| dk�rÀ| } nd } | d k�räd} d| |j } nP| t|j ƒk�r|j d| t|j ƒ} d} n"|j d| …�p$d} |j | d…} | | } t|j| | | |ƒS)N)Ú _localeconvrlú%ÚgÚGr,Ú precisionÚeEr.zfF%ZgGr&r¬rQrSiúÿÿÿ)rÚ_parse_format_specifierrPÚ _format_signr7r`r¶Ú _format_alignr°r6r8rOr?r'r¾rfÚ_format_number)r/Z specifierr0rpÚspecr=Úbodyr?rtr²r³rvrwrVr(r(r*Ú __format__ÉsZ           "   zDecimal.__format__)rOr8r7rP)rQN)NN)N)N)N)N)N)N)FN)N)N)N)TN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)NN)N)N)NN)N)NN)NN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)NN)�r2r3r4Ú __slots__r^Ú classmethodrqrƒr…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ãr9r¸rêrërìrîrðrñròróÚdictrærõrör÷rùrrrrr"rôr%r¾r'r(rüÚ to_integralr.r½r©rúrûr�r3r4r/r8r¶r·r9rVr<r=r$r r>rŒr?r‹r@rArErIrrLrMrOrRrWrYrZrXr[r\r_r`rarcrdrhrirÊrkrmror|r(r(r(r*r+s  ( !@  2 4    V   7 ;!  $    K     f  > , Un Y   = "   c * "  I   K   2 3          . * !  'FcCs&tjtƒ}||_||_||_||_|S)N)r]r^rr7r8rOrP)r=Z coefficientrZspecialr/r(r(r*r6s  r6c@s$eZdZdd„Zdd„Zdd„ZdS)rNcCs|jƒ|_dS)N)rHÚ new_context)r/r…r(r(r*Ú__init__9sz_ContextManager.__init__cCstƒ|_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)r2r3r4r†rˆrŒr(r(r(r*rN3srNc @s¨eZdZd¥dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z e Zd¦dd„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„Zdwdx„Z?dydz„Z@d{d|„ZAd}d~„ZBdd€„ZCd�d‚„ZDdƒd„„ZEd…d†„ZFd¨d‡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>yt} Wntk rYnX|dk r*|n| j|_|dk r>|n| j|_|dk rR|n| j|_|dk rf|n| j|_|dk rz|n| j|_|dk rŽ|n| j|_| dkr¦g|_n| |_ˆdkrÂ| j j ƒ|_ n.t ˆt ƒsêt ‡fdd„t ˆDƒƒ|_ nˆ|_ ˆdk�r t jt dƒ|_n0t ˆt ƒ�s4t ‡fdd„t ˆDƒƒ|_nˆ|_dS)Nc3s|]}|t|ˆkƒfVqdS)N)rU)rSrÜ)rr(r*ú nsz#Context.__init__..r&c3s|]}|t|ˆkƒfVqdS)N)rU)rSrÜ)rr(r*r�us)rÚ NameErrorr@r?r#rAr°räÚ_ignored_flagsrrHr_rƒrÚfromkeysr) r/r@r?r#rAr°rärrr�Zdcr()rrr*r†Us.   zContext.__init__cCs”t|tƒstd|ƒ‚|dkr<||kr†td||||fƒ‚nJ|dkrb||kr†td||||fƒ‚n$||ksr||kr†td||||fƒ‚tj|||ƒS)Nz%s must be an integerz-infz%s must be in [%s, %d]. got: %srbz%s must be in [%d, %s]. got: %sz%s must be in [%d, %d]. got %s)r_rUrrrlr]Ú __setattr__)r/ÚnamertZvminZvmaxr(r(r*Ú_set_integer_checkys  zContext._set_integer_checkcCsht|tƒstd|ƒ‚x |D]}|tkrtd|ƒ‚qWx tD]}||kr>td|ƒ‚q>Wtj|||ƒS)Nz%s must be a signal dictz%s is not a valid signal dict)r_rƒrrrÚKeyErrorr]r‘)r/r’r€Úkeyr(r(r*Ú_set_signal_dict‡s    zContext._set_signal_dictcCsä|dkr|j||ddƒS|dkr0|j||ddƒS|dkrH|j||ddƒS|dkr`|j||ddƒS|d krx|j||ddƒS|d kr¢|tkr”td |ƒ‚tj|||ƒS|d ks²|d kr¾|j||ƒS|dkrÔtj|||ƒStd|ƒ‚dS)Nr@r.rbr#z-infr&rAr°rär?z%s: invalid rounding moderrr�z.'decimal.Context' object has no attribute '%s')r“Ú_rounding_modesrrr]r‘r–rL)r/r’rtr(r(r*r‘’s(  zContext.__setattr__cCstd|ƒ‚dS)Nz%s cannot be deleted)rL)r/r’r(r(r*Ú __delattr__«szContext.__delattr__c CsNdd„|jjƒDƒ}dd„|jjƒDƒ}|j|j|j|j|j|j|j ||ffS)NcSsg|]\}}|r|‘qSr(r()rSÚsigrŠr(r(r*rU°sz&Context.__reduce__..cSsg|]\}}|r|‘qSr(r()rSr™rŠr(r(r*rU±s) rÚitemsrrjr@r?r#rAr°rä)r/rrr(r(r*rk¯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)dcSsg|]\}}|r|j‘qSr()r2)rSrrŠr(r(r*rU½sz$Context.__repr__..zflags=[z, ú]cSsg|]\}}|r|j‘qSr()r2)rSr‰rŠr(r(r*rU¿sztraps=[ú))rmÚvarsrršrnr)r/rÜÚnamesr(r(r*rª¶s zContext.__repr__cCsx|jD]}d|j|<qWdS)Nr&)r)r/Úflagr(r(r*rIÃs zContext.clear_flagscCsx|jD]}d|j|<qWdS)Nr&)r)r/rŸr(r(r*Ú clear_trapsÈs zContext.clear_trapsc Cs.t|j|j|j|j|j|j|j|j|j ƒ }|S)N) rr@r?r#rAr°rärrr�)r/Úncr(r(r*r)ÍszContext._shallow_copyc Cs6t|j|j|j|j|j|j|jjƒ|j jƒ|j ƒ }|S)N) rr@r?r#rAr°rärrHrr�)r/r¡r(r(r*rHÔs z Context.copycGsZtj||ƒ}||jkr(|ƒj|f|žŽSd|j|<|j|sN|ƒj|f|žŽS||ƒ‚dS)Nr.)Ú_condition_mapÚgetr�r1rr)r/Z conditionZ explanationr)Úerrorr(r(r*rdÝs    zContext._raise_errorcCs |jtŽS)N)Ú _ignore_flagsr)r/r(r(r*r]ószContext._ignore_all_flagscGs|jt|ƒ|_t|ƒS)N)r�rj)r/rr(r(r*r¥÷szContext._ignore_flagscGs<|rt|dttfƒr|d}x|D]}|jj|ƒq$WdS)Nr&)r_rkrjr�Úremove)r/rrŸr(r(r*Ú _regard_flagsþs zContext._regard_flagscCst|j|jdƒS)Nr.)rUr#r@)r/r(r(r*rÇsz Context.EtinycCst|j|jdƒS)Nr.)rUrAr@)r/r(r(r*rå sz Context.EtopcCs|j}||_|S)N)r?)r/rlr?r(r(r*r*szContext._set_roundingrQcCsjt|tƒr*||jƒksd|kr*|jtdƒSt||d�}|jƒr`t|jƒ|j |j kr`|jtdƒS|j |ƒS)NrRzAtrailing or leading whitespace and underscores are not permitted.)r0zdiagnostic info too long in NaN) r_r`rbrdrrrƒrfr8r@rär¸)r/rCr€r(r(r*Úcreate_decimal#s zContext.create_decimalcCstj|ƒ}|j|ƒS)N)rrqr¸)r/rr€r(r(r*Úcreate_decimal_from_float4s z!Context.create_decimal_from_floatcCst|dd�}|j|d�S)NT)r›)r0)rœr¼)r/rr(r(r*rhFs z Context.abscCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdS)NT)r›)r0zUnable to convert %s to Decimal)rœrÂr•rr)r/rrTrÐr(r(r*Úadd[s  z Context.addcCst|j|ƒƒS)N)r`r¸)r/rr(r(r*Ú_applypszContext._applycCst|tƒstdƒ‚|jƒS)Nz,canonical requires a Decimal as an argument.)r_rrrr3)r/rr(r(r*r3ss zContext.canonicalcCst|dd�}|j||d�S)NT)r›)r0)rœr�)r/rrTr(r(r*r�€s! zContext.comparecCst|dd�}|j||d�S)NT)r›)r0)rœr4)r/rrTr(r(r*r4¤s zContext.compare_signalcCst|dd�}|j|ƒS)NT)r›)rœr/)r/rrTr(r(r*r/Çs zContext.compare_totalcCst|dd�}|j|ƒS)NT)r›)rœr8)r/rrTr(r(r*r8äs zContext.compare_total_magcCst|dd�}|jƒS)NT)r›)rœr¶)r/rr(r(r*r¶ìs zContext.copy_abscCst|dd�}t|ƒS)NT)r›)rœr)r/rr(r(r*Ú copy_decimalùs zContext.copy_decimalcCst|dd�}|jƒS)NT)r›)rœr·)r/rr(r(r*r·s zContext.copy_negatecCst|dd�}|j|ƒS)NT)r›)rœr9)r/rrTr(r(r*r9s zContext.copy_signcCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdS)NT)r›)r0zUnable to convert %s to Decimal)rœrÍr•rr)r/rrTrÐr(r(r*Údivide+s  zContext.dividecCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdS)NT)r›)r0zUnable to convert %s to Decimal)rœrÙr•rr)r/rrTrÐr(r(r*Ú divide_intPs  zContext.divide_intcCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdS)NT)r›)r0zUnable to convert %s to Decimal)rœrÓr•rr)r/rrTrÐr(r(r*rÈgs  zContext.divmodcCst|dd�}|j|d�S)NT)r›)r0)rœrV)r/rr(r(r*rV|s z Context.expcCst|dd�}|j|||d�S)NT)r›)r0)rœrù)r/rrTr,r(r(r*rù”s z Context.fmacCst|tƒstdƒ‚|jƒS)Nz/is_canonical requires a Decimal as an argument.)r_rrrr<)r/rr(r(r*r<«s zContext.is_canonicalcCst|dd�}|jƒS)NT)r›)rœr=)r/rr(r(r*r=¸s zContext.is_finitecCst|dd�}|jƒS)NT)r›)rœr$)r/rr(r(r*r$Îs zContext.is_infinitecCst|dd�}|jƒS)NT)r›)rœr )r/rr(r(r*r Ýs zContext.is_nancCst|dd�}|j|d�S)NT)r›)r0)rœr>)r/rr(r(r*r>ís zContext.is_normalcCst|dd�}|jƒS)NT)r›)rœrŒ)r/rr(r(r*rŒs zContext.is_qnancCst|dd�}|jƒS)NT)r›)rœr?)r/rr(r(r*r?s zContext.is_signedcCst|dd�}|jƒS)NT)r›)rœr‹)r/rr(r(r*r‹$s zContext.is_snancCst|dd�}|j|d�S)NT)r›)r0)rœr@)r/rr(r(r*r@4s zContext.is_subnormalcCst|dd�}|jƒS)NT)r›)rœrA)r/rr(r(r*rAJs zContext.is_zerocCst|dd�}|j|d�S)NT)r›)r0)rœrI)r/rr(r(r*rI[s z Context.lncCst|dd�}|j|d�S)NT)r›)r0)rœrL)r/rr(r(r*rLqs z Context.log10cCst|dd�}|j|d�S)NT)r›)r0)rœrM)r/rr(r(r*rM�s z Context.logbcCst|dd�}|j||d�S)NT)r›)r0)rœrW)r/rrTr(r(r*rW§s zContext.logical_andcCst|dd�}|j|d�S)NT)r›)r0)rœrY)r/rr(r(r*rYÂs zContext.logical_invertcCst|dd�}|j||d�S)NT)r›)r0)rœrZ)r/rrTr(r(r*rZÕs zContext.logical_orcCst|dd�}|j||d�S)NT)r›)r0)rœrX)r/rrTr(r(r*rXðs zContext.logical_xorcCst|dd�}|j||d�S)NT)r›)r0)rœr½)r/rrTr(r(r*r½ s z Context.maxcCst|dd�}|j||d�S)NT)r›)r0)rœr[)r/rrTr(r(r*r[&s zContext.max_magcCst|dd�}|j||d�S)NT)r›)r0)rœr©)r/rrTr(r(r*r©7s z Context.mincCst|dd�}|j||d�S)NT)r›)r0)rœr\)r/rrTr(r(r*r\Rs zContext.min_magcCst|dd�}|j|d�S)NT)r›)r0)rœr¹)r/rr(r(r*Úminuscs z Context.minuscCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdS)NT)r›)r0zUnable to convert %s to Decimal)rœrÆr•rr)r/rrTrÐr(r(r*Úmultiplyts  zContext.multiplycCst|dd�}|j|d�S)NT)r›)r0)rœr_)r/rr(r(r*r_”s zContext.next_minuscCst|dd�}|j|d�S)NT)r›)r0)rœr`)r/rr(r(r*r`¨s zContext.next_pluscCst|dd�}|j||d�S)NT)r›)r0)rœra)r/rrTr(r(r*ra¼s zContext.next_towardcCst|dd�}|j|d�S)NT)r›)r0)rœr")r/rr(r(r*r"ßs zContext.normalizecCst|dd�}|j|d�S)NT)r›)r0)rœrc)r/rr(r(r*rc÷s/ zContext.number_classcCst|dd�}|j|d�S)NT)r›)r0)rœrº)r/rr(r(r*Úplus)s z Context.pluscCs:t|dd�}|j|||d�}|tkr2td|ƒ‚n|SdS)NT)r›)r0zUnable to convert %s to Decimal)rœrr•rr)r/rrTrþrÐr(r(r*Úpower:s I z Context.powercCst|dd�}|j||d�S)NT)r›)r0)rœrô)r/rrTr(r(r*rôŠs7 zContext.quantizecCstdƒS)Nrž)r)r/r(r(r*rdÄsz Context.radixcCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdS)NT)r›)r0zUnable to convert %s to Decimal)rœrÕr•rr)r/rrTrÐr(r(r*rËÌs  zContext.remaindercCst|dd�}|j||d�S)NT)r›)r0)rœrØ)r/rrTr(r(r*rØòs zContext.remainder_nearcCst|dd�}|j||d�S)NT)r›)r0)rœrh)r/rrTr(r(r*rhs zContext.rotatecCst|dd�}|j|ƒS)NT)r›)rœr%)r/rrTr(r(r*r%1s zContext.same_quantumcCst|dd�}|j||d�S)NT)r›)r0)rœri)r/rrTr(r(r*riIs zContext.scalebcCst|dd�}|j||d�S)NT)r›)r0)rœrÊ)r/rrTr(r(r*rÊ\s z Context.shiftcCst|dd�}|j|d�S)NT)r›)r0)rœr.)r/rr(r(r*r.zs z Context.sqrtcCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdS)NT)r›)r0zUnable to convert %s to Decimal)rœrÃr•rr)r/rrTrÐr(r(r*Úsubtractšs  zContext.subtractcCst|dd�}|j|d�S)NT)r›)r0)rœrµ)r/rr(r(r*rµ±s zContext.to_eng_stringcCst|dd�}|j|d�S)NT)r›)r0)rœr´)r/rr(r(r*Ú to_sci_stringÍs zContext.to_sci_stringcCst|dd�}|j|d�S)NT)r›)r0)rœr()r/rr(r(r*r(Õs zContext.to_integral_exactcCst|dd�}|j|d�S)NT)r›)r0)rœrü)r/rr(r(r*rüós zContext.to_integral_value) NNNNNNNNN)N)rQ)N)Wr2r3r4r†r“r–r‘r˜rkrªrIr r)rHrmrdr]r¥r§r¦rÇrår*r¨r©rhrªr«r3r�r4r/r8r¶r¬r·r9r­r®rÈrVrùr<r=r$r r>rŒr?r‹r@rArIrLrMrWrYrZrXr½r[r©r\r¯r°r_r`rar"rcr±r²rôrdrËrØrhr%rirÊr.r³rµr´r(rür„r(r(r(r*rBs¬ "     $#   %  #2 P:&" c@s&eZdZd Zd dd„Zdd„ZeZdS) rir=rUrVNcCsf|dkrd|_d|_d|_nFt|tƒrD|j|_t|jƒ|_|j|_n|d|_|d|_|d|_dS)Nr&r.r,)r=rUrVr_rr7r8rO)r/rtr(r(r*r†s     z_WorkRep.__init__cCsd|j|j|jfS)Nz (%r, %r, %r))r=rUrV)r/r(r(r*rª(sz_WorkRep.__repr__)r=rUrV)N)r2r3r4r}r†rªr´r(r(r(r*ris ricCsš|j|jkr|}|}n|}|}tt|jƒƒ}tt|jƒƒ}|jtd||dƒ}||jd|krpd|_||_|jd|j|j9_|j|_||fS)Nr.r,ržr„)rVrfr`rUr©)rÀrÁr@Ztmpr‡Ztmp_lenZ other_lenrVr(r(r*r¿/s r¿cCsb|dkr dS|dkr |d|Stt|ƒƒ}t|ƒt|jdƒƒ}|| krPdS|d| SdS)Nr&ržrQ)r`rhrfÚrstrip)r5r®Zstr_nZval_nr(r(r*r Os   r cCsF|dks|dkrtdƒ‚d}x$||kr@||| |d?}}qW|S)Nr&z3Both arguments to _sqrt_nearest should be positive.r.)rl)r5rrTr(r(r*Ú _sqrt_nearestds  r¶cCs2d|>||?}}|d||d@|d@|kS)Nr.r,r()r rÊrTrÏr(r(r*Ú_rshift_nearestssr·cCs&t||ƒ\}}|d||d@|kS)Nr,r.)rÈ)rrTrÏrÐr(r(r*Ú _div_nearest{sr¸rc Csî||}d}xn||kr*t|ƒ||>|ksF||krzt|ƒ||?|krzt||d>|t||t||ƒ|ƒƒ}|d7}qWtdtt|ƒƒd|ƒ }t||ƒ}t||ƒ}x0t|dddƒD]}t||ƒt|||ƒ}qÀWt|||ƒS)Nr&r.ržr[iöÿÿÿr„)rhr¸r¶r·rUrfr`rý) r ÚMÚLrÚRÚTZyshiftÚwr�r(r(r*Ú_ilogƒs    r¾c Cs¶|d7}tt|ƒƒ}||||dk}|dkr”d|}|||}|dkrZ|d|9}nt|d| ƒ}t||ƒ}t|ƒ}t|||ƒ}||} nd}t|d| ƒ} t| |dƒS)Nr,r.r&ržr)rfr`r¸r¾Ú _log10_digits) r,r®r r-rr¹r�Úlog_dZlog_10Z log_tenpowerr(r(r*rK³s     rKc CsÎ|d7}tt|ƒƒ}||||dk}|dkrr|||}|dkrR|d|9}nt|d| ƒ}t|d|ƒ}nd}|r¼ttt|ƒƒƒd}||dkr¶t|t||ƒd|ƒ}qÀd}nd}t||dƒS)Nr,r.r&ržr)rfr`r¸r¾rhr¿) r,r®r r-rr�rÀrZ f_log_tenr(r(r*rHÕs"   rHc@seZdZdd„Zdd„ZdS)Ú _Log10MemoizecCs d|_dS)NZ/23025850929940456840179914546843642076011014886)rx)r/r(r(r*r†sz_Log10Memoize.__init__cCsš|dkrtdƒ‚|t|jƒkr„d}xLd||d}tttd||ƒdƒƒ}|| d…d|krdP|d7}q$W|jdƒdd …|_t|jd|d…ƒS) Nr&zp should be nonnegativer[ržr,rrQr.r„)rlrfrxr`r¸r¾rµrU)r/r rr¹rxr(r(r*Ú getdigitss  z_Log10Memoize.getdigitsN)r2r3r4r†rÂr(r(r(r*rÁsrÁc Cs°t||>|ƒ}tdtt|ƒƒd|ƒ }t||ƒ}||>}x.t|dddƒD]}t|||||ƒ}qRWx6t|ddd ƒD]"}||d>}t||||ƒ}q‚W||S) Nržr[r.r&r,iöÿÿÿr„r„r„)r rUrfr`r¸rý) r r¹rºr»r¼rZMshiftrr�r(r(r*Ú_iexp&s  rÃc Cs–|d7}td|tt|ƒƒdƒ}||}||}|dkrH|d|}n|d| }t|t|ƒƒ\}}t|d|ƒ}tt|d|ƒdƒ||dfS)Nr,r&r.ržièr[)r½rfr`rÈr¿r¸rÃ) r,r®r rrÏrÊZcshiftZquotrr(r(r*r:Ksr:c Csèttt|ƒƒƒ|}t||||dƒ}||}|dkrJ||d|}nt||d| ƒ}|dkr´tt|ƒƒ|dk|dkkržd|ddd|} } qàd|d| } } n,t||d |dƒ\} } t| dƒ} | d7} | | fS)Nr.r&rž)rfr`rhrHr¸r:) rrrrr rTZlxcrÊZpcrÉrVr(r(r*ros rréFé5é(érBéržrz) rÅÚ2Ú3Ú4Ú5Ú6Ú7Ú8r>cCs0|dkrtdƒ‚t|ƒ}dt|ƒ||dS)Nr&z0The argument to _log10_lb should be nonnegative.r)rlr`rf)r,Z correctionZstr_cr(r(r*r ™sr cCsLt|tƒr|St|tƒr t|ƒS|r8t|tƒr8tj|ƒS|rHtd|ƒ‚tS)NzUnable to convert %s to Decimal)r_rrUrprqrrr•)r‡r›Z allow_floatr(r(r*rœ¤s    rœcCs´t|tƒr||fSt|tjƒrR|jsDt|jtt|j ƒ|j ƒ|j ƒ}|t|j ƒfS|rrt|tj ƒrr|jdkrr|j}t|tƒr¬tƒ}|r’d|jt<n |jtdƒ|tj|ƒfSttfS)Nr&r.z;strict semantics for mixing floats and Decimals are enabled)r_rÚ_numbersZRationalrPr6r7r`rUr8Ú denominatorrOÚ numeratorZComplexràrßrprrrrdrqr•)r/r‡r“r0r(r(r*r”·s$    r”ri?B)r@r?rrrAr#r°rär\)r@r?rra· # 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|ƒ}|dkrtd|ƒ‚|jƒ}|d}|d}|ddk |d<|drv|dk rbtd|ƒ‚|dk rvtd|ƒ‚|p|d|d<|pˆd|d<|d dkr¢d |d <t|d p®d ƒ|d <|d dk rÒt|d ƒ|d <|d dkrþ|ddksö|ddkrþd|d <|ddk�rfd|d<|dk�r&tjƒ}|ddk �r@td|ƒ‚|d|d<|d|d<|d|d<n*|ddk�r|d|d<ddg|d<d|d<|S)NzInvalid format specifier: ÚfillÚalignÚzeropadz7Fill character conflicts with '0' in format specifier: z2Alignment conflicts with '0' in format specifier: ú ú>r=rTÚ minimumwidthrQrtr&rlZgGnr.r5rrÚ thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: ÚgroupingÚ decimal_pointrSr[r­)Ú_parse_format_specifier_regexÚmatchrlÚ groupdictrUÚ_localeÚ localeconv)Ú format_specrpruZ format_dictrÓrÔr(r(r*rvDsN           rvc Cs´|d}|d}||t|ƒt|ƒ}|d}|dkrF|||}nj|dkr\|||}nT|dkrr|||}n>|dkr¨t|ƒd}|d|…||||d…}ntd ƒ‚|S) NrØrÓrÔúus~           &         .  ^  0",# %$+   *      P % )