grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|jRnã@sv ddlmZddlZddlZddlZddlZddlZdgZejj Z ejj Z e  dejejB¡ZGdd„dejƒZdS)é©ÚDecimalNÚFractionaC \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ÌeZdZ dZdQddœ‡fdd„ Zedd „ƒZed d „ƒZd d „ZdRdd„Z e dd„ƒZ e dd„ƒZ dd„Z dd„Zdd„Zdd„Zeeejƒ\ZZdd„Zeeejƒ\ZZdd „Zeeejƒ\ZZd!d"„Zeeejƒ\ZZ d#d$„Z!ee!ej"ƒ\Z#Z$d%d&„Z%ee%e&ƒ\Z'Z(d'd(„Z)ee)ej*ƒ\Z+Z,d)d*„Z-d+d,„Z.d-d.„Z/d/d0„Z0d1d2„Z1d3d4„Z2d5d6„Z3d7d8„Z4dSd9d:„Z5d;d<„Z6d=d>„Z7d?d@„Z8dAdB„Z9dCdD„Z:dEdF„Z;dGdH„ZdMdN„Z?dOdP„Z@‡ZAS)Tr©Ú _numeratorÚ _denominatorrNT©Ú _normalizec s tt|ƒ |¡}|dur¬t|ƒtur||_d|_|St|tj ƒr+|j |_|j |_|St|t t fƒr<| ¡\|_|_|St|tƒr¨t |¡}|durPtd|ƒ‚t| d¡pWdƒ}| d¡}|ret|ƒ}n8d}| d¡}|r€dt|ƒ}||t|ƒ}||9}| d¡} | r�t| ƒ} | d kr–|d| 9}n|d| 9}| d ¡d kr§| }n3td ƒ‚t|ƒturºt|ƒur½nnnt|tj ƒr×t|tj ƒr×|j |j |j |j }}ntd ƒ‚|d kråtd|ƒ‚|rüt ||¡} |d krô| } || }|| }||_||_|S)Néz Invalid literal for Fraction: %rZnumÚ0ÚdenomÚdecimalé ÚexprZsignú-z2argument should be a string or a Rational instancez+both arguments should be Rational instanceszFraction(%s, 0))ÚsuperrÚ__new__ÚtypeÚintrrÚ isinstanceÚnumbersÚRationalÚ numeratorÚ denominatorÚfloatrÚas_integer_ratioÚstrÚ_RATIONAL_FORMATÚmatchÚ ValueErrorÚgroupÚlenÚ TypeErrorÚZeroDivisionErrorÚmathÚgcd) Úclsrrr ÚselfÚmr r ZscalerÚg©Ú __class__©ú0/opt/alt/python310/lib64/python3.10/fractions.pyr>sx    ÿ     €   ÿ  þ  zFraction.__new__cCsF t|tjƒr ||ƒSt|tƒstd|j|t|ƒjfƒ‚|| ¡ŽS)Nz.%s.from_float() only takes floats, not %r (%s))rrÚIntegralrr"Ú__name__rr)r&Úfr,r,r-Ú from_float§s  ÿ zFraction.from_floatcCsX ddlm}t|tjƒr|t|ƒƒ}nt||ƒs&td|j|t|ƒjfƒ‚||  ¡ŽS)Nrrz2%s.from_decimal() only takes Decimals, not %r (%s)) r rrrr.rr"r/rr)r&Zdecrr,r,r-Ú from_decimalµs   ÿÿ zFraction.from_decimalcCs |j|jfS©Nr©r'r,r,r-rÁs zFraction.as_integer_ratioé@Bc CsÞ |dkr tdƒ‚|j|krt|ƒSd\}}}}|j|j}} ||}|||} | |kr/n|||||| f\}}}}||||}}q |||} t|| ||| |ƒ} t||ƒ} t| |ƒt| |ƒkrm| S| S)Nr z$max_denominator should be at least 1)rr r r)rrrrÚabs) r'Zmax_denominatorZp0Zq0Zp1Zq1ÚnÚdÚaZq2ÚkZbound1Zbound2r,r,r-Úlimit_denominatorÉs*   ú  zFraction.limit_denominatorcCó|jSr3)r©r9r,r,r-rózFraction.numeratorcCr<r3)rr=r,r,r-rr>zFraction.denominatorcCs d|jj|j|jfS)Nz %s(%s, %s))r+r/rrr4r,r,r-Ú__repr__sÿzFraction.__repr__cCs& |jdkr t|jƒSd|j|jfS)Nr z%s/%s)rrrr4r,r,r-Ú__str__ s  zFraction.__str__csV ‡‡fdd„}dˆjd|_ˆj|_‡‡fdd„}dˆjd|_ˆj|_||fS)NcsLt|ttfƒr ˆ||ƒSt|tƒrˆt|ƒ|ƒSt|tƒr$ˆt|ƒ|ƒStSr3)rrrrÚcomplexÚNotImplemented©r9Úb©Úfallback_operatorÚmonomorphic_operatorr,r-Úforwardds   z-Fraction._operator_fallbacks..forwardÚ__csVt|tjƒr ˆ||ƒSt|tjƒrˆt|ƒt|ƒƒSt|tjƒr)ˆt|ƒt|ƒƒStSr3)rrrZRealrÚComplexrArB©rDr9rEr,r-Úreverseps    z-Fraction._operator_fallbacks..reverseZ__r)r/Ú__doc__)rGrFrHrLr,rEr-Ú_operator_fallbackssO  zFraction._operator_fallbacksc Cs¬ |j|j}}|j|j}}t ||¡}|dkr(t||||||dd�S||}|||||}t ||¡} | dkrIt|||dd�St|| ||| dd�S©Nr Fr©rrr$r%r© r9rDÚnaÚdaÚnbÚdbr)ÚsÚtÚg2r,r,r-Ú_addÃó  z Fraction._addc Cs¬ |j|j}}|j|j}}t ||¡}|dkr(t||||||dd�S||}|||||}t ||¡} | dkrIt|||dd�St|| ||| dd�SrOrPrQr,r,r-Ú_subÓrZz Fraction._subcCs| |j|j}}|j|j}}t ||¡}|dkr!||}||}t ||¡}|dkr3||}||}t||||dd�SrOrP)r9rDrRrSrTrUÚg1rXr,r,r-Ú_mulãs  z Fraction._mulc Csœ |j|j}}|j|j}}t ||¡}|dkr!||}||}t ||¡}|dkr3||}||}||||}} | dkrG| | }} t|| dd�S©Nr rFrrP) r9rDrRrSrTrUr\rXr7r8r,r,r-Ú_divós  z Fraction._divcCs |j|j|j|jSr3©rrrCr,r,r-Ú _floordivszFraction._floordivcCs< |j|j}}t|j|||jƒ\}}|t|||ƒfSr3)rÚdivmodrr)r9rDrSrUZdivZn_modr,r,r-Ú_divmod szFraction._divmodcCs. |j|j}}t|j||j|||ƒSr3)rrr)r9rDrSrUr,r,r-Ú_modsz Fraction._modcCs¦ t|tjƒrM|jdkrE|j}|dkr t|j||j|dd�S|jdkr4t|j| |j| dd�St|j | |j | dd�St|ƒt|ƒSt|ƒ|Sr^) rrrrrrrrr)r9rDZpowerr,r,r-Ú__pow__s(   þ   þ þ zFraction.__pow__cCs^ |jdkr|jdkr||jSt|tjƒrt|j|jƒ|S|jdkr)||jS|t|ƒS)Nr r) rrrrrrrrrrKr,r,r-Ú__rpow__:s     zFraction.__rpow__cCs t|j|jdd�S©NFr©rrrr=r,r,r-Ú__pos__HszFraction.__pos__cCs t|j |jdd�Srgrhr=r,r,r-Ú__neg__LszFraction.__neg__cCs tt|jƒ|jdd�Srg)rr6rrr=r,r,r-Ú__abs__PszFraction.__abs__cCs( |jdkr|j |j S|j|jS)Nrrr=r,r,r-Ú __trunc__Ts  zFraction.__trunc__cCs |j|jSr3r`r=r,r,r-Ú __floor__[s zFraction.__floor__cCs |j |j Sr3r`r=r,r,r-Ú__ceil___szFraction.__ceil__cCs– |dur.t|j|jƒ\}}|d|jkr|S|d|jkr"|dS|ddkr*|S|dSdt|ƒ}|dkrAtt||ƒ|ƒStt||ƒ|ƒS)Nér rr)rbrrr6rÚround)r'ZndigitsZfloorZ remainderÚshiftr,r,r-Ú __round__ds  zFraction.__round__cCsf z t|jdtƒ}Wn tyt}Yn wttt|jƒƒ|ƒ}|jdkr(|n| }|dkr1dS|S)Néÿÿÿÿréþÿÿÿ)ÚpowrÚ_PyHASH_MODULUSrÚ _PyHASH_INFÚhashr6r)r'ZdinvZhash_Úresultr,r,r-Ú__hash__}s þzFraction.__hash__cCsš t|ƒtur|j|ko|jdkSt|tjƒr#|j|jko"|j|jkSt|tj ƒr1|j dkr1|j }t|t ƒrKt  |¡s@t  |¡rDd|kS|| |¡kStS)Nr rç)rrrrrrrrrrJÚimagÚrealrr$ÚisnanÚisinfr1rBrCr,r,r-Ú__eq__žs    ÿ zFraction.__eq__cCsd t|tjƒr||j|j|j|jƒSt|tƒr0t  |¡s#t  |¡r(|d|ƒS|||  |¡ƒSt S)Nr{) rrrrrrrrr$r~rr1rB)r'ÚotherÚopr,r,r-Ú_richcmp³s  ÿ  zFraction._richcmpcCó | |tj¡Sr3)rƒÚoperatorÚltrCr,r,r-Ú__lt__ÉózFraction.__lt__cCr„r3)rƒr…ÚgtrCr,r,r-Ú__gt__ÍrˆzFraction.__gt__cCr„r3)rƒr…ÚlerCr,r,r-Ú__le__ÑrˆzFraction.__le__cCr„r3)rƒr…ÚgerCr,r,r-Ú__ge__ÕrˆzFraction.__ge__cCs t|jƒSr3)Úboolrr=r,r,r-Ú__bool__Ùs zFraction.__bool__cCs|jt|ƒffSr3)r+rr4r,r,r-Ú __reduce__ászFraction.__reduce__cCó t|ƒtkr|S| |j|j¡Sr3©rrr+rrr4r,r,r-Ú__copy__äó zFraction.__copy__cCr’r3r“)r'Zmemor,r,r-Ú __deepcopy__ér•zFraction.__deepcopy__)rN)r5r3)Br/Ú __module__Ú __qualname__Ú __slots__rÚ classmethodr1r2rr;Úpropertyrrr?r@rNrYr…ÚaddÚ__add__Ú__radd__r[ÚsubÚ__sub__Ú__rsub__r]ÚmulÚ__mul__Ú__rmul__r_ÚtruedivÚ __truediv__Ú __rtruediv__raÚfloordivÚ __floordiv__Ú __rfloordiv__rcrbÚ __divmod__Ú __rdivmod__rdÚmodÚ__mod__Ú__rmod__rerfrirjrkrlrmrnrrrzr€rƒr‡rŠrŒrŽr�r‘r”r–Ú __classcell__r,r,r*r-r&shi   7  0 !)r rr$rr…ÚreÚsysÚ__all__Ú hash_infoÚmodulusrvÚinfrwÚcompileÚVERBOSEÚ IGNORECASErrrr,r,r,r-Ús  ô