grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]$`ã@sÁddlmZddlZddlZddlZddlZddlZddgZdd„Zdd„Z ej j Z ej j ZejdejejBƒZGd d„dejƒZdS) é)ÚDecimalNÚFractionÚgcdcCs‡ddl}|jdtdƒt|ƒtkoBt|ƒknrz|pP|dkrjtj||ƒ Stj||ƒSt||ƒS)Nrz6fractions.gcd() is deprecated. Use math.gcd() instead.é)ÚwarningsÚwarnÚDeprecationWarningÚtypeÚintÚmathrÚ_gcd)ÚaÚbr©rú./opt/alt/python35/lib64/python3.5/fractions.pyrs   (cCs"x|r|||}}qW|S)Nr)r rrrrr s r aC \A\s* # optional whitespace at the start, then (?P[-+]?) # an optional sign, then (?=\d|\.\d) # lookahead for digit or .digit (?P\d*) # numerator (possibly empty) (?: # followed by (?:/(?P\d+))? # an optional denominator | # or (?:\.(?P\d*))? # an optional fractional part (?:E(?P[-+]?\d+))? # and optional exponent ) \s*\Z # and optional whitespace to finish cs_eZdZdQZddd‡fdd†Zedd „ƒZed d „ƒZd d d„Ze dd„ƒZ e dd„ƒZ dd„Z dd„Z dd„Zdd„Zeeejƒ\ZZdd„Zeeejƒ\ZZdd„Zeeejƒ\ZZdd „Zeeejƒ\ZZd!d"„Z d#d$„Z!d%d&„Z"d'd(„Z#d)d*„Z$d+d,„Z%d-d.„Z&d/d0„Z'd1d2„Z(d3d4„Z)d5d6„Z*d7d8„Z+dd9d:„Z,d;d<„Z-d=d>„Z.d?d@„Z/dAdB„Z0dCdD„Z1dEdF„Z2dGdH„Z3dIdJ„Z4dKdL„Z5dMdN„Z6dOdP„Z7‡S)RrÚ _numeratorÚ _denominatorrNTc sUtt|ƒj|ƒ}|dkr+t|ƒtkrL||_d|_|St|tj ƒrz|j |_|j |_|St|t ƒr´tj |ƒ}|j|_|j|_|St|tƒrîtj|ƒ}|j|_|j|_|St|tƒrtj|ƒ}|dkr(td|ƒ‚t|jdƒp=dƒ}|jdƒ}|rgt|ƒ}n–d}|jdƒ}|r°dt|ƒ} || t|ƒ}|| 9}|jdƒ} | rýt| ƒ} | d krî|d| 9}n|d| 9}|jd ƒd kr(| }qªtd ƒ‚nt|ƒtkoNt|ƒknrVnTt|tj ƒržt|tj ƒrž|j |j |j |j }}n td ƒ‚|d krÆtd|ƒ‚|r?t|ƒtkoït|ƒknrtj||ƒ} |d kr+| } nt||ƒ} || }|| }||_||_|S)Néz Invalid literal for Fraction: %rÚnumÚ0ÚdenomÚdecimalé ÚexprÚsignú-z2argument should be a string or a Rational instancez+both arguments should be Rational instanceszFraction(%s, 0))ÚsuperrÚ__new__r r rrÚ isinstanceÚnumbersÚRationalÚ numeratorÚ denominatorÚfloatÚ from_floatrÚ from_decimalÚstrÚ_RATIONAL_FORMATÚmatchÚ ValueErrorÚgroupÚlenÚ TypeErrorÚZeroDivisionErrorr rr ) Úclsr!r"Ú _normalizeÚselfÚvalueÚmrrZscalerÚg)Ú __class__rrrTs€               (   (      zFraction.__new__cCs°t|tjƒr||ƒSt|tƒsPtd|j|t|ƒjfƒ‚tj|ƒrxt d||jfƒ‚tj |ƒr t d||jfƒ‚||j ƒŒS)Nz.%s.from_float() only takes floats, not %r (%s)zCannot convert %r to %s.) rrÚIntegralr#r,Ú__name__r r Úisnanr)ÚisinfÚ OverflowErrorÚas_integer_ratio)r.Úfrrrr$És zFraction.from_floatcCs)ddlm}t|tjƒr7|t|ƒƒ}n4t||ƒsktd|j|t|ƒjfƒ‚|j ƒr�t d||jfƒ‚|j ƒrµt d||jfƒ‚|j ƒ\}}}tdjtt|ƒƒƒ}|rõ| }|dkr||d|ƒS||d| ƒSdS)Nr)rz2%s.from_decimal() only takes Decimals, not %r (%s)zCannot convert %s to %s.Úr)rrrrr5r r,r6r Z is_infiniter9Zis_nanr)Zas_tupleÚjoinÚmapr&)r.ZdecrrÚdigitsrrrrr%Ûs&   zFraction.from_decimali@Bc Cs%|dkrtdƒ‚|j|kr1t|ƒSd\}}}}|j|j}}xd||}|||} | |kr~P|||||| f\}}}}||||}}qYW|||} t|| ||| |ƒ} t||ƒ} t| |ƒt| |ƒkr| S| SdS)Nrz$max_denominator should be at least 1r)rrrr)r)rrrÚabs) r0Zmax_denominatorZp0Zq0Zp1Zq1ÚnÚdr Zq2ÚkZbound1Zbound2rrrÚlimit_denominatorós&     & zFraction.limit_denominatorcCs|jS)N)r)r rrrr!*szFraction.numeratorcCs|jS)N)r)r rrrr".szFraction.denominatorcCsd|jj|j|jfS)Nz %s(%s, %s))r4r6rr)r0rrrÚ__repr__2s zFraction.__repr__cCs4|jdkrt|jƒSd|j|jfSdS)Nrz%s/%s)rr&r)r0rrrÚ__str__7s zFraction.__str__cst‡‡fdd†}dˆjd|_ˆj|_‡‡fdd†}dˆjd|_ˆj|_||fS)Ncsnt|ttfƒr"ˆ||ƒSt|tƒrDˆt|ƒ|ƒSt|tƒrfˆt|ƒ|ƒStSdS)N)rr rr#ÚcomplexÚNotImplemented)r r)Úfallback_operatorÚmonomorphic_operatorrrÚforwardŽs z-Fraction._operator_fallbacks..forwardÚ__cs}t|tjƒrˆ||ƒSt|tjƒrJˆt|ƒt|ƒƒSt|tjƒruˆt|ƒt|ƒƒStSdS)N)rrr ZRealr#ÚComplexrGrH)rr )rIrJrrÚreversešs z-Fraction._operator_fallbacks..reverseZ__r)r6Ú__doc__)rJrIrKrNr)rIrJrÚ_operator_fallbacks>sP    zFraction._operator_fallbackscCs6|j|j}}t|j||j|||ƒS)N)r"rr!)r rÚdaÚdbrrrÚ_add©sz Fraction._addcCs6|j|j}}t|j||j|||ƒS)N)r"rr!)r rrQrRrrrÚ_sub±sz Fraction._subcCs!t|j|j|j|jƒS)N)rr!r")r rrrrÚ_mul¹sz Fraction._mulcCs!t|j|j|j|jƒS)N)rr!r")r rrrrÚ_div¿sz Fraction._divcCstj||ƒS)N)r Úfloor)r rrrrÚ __floordiv__ÆszFraction.__floordiv__cCstj||ƒS)N)r rW)rr rrrÚ __rfloordiv__ÊszFraction.__rfloordiv__cCs||}|||S)Nr)r rÚdivrrrÚ__mod__Îs zFraction.__mod__cCs||}|||S)Nr)rr rZrrrÚ__rmod__Ós zFraction.__rmod__cCsÚt|tjƒrÈ|jdkr±|j}|dkrWt|j||j|ddƒS|jdkr‰t|j| |j| ddƒSt|j | |j | ddƒSqÖt|ƒt|ƒSnt|ƒ|SdS)Nrrr/F) rrr r"r!rrrr#)r rZpowerrrrÚ__pow__Øs      zFraction.__pow__cCsz|jdkr)|jdkr)||jSt|tjƒrRt|j|jƒ|S|jdkrl||jS|t|ƒS)Nrr) rrrrr rr!r"r#)rr rrrÚ__rpow__ös  zFraction.__rpow__cCst|j|jddƒS)Nr/F)rrr)r rrrÚ__pos__szFraction.__pos__cCst|j |jddƒS)Nr/F)rrr)r rrrÚ__neg__szFraction.__neg__cCstt|jƒ|jddƒS)Nr/F)rr@rr)r rrrÚ__abs__ szFraction.__abs__cCs1|jdkr|j |j S|j|jSdS)Nr)rr)r rrrÚ __trunc__szFraction.__trunc__cCs|j|jS)N)r!r")r rrrÚ __floor__szFraction.__floor__cCs|j |j S)N)r!r")r rrrÚ__ceil__szFraction.__ceil__cCsÄ|dkrut|j|jƒ\}}|d|jkr>|S|d|jkrY|dS|ddkrm|S|dSdt|ƒ}|dkr¨tt||ƒ|ƒStt||ƒ|ƒSdS)Nrrrr)Údivmodr!r"r@rÚround)r0ZndigitsrWZ remainderZshiftrrrÚ __round__ s  zFraction.__round__cCslt|jtdtƒ}|s(t}nt|jƒ|t}|dkrQ|n| }|dkrhdS|S)Nrrréÿÿÿÿéþÿÿÿ)ÚpowrÚ_PyHASH_MODULUSÚ _PyHASH_INFr@r)r0ZdinvZhash_ÚresultrrrÚ__hash__9s  zFraction.__hash__cCsát|ƒtkr.|j|ko-|jdkSt|tjƒrb|j|jkoa|j|jkSt|tj ƒrŒ|j dkrŒ|j }t|t ƒrÙt j|ƒs¹t j|ƒrÃd|kS||j|ƒkSntSdS)Nrrg)r r rrrrr r!r"rMÚimagÚrealr#r r7r8r$rH)r rrrrÚ__eq__Os!  zFraction.__eq__cCsŽt|tjƒr3||j|j|j|jƒSt|tƒr†tj |ƒs`tj |ƒrm|d|ƒS|||j |ƒƒSnt SdS)Ng) rrr rr"rr!r#r r7r8r$rH)r0ÚotherÚoprrrÚ_richcmpds  zFraction._richcmpcCs|j|tjƒS)N)rtÚoperatorÚlt)r rrrrÚ__lt__zszFraction.__lt__cCs|j|tjƒS)N)rtruÚgt)r rrrrÚ__gt__~szFraction.__gt__cCs|j|tjƒS)N)rtruÚle)r rrrrÚ__le__‚szFraction.__le__cCs|j|tjƒS)N)rtruÚge)r rrrrÚ__ge__†szFraction.__ge__cCs |jdkS)Nr)r)r rrrÚ__bool__ŠszFraction.__bool__cCs|jt|ƒffS)N)r4r&)r0rrrÚ __reduce__�szFraction.__reduce__cCs,t|ƒtkr|S|j|j|jƒS)N)r rr4rr)r0rrrÚ__copy__“szFraction.__copy__cCs,t|ƒtkr|S|j|j|jƒS)N)r rr4rr)r0ÚmemorrrÚ __deepcopy__˜szFraction.__deepcopy__)rr)8r6Ú __module__Ú __qualname__Ú __slots__rÚ classmethodr$r%rDÚpropertyr!r"rErFrPrSruÚaddÚ__add__Ú__radd__rTÚsubÚ__sub__Ú__rsub__rUÚmulÚ__mul__Ú__rmul__rVÚtruedivÚ __truediv__Ú __rtruediv__rXrYr[r\r]r^r_r`rarbrcrdrgrnrqrtrwryr{r}r~rr€r‚rr)r4rr<sT u7   k                          )rrr rruÚreÚsysÚ__all__rr Ú hash_infoÚmodulusrkÚinfrlÚcompileÚVERBOSEÚ IGNORECASEr'r rrrrrÚs