grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a XC?h:}ã @slgd¢ZeZdZdZdZddlZddlZddl Z zddl m Z e ddƒZ Wneydd d „Z Yn0d Zd Zd ZdZdZdZdZdZdZdZe jdkr¦dZdZdZn dZdZdZeedZGdd„deƒZGdd„deƒZ Gdd„deƒZ!Gd d!„d!e!ƒZ"Gd"d#„d#ee#ƒZ$Gd$d%„d%e!ƒZ%Gd&d'„d'e!e#ƒZ&Gd(d)„d)eƒZ'Gd*d+„d+e!ƒZ(Gd,d-„d-eƒZ)Gd.d/„d/eƒZ*Gd0d1„d1e'e)ƒZ+Gd2d3„d3e'e)e*ƒZ,Gd4d5„d5ee-ƒZ.e e$e'e+e)e,e!e*e.g Z/e"e!e%e!e&e!e(e!iZ0eeeeeeeefZ1ddl2Z2e2 3d6¡Z4d7d8„Z5d9d:„Z6[2dŒd;d<„Z7Gd=d>„d>e8ƒZ9d�d@dA„Z:ej; GdFdG„dGe8ƒZ?dŽdHdI„Z@eAjBZCdJdK„ZDdLdM„ZEdNdO„ZFdPdQ„ZGd�dSdT„ZHdUdV„ZIdWdX„ZJGdYdZ„dZe8ƒZKeKƒjLZMd�d[d\„ZNd]d^„ZOd_d`„ZPdadbdcdddedfdgdhdidjœ fdkdl„ZQd‘dmdn„ZRd’dodp„ZSe>dqee$e+e!ggdrdsdddt�ZTe>duee$e+e!e e,ggdv�ZUe>dueggdv�ZVddlWZWeW XdweWjYeWjZB¡j[Z\eW Xdx¡j[Z]eW Xdy¡j[Z^eW XdzeWjYeWj_B¡Z`[Wz ddlaZbWne�yÐYn0d“d{d|„Zcd}d~„Zddd€„Zed”d�d‚„Zfdƒd„„Zgd…d†„Zhe9d‡ƒZie9dˆƒZje9d‰ƒZke9dƒZle9dƒZme9dŠƒZneiejfZoe jpjqZre jpjsZte jpjuZvewdherd‹erƒZx[ dS)•)%Ú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_CONTEXTVARÚdecimalz1.70z2.4.2éN)Ú namedtuplerzsign digits exponentcGs|S©N©)Úargsr*r*ú//opt/alt/python39/lib64/python3.9/_pydecimal.pyÚ¤ór-rrrrrrrrTlÿÿÿÿlÿÇNÎZolüÿÿÿÿÇNÎZoi@üTiÀ«æéc@seZdZdd„ZdS)rcGsdSr)r*©ÚselfÚcontextr+r*r*r,ÚhandleÓszDecimalException.handleN©Ú__name__Ú __module__Ú __qualname__r3r*r*r*r,rÀsrc@s eZdZdS)rN©r5r6r7r*r*r*r,r×src@seZdZdd„ZdS)r cGs,|r(t|dj|djddƒ}| |¡StS)Nr'ÚnT)Ú_dec_from_tripleÚ_signÚ_intÚ_fix_nanÚ_NaN)r1r2r+Úansr*r*r,r3ús zInvalidOperation.handleNr4r*r*r*r,r ãsr c@seZdZdd„ZdS)rcGstSr)©r>r0r*r*r,r3szConversionSyntax.handleNr4r*r*r*r,rsrc@seZdZdd„ZdS)r cGst|Sr))Ú_SignedInfinity©r1r2Úsignr+r*r*r,r3szDivisionByZero.handleNr4r*r*r*r,r s r c@seZdZdd„ZdS)rcGstSr)r@r0r*r*r,r3"szDivisionImpossible.handleNr4r*r*r*r,rsrc@seZdZdd„ZdS)rcGstSr)r@r0r*r*r,r3-szDivisionUndefined.handleNr4r*r*r*r,r%src@s eZdZdS)r Nr8r*r*r*r,r 0sr c@seZdZdd„ZdS)rcGstSr)r@r0r*r*r,r3GszInvalidContext.handleNr4r*r*r*r,r<s rc@s eZdZdS)r Nr8r*r*r*r,r Jsr c@s eZdZdS)r Nr8r*r*r*r,r Vsr c@seZdZdd„ZdS)rcGsŽ|jttttfvrt|S|dkrR|jtkr4t|St|d|j|j |jdƒS|dkrŠ|jt krlt|St|d|j|j |jdƒSdS)Nr'Ú9r/) ÚroundingrrrrrArr:ÚprecÚEmaxrrBr*r*r,r3ws ÿ  ÿ  ÿzOverflow.handleNr4r*r*r*r,rasrc@s eZdZdS)rNr8r*r*r*r,r‡src@s eZdZdS)rNr8r*r*r*r,r–srZdecimal_contextcCs6z t ¡WSty0tƒ}t |¡|YS0dSr))Ú_current_context_varÚgetÚ LookupErrorrÚset©r2r*r*r,r¼s    rcCs,|tttfvr| ¡}| ¡t |¡dSr))rrrÚcopyÚ clear_flagsrHrKrLr*r*r,rÊsrcCs|durtƒ}t|ƒSr))rÚ_ContextManager)Úctxr*r*r,rÓs$rc @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: %rrCú-r/r'ÚintZfracÚexprSFÚdiagÚsignalÚNr9Ú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.©r9r[zUThe 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;rWr<ÚlenrQrRÚlstripÚabsrÚ_WorkReprCrXÚlistÚtupleÚ ValueErrorÚappendÚjoinÚmapÚfloatrÚ from_floatÚ TypeError) ÚclsÚvaluer2r1ÚmÚintpartÚfracpartrXrYÚdigitsÚdigitr*r*r,rd 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 ||| ƒ}|turÀ|S||ƒSdS)Nr'r/gð?ézargument must be int or float.)rerWrfrnrvÚ_mathZisinfZisnanÚreprZcopysignÚas_integer_ratioÚ bit_lengthrxr:r)ryÚfrCÚkÚcoeffr9ÚdÚresultr*r*r,rw s$    zDecimal.from_floatcCs(|jr$|j}|dkrdS|dkr$dSdS)Nr9r/r[r_r')rRrQ)r1rXr*r*r,Ú_isnanÍszDecimal._isnancCs|jdkr|jrdSdSdS)Nr\éÿÿÿÿr/r')rQr;©r1r*r*r,Ú _isinfinityÜs  zDecimal._isinfinitycCs|| ¡}|durd}n| ¡}|s&|rx|dur4tƒ}|dkrJ| td|¡S|dkr`| td|¡S|rn| |¡S| |¡SdS)NFr_ÚsNaNr')rŠrrjr r=)r1Úotherr2Ú self_is_nanÚ other_is_nanr*r*r,Ú _check_nansés& ÿÿ  zDecimal._check_nanscCsv|durtƒ}|js|jrr| ¡r0| td|¡S| ¡rF| td|¡S| ¡r\| td|¡S| ¡rr| td|¡SdS)Nzcomparison involving sNaNzcomparison involving NaNr')rrRÚis_snanrjr Úis_qnan©r1r�r2r*r*r,Ú_compare_check_nans s0  þþþþzDecimal._compare_check_nanscCs|jp|jdkS©NrS©rRr<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/rS)rRr�r;Úadjustedr<rQ)r1r�Zself_infZ other_infÚ self_adjustedZother_adjustedÚ self_paddedZ other_paddedr*r*r,Ú_cmp1s>         z Decimal._cmpcCs<t||dd�\}}|tur|S| ||¡r.dS| |¡dkS)NT)Ú equality_opFr')Ú_convert_for_comparisonÚNotImplementedr’r�r•r*r*r,Ú__eq__qs  zDecimal.__eq__cCs<t||ƒ\}}|tur|S| ||¡}|r.dS| |¡dkS©NFr'©rŸr r–r�©r1r�r2r?r*r*r,Ú__lt__ys zDecimal.__lt__cCs<t||ƒ\}}|tur|S| ||¡}|r.dS| |¡dkSr¢r£r¤r*r*r,Ú__le__‚s zDecimal.__le__cCs<t||ƒ\}}|tur|S| ||¡}|r.dS| |¡dkSr¢r£r¤r*r*r,Ú__gt__‹s zDecimal.__gt__cCs<t||ƒ\}}|tur|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_otherrRr’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‹éþÿÿÿ) rRr“rxÚis_nanÚ _PyHASH_NANr;Ú _PyHASH_INFrQÚpowÚ_PyHASH_MODULUSÚ _PyHASH_10INVrWr<)r1Zexp_hashZhash_r?r*r*r,Ú__hash__¯s  zDecimal.__hash__cCst|jttt|jƒƒ|jƒSr))rr;rqrurWr<rQrŒ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€) rRr°rrÚ OverflowErrorrWr<rQÚminr„r;)r1r9rˆZd5Zd2Zshift2r*r*r,rƒÐs,     zDecimal.as_integer_ratiocCs dt|ƒS)Nz Decimal('%s'))rfrŒ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*|du�r8tƒ}ddg|jd||}||||S)NrUrVr\ZInfinityr9ÚNaNrŽr'éúÿÿÿr/rSr]Ú.ÚeÚEz%+d)r;rRrQr<rlrÚcapitals) r1Úengr2rCÚ leftdigitsÚdotplacer|r}rXr*r*r,Ú__str__s:     zDecimal.__str__cCs|jd|d�S)NT)rÁr2)rÄ©r1r2r*r*r,Ú to_eng_string;szDecimal.to_eng_stringcCsR|jr|j|d�}|r|S|dur(tƒ}|s@|jtkr@| ¡}n| ¡}| |¡S©NrL)rRr’rrErÚcopy_absÚ copy_negateÚ_fix©r1r2r?r*r*r,Ú__neg__Ds  zDecimal.__neg__cCsR|jr|j|d�}|r|S|dur(tƒ}|s@|jtkr@| ¡}nt|ƒ}| |¡SrÇ)rRr’rrErrÈ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ÈrRr’r;rÌrÍ)r1Úroundr2r?r*r*r,Ú__abs__os  zDecimal.__abs__c Csht|ƒ}|tur|S|dur"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/rS)r'r')r¬r rrRr’r�r;rjr rr¹rQrErr:rÊÚmaxrFÚ_rescaleroÚ _normalizerCrWrX) r1r�r2r?rXZ negativezerorCÚop1Úop2r‰r*r*r,Ú__add__…s|              zDecimal.__add__cCsHt|ƒ}|tur|S|js |jr6|j||d�}|r6|S|j| ¡|d�SrÇ)r¬r rRr’rÕrÉr¤r*r*r,Ú__sub__Ýs zDecimal.__sub__cCs"t|ƒ}|tur|S|j||d�SrÇ)r¬r rÖr•r*r*r,Ú__rsub__ëszDecimal.__rsub__cCs@t|ƒ}|tur|S|dur"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 * (+-)INFrSÚ1)r¬r rr;rRr’r�rjr rArQr:rÊr<rorfrW)r1r�r2Z resultsignr?Z resultexprÓrÔr*r*r,Ú__mul__ósH             zDecimal.__mul__c CsÆt|ƒ}|turtS|dur"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 infinityrSz0 / 0zx / 0r'r/r®r€)r¬r rr;rRr’r�rjr rArr:ÚEtinyrr rQrlr<rFroÚdivmodrWrfrÊ) r1r�r2rCr?rXr‡Ú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¯rSr'r®z%quotient too large in //, % or divmod)r;r�rQr¹ršr:rÑrErFrorXrWrÛrfrjr) r1r�r2rCrÞÚexpdiffrÓrÔÚqÚrr?r*r*r,Ú_dividegs0   ÿ  ÿÿzDecimal._dividecCs"t|ƒ}|tur|S|j||d�SrÇ)r¬r rßr•r*r*r,Ú __rtruediv__ˆszDecimal.__rtruediv__cCsÖt|ƒ}|tur|S|dur"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�rjr rArr rãrÊ)r1r�r2r?rCZquotientrÝr*r*r,Ú __divmod__�s4    ÿ   ÿ zDecimal.__divmod__cCs"t|ƒ}|tur|S|j||d�SrÇ)r¬r rèr•r*r*r,Ú __rdivmod__³szDecimal.__rdivmod__cCsˆt|ƒ}|tur|S|dur"tƒ}| ||¡}|r6|S| ¡rJ| td¡S|sj|r^| td¡S| td¡S| ||¡d}|  |¡}|S)Nrårçz0 % 0r/) r¬r rr’r�rjr rrãrÊ)r1r�r2r?rÝr*r*r,Ú__mod__ºs"     zDecimal.__mod__cCs"t|ƒ}|tur|S|j||d�SrÇ)r¬r rêr•r*r*r,Ú__rmod__ÕszDecimal.__rmod__c CsÐ|durtƒ}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)rSr/r¯r®r_r')rr¬r’r�rjr rrrÊr¹rQr:r;ršrFrrÑrErorXrWrÛrf) r1r�r2r?Úideal_exponentràrÓrÔrárârCr*r*r,Úremainder_nearÜs`  ÿÿÿ       zDecimal.remainder_nearcCsœt|ƒ}|tur|S|dur"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�rjr rAr;r rrãr¤r*r*r,Ú __floordiv__'s&   ÿ zDecimal.__floordiv__cCs"t|ƒ}|tur|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“rrr;rfrv©r1Ú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®rS) rRrŠrrr�r¸r;rQrWr<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))ÚcomplexrvrŒr*r*r,Ú __complex__nszDecimal.__complex__cCsR|j}|j|j}t|ƒ|krJ|t|ƒ|d… d¡}t|j||jdƒSt|ƒS)NrST) r<rFÚclamprlrmr:r;rQr)r1r2ZpayloadZmax_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)NrSú above Emaxr'rØr/r‹)rRrŠr=rrÚÚEtoprGrür¹rÐrQrjrr:r;rlr<rFrr r Ú_pick_rounding_functionrErfrWrr )r1r2rÚ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<©r1rFr*r*r,Ú _round_downãs zDecimal._round_downcCs | |¡ Sr))rrr*r*r,Ú _round_upêszDecimal._round_upcCs*|j|dvrdSt|j|ƒr"dSdSdS)NZ56789r/r'r‹)r<rrr*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|ddvr*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|ddvr | |¡S| |¡ SdS)Nr/Z05)r<rrr*r*r,Ú _round_05ups zDecimal._round_05up)rrrrrrrrcCsb|dur2t|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) rerWrxr:ÚquantizerRr°rrr¸rÑr)r1r9rXr*r*r,Ú __round__&s/   zDecimal.__round__cCs0|jr | ¡rtdƒ‚ntdƒ‚t| dt¡ƒS©Nrrr')rRr°rrr¸rWrÑrrŒr*r*r,Ú __floor__ds  zDecimal.__floor__cCs0|jr | ¡rtdƒ‚ntdƒ‚t| dt¡ƒSr)rRr°rrr¸rWrÑrrŒr*r*r,Ú__ceil__ss  zDecimal.__ceil__cCst|dd�}t|dd�}|js$|jrÚ|dur2tƒ}|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ªr[rŽr9r\zINF * 0 in fmaz0 * INF in fma) r¬rRrrQrjr rAr;r:rfrWr<rÕ)r1r�Zthirdr2Úproductr*r*r,Úfma‚s<        ÿ ÿ  þz Decimal.fmac CsÒt|ƒ}|tur|St|ƒ}|tur(|S|dur6tƒ}| ¡}| ¡}| ¡}|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Šrjr r=Ú _isintegerršrFÚ_isevenr;rnrWroÚto_integral_valuer³rXÚranger:rf) r1r�Úmodulor2r�r‘Z modulo_is_nanrCÚ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} | dv�r¼|| @|k�rBdSt |ƒd} |dd}|t t |ƒƒk�rpdSt | ||ƒ} t |||ƒ}| du�s |du�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 |||ƒ}| du�sf|du�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$�q|S|sPt|jddƒS|j| ¡g|j }t |j ƒ}|j }|j |ddkr ||kr |d7}|d8}qtt|j|j d|…|ƒS)NrLrSr'r/) rrRr’rÊr�r:r;rGrþrürlr<rQ)r1r2r?ÚduprÚendrXr*r*r,Ú normalizeÏ s$    zDecimal.normalizecCs¦t|dd�}|durtƒ}|dur(|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 quantizerSz9exponent of quantize result too large for current contextr/z7quantize result has too many digits for current context)r¬rrErRr’r�rrjr rÚrQrGr:r;rÊršrFrÑrlr<ÚEminr r r )r1rXrEr2r?r›r*r*r,rè s`   ÿÿ  ÿÿÿÿ     zDecimal.quantizecCsDt|dd�}|js|jr8| ¡r(| ¡p6| ¡o6| ¡S|j|jkSr©)r¬rRr°Ú is_infiniterQr•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)NrSr'rØr/) rRrr:r;rQr<rlrÿrfrW)r1rXrEr~Z this_functionrr‡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/)rrrRrrÑrš)r1ÚplacesrEr?r*r*r,Ú_roundV s  zDecimal._roundcCsŽ|jr"|j|d�}|r|St|ƒS|jdkr4t|ƒS|sFt|jddƒS|durTtƒ}|durb|j}| d|¡}||kr€|  t ¡|  t ¡|S)NrLr'rS) rRr’rrQr:r;rrErÑrjr r ©r1rEr2r?r*r*r,Úto_integral_exactm s$      zDecimal.to_integral_exactcCs`|durtƒ}|dur|j}|jr>|j|d�}|r6|St|ƒS|jdkrPt|ƒS| d|¡SdS)NrLr')rrErRr’rrQrÑrIr*r*r,rŠ s  zDecimal.to_integral_valuecCsÞ|durtƒ}|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) NrLr'rSr_r/zsqrt(-x), x > 0r®r(Tr€)rrRr’r�r;rr:rQrÊrjr rFrorXrWrlr<rÛrfÚ _shallow_copyÚ _set_roundingrrE)r1r2r?rFÚopr¾ÚcÚlrÜr<rÝr9rárEr*r*r,Úsqrt� s^              z Decimal.sqrtcCs¶t|dd�}|durtƒ}|js&|jr~| ¡}| ¡}|s>|r~|dkrX|dkrX| |¡S|dkrr|dkrr| |¡S| ||¡S| |¡}|dkrš| |¡}|dkr¨|}n|}| |¡S©NTrªr/r'r‹©r¬rrRrŠrÊr’r�Ú compare_total©r1r�r2ZsnZonrNr?r*r*r,rÐ s&       z Decimal.maxcCs¶t|dd�}|durtƒ}|js&|jr~| ¡}| ¡}|s>|r~|dkrX|dkrX| |¡S|dkrr|dkrr| |¡S| ||¡S| |¡}|dkrš| |¡}|dkr¨|}n|}| |¡SrQrRrTr*r*r,r¹* s&       z Decimal.mincCs8|jr dS|jdkrdS|j|jd…}|dt|ƒkS)NFr'TrS)rRrQr<rl)r1Úrestr*r*r,rL s  zDecimal._isintegercCs&|r|jdkrdS|jd|jdvS)Nr'Tr‹r )rQr<rŒr*r*r,rU szDecimal._isevencCs0z|jt|jƒdWSty*YdS0dS)Nr/r')rQrlr<rxrŒr*r*r,rš[ s zDecimal.adjustedcCs|Sr)r*rŒr*r*r,Ú canonicalc szDecimal.canonicalcCs.t|dd�}| ||¡}|r |S|j||d�S©NTrªrL)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‡rXrEr*r*r,rXÜ sH   $(  "   z Decimal.expcCsdS)NTr*rŒr*r*r,Ú is_canonical' szDecimal.is_canonicalcCs|j Sr))rRrŒr*r*r,Ú is_finite/ szDecimal.is_finitecCs |jdkS)Nr\©rQrŒr*r*r,rE7 szDecimal.is_infinitecCs |jdvS)NrarbrŒr*r*r,r°; szDecimal.is_nancCs*|js |sdS|durtƒ}|j| ¡kS©NF)rRrrDršrÅr*r*r,Ú is_normal? s  zDecimal.is_normalcCs |jdkS)Nr9rbrŒr*r*r,r”G szDecimal.is_qnancCs |jdkS©Nr/)r;rŒr*r*r,Ú is_signedK szDecimal.is_signedcCs |jdkS)Nr[rbrŒr*r*r,r“O szDecimal.is_snancCs*|js |sdS|durtƒ}| ¡|jkSrc)rRrršrDrÅ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'©rQrlr<rfrorWrX©r1r_rMrNr¾ÚnumZdenr*r*r,Ú _ln_exp_bound_ szDecimal._ln_exp_boundc Cs|durtƒ}|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) NrLr/zln of a negative valuer_r€r®r]r')rr’Ú_NegativeInfinityr�Ú _Infinityr6rZr;rjr rorWrXrFrmÚ_dlogrlrfrnr:rKrLrrÊrE© r1r2r?rMrNr¾r,rGr‡rEr*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_Z231rjrkr*r*r,r7ª s  zDecimal._log10_exp_boundc CsF|durtƒ}|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) NrLr/zlog10 of a negative valuer'rØrSr_r€r®r])rr’rnr�ror;rjr r<rlrrQrorWrXrFr7Ú_dlog10rfrnr:rKrLrrÊrErqr*r*r,Úlog10È s:   ÿ. $   z Decimal.log10cCsV|j|d�}|r|S|dur"tƒ}| ¡r.tS|s@| tdd¡St| ¡ƒ}| |¡S)NrLzlogb(0)r/) r’rr�rorjr rršrÊrËr*r*r,Úlogbû s  z Decimal.logbcCs6|jdks|jdkrdS|jD]}|dvrdSqdS)Nr'FZ01T)r;rQr<)r1Údigr*r*r,Ú _islogical s  zDecimal._islogicalcCs€|jt|ƒ}|dkr$d||}n|dkr<||j d…}|jt|ƒ}|dkr`d||}n|dkrx||j d…}||fS)Nr'rS)rFrl)r1r2ÚopaÚopbZdifr*r*r,Ú _fill_logical' szDecimal._fill_logicalcCsz|durtƒ}t|dd�}| ¡r*| ¡s4| t¡S| ||j|j¡\}}d dd„t||ƒDƒ¡}t d|  d¡ptddƒS)NTrªrUcSs$g|]\}}tt|ƒt|ƒ@ƒ‘qSr*©rfrW©Ú.0r4Úbr*r*r,Ú B r.z'Decimal.logical_and..r'rS© rr¬rxrjr r{r<rtÚzipr:rm©r1r�r2ryrzr‰r*r*r,Ú logical_and4 s  zDecimal.logical_andcCs(|durtƒ}| tdd|jdƒ|¡S)Nr'rØ)rÚ logical_xorr:rFrÅr*r*r,Úlogical_invertE s ÿzDecimal.logical_invertcCsz|durtƒ}t|dd�}| ¡r*| ¡s4| t¡S| ||j|j¡\}}d dd„t||ƒDƒ¡}t d|  d¡ptddƒS)NTrªrUcSs$g|]\}}tt|ƒt|ƒBƒ‘qSr*r|r}r*r*r,r€Z r.z&Decimal.logical_or..r'rSr�rƒr*r*r,Ú logical_orL s  zDecimal.logical_orcCsz|durtƒ}t|dd�}| ¡r*| ¡s4| t¡S| ||j|j¡\}}d dd„t||ƒDƒ¡}t d|  d¡ptddƒS)NTrªrUcSs$g|]\}}tt|ƒt|ƒAƒ‘qSr*r|r}r*r*r,r€k r.z'Decimal.logical_xor..r'rSr�rƒr*r*r,r…] s  zDecimal.logical_xorcCs¾t|dd�}|durtƒ}|js&|jr~| ¡}| ¡}|s>|r~|dkrX|dkrX| |¡S|dkrr|dkrr| |¡S| ||¡S| ¡ | ¡¡}|dkr¢| |¡}|dkr°|}n|}| |¡SrQ© r¬rrRrŠrÊr’rÈr�rSrTr*r*r,Úmax_magn s&      zDecimal.max_magcCs¾t|dd�}|durtƒ}|js&|jr~| ¡}| ¡}|s>|r~|dkrX|dkrX| |¡S|dkrr|dkrr| |¡S| ||¡S| ¡ | ¡¡}|dkr¢| |¡}|dkr°|}n|}| |¡SrQrˆrTr*r*r,Úmin_magŒ s&      zDecimal.min_magcCs |durtƒ}|j|d�}|r"|S| ¡dkr2tS| ¡dkrTtdd|j| ¡ƒS| ¡}| t ¡|  ¡|  |¡}||kr„|S|  tdd|  ¡dƒ|¡S)NrLr‹r/r'rDrØ)rr’r�rnr:rFrþrMrLrÚ_ignore_all_flagsrÊrÖrÚ©r1r2r?Znew_selfr*r*r,Ú next_minusª s$     ÿzDecimal.next_minuscCs |durtƒ}|j|d�}|r"|S| ¡dkr2tS| ¡dkrTtdd|j| ¡ƒS| ¡}| t ¡|  ¡|  |¡}||kr„|S|  tdd|  ¡dƒ|¡S)NrLr/r‹rDr'rØ)rr’r�ror:rFrþrMrLrr‹rÊrÕrÚrŒr*r*r,Ú next_plusÁ s$     ÿzDecimal.next_pluscCsÞt|dd�}|durtƒ}| ||¡}|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�r]rŽr�r�rjrr;r r ršrDrr r)r1r�r2r?Z comparisonr*r*r,Ú next_towardØ s6      þ       zDecimal.next_towardcCsˆ| ¡r dS| ¡rdS| ¡}|dkr,dS|dkr8dS| ¡rN|jrJdSdS|dur\tƒ}|j|d �rv|jrrd Sd S|jr€d Sd SdS)NrŽr»r/z +Infinityr‹z -Infinityz-Zeroz+ZerorLz -Subnormalz +Subnormalz-Normalz+Normal)r“r”r�rhr;rrg)r1r2Úinfr*r*r,Ú number_classs, zDecimal.number_classcCstdƒS©Nr®r÷rŒr*r*r,Úradix0sz Decimal.radixcCsö|durtƒ}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'rS©rr¬r’rQrjr rFrWr�rr<rlr:r;rm)r1r�r2r?ÚtorotÚrotdigÚtopadZrotatedr*r*r,Úrotate4s.      ÿzDecimal.rotatecCs¾|durtƒ}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’rQrjr rGrFrWr�rr:r;r<rÊ)r1r�r2r?ZliminfZlimsuprˆr*r*r,ÚscalebUs"      zDecimal.scalebcCs|durtƒ}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•)r1r�r2r?r–r—r˜Zshiftedr*r*r,rÜns4       ÿz Decimal.shiftcCs|jt|ƒffSr))Ú __class__rfrŒr*r*r,Ú __reduce__•szDecimal.__reduce__cCst|ƒtur|S| t|ƒ¡Sr)©Útyperr›rfrŒr*r*r,Ú__copy__˜s zDecimal.__copy__cCst|ƒtur|S| t|ƒ¡Sr)r�)r1Úmemor*r*r,Ú __deepcopy__�s zDecimal.__deepcopy__cCsJ|durtƒ}t||d�}|jrXt|j|ƒ}t| ¡ƒ}|ddkrL|d7}t|||ƒS|ddurvddg|j|d<|ddkr˜t |j|j |j dƒ}|j }|d}|du�r|ddvrÎ|  |d |¡}nF|dd vrê| | |¡}n*|dd v�rt|j ƒ|k�r|  ||¡}|�s@|j d k�r@|dd v�r@| d |¡}|j t|j ƒ} |ddv�r~|�sx|du�rxd |} nd } nB|dd v�r’| } n.|dd v�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¼rSrU)rÚ_parse_format_specifierrRÚ _format_signr;rfrÈÚ _format_alignrÀr:r<rQrErHrÑrlÚ_format_number)r1Z specifierr2r¢ÚspecrCÚbodyrEr¦rÂrÃr|r}rXr*r*r,Ú __format__¤sZ               zDecimal.__format__)rSN)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)�r5r6r7Ú __slots__rdÚ classmethodrwrŠ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Êrrrr r r rrÚdictrÿrrrrr!r5r?r@rCrrFrÑrHrJrÚ to_integralrPrÐr¹rrršrVrXrSr\rÈrÉr]rXr`rarEr°rdr”rfr“rgrhrmrrr7rurvrxr{r„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          . * !  'rFcCs&t t¡}||_||_||_||_|Sr))rcrdrr;r<rQrR)rCZ coefficientrZspecialr1r*r*r,r:ös  r:c@s$eZdZdd„Zdd„Zdd„ZdS)rOcCs| ¡|_dSr))rMÚ new_context)r1r·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¹)r1ÚtÚvÚtbr*r*r,Ú__exit__sz_ContextManager.__exit__N)r5r6r7r¸rºr¾r*r*r*r,rOsrOc @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} WntyYn0|dur(|n| j|_|dur<|n| j|_|durP|n| j|_|durd|n| j|_|durx|n| j|_|durŒ|n| j|_| dur¤g|_n| |_ˆdurÀ| j   ¡|_ n.t ˆt ƒsèt ‡fdd„t ˆDƒƒ|_ nˆ|_ ˆdu�rt  t d¡|_n0t ˆt ƒ�s2t ‡fdd„t ˆDƒƒ|_nˆ|_dS)Nc3s|]}|t|ˆvƒfVqdSr)©rW©r~rò©r:r*r,Ú Ir.z#Context.__init__..r'c3s|]}|t|ˆvƒfVqdSr)r¿rÀ©r;r*r,rÂPr.)rÚ NameErrorrFrErDrGrÀrüÚ_ignored_flagsr:rMrerµr9Úfromkeysr;) r1rFrErDrGrÀrür;r:rÅZdcr*)r;r:r,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)rerWrxrrrcÚ __setattr__)r1ÚnamerzZvminZvmaxr*r*r,Ú_set_integer_checkTs  zContext._set_integer_checkcCs`t|tƒstd|ƒ‚|D]}|tvrtd|ƒ‚qtD]}||vr8td|ƒ‚q8t |||¡S)Nz%s must be a signal dictz%s is not a valid signal dict)rerµrxr9ÚKeyErrorrcrÈ)r1rÉ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¢|tvr”td |ƒ‚t |||¡S|d ks²|d kr¾| ||¡S|dkrÔt |||¡Std|ƒ‚dS)NrFr/r�rDrÇr'rGrÀrürEz%s: invalid rounding moder;r:rÅz.'decimal.Context' object has no attribute '%s')rÊÚ_rounding_modesrxrcrÈrÍÚAttributeError)r1rÉrzr*r*r,rÈms*  ÿzContext.__setattr__cCstd|ƒ‚dS)Nz%s cannot be deleted)rÏ)r1rÉ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*©r~Zsigr¼r*r*r,r€‹r.z&Context.__reduce__..cSsg|]\}}|r|‘qSr*r*rÑr*r*r,r€Œr.) r;Úitemsr:r›rFrErDrGrÀrü)r1r;r:r*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*©r5)r~r…r¼r*r*r,r€˜r.z$Context.__repr__..zflags=[z, ú]cSsg|]\}}|r|j‘qSr*rÓ)r~r»r¼r*r*r,r€šr.ztraps=[ú))rsÚvarsr;rÒrtr:)r1ròÚnamesr*r*r,rº‘sýzContext.__repr__cCs|jD]}d|j|<qdSrörér1Úflagr*r*r,rNž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)) rrFrErDrGrÀrür;r:rÅ©r1Zncr*r*r,rK¨s þzContext._shallow_copyc Cs6t|j|j|j|j|j|j|j ¡|j  ¡|j ƒ }|Sr)) rrFrErDrGrÀrür;rMr:rÅrÛr*r*r,rM¯s ýz Context.copycGs^t ||¡}||jvr*|ƒj|g|¢RŽSd|j|<|j|sR|ƒj|g|¢RŽS||ƒ‚dSre)Ú_condition_maprIrÅr3r;r:)r1Z conditionZ explanationr+Úerrorr*r*r,rj¸s    zContext._raise_errorcCs |jtŽSr))Ú _ignore_flagsr9rŒr*r*r,r‹ÎszContext._ignore_all_flagscGs|jt|ƒ|_t|ƒSr))rÅrp)r1r;r*r*r,rÞÒszContext._ignore_flagscGs8|rt|dttfƒr|d}|D]}|j |¡q"dSrö)rerqrprÅÚremove)r1r;rÙr*r*r,Ú _regard_flagsÙszContext._regard_flagscCst|j|jdƒSre)rWrDrFrŒr*r*r,rÚãsz Context.EtinycCst|j|jdƒSre)rWrGrFrŒr*r*r,rþçsz Context.EtopcCs|j}||_|Sr))rE)r1ržrEr*r*r,rLëszContext._set_roundingrScCsjt|tƒr*|| ¡ksd|vr*| td¡St||d�}| ¡r`t|jƒ|j |j kr`| td¡S|  |¡S)NrTzAtrailing or leading whitespace and underscores are not permitted.rLzdiagnostic info too long in NaN) rerfrhrjrrrŠrlr<rFrürÊ)r1rlrˆr*r*r,Úcreate_decimalþsÿ ÿzContext.create_decimalcCst |¡}| |¡Sr))rrwrÊ)r1r…rˆr*r*r,Úcreate_decimal_from_floats z!Context.create_decimal_from_floatcCst|dd�}|j|d�SrW)r¬rÏ©r1r4r*r*r,rn!s z Context.abscCs8t|dd�}|j||d�}|tur0td|ƒ‚n|SdS©NTrªrLúUnable to convert %s to Decimal)r¬rÕr rx©r1r4rrâr*r*r,Úadd6s  z Context.addcCst| |¡ƒSr))rfrÊrãr*r*r,Ú_applyKszContext._applycCst|tƒstdƒ‚| ¡S)Nz,canonical requires a Decimal as an argument.)rerrxrVrãr*r*r,rVNs zContext.canonicalcCst|dd�}|j||d�SrW)r¬r­©r1r4rr*r*r,r­[s! zContext.comparecCst|dd�}|j||d�SrW)r¬rXrér*r*r,rXs zContext.compare_signalcCst|dd�}| |¡Sr©)r¬rSrér*r*r,rS¢s zContext.compare_totalcCst|dd�}| |¡Sr©)r¬r\rér*r*r,r\¿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¬r]rér*r*r,r]îs zContext.copy_signcCs8t|dd�}|j||d�}|tur0td|ƒ‚n|SdSrä)r¬rßr rxrær*r*r,Údivides  zContext.dividecCs8t|dd�}|j||d�}|tur0td|ƒ‚n|SdSrä)r¬rîr rxrær*r*r,Ú divide_int+s  zContext.divide_intcCs8t|dd�}|j||d�}|tur0td|ƒ‚n|SdSrä)r¬rèr rxrær*r*r,rÛBs  zContext.divmodcCst|dd�}|j|d�SrW)r¬rXrãr*r*r,rXWs z Context.expcCst|dd�}|j|||d�SrW)r¬r)r1r4rrNr*r*r,ros z Context.fmacCst|tƒstdƒ‚| ¡S)Nz/is_canonical requires a Decimal as an argument.)rerrxr`rãr*r*r,r`†s zContext.is_canonicalcCst|dd�}| ¡Sr©)r¬rarãr*r*r,ra“s zContext.is_finitecCst|dd�}| ¡Sr©)r¬rErãr*r*r,rE©s zContext.is_infinitecCst|dd�}| ¡Sr©)r¬r°rãr*r*r,r°¸s zContext.is_nancCst|dd�}|j|d�SrW)r¬rdrãr*r*r,rdÈs zContext.is_normalcCst|dd�}| ¡Sr©)r¬r”rãr*r*r,r”ßs zContext.is_qnancCst|dd�}| ¡Sr©)r¬rfrãr*r*r,rfîs zContext.is_signedcCst|dd�}| ¡Sr©)r¬r“rãr*r*r,r“ÿs zContext.is_snancCst|dd�}|j|d�SrW)r¬rgrãr*r*r,rgs zContext.is_subnormalcCst|dd�}| ¡Sr©)r¬rhrãr*r*r,rh%s zContext.is_zerocCst|dd�}|j|d�SrW)r¬rrrãr*r*r,rr6s z Context.lncCst|dd�}|j|d�SrW)r¬rurãr*r*r,ruLs z Context.log10cCst|dd�}|j|d�SrW)r¬rvrãr*r*r,rvhs z Context.logbcCst|dd�}|j||d�SrW)r¬r„rér*r*r,r„‚s zContext.logical_andcCst|dd�}|j|d�SrW)r¬r†rãr*r*r,r†�s zContext.logical_invertcCst|dd�}|j||d�SrW)r¬r‡rér*r*r,r‡°s zContext.logical_orcCst|dd�}|j||d�SrW)r¬r…rér*r*r,r…Ës zContext.logical_xorcCst|dd�}|j||d�SrW)r¬rÐrér*r*r,rÐæs z Context.maxcCst|dd�}|j||d�SrW)r¬r‰rér*r*r,r‰s zContext.max_magcCst|dd�}|j||d�SrW)r¬r¹rér*r*r,r¹s z Context.mincCst|dd�}|j||d�SrW)r¬rŠrér*r*r,rŠ-s zContext.min_magcCst|dd�}|j|d�SrW)r¬rÌrãr*r*r,Úminus>s z Context.minuscCs8t|dd�}|j||d�}|tur0td|ƒ‚n|SdSrä)r¬rÙr rxrær*r*r,ÚmultiplyOs  zContext.multiplycCst|dd�}|j|d�SrW)r¬r�rãr*r*r,r�os zContext.next_minuscCst|dd�}|j|d�SrW)r¬rŽrãr*r*r,rŽƒs zContext.next_pluscCst|dd�}|j||d�SrW)r¬r�rér*r*r,r�—s zContext.next_towardcCst|dd�}|j|d�SrW)r¬rCrãr*r*r,rCºs zContext.normalizecCst|dd�}|j|d�SrW)r¬r‘rãr*r*r,r‘Òs/ zContext.number_classcCst|dd�}|j|d�SrW)r¬rÍrãr*r*r,Úpluss z Context.pluscCs:t|dd�}|j|||d�}|tur2td|ƒ‚n|SdSrä)r¬r?r rx)r1r4rrrâr*r*r,Úpowers I z Context.powercCst|dd�}|j||d�SrW)r¬rrér*r*r,res7 zContext.quantizecCstdƒSr’r÷rŒr*r*r,r“Ÿsz Context.radixcCs8t|dd�}|j||d�}|tur0td|ƒ‚n|SdSrä)r¬rêr rxrær*r*r,rݧs  zContext.remaindercCst|dd�}|j||d�SrW)r¬rírér*r*r,ríÍs zContext.remainder_nearcCst|dd�}|j||d�SrW)r¬r™rér*r*r,r™ïs zContext.rotatecCst|dd�}| |¡Sr©)r¬rFrér*r*r,rF s zContext.same_quantumcCst|dd�}|j||d�SrW)r¬ršrér*r*r,rš$s zContext.scalebcCst|dd�}|j||d�SrW)r¬rÜrér*r*r,rÜ7s z Context.shiftcCst|dd�}|j|d�SrW)r¬rPrãr*r*r,rPUs z Context.sqrtcCs8t|dd�}|j||d�}|tur0td|ƒ‚n|SdSrä)r¬rÖr rxrær*r*r,Úsubtractus  zContext.subtractcCst|dd�}|j|d�SrW)r¬rÆrãr*r*r,rÆŒs zContext.to_eng_stringcCst|dd�}|j|d�SrW)r¬rÄrãr*r*r,Ú to_sci_string¨s zContext.to_sci_stringcCst|dd�}|j|d�SrW)r¬rJrãr*r*r,rJ°s zContext.to_integral_exactcCst|dd�}|j|d�SrW)r¬rrãr*r*r,rÎs zContext.to_integral_value) NNNNNNNNN)N)rS)N)Wr5r6r7r¸rÊrÍrÈrÐrœrºrNrÚrKrMrŸrjr‹rÞràr¶rÚrþrLrárârnrçrèrVr­rXrSr\rÈrêrÉr]rërìrÛrXrr`rarEr°rdr”rfr“rgrhrrrurvr„r†r‡r…rÐr‰r¹rŠrírîr�rŽr�rCr‘rïrðrr“rÝrír™rFršrÜrPrñrÆròrJrr¶r*r*r*r,rs®þ $     $#   %  #2 P:&" rc@s"eZdZdZddd„Zdd„ZdS)ro©rCrWrXNcCsf|durd|_d|_d|_nFt|tƒrD|j|_t|jƒ|_|j|_n|d|_|d|_|d|_dS)Nr'r/r_)rCrWrXrerr;r<rQ)r1rzr*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)r5r6r7r¯r¸rºr*r*r*r,roîs rocCsš|j|jkr|}|}n|}|}tt|jƒƒ}tt|jƒƒ}|jtd||dƒ}||jd|krpd|_||_|jd|j|j9_|j|_||fS)Nr‹r_r/r®)rXrlrfrWr¹)rÓrÔrFÚtmpr�Ztmp_lenZ other_lenrXr*r*r,rÒs rÒcCsb|dkr dS|dkr |d|Stt|ƒƒ}t|ƒt| d¡ƒ}|| krPdS|d| SdS)Nr'r®rS)rfrnrlÚrstrip)r9r¾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/)rr)r9r4rr*r*r,Ú _sqrt_nearest=s röcCs2d|>||?}}|d||d@|d@|kS)Nr/r_r*)r-rÜrrár*r*r,Ú_rshift_nearestLsr÷cCs&t||ƒ\}}|d||d@|kS)Nr_r/)rÛ)r4rrá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‹)rnrørör÷rWrlrfr) r-ÚMÚLr0Ú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()rlrfrørÿÚ _log10_digits) rNr¾r,rOr…rúr†Úlog_dZlog_10Z log_tenpowerr*r*r,rtŒs     rtc 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)rlrfrørÿrnr) rNr¾r,rOr…r†rr>Z f_log_tenr*r*r,rp®s"   rpc@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(rSr‹r/)rrrlr~rfrørÿrõrW)r1r,r>rúr~r*r*r,Ú getdigitsás  z_Log10Memoize.getdigitsN)r5r6r7r¸rr*r*r*r,rÚsrc Cs¨t||>|ƒ}tdtt|ƒƒd|ƒ }t||ƒ}||>}t|dddƒD]}t|||||ƒ}qPt|dddƒD]"}||d>}t||||ƒ}q|||S)Nrùr]r/r'r‹r_)r)rWrlrfrør) r-rúrûrürýr0ZMshiftr r†r*r*r,Ú_iexpÿs  rc Cs–|d7}td|tt|ƒƒdƒ}||}||}|dkrH|d|}n|d| }t|t|ƒƒ\}}t|d|ƒ}tt|d|ƒdƒ||dfS)Nr_r'r/r®ièr])rÐrlrfrÛrrør) rNr¾r,r>rárÜZcshiftZquotr3r*r*r,r^$sr^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®)rlrfrnrprør^) r.r/r1r2r,rZlxcrÜZpcr‡rXr*r*r,r8Hs r8r(éFé5é(ériér®r€) rØÚ2Ú3Ú4Ú5Ú6Ú7Ú8rDcCs0|dkrtdƒ‚t|ƒ}dt|ƒ||dS)Nr'z0The argument to _log10_lb should be nonnegative.r()rrrfrl)rNZ correctionZstr_cr*r*r,r+rsr+cCsLt|tƒr|St|tƒr t|ƒS|r8t|tƒr8t |¡S|rHtd|ƒ‚tS)Nrå)rerrWrvrwrxr )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/rb)rerÚ_numbersZRationalrRr:r;rfrWr<Ú denominatorrQÚ numeratorZComplexrørõrvrr;rrjrwr )r1r�ržr2r*r*r,rŸ�s(  þ  ÿrŸr'i?BiÁ½ðÿ)rFrEr:r;rGrDrÀrür`)rFrEr: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”t |¡}|durtd|ƒ‚| ¡}|d}|d}|ddu|d<|drv|durbtd|ƒ‚|durvtd|ƒ‚|p|d|d<|pˆd|d<|d dur¢d |d <t|d p®d ƒ|d <|d durÒt|d ƒ|d <|d dkrþ|ddusö|ddvrþd|d <|ddk�rfd|d<|du�r&t ¡}|ddu�r@td|ƒ‚|d|d<|d|d<|d|d<n*|ddu�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: ú ú>rCrVÚ minimumwidthrSr¦r'ržZgGnr/r9r¤Ú thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: ÚgroupingÚ decimal_pointrUr]r½)Ú_parse_format_specifier_regexÚmatchrrÚ groupdictrWÚ_localeÚ localeconv)Ú format_specr¢r{Z 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úrZr6rYrAÚ hash_infoÚmodulusr´r�r²rðr±r³rµr*r*r*r,Úss`#           & ÿýÿ  .  ^  0",# %$+ þ  *ù ýý ï   ó  P % )