U e5d:}ã%@s¶dddddddddd d d d d ddddddddddddddddddd d!d"d#d$g%ZeZd%Zd&Zd'Zd(d)lZd(d)lZd(d)l Z zd(d*l m Z e dd+ƒZ Wnek r¬d,d-„Z YnXdZdZdZdZdZdZdZdZd.Zd.Ze jd/krîd0Zd0Zd1Zn d2Zd2Zd3Zeed4ZGd5d„deƒZGd6d„deƒZ Gd7d„deƒZ!Gd8d„de!ƒZ"Gd9d „d ee#ƒZ$Gd:d„de!ƒZ%Gd;d„de!e#ƒZ&Gdd „d eƒZ)Gd?d „d eƒZ*Gd@d „d e'e)ƒZ+GdAd„de'e)e*ƒZ,GdBd„dee-ƒZ.e e$e'e+e)e,e!e*e.g Z/e"e!e%e!e&e!e(e!iZ0eeeeeeeefZ1d(d)l2Z2e2 3dC¡Z4dDd„Z5dEd„Z6[2d”dFd„Z7GdGd„de8ƒZ9d•dIdJ„Z:ej; GdNdO„dOe8ƒZ?d–dPdQ„Z@eAjBZCdRdS„ZDdTdU„ZEdVdW„ZFdXdY„ZGd—d[d\„ZHd]d^„ZId_d`„ZJGdadb„dbe8ƒZKeKƒjLZMd˜dcdd„ZNdedf„ZOdgdh„ZPdidjdkdldmdndodpdqdrœ fdsdt„ZQd™dudv„ZRdšdwdx„ZSe>dyee$e+e!ggdzd{d4d(d|�ZTe>d}ee$e+e!e e,ggd~�ZUe>d}eggd~�ZVd(d)lWZWeW XdeWjYeWjZB¡j[Z\eW Xd€¡j[Z]eW Xd�¡j[Z^eW Xd‚eWjYeWj_B¡Z`[Wz d(d)laZbWnek �rYnXd›dƒd„„Zcd…d†„Zdd‡dˆ„Zedœd‰dŠ„Zfd‹dŒ„Zgd�dŽ„Zhe9d�ƒZie9d�ƒZje9d‘ƒZke9d(ƒZle9d4ƒZme9d’ƒZneiejfZoe jpjqZre jpjsZte jpjuZvewdperd“erƒZx[ 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_THREADSÚHAVE_CONTEXTVARZdecimalz1.70z2.4.2éN)Ú namedtuplezsign digits exponentcGs|S©N©)Úargsr)r)ú"/usr/lib64/python3.8/_pydecimal.pyÚ¤ór,TlÿÿÿÿlÿÇNÎZolüÿÿÿÿÇNÎZoi@üTiÀ«æéc@seZdZdd„ZdS)rcGsdSr(r)©ÚselfÚcontextr*r)r)r+ÚhandleÓszDecimalException.handleN©Ú__name__Ú __module__Ú __qualname__r2r)r)r)r+rÀsc@s eZdZdS)rN©r4r5r6r)r)r)r+r×sc@seZdZdd„ZdS)r cGs,|r(t|dj|djddƒ}| |¡StS)Nr&ÚnT)Ú_dec_from_tripleÚ_signÚ_intÚ_fix_nanÚ_NaN)r0r1r*Úansr)r)r+r2ús zInvalidOperation.handleNr3r)r)r)r+r ãsc@seZdZdd„ZdS)rcGstSr(©r=r/r)r)r+r2szConversionSyntax.handleNr3r)r)r)r+rsc@seZdZdd„ZdS)r cGst|Sr()Ú_SignedInfinity©r0r1Úsignr*r)r)r+r2szDivisionByZero.handleNr3r)r)r)r+r s c@seZdZdd„ZdS)rcGstSr(r?r/r)r)r+r2"szDivisionImpossible.handleNr3r)r)r)r+rsc@seZdZdd„ZdS)rcGstSr(r?r/r)r)r+r2-szDivisionUndefined.handleNr3r)r)r)r+r%sc@s eZdZdS)r Nr7r)r)r)r+r 0sc@seZdZdd„ZdS)rcGstSr(r?r/r)r)r+r2GszInvalidContext.handleNr3r)r)r)r+r<s c@s eZdZdS)r Nr7r)r)r)r+r Jsc@s eZdZdS)r Nr7r)r)r)r+r Vsc@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@rr9ÚprecÚEmaxrrAr)r)r+r2ws"ÿ  ÿ  ÿzOverflow.handleNr3r)r)r)r+rasc@s eZdZdS)rNr7r)r)r)r+r‡sc@s eZdZdS)rNr7r)r)r)r+r–sZdecimal_contextcCs8z t ¡WStk r2tƒ}t |¡|YSXdSr()Ú_current_context_varÚgetÚ LookupErrorrÚset©r1r)r)r+r¼s   cCs,|tttfkr| ¡}| ¡t |¡dSr()rrrÚcopyÚ clear_flagsrGrJrKr)r)r+rÊscCs|dkrtƒ}t|ƒSr()rÚ_ContextManager)Zctxr)r)r+rÓs$c @sÊeZdZdZdñdd„Zedd„ƒZdd „Zd d „Zdòd d „Z dd„Z dd„Z dd„Z dódd„Z dôdd„Zdõdd„Zdödd„Zd÷dd„Zdødd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zdùd)d*„Zdúd+d,„Zdûd-d.„Zdüd/d0„Zdýd2d3„Zdþd4d5„ZeZdÿd6d7„Z�dd8d9„Z�dd:d;„Z e Z!�ddd?„Z#�dd@dA„Z$�ddBdC„Z%�ddDdE„Z&�ddFdG„Z'�ddHdI„Z(�ddJdK„Z)�d dLdM„Z*�d dNdO„Z+dPdQ„Z,dRdS„Z-e-Z.e/dTdU„ƒZ0e/dVdW„ƒZ1dXdY„Z2dZd[„Z3d\d]„Z4d^d_„Z5d`da„Z6dbdc„Z7ddde„Z8dfdg„Z9dhdi„Z:djdk„Z;dldm„Ze6e7e8e9e:e;etƒ}| td¡t |¡}|j|_|j |_ |j |_ |j|_|St d|ƒ‚dS)NÚ_ÚzInvalid literal for Decimal: %rrBú-r.r&ÚintZfracÚexprQFÚdiagÚsignalÚNr8ÚFTéztInvalid tuple size in creation of Decimal from list or tuple. The list or tuple should have exactly three elements.©r&r.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.éé zTThe second value in the tuple must be composed of integers in the range 0 through 9.©r8rYzUThe third value in the tuple must be an integer, or one of the strings 'F', 'n', 'N'.ú;strict semantics for mixing floats and Decimals are enabledzCannot convert %r to Decimal)!ÚobjectÚ__new__Ú isinstanceÚstrÚ_parserÚstripÚreplacerÚ _raise_errorrÚgroupr:rUr;ÚlenrOrPÚlstripÚabsrÚ_WorkReprBrVÚlistÚtupleÚ ValueErrorÚappendÚjoinÚmapÚfloatrÚ from_floatÚ TypeError) ÚclsÚvaluer1r0ÚmÚintpartÚfracpartrVrWÚdigitsZdigitr)r)r+rb s°  ÿ             (      ÿ zDecimal.__new__cCsÌt|tƒr,|dkrdnd}d}tt|ƒƒ}nzt|tƒržt |¡sJt |¡rV|t|ƒƒSt  d|¡dkrld}nd}t|ƒ  ¡\}}|  ¡d}t|d|ƒ}nt dƒ‚t ||| ƒ}|tkrÀ|S||ƒSdS)Nr&r.gð?ézargument must be int or float.)rcrUrdrlrtÚ_mathZisinfZisnanÚreprZcopysignÚas_integer_ratioÚ bit_lengthrvr9r)rwÚfrBÚkÚcoeffr8ÚdÚresultr)r)r+ru s$    zDecimal.from_floatcCs(|jr$|j}|dkrdS|dkr$dSdS)Nr8r.rYr]r&)rPrO)r0rVr)r)r+Ú_isnanÍszDecimal._isnancCs|jdkr|jrdSdSdS)NrZéÿÿÿÿr.r&)rOr:©r0r)r)r+Ú _isinfinityÜs  zDecimal._isinfinitycCs|| ¡}|dkrd}n| ¡}|s&|rx|dkr4tƒ}|dkrJ| td|¡S|dkr`| td|¡S|rn| |¡S| |¡SdS)NFr]ÚsNaNr&)r‡rrhr r<)r0Úotherr1Ú self_is_nanÚ other_is_nanr)r)r+Ú _check_nansés& ÿÿ  zDecimal._check_nanscCsv|dkrtƒ}|js|jrr| ¡r0| td|¡S| ¡rF| td|¡S| ¡r\| td|¡S| ¡rr| td|¡SdS)Nzcomparison involving sNaNzcomparison involving NaNr&)rrPÚis_snanrhr Úis_qnan©r0rŒr1r)r)r+Ú_compare_check_nans s0  þþþþzDecimal._compare_check_nanscCs|jp|jdkS©NrQ©rPr;r‰r)r)r+Ú__bool__*szDecimal.__bool__cCs|js |jr8| ¡}| ¡}||kr(dS||kr4dSdS|sP|sDdSd|j S|s^d|jS|j|jkrndS|j|jkr~dS| ¡}| ¡}||krî|jd|j|j}|jd|j|j}||krÎdS||krâd|j Sd|jSn ||k�rd|jSd|j SdS)Nr&rˆr.rQ)rPrŠr:Úadjustedr;rO)r0rŒZself_infZ other_infÚ self_adjustedZother_adjustedÚ self_paddedZ other_paddedr)r)r+Ú_cmp1s>         z Decimal._cmpcCs<t||dd�\}}|tkr|S| ||¡r.dS| |¡dkS)NT)Ú equality_opFr&)Ú_convert_for_comparisonÚNotImplementedr�ršr’r)r)r+Ú__eq__qs  zDecimal.__eq__cCs<t||ƒ\}}|tkr|S| ||¡}|r.dS| |¡dkS©NFr&©rœr�r“rš©r0rŒr1r>r)r)r+Ú__lt__ys zDecimal.__lt__cCs<t||ƒ\}}|tkr|S| ||¡}|r.dS| |¡dkSrŸr r¡r)r)r+Ú__le__‚s zDecimal.__le__cCs<t||ƒ\}}|tkr|S| ||¡}|r.dS| |¡dkSrŸr r¡r)r)r+Ú__gt__‹s zDecimal.__gt__cCs<t||ƒ\}}|tkr|S| ||¡}|r.dS| |¡dkSrŸr r¡r)r)r+Ú__ge__”s zDecimal.__ge__cCs>t|dd�}|js|r0|jr0| ||¡}|r0|St| |¡ƒS©NT©Úraiseit)Ú_convert_otherrPr�rršr¡r)r)r+Úcompare�s   zDecimal.comparecCs’|jr4| ¡rtdƒ‚n| ¡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ˆéþÿÿÿ) rPr�rvÚis_nanÚ _PyHASH_NANr:Ú _PyHASH_INFrOÚpowÚ_PyHASH_MODULUSÚ _PyHASH_10INVrUr;)r0Zexp_hashZhash_r>r)r)r+Ú__hash__¯s  zDecimal.__hash__cCst|jttt|jƒƒ|jƒSr()rr:rorsrUr;rOr‰r)r)r+Úas_tupleÉszDecimal.as_tuplecCsÔ|jr | ¡rtdƒ‚ntdƒ‚|s(dSt|jƒ}|jdkrR|d|jd}}nn|j }|dkr€|ddkr€|d}|d8}qZ|j }t|| @ ¡d|ƒ}|r´||L}||8}d||>}|j rÌ| }||fS)Nz#cannot convert NaN to integer ratioz(cannot convert Infinity to integer ratior\r&r«r.r}) rPr­rpÚ OverflowErrorrUr;rOÚminr�r:)r0r8r…Zd5Zd2Zshift2r)r)r+r€Ðs,     zDecimal.as_integer_ratiocCs dt|ƒS)Nz Decimal('%s'))rdr‰r)r)r+Ú__repr__szDecimal.__repr__Fc Csbddg|j}|jrL|jdkr&|dS|jdkr>|d|jS|d|jS|jt|jƒ}|jdkrt|d krt|}n6|s~d }n,|jd krš|d d d }n|d d d }|dkrÌd }d d | |j}nL|t|jƒkrø|jd |t|jƒ}d}n |jd|…}d |j|d…}||k�r(d}n*|dk�r8tƒ}ddg|jd||}||||S)NrSrTrZZInfinityr8ÚNaNr‹r&éúÿÿÿr.rQr[Ú.ÚeÚEz%+d)r:rPrOr;rjrÚcapitals) r0Úengr1rBÚ leftdigitsÚdotplacerzr{rVr)r)r+Ú__str__s:     zDecimal.__str__cCs|jd|d�S)NT)r¾r1)rÁ©r0r1r)r)r+Ú to_eng_string;szDecimal.to_eng_stringcCsR|jr|j|d�}|r|S|dkr(tƒ}|s@|jtkr@| ¡}n| ¡}| |¡S©NrK)rPr�rrDrÚcopy_absÚ copy_negateÚ_fix©r0r1r>r)r)r+Ú__neg__Ds  zDecimal.__neg__cCsR|jr|j|d�}|r|S|dkr(tƒ}|s@|jtkr@| ¡}nt|ƒ}| |¡SrÄ)rPr�rrDrrÅrrÇrÈr)r)r+Ú__pos__Zs  zDecimal.__pos__TcCsJ|s | ¡S|jr&|j|d�}|r&|S|jr:|j|d�}n |j|d�}|SrÄ)rÅrPr�r:rÉrÊ)r0Úroundr1r>r)r)r+Ú__abs__os  zDecimal.__abs__c Csht|ƒ}|tkr|S|dkr"tƒ}|js.|jr‚| ||¡}|rB|S| ¡rr|j|jkrj| ¡rj| td¡St |ƒS| ¡r‚t |ƒSt |j |j ƒ}d}|j t kr®|j|jkr®d}|sæ|sæt |j|jƒ}|rÌd}t|d|ƒ}| |¡}|S|�st||j |jdƒ}| ||j ¡}| |¡}|S|�sVt||j |jdƒ}| ||j ¡}| |¡}|St|ƒ}t|ƒ}t|||jƒ\}}tƒ} |j|jk�rú|j|jk�r´t|d|ƒ}| |¡}|S|j|jk�rÌ||}}|jdk�ròd| _|j|j|_|_nd| _n&|jdk�rd| _d\|_|_nd| _|jdk�r<|j|j| _n|j|j| _|j| _t | ƒ}| |¡}|S)Nz -INF + INFr&r.rQ)r&r&)r©r�rrPr�rŠr:rhr rr¶rOrDrr9rÇÚmaxrEÚ_rescalermÚ _normalizerBrUrV) r0rŒr1r>rVZ negativezerorBÚop1Úop2r†r)r)r+Ú__add__…s|              zDecimal.__add__cCsHt|ƒ}|tkr|S|js |jr6|j||d�}|r6|S|j| ¡|d�SrÄ)r©r�rPr�rÒrÆr¡r)r)r+Ú__sub__Ýs zDecimal.__sub__cCs"t|ƒ}|tkr|S|j||d�SrÄ)r©r�rÓr’r)r)r+Ú__rsub__ëszDecimal.__rsub__cCs@t|ƒ}|tkr|S|dkr"tƒ}|j|jA}|js:|jrŽ| ||¡}|rN|S| ¡rn|sf| td¡St |S| ¡rŽ|s†| td¡St |S|j |j }|r¢|s¼t |d|ƒ}|  |¡}|S|j dkrât ||j |ƒ}|  |¡}|S|j dk�r t ||j |ƒ}|  |¡}|St|ƒ}t|ƒ}t |t|j|jƒ|ƒ}|  |¡}|S)Nz (+-)INF * 0z 0 * (+-)INFrQÚ1)r©r�rr:rPr�rŠrhr r@rOr9rÇr;rmrdrU)r0rŒr1Z resultsignr>Z resultexprÐrÑr)r)r+Ú__mul__ósH             zDecimal.__mul__c CsÆt|ƒ}|tkrtS|dkr"tƒ}|j|jA}|js:|jrž| ||¡}|rN|S| ¡rj| ¡rj| td¡S| ¡rzt |S| ¡rž| t d¡t |d|  ¡ƒS|sÀ|s²| t d¡S| td|¡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}n8|j|j} || k�r¬|ddk�r¬|d}|d7}�q€t |t|ƒ|ƒ}| |¡S) Nz(+-)INF/(+-)INFzDivision by infinityrQz0 / 0zx / 0r&r.r«r})r©r�rr:rPr�rŠrhr r@rr9ÚEtinyrr rOrjr;rErmÚdivmodrUrdrÇ) r0rŒr1rBr>rVr„ÚshiftrÐrÑÚ remainderÚ ideal_expr)r)r+Ú __truediv__,sP           zDecimal.__truediv__c Cs|j|jA}| ¡r|j}nt|j|jƒ}| ¡| ¡}|rN| ¡sN|dkrht|ddƒ| ||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| td¡} | | fS)Nr¬rQr&r«z%quotient too large in //, % or divmod)r:rŠrOr¶r—r9rÎrDrErmrVrUrØrdrhr) r0rŒr1rBrÛÚexpdiffrÐrÑÚqÚrr>r)r)r+Ú_dividegs0   ÿ  ÿÿzDecimal._dividecCs"t|ƒ}|tkr|S|j||d�SrÄ)r©r�rÜr’r)r)r+Ú __rtruediv__ˆszDecimal.__rtruediv__cCsÖt|ƒ}|tkr|S|dkr"tƒ}| ||¡}|r:||fS|j|jA}| ¡r~| ¡rj| td¡}||fSt|| td¡fS|s´|sš| t d¡}||fS| t d|¡| td¡fS|  ||¡\}}|  |¡}||fS)Nzdivmod(INF, INF)úINF % xz divmod(0, 0)úx // 0úx % 0) r©r�rr�r:rŠrhr r@rr ràrÇ)r0rŒr1r>rBZquotientrÚr)r)r+Ú __divmod__�s4    ÿ   ÿ zDecimal.__divmod__cCs"t|ƒ}|tkr|S|j||d�SrÄ)r©r�rår’r)r)r+Ú __rdivmod__³szDecimal.__rdivmod__cCsˆt|ƒ}|tkr|S|dkr"tƒ}| ||¡}|r6|S| ¡rJ| td¡S|sj|r^| td¡S| td¡S| ||¡d}|  |¡}|S)Nrâräz0 % 0r.) r©r�rr�rŠrhr rràrÇ)r0rŒr1r>rÚr)r)r+Ú__mod__ºs"     zDecimal.__mod__cCs"t|ƒ}|tkr|S|j||d�SrÄ)r©r�rçr’r)r)r+Ú__rmod__ÕszDecimal.__rmod__c CsÐ|dkrtƒ}t|dd�}| ||¡}|r.|S| ¡rB| td¡S|sb|rV| td¡S| td¡S| ¡r|t|ƒ}| |¡St |j |j ƒ}|s¦t |j d|ƒ}| |¡S|  ¡|  ¡}||jdkrÎ| t¡S|dkrî| ||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˜| t¡S|j } | d k�r¶d| } | } t | t| ƒ|ƒ}| |¡S) NTr§zremainder_near(infinity, x)zremainder_near(x, 0)zremainder_near(0, 0)rQr.r¬r«r]r&)rr©r�rŠrhr rrrÇr¶rOr9r:r—rErrÎrDrmrVrUrØrd) r0rŒr1r>Úideal_exponentrÝrÐrÑrÞrßrBr)r)r+Úremainder_nearÜs`  ÿÿÿ       zDecimal.remainder_nearcCsœt|ƒ}|tkr|S|dkr"tƒ}| ||¡}|r6|S| ¡rb| ¡rR| td¡St|j|jAS|sŒ|r€| t d|j|jA¡S| t d¡S|  ||¡dS)Nz INF // INFrãz0 // 0r&) r©r�rr�rŠrhr r@r:r rràr¡r)r)r+Ú __floordiv__'s&   ÿ zDecimal.__floordiv__cCs"t|ƒ}|tkr|S|j||d�SrÄ)r©r�rër’r)r)r+Ú __rfloordiv__CszDecimal.__rfloordiv__cCs8| ¡r(| ¡rtdƒ‚|jr"dnd}nt|ƒ}t|ƒS)Nz%Cannot convert signaling NaN to floatz-nanÚnan)r‡r�rpr:rdrt©r0Úsr)r)r+Ú __float__Js zDecimal.__float__cCst|jr(| ¡rtdƒ‚n| ¡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«rQ) rPr‡rprŠrµr:rOrUr;rîr)r)r+Ú__int__Ts   zDecimal.__int__cCs|Sr(r)r‰r)r)r+Úrealcsz Decimal.realcCstdƒS©Nr&©rr‰r)r)r+Úimaggsz Decimal.imagcCs|Sr(r)r‰r)r)r+Ú conjugatekszDecimal.conjugatecCs tt|ƒƒSr()Úcomplexrtr‰r)r)r+Ú __complex__nszDecimal.__complex__cCsR|j}|j|j}t|ƒ|krJ|t|ƒ|d… d¡}t|j||jdƒSt|ƒS)NrQT) r;rEÚclamprjrkr9r:rOr)r0r1ZpayloadZmax_payload_lenr)r)r+r<qs   zDecimal._fix_nancCsX|jr | ¡r| |¡St|ƒS| ¡}| ¡}|s€|j|g|j}tt |j |ƒ|ƒ}||j krx|  t ¡t |jd|ƒSt|ƒSt|jƒ|j |j}||krÆ|  td|j¡}|  t¡|  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š|  td|j¡}nt |j| |ƒ}| �r¾|�r¾|  t¡|�rÎ|  t¡| �rÞ|  t¡|  t¡|�sø|  t ¡|S|�r |  t¡|jdk�rP|j |k�rP|  t ¡|jd|j |} t |j| |ƒSt|ƒS)NrQú above Emaxr&rÕr.rˆ)rPr‡r<rr×ÚEtoprFrùr¶rÍrOrhrr9r:rjr;rErr r Ú_pick_rounding_functionrDrdrUrr )r0r1r×rûÚexp_maxZnew_expZexp_minr>Zself_is_subnormalr|Zrounding_methodÚchangedr„r™r)r)r+rÇ}sn                     z Decimal._fixcCst|j|ƒrdSdSdS)Nr&rˆ)Ú _all_zerosr;©r0rEr)r)r+Ú _round_downãs zDecimal._round_downcCs | |¡ Sr()rrr)r)r+Ú _round_upêszDecimal._round_upcCs*|j|dkrdSt|j|ƒr"dSdSdS)NZ56789r.r&rˆ)r;rÿrr)r)r+Ú_round_half_upîs  zDecimal._round_half_upcCst|j|ƒrdS| |¡SdS)Nrˆ©Ú _exact_halfr;rrr)r)r+Ú_round_half_down÷s zDecimal._round_half_downcCs8t|j|ƒr*|dks&|j|ddkr*dS| |¡SdS)Nr&r.Ú02468rˆrrr)r)r+Ú_round_half_evenþs ÿÿzDecimal._round_half_evencCs |jr| |¡S| |¡ SdSr(©r:rrr)r)r+Ú_round_ceilings zDecimal._round_ceilingcCs |js| |¡S| |¡ SdSr(r rr)r)r+Ú _round_floor s zDecimal._round_floorcCs0|r |j|ddkr | |¡S| |¡ SdS)Nr.Z05)r;rrr)r)r+Ú _round_05ups zDecimal._round_05up)rrrrrrrrcCsb|dk r2t|tƒstdƒ‚tdd| ƒ}| |¡S|jrR| ¡rJtdƒ‚ntdƒ‚t|  dt ¡ƒS)Nz+Second argument to round should be integralr&rÕúcannot round a NaNúcannot round an infinity) rcrUrvr9ÚquantizerPr­rprµrÎr)r0r8rVr)r)r+Ú __round__&s/   zDecimal.__round__cCs0|jr | ¡rtdƒ‚ntdƒ‚t| dt¡ƒS©Nr rr&)rPr­rprµrUrÎrr‰r)r)r+Ú __floor__ds  zDecimal.__floor__cCs0|jr | ¡rtdƒ‚ntdƒ‚t| dt¡ƒSr)rPr­rprµrUrÎrr‰r)r)r+Ú__ceil__ss  zDecimal.__ceil__cCst|dd�}t|dd�}|js$|jrÚ|dkr2tƒ}|jdkrJ| td|¡S|jdkrb| td|¡S|jdkrr|}nf|jdkr‚|}nV|jdkr®|sœ| td¡St|j|jA}n*|jdkrØ|sÈ| td¡St|j|jA}n0t|j|jAt t |j ƒt |j ƒƒ|j|jƒ}|  ||¡S) NTr§rYr‹r8rZzINF * 0 in fmaz0 * INF in fma) r©rPrrOrhr r@r:r9rdrUr;rÒ)r0rŒZthirdr1Úproductr)r)r+Úfma‚s<        ÿ ÿ  þz Decimal.fmac CsÒt|ƒ}|tkr|St|ƒ}|tkr(|S|dkr6tƒ}| ¡}| ¡}| ¡}|sZ|sZ|rÂ|dkrp| td|¡S|dkr†| td|¡S|dkrœ| td|¡S|rª| |¡S|r¸| |¡S| |¡S| ¡rÚ| ¡rÚ| ¡sæ| td¡S|dkrú| td¡S|�s | td¡S| ¡|j k�r(| td¡S|�s@|�s@| td¡S|  ¡�rPd}n|j }t t |ƒƒ}t| ¡ƒ}t| ¡ƒ} |j |td |j|ƒ|}t| jƒD]} t|d |ƒ}�q t|| 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‡rhr r<Ú _isintegerr—rEÚ_isevenr:rlrUrmÚto_integral_valuer°rVÚranger9rd) r0rŒÚmodulor1r�rŽZ modulo_is_nanrBÚbaseÚexponentÚir)r)r+Ú _power_modulo®s€ ÿÿÿ   ÿþÿÿÿÿ ÿ    zDecimal._power_modulocCsþt|ƒ}|j|j}}|ddkr4|d}|d7}qt|ƒ}|j|j}}|ddkrh|d}|d7}qJ|dk�r||9}|ddkr˜|d}|d7}qz|dkr¤dS|d|} |jdkrÀ| } | ¡rô|jdkrô|jt|ƒ} t| | |dƒ} nd} tddd| | | ƒS|jdk�r²|d} | dk�r¼|| @|k�rBdSt |ƒd} |dd}|t t |ƒƒk�rpdSt | ||ƒ} t |||ƒ}| dk�s |dk�r¤dS| |k�r²dSd | }nÊ| d k�r‚t |ƒd d} t d | |ƒ\}}|�ròdS|d dk�r|d }| d8} �qò|dd }|t t |ƒƒk�r6dSt | ||ƒ} t |||ƒ}| dk�sf|dk�rjdS| |k�rxdSd | }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| }}|d |d k�r\dk�rtnn|d }|d }�q<|d |d k�r”dk�r¬nn|d }|d }�qt|dk�rX|dk�rÎ||k�rÎdSt ||ƒ\}}|dk�rêdSdt |ƒ | >}t |||dƒ\}}||k�r$�qZ result_signZ multiplierrVZself_adjÚexactZboundr×r)r*r+r,r-r.r/Úextrar„rÝZ newcontextZ exceptionr)r)r+Ú__pow__ðsÌ   ÿ                     " ÿ       zDecimal.__pow__cCs"t|ƒ}|tkr|S|j||d�SrÄ)r©r�r;r’r)r)r+Ú__rpow__È szDecimal.__rpow__cCs¸|dkrtƒ}|jr(|j|d�}|r(|S| |¡}| ¡r>|S|sPt|jddƒS|j| ¡g|j }t |j ƒ}|j }|j |ddkr ||kr |d7}|d8}qtt|j|j d|…|ƒS)NrKrQr&r.) rrPr�rÇrŠr9r:rFrûrùrjr;rO)r0r1r>ÚduprýÚendrVr)r)r+Ú normalizeÏ s$    zDecimal.normalizecCs¦t|dd�}|dkrtƒ}|dkr(|j}|js4|jr|| ||¡}|rH|S| ¡sX| ¡r|| ¡rp| ¡rpt|ƒS| td¡S|  ¡|j kr˜|j ks¦n| td¡S|sÄt |j d|j ƒ}| |¡S| ¡}||j krâ| td¡S||j d|jk�r| td¡S| |j |¡}| ¡|j k�r.| td¡St|jƒ|jk�rL| td¡S|�rl| ¡|jk�rl| t¡|j |j k�r˜||k�rŽ| t¡| t¡| |¡}|S) NTr§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©rrDrPr�rŠrrhr r×rOrFr9r:rÇr—rErÎrjr;ÚEminr r r )r0rVrDr1r>r˜r)r)r+rè s`   ÿÿ  ÿÿÿÿ     zDecimal.quantizecCsDt|dd�}|js|jr8| ¡r(| ¡p6| ¡o6| ¡S|j|jkSr¦)r©rPr­Ú is_infiniterOr’r)r)r+Ú same_quantum% 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.) rPrr9r:rOr;rjrürdrU)r0rVrDr|Z this_functionrþr„r)r)r+rÎ4 s&  ÿ  zDecimal._rescalecCsf|dkrtdƒ‚|js|s"t|ƒS| | ¡d||¡}| ¡| ¡krb| | ¡d||¡}|S)Nr&z'argument should be at least 1 in _roundr.)rprPrrÎr—)r0ÚplacesrDr>r)r)r+Ú_roundV s  zDecimal._roundcCsŽ|jr"|j|d�}|r|St|ƒS|jdkr4t|ƒS|sFt|jddƒS|dkrTtƒ}|dkrb|j}| d|¡}||kr€|  t ¡|  t ¡|S)NrKr&rQ) rPr�rrOr9r:rrDrÎrhr r ©r0rDr1r>r)r)r+Úto_integral_exactm s$      zDecimal.to_integral_exactcCs`|dkrtƒ}|dkr|j}|jr>|j|d�}|r6|St|ƒS|jdkrPt|ƒS| d|¡SdS)NrKr&)rrDrPr�rrOrÎrEr)r)r+rŠ s  zDecimal.to_integral_valuecCsÞ|dkrtƒ}|jrB|j|d�}|r(|S| ¡rB|jdkrBt|ƒS|sdt|jd|jdƒ}| |¡S|jdkrz|  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|} || } | | k�r:�qJn | | d?} �q"| �oZ| | |k} | �r’|dk�rz| d|} n| d| 9} ||7}n| d dk�r¨| d7} tdt| ƒ|ƒ}| ¡}| t¡} | |¡}| |_|S) NrKr&rQr]r.zsqrt(-x), x > 0r«r%Tr})rrPr�rŠr:rr9rOrÇrhr rErmrVrUrjr;rØrdÚ _shallow_copyÚ _set_roundingrrD)r0r1r>rEÚopr»ÚcÚlrÙr9rÚr8rÞrDr)r)r+Úsqrt� s^              z Decimal.sqrtcCs¶t|dd�}|dkrtƒ}|js&|jr~| ¡}| ¡}|s>|r~|dkrX|dkrX| |¡S|dkrr|dkrr| |¡S| ||¡S| |¡}|dkrš| |¡}|dkr¨|}n|}| |¡S©NTr§r.r&rˆ©r©rrPr‡rÇr�ršÚ compare_total©r0rŒr1ZsnZonrJr>r)r)r+rÍ s&       z Decimal.maxcCs¶t|dd�}|dkrtƒ}|js&|jr~| ¡}| ¡}|s>|r~|dkrX|dkrX| |¡S|dkrr|dkrr| |¡S| ||¡S| |¡}|dkrš| |¡}|dkr¨|}n|}| |¡SrMrNrPr)r)r+r¶* s&       z Decimal.mincCs8|jr dS|jdkrdS|j|jd…}|dt|ƒkS)NFr&TrQ)rPrOr;rj)r0Úrestr)r)r+rL s  zDecimal._isintegercCs&|r|jdkrdS|jd|jdkS)Nr&Trˆr)rOr;r‰r)r)r+rU szDecimal._isevencCs2z|jt|jƒdWStk r,YdSXdS)Nr.r&)rOrjr;rvr‰r)r)r+r—[ szDecimal.adjustedcCs|Sr(r)r‰r)r)r+Ú canonicalc szDecimal.canonicalcCs.t|dd�}| ||¡}|r |S|j||d�S©NTr§rK)r©r“rªr¡r)r)r+Úcompare_signalk s   zDecimal.compare_signalcCs`t|dd�}|jr|jstS|js,|jr,tS|j}| ¡}| ¡}|sL|�r||kr t|jƒ|jf}t|jƒ|jf}||krˆ|r„tStS||krœ|r˜tStStS|rÖ|dkr°tS|dkr¼tS|dkrÈtS|dkrÔtSn2|dkrâtS|dkrîtS|dkrútS|dk�rtS||k�rtS||k�r$tS|j|jk�r@|�rr)ÚadjrIrJr»r:r„rVrDr)r)r+rVÜ sH   $(  "   z Decimal.expcCsdS)NTr)r‰r)r)r+Ú is_canonical' szDecimal.is_canonicalcCs|j Sr()rPr‰r)r)r+Ú is_finite/ szDecimal.is_finitecCs |jdkS)NrZ©rOr‰r)r)r+rA7 szDecimal.is_infinitecCs |jdkS)Nr_r^r‰r)r)r+r­; szDecimal.is_nancCs*|js |sdS|dkrtƒ}|j| ¡kS©NF)rPrr@r—rÂr)r)r+Ú is_normal? s  zDecimal.is_normalcCs |jdkS)Nr8r^r‰r)r)r+r‘G szDecimal.is_qnancCs |jdkS©Nr.)r:r‰r)r)r+Ú is_signedK szDecimal.is_signedcCs |jdkS)NrYr^r‰r)r)r+r�O szDecimal.is_snancCs*|js |sdS|dkrtƒ}| ¡|jkSr_)rPrr—r@rÂr)r)r+Ú is_subnormalS s  zDecimal.is_subnormalcCs|j o|jdkSr”r•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&©rOrjr;rdrmrUrV©r0r[rIrJr»ÚnumZdenr)r)r+Ú _ln_exp_bound_ szDecimal._ln_exp_boundc Cs|dkrtƒ}|j|d�}|r"|S|s*tS| ¡dkr:tS|tkrFtS|jdkr\| t d¡St |ƒ}|j |j }}|j }|| ¡d}t|||ƒ}|ddttt|ƒƒƒ|drºqÄ|d7}qˆtt |dkƒtt|ƒƒ| ƒ}| ¡}| t¡} | |¡}| |_|S) NrKr.zln of a negative valuer]r}r«r[r&)rr�Ú_NegativeInfinityrŠÚ _Infinityr3rVr:rhr rmrUrVrEriÚ_dlogrjrdrlr9rGrHrrÇrD© r0r1r>rIrJr»r)rCr„rDr)r)r+Úlnx 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&r«éçr]Z231rfrgr)r)r+r4ª s  zDecimal._log10_exp_boundc CsF|dkrtƒ}|j|d�}|r"|S|s*tS| ¡dkr:tS|jdkrP| td¡S|jddkr˜|jdd…dt |jƒdkr˜t |j t |jƒdƒ}nˆt |ƒ}|j |j}}|j}|| ¡d}t|||ƒ}|dd t tt|ƒƒƒ|drø�q|d 7}qÄtt |dkƒtt|ƒƒ| ƒ}| ¡}| t¡} | |¡}| |_|S) NrKr.zlog10 of a negative valuer&rÕrQr]r}r«r[)rr�rjrŠrkr:rhr r;rjrrOrmrUrVrEr4Ú_dlog10rdrlr9rGrHrrÇrDrmr)r)r+Úlog10È s:   ÿ. $   z Decimal.log10cCsV|j|d�}|r|S|dkr"tƒ}| ¡r.tS|s@| tdd¡St| ¡ƒ}| |¡S)NrKzlogb(0)r.) r�rrŠrkrhr rr—rÇrÈr)r)r+Úlogbû s  z Decimal.logbcCs6|jdks|jdkrdS|jD]}|dkrdSqdS)Nr&FZ01T)r:rOr;)r0Údigr)r)r+Ú _islogical s  zDecimal._islogicalcCs€|jt|ƒ}|dkr$d||}n|dkr<||j d…}|jt|ƒ}|dkr`d||}n|dkrx||j d…}||fS)Nr&rQ)rErj)r0r1ÚopaÚopbZdifr)r)r+Ú _fill_logical' szDecimal._fill_logicalcCsz|dkrtƒ}t|dd�}| ¡r*| ¡s4| t¡S| ||j|j¡\}}d dd„t||ƒDƒ¡}t d|  d¡ptddƒS)NTr§rScSs$g|]\}}tt|ƒt|ƒ@ƒ‘qSr)©rdrU©Ú.0r1Úbr)r)r+Ú B sz'Decimal.logical_and..r&rQ© rr©rtrhr rwr;rrÚzipr9rk©r0rŒr1rurvr†r)r)r+Ú logical_and4 s  zDecimal.logical_andcCs(|dkrtƒ}| tdd|jdƒ|¡S)Nr&rÕ)rÚ logical_xorr9rErÂr)r)r+Úlogical_invertE s ÿzDecimal.logical_invertcCsz|dkrtƒ}t|dd�}| ¡r*| ¡s4| t¡S| ||j|j¡\}}d dd„t||ƒDƒ¡}t d|  d¡ptddƒS)NTr§rScSs$g|]\}}tt|ƒt|ƒBƒ‘qSr)rxryr)r)r+r|Z sz&Decimal.logical_or..r&rQr}rr)r)r+Ú logical_orL s  zDecimal.logical_orcCsz|dkrtƒ}t|dd�}| ¡r*| ¡s4| t¡S| ||j|j¡\}}d dd„t||ƒDƒ¡}t d|  d¡ptddƒS)NTr§rScSs$g|]\}}tt|ƒt|ƒAƒ‘qSr)rxryr)r)r+r|k sz'Decimal.logical_xor..r&rQr}rr)r)r+r�] s  zDecimal.logical_xorcCs¾t|dd�}|dkrtƒ}|js&|jr~| ¡}| ¡}|s>|r~|dkrX|dkrX| |¡S|dkrr|dkrr| |¡S| ||¡S| ¡ | ¡¡}|dkr¢| |¡}|dkr°|}n|}| |¡SrM© r©rrPr‡rÇr�rÅršrOrPr)r)r+Úmax_magn s&      zDecimal.max_magcCs¾t|dd�}|dkrtƒ}|js&|jr~| ¡}| ¡}|s>|r~|dkrX|dkrX| |¡S|dkrr|dkrr| |¡S| ||¡S| ¡ | ¡¡}|dkr¢| |¡}|dkr°|}n|}| |¡SrMr„rPr)r)r+Úmin_magŒ s&      zDecimal.min_magcCs |dkrtƒ}|j|d�}|r"|S| ¡dkr2tS| ¡dkrTtdd|j| ¡ƒS| ¡}| t ¡|  ¡|  |¡}||kr„|S|  tdd|  ¡dƒ|¡S)NrKrˆr.r&rCrÕ)rr�rŠrjr9rErûrLrHrÚ_ignore_all_flagsrÇrÓrשr0r1r>Znew_selfr)r)r+Ú next_minusª s$     ÿzDecimal.next_minuscCs |dkrtƒ}|j|d�}|r"|S| ¡dkr2tS| ¡dkrTtdd|j| ¡ƒS| ¡}| t ¡|  ¡|  |¡}||kr„|S|  tdd|  ¡dƒ|¡S)NrKr.rˆrCr&rÕ)rr�rŠrkr9rErûrLrHrr‡rÇrÒr×rˆr)r)r+Ú next_plusÁ s$     ÿzDecimal.next_pluscCsÞt|dd�}|dkrtƒ}| ||¡}|r.|S| |¡}|dkrJ| |¡S|dkr^| |¡}n | |¡}| ¡r–| t d|j ¡| t ¡| t ¡nD|  ¡|jkrÚ| t¡| t¡| t ¡| t ¡|sÚ| t¡|S)NTr§r&rˆz Infinite result from next_toward)r©rr�ršrYrŠr‰rŠrhrr:r r r—r@rr r)r0rŒr1r>Z comparisonr)r)r+Ú next_towardØ s6      þ       zDecimal.next_towardcCsˆ| ¡r dS| ¡rdS| ¡}|dkr,dS|dkr8dS| ¡rN|jrJdSdS|dkr\tƒ}|j|d �rv|jrrd Sd S|jr€d Sd SdS)Nr‹r¸r.z +Infinityrˆz -Infinityz-Zeroz+ZerorKz -Subnormalz +Subnormalz-Normalz+Normal)r�r‘rŠrdr:rrc)r0r1Úinfr)r)r+Ú number_classs, zDecimal.number_classcCstdƒS©Nr«rôr‰r)r)r+Úradix0sz Decimal.radixcCsö|dkrtƒ}t|dd�}| ||¡}|r.|S|jdkrB| t¡S|j t|ƒkr`|jksln| t¡S| ¡r|t |ƒSt|ƒ}|j }|jt |ƒ}|dkr®d||}n|dkrÄ|| d…}||d…|d|…}t |j | d¡pîd|jƒS©NTr§r&rQ©rr©r�rOrhr rErUrŠrr;rjr9r:rk)r0rŒr1r>ÚtorotÚrotdigÚtopadZrotatedr)r)r+Úrotate4s0       ÿzDecimal.rotatecCs¾|dkrtƒ}t|dd�}| ||¡}|r.|S|jdkrB| t¡Sd|j|j}d|j|j}|t|ƒkrz|ks†n| t¡S|  ¡r–t |ƒSt |j |j |jt|ƒƒ}| |¡}|S)NTr§r&r¬r])rr©r�rOrhr rFrErUrŠrr9r:r;rÇ)r0rŒr1r>ZliminfZlimsupr…r)r)r+ÚscalebUs"      zDecimal.scalebcCs|dkrtƒ}t|dd�}| ||¡}|r.|S|jdkrB| t¡S|j t|ƒkr`|jksln| t¡S| ¡r|t |ƒSt|ƒ}|j }|jt |ƒ}|dkr®d||}n|dkrÄ|| d…}|dkrÚ|d|…}n|d|}||j d…}t |j | d¡�p d|jƒSr�r‘)r0rŒr1r>r’r“r”Zshiftedr)r)r+rÙns6       ÿz Decimal.shiftcCs|jt|ƒffSr()Ú __class__rdr‰r)r)r+Ú __reduce__•szDecimal.__reduce__cCst|ƒtkr|S| t|ƒ¡Sr(©Útyperr—rdr‰r)r)r+Ú__copy__˜s zDecimal.__copy__cCst|ƒtkr|S| t|ƒ¡Sr(r™)r0Zmemor)r)r+Ú __deepcopy__�s zDecimal.__deepcopy__cCsJ|dkrtƒ}t||d�}|jrXt|j|ƒ}t| ¡ƒ}|ddkrL|d7}t|||ƒS|ddkrvddg|j|d<|ddkr˜t |j|j |j dƒ}|j }|d}|dk �r|ddkrÎ|  |d |¡}nF|dd krê| | |¡}n*|dd k�rt|j ƒ|k�r|  ||¡}|�s@|j d k�r@|dd k�r@| d |¡}|j t|j ƒ} |ddk�r~|�sx|dk �rxd |} nd } nB|dd k�r’| } n.|dd k�rÀ|j d k�r¼| d k�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)Ú _localeconvršú%ÚgÚGr]Ú precisionÚeEr.zfF%ZgGr&r¹rQrS)rÚ_parse_format_specifierrPÚ _format_signr:rdrÅÚ _format_alignr½r9r;rOrDrDrÎrjÚ_format_number)r0Z specifierr1r�ÚspecrBÚbodyrDr¡r¿rÀrzr{rVr)r)r+Ú __format__¤sZ               zDecimal.__format__)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)�r4r5r6Ú __slots__rbÚ classmethodrur‡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__Úpropertyròrõrörør<rÇrrrrrr r r Údictrürrrrrr2r;r<r?rrBrÎrDrFrÚ to_integralrLrÍr¶rrr—rRrTrOrXrÅrÆrYrVr\r]rAr­r`r‘rbr�rcrdrirnr4rqrrrtrwr€r‚rƒr�r…r†r‰rŠr‹r�r�r•r–rÙr˜r›rœr©r)r)r)r+rs  , !@  2 4    V   7 ;!  $    K       f ø > , Un Y   = "   c * "  I   K   2 3          . * !  'FcCs&t t¡}||_||_||_||_|Sr()rarbrr:r;rOrP)rBZ coefficientrZspecialr0r)r)r+r9ös  r9c@s$eZdZdd„Zdd„Zdd„ZdS)rNcCs| ¡|_dSr()rLÚ new_context)r0r²r)r)r+Ú__init__sz_ContextManager.__init__cCstƒ|_t|jƒ|jSr()rÚ saved_contextrr²r‰r)r)r+Ú __enter__s z_ContextManager.__enter__cCst|jƒdSr()rr´)r0ÚtÚvÚtbr)r)r+Ú__exit__sz_ContextManager.__exit__N)r4r5r6r³rµr¹r)r)r)r+rNsrNc @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>zt} 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   ¡|_ n.t ˆt ƒsêt ‡fdd„t ˆDƒƒ|_ nˆ|_ ˆdk�r t  t d¡|_n0t ˆt ƒ�s4t ‡fdd„t ˆDƒƒ|_nˆ|_dS)Nc3s|]}|t|ˆkƒfVqdSr(©rU©rzrï©r7r)r+Ú Isz#Context.__init__..r&c3s|]}|t|ˆkƒfVqdSr(rºr»©r8r)r+r½Ps)rÚ NameErrorrErDr@rFr½rùÚ_ignored_flagsr7rLrcr°r6Úfromkeysr8) r0rErDr@rFr½rùr8r7rÀZdcr))r8r7r+r³0s.   zContext.__init__cCs”t|tƒstd|ƒ‚|dkr<||kr†td||||fƒ‚nJ|dkrb||kr†td||||fƒ‚n$||ksr||kr†td||||fƒ‚t |||¡S)Nz%s must be an integerú-infz%s must be in [%s, %d]. got: %srŒz%s must be in [%d, %s]. got: %sz%s must be in [%d, %d]. got %s)rcrUrvrpraÚ __setattr__)r0ÚnamerxZvminZvmaxr)r)r+Ú_set_integer_checkTs  zContext._set_integer_checkcCs`t|tƒstd|ƒ‚|D]}|tkrtd|ƒ‚qtD]}||kr8td|ƒ‚q8t |||¡S)Nz%s must be a signal dictz%s is not a valid signal dict)rcr°rvr6ÚKeyErrorrarÃ)r0rÄr…Úkeyr)r)r+Ú_set_signal_dictbs  zContext._set_signal_dictcCsä|dkr| ||dd¡S|dkr0| ||dd¡S|dkrH| ||dd¡S|dkr`| ||dd¡S|d krx| ||dd¡S|d kr¢|tkr”td |ƒ‚t |||¡S|d ks²|d kr¾| ||¡S|dkrÔt |||¡Std|ƒ‚dS)NrEr.rŒr@rÂr&rFr½rùrDz%s: invalid rounding moder8r7rÀz.'decimal.Context' object has no attribute '%s')rÅÚ_rounding_modesrvrarÃrÈÚAttributeError)r0rÄrxr)r)r+rÃms*  ÿzContext.__setattr__cCstd|ƒ‚dS)Nz%s cannot be deleted)rÊ)r0rÄr)r)r+Ú __delattr__†szContext.__delattr__c CsNdd„|j ¡Dƒ}dd„|j ¡Dƒ}|j|j|j|j|j|j|j ||ffS)NcSsg|]\}}|r|‘qSr)r)©rzZsigr·r)r)r+r|‹sz&Context.__reduce__..cSsg|]\}}|r|‘qSr)r)rÌr)r)r+r|Œs) r8Úitemsr7r—rErDr@rFr½rù)r0r8r7r)r)r+r˜ŠsÿÿzContext.__reduce__cCs|g}| dt|ƒ¡dd„|j ¡Dƒ}| dd |¡d¡dd„|j ¡Dƒ}| dd |¡d¡d |¡d S) NzrContext(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d, clamp=%(clamp)dcSsg|]\}}|r|j‘qSr)©r4)rzr‚r·r)r)r+r|˜sz$Context.__repr__..zflags=[z, ú]cSsg|]\}}|r|j‘qSr)rÎ)rzr¶r·r)r)r+r|šsztraps=[ú))rqÚvarsr8rÍrrr7)r0rïÚnamesr)r)r+r·‘sýzContext.__repr__cCs|jD]}d|j|<qdSrór¾©r0Úflagr)r)r+rMžs zContext.clear_flagscCs|jD]}d|j|<qdSrór¼rÓr)r)r+Ú clear_traps£s zContext.clear_trapsc Cs.t|j|j|j|j|j|j|j|j|j ƒ }|Sr() rrErDr@rFr½rùr8r7rÀ©r0Zncr)r)r+rG¨sþzContext._shallow_copyc Cs6t|j|j|j|j|j|j|j ¡|j  ¡|j ƒ }|Sr() rrErDr@rFr½rùr8rLr7rÀrÖr)r)r+rL¯sýz Context.copycGsZt ||¡}||jkr(|ƒj|f|žŽSd|j|<|j|sN|ƒj|f|žŽS||ƒ‚dSra)Ú_condition_maprHrÀr2r8r7)r0Z conditionZ explanationr*Úerrorr)r)r+rh¸s    zContext._raise_errorcCs |jtŽSr()Ú _ignore_flagsr6r‰r)r)r+r‡ÎszContext._ignore_all_flagscGs|jt|ƒ|_t|ƒSr()rÀrn)r0r8r)r)r+rÙÒszContext._ignore_flagscGs8|rt|dttfƒr|d}|D]}|j |¡q"dSró)rcrornrÀÚremove)r0r8rÔr)r)r+Ú _regard_flagsÙszContext._regard_flagscCst|j|jdƒSra)rUr@rEr‰r)r)r+r×ãsz Context.EtinycCst|j|jdƒSra)rUrFrEr‰r)r)r+rûçsz Context.EtopcCs|j}||_|Sr()rD)r0ršrDr)r)r+rHëszContext._set_roundingrQcCsjt|tƒr*|| ¡ksd|kr*| td¡St||d�}| ¡r`t|jƒ|j |j kr`| td¡S|  |¡S)NrRzAtrailing or leading whitespace and underscores are not permitted.rKzdiagnostic info too long in NaN) rcrdrfrhrrr‡rjr;rErùrÇ)r0rhr…r)r)r+Úcreate_decimalþsÿ ÿzContext.create_decimalcCst |¡}| |¡Sr()rrurÇ)r0r‚r…r)r)r+Úcreate_decimal_from_floats z!Context.create_decimal_from_floatcCst|dd�}|j|d�SrS)r©rÌ©r0r1r)r)r+rl!s z Context.abscCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdS©NTr§rKúUnable to convert %s to Decimal)r©rÒr�rv©r0r1r{rßr)r)r+Úadd6s  z Context.addcCst| |¡ƒSr()rdrÇrÞr)r)r+Ú_applyKszContext._applycCst|tƒstdƒ‚| ¡S)Nz,canonical requires a Decimal as an argument.)rcrrvrRrÞr)r)r+rRNs zContext.canonicalcCst|dd�}|j||d�SrS)r©rª©r0r1r{r)r)r+rª[s! zContext.comparecCst|dd�}|j||d�SrS)r©rTrär)r)r+rTs zContext.compare_signalcCst|dd�}| |¡Sr¦)r©rOrär)r)r+rO¢s zContext.compare_totalcCst|dd�}| |¡Sr¦)r©rXrär)r)r+rX¿s zContext.compare_total_magcCst|dd�}| ¡Sr¦)r©rÅrÞr)r)r+rÅÇs zContext.copy_abscCst|dd�}t|ƒSr¦)r©rrÞr)r)r+Ú copy_decimalÔs zContext.copy_decimalcCst|dd�}| ¡Sr¦)r©rÆrÞr)r)r+rÆás zContext.copy_negatecCst|dd�}| |¡Sr¦)r©rYrär)r)r+rYîs zContext.copy_signcCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdSrß)r©rÜr�rvrár)r)r+Údivides  zContext.dividecCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdSrß)r©rër�rvrár)r)r+Ú divide_int+s  zContext.divide_intcCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdSrß)r©rår�rvrár)r)r+rØBs  zContext.divmodcCst|dd�}|j|d�SrS)r©rVrÞr)r)r+rVWs z Context.expcCst|dd�}|j|||d�SrS)r©r)r0r1r{rJr)r)r+ros z Context.fmacCst|tƒstdƒ‚| ¡S)Nz/is_canonical requires a Decimal as an argument.)rcrrvr\rÞr)r)r+r\†s zContext.is_canonicalcCst|dd�}| ¡Sr¦)r©r]rÞr)r)r+r]“s zContext.is_finitecCst|dd�}| ¡Sr¦)r©rArÞr)r)r+rA©s zContext.is_infinitecCst|dd�}| ¡Sr¦)r©r­rÞr)r)r+r­¸s zContext.is_nancCst|dd�}|j|d�SrS)r©r`rÞr)r)r+r`Ès zContext.is_normalcCst|dd�}| ¡Sr¦)r©r‘rÞr)r)r+r‘ßs zContext.is_qnancCst|dd�}| ¡Sr¦)r©rbrÞr)r)r+rbîs zContext.is_signedcCst|dd�}| ¡Sr¦)r©r�rÞr)r)r+r�ÿs zContext.is_snancCst|dd�}|j|d�SrS)r©rcrÞr)r)r+rcs zContext.is_subnormalcCst|dd�}| ¡Sr¦)r©rdrÞr)r)r+rd%s zContext.is_zerocCst|dd�}|j|d�SrS)r©rnrÞr)r)r+rn6s z Context.lncCst|dd�}|j|d�SrS)r©rqrÞr)r)r+rqLs z Context.log10cCst|dd�}|j|d�SrS)r©rrrÞr)r)r+rrhs z Context.logbcCst|dd�}|j||d�SrS)r©r€rär)r)r+r€‚s zContext.logical_andcCst|dd�}|j|d�SrS)r©r‚rÞr)r)r+r‚�s zContext.logical_invertcCst|dd�}|j||d�SrS)r©rƒrär)r)r+rƒ°s zContext.logical_orcCst|dd�}|j||d�SrS)r©r�rär)r)r+r�Ës zContext.logical_xorcCst|dd�}|j||d�SrS)r©rÍrär)r)r+rÍæs z Context.maxcCst|dd�}|j||d�SrS)r©r…rär)r)r+r…s zContext.max_magcCst|dd�}|j||d�SrS)r©r¶rär)r)r+r¶s z Context.mincCst|dd�}|j||d�SrS)r©r†rär)r)r+r†-s zContext.min_magcCst|dd�}|j|d�SrS)r©rÉrÞr)r)r+Úminus>s z Context.minuscCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdSrß)r©rÖr�rvrár)r)r+ÚmultiplyOs  zContext.multiplycCst|dd�}|j|d�SrS)r©r‰rÞr)r)r+r‰os zContext.next_minuscCst|dd�}|j|d�SrS)r©rŠrÞr)r)r+rŠƒs zContext.next_pluscCst|dd�}|j||d�SrS)r©r‹rär)r)r+r‹—s zContext.next_towardcCst|dd�}|j|d�SrS)r©r?rÞr)r)r+r?ºs zContext.normalizecCst|dd�}|j|d�SrS)r©r�rÞr)r)r+r�Òs/ zContext.number_classcCst|dd�}|j|d�SrS)r©rÊrÞr)r)r+Úpluss z Context.pluscCs:t|dd�}|j|||d�}|tkr2td|ƒ‚n|SdSrß)r©r;r�rv)r0r1r{rrßr)r)r+Úpowers I z Context.powercCst|dd�}|j||d�SrS)r©rrär)r)r+res7 zContext.quantizecCstdƒSrŽrôr‰r)r)r+r�Ÿsz Context.radixcCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdSrß)r©rçr�rvrár)r)r+rÚ§s  zContext.remaindercCst|dd�}|j||d�SrS)r©rêrär)r)r+rêÍs zContext.remainder_nearcCst|dd�}|j||d�SrS)r©r•rär)r)r+r•ïs zContext.rotatecCst|dd�}| |¡Sr¦)r©rBrär)r)r+rB s zContext.same_quantumcCst|dd�}|j||d�SrS)r©r–rär)r)r+r–$s zContext.scalebcCst|dd�}|j||d�SrS)r©rÙrär)r)r+rÙ7s z Context.shiftcCst|dd�}|j|d�SrS)r©rLrÞr)r)r+rLUs z Context.sqrtcCs8t|dd�}|j||d�}|tkr0td|ƒ‚n|SdSrß)r©rÓr�rvrár)r)r+Úsubtractus  zContext.subtractcCst|dd�}|j|d�SrS)r©rÃrÞr)r)r+rÃŒs zContext.to_eng_stringcCst|dd�}|j|d�SrS)r©rÁrÞr)r)r+Ú to_sci_string¨s zContext.to_sci_stringcCst|dd�}|j|d�SrS)r©rFrÞr)r)r+rF°s zContext.to_integral_exactcCst|dd�}|j|d�SrS)r©rrÞr)r)r+rÎs zContext.to_integral_value) NNNNNNNNN)N)rQ)N)Wr4r5r6r³rÅrÈrÃrËr˜r·rMrÕrGrLr›rhr‡rÙrÛr³r×rûrHrÜrÝrlrârãrRrªrTrOrXrÅrårÆrYrærçrØrVrr\r]rAr­r`r‘rbr�rcrdrnrqrrr€r‚rƒr�rÍr…r¶r†rèrér‰rŠr‹r?r�rêrërr�rÚrêr•rBr–rÙrLrìrÃrírFrr±r)r)r)r+rs´þ $     $#   %  #2 P:&" c@s"eZdZdZddd„Zdd„ZdS)rm©rBrUrVNcCsf|dkrd|_d|_d|_nFt|tƒrD|j|_t|jƒ|_|j|_n|d|_|d|_|d|_dS)Nr&r.r])rBrUrVrcrr:r;rO)r0rxr)r)r+r³ôs     z_WorkRep.__init__cCsd|j|j|jfS)Nz (%r, %r, %r)rîr‰r)r)r+r·sz_WorkRep.__repr__)N)r4r5r6rªr³r·r)r)r)r+rmîs rmcCsš|j|jkr|}|}n|}|}tt|jƒƒ}tt|jƒƒ}|jtd||dƒ}||jd|krpd|_||_|jd|j|j9_|j|_||fS)Nrˆr]r.r«)rVrjrdrUr¶)rÐrÑrEZtmprŒZtmp_lenZ other_lenrVr)r)r+rÏs rÏcCsb|dkr dS|dkr |d|Stt|ƒƒ}t|ƒt| d¡ƒ}|| krPdS|d| SdS)Nr&r«rQ)rdrlrjÚrstrip)r8r»Zstr_nZval_nr)r)r+r'(s   r'cCsB|dks|dkrtdƒ‚d}||kr>||| |d?}}q|S)Nr&z3Both arguments to _sqrt_nearest should be positive.r.)rp)r8r1r{r)r)r+Ú _sqrt_nearest=s rðcCs2d|>||?}}|d||d@|d@|kS)Nr.r]r))r*rÙr{rÞr)r)r+Ú_rshift_nearestLsrñcCs&t||ƒ\}}|d||d@|kS)Nr]r.)rØ)r1r{rÞrßr)r)r+Ú _div_nearestTsròr!c Csæ||}d}||kr(t|ƒ||>|ksD||krxt|ƒ||?|krxt||d>|t||t||ƒ|ƒƒ}|d7}q tdtt|ƒƒd|ƒ }t||ƒ}t||ƒ}t|dddƒD]}t||ƒt|||ƒ}qºt|||ƒS)Nr&r.éöÿÿÿr[rˆ)rlròrðrñrUrjrdr) 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%)rjrdròrùÚ _log10_digits) rJr»r)rKr‚rôrƒÚlog_dZlog_10Z log_tenpowerr)r)r+rpŒs     rpc 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ƒSrú)rjrdròrùrlrû) rJr»r)rKr‚rƒrür:Z f_log_tenr)r)r+rl®s"   rlc@seZdZdd„Zdd„ZdS)Ú _Log10MemoizecCs d|_dS)NZ/23025850929940456840179914546843642076011014886)r|r‰r)r)r+r³Þsz_Log10Memoize.__init__cCs–|dkrtdƒ‚|t|jƒkr€d}d||d}tttd||ƒdƒƒ}|| d…d|krbql|d7}q"| d¡dd…|_t|jd|d …ƒS) Nr&zp should be nonnegativer[r«r]r%rQrˆr.)rprjr|rdròrùrïrU)r0r)r:rôr|r)r)r+Ú getdigitsás  z_Log10Memoize.getdigitsN)r4r5r6r³rþr)r)r)r+rýÚsrýc Cs¨t||>|ƒ}tdtt|ƒƒd|ƒ }t||ƒ}||>}t|dddƒD]}t|||||ƒ}qPt|dddƒD]"}||d>}t||||ƒ}q|||S)Nrór[r.r&rˆr])r&rUrjrdròr) r*rôrõrör÷r-ZMshiftrrƒ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ÍrjrdrØrûròrÿ) rJr»r)r:rÞrÙZcshiftZquotr0r)r)r+rZ$srZc 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«)rjrdrlrlròrZ) r+r,r.r/r)r{ZlxcrÙZpcr„rVr)r)r+r5Hs r5r%éFé5é(éreér«r}) rÕÚ2Ú3Ú4Ú5Ú6Ú7Ú8rCcCs0|dkrtdƒ‚t|ƒ}dt|ƒ||dS)Nr&z0The argument to _log10_lb should be nonnegative.r%)rprdrj)rJZ correctionZstr_cr)r)r+r(rsr(cCsLt|tƒr|St|tƒr t|ƒS|r8t|tƒr8t |¡S|rHtd|ƒ‚tS)Nrà)rcrrUrtrurvr�)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 | td¡|t |¡fSttfS)Nr&r.r`)rcrÚ_numbersZRationalrPr9r:rdrUr;Ú denominatorrOÚ numeratorZComplexrõròrtrr8rrhrur�)r0rŒr›r1r)r)r+rœ�s(  þ  ÿrœr$i?BiÁ½ðÿ)rErDr7r8rFr@r½rùr^)rErDr7r8a· # 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”t |¡}|dkrtd|ƒ‚| ¡}|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&t ¡}|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: ú ú>rBrTÚ minimumwidthrQr¡r&ršZgGnr.r8rŸÚ thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: ÚgroupingÚ decimal_pointrSr[rº)Ú_parse_format_specifier_regexÚmatchrpÚ groupdictrUÚ_localeÚ localeconv)Ú format_specr�ryZ format_dictrrr)r)r+r£sT  ÿÿ      ÿ   r£c Cs´|d}|d}||t|ƒt|ƒ}|d}|dkrF|||}nj|dkr\|||}nT|dkrr|||}n>|dkr¨t|ƒd}|d|…||||d…}ntd ƒ‚|S) NrrrúusÐà#          & ÿýÿ  .  ^  0",# %$+þ  *ù ýý ï   ó  P % )