grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/20263 Õì2aW\ã@s†ddlmZddlZddlZddlZddlZddlZddgZdd„Zdd„Z ej j Z ej j ZejdejejBƒZGd d„dejƒZdS) é)ÚDecimalNÚFractionÚgcdcCsfddl}|jdtdƒt|ƒtko0t|ƒknr\|p<|dkrPtj||ƒ Stj||ƒSt||ƒS)Nrz6fractions.gcd() is deprecated. Use math.gcd() instead.é)ÚwarningsÚwarnÚDeprecationWarningÚtypeÚintÚmathrÚ_gcd)ÚaÚbr©rú./opt/alt/python36/lib64/python3.6/fractions.pyrs   cCsx|r|||}}qW|S)Nr)r rrrrr sr 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œeZdZdRZdSddœ‡fdd„ Zed d „ƒZed d „ƒZdTdd„Ze dd„ƒZ e dd„ƒZ dd„Z dd„Z dd„Zdd„Zeeejƒ\ZZdd„Zeeejƒ\ZZdd„Zeeejƒ\ZZd d!„Zeeejƒ\ZZd"d#„Z d$d%„Z!d&d'„Z"d(d)„Z#d*d+„Z$d,d-„Z%d.d/„Z&d0d1„Z'd2d3„Z(d4d5„Z)d6d7„Z*d8d9„Z+dUd:d;„Z,dd?„Z.d@dA„Z/dBdC„Z0dDdE„Z1dFdG„Z2dHdI„Z3dJdK„Z4dLdM„Z5dNdO„Z6dPdQ„Z7‡Z8S)VrÚ _numeratorÚ _denominatorrNT)Ú _normalizec sRtt|ƒj|ƒ}|dk�rdt|ƒtkr6||_d|_|St|tj ƒrV|j |_|j |_|St|t t fƒrx|jƒ\|_|_|St|tƒ�rZtj|ƒ}|dkr¢td|ƒ‚t|jdƒp°dƒ}|jdƒ}|rÌt|ƒ}nvd}|jdƒ}|�rdt|ƒ}||t|ƒ}||9}|jdƒ} | �rBt| ƒ} | d k�r4|d| 9}n|d| 9}|jd ƒd k�rb| }ntd ƒ‚nft|ƒtk�o€t|ƒkn�rŠn@t|tj ƒ�rÂt|tj ƒ�rÂ|j |j |j |j }}ntd ƒ‚|d k�ràtd|ƒ‚|�rBt|ƒtk�ot|ƒkn�r(tj||ƒ} |d k�r2| } n t||ƒ} || }|| }||_||_|S)Néz Invalid literal for Fraction: %rZnumÚ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ÚfloatrÚas_integer_ratioÚstrÚ_RATIONAL_FORMATÚmatchÚ ValueErrorÚgroupÚlenÚ TypeErrorÚZeroDivisionErrorr rr ) Úclsr!r"rÚselfÚmrrZscalerÚg)Ú __class__rrrTsr            $   $   zFraction.__new__cCsDt|tjƒr||ƒSt|tƒs8td|j|t|ƒjfƒ‚||jƒŽS)Nz.%s.from_float() only takes floats, not %r (%s))rrÚIntegralr#r+Ú__name__r r$)r-ÚfrrrÚ from_floatÁs   zFraction.from_floatcCsVddlm}t|tjƒr&|t|ƒƒ}n$t||ƒsJtd|j|t|ƒjfƒ‚||j ƒŽS)Nr)rz2%s.from_decimal() only takes Decimals, not %r (%s)) rrrrr2r r+r3r r$)r-ZdecrrrrÚ from_decimalÏs   zFraction.from_decimalé@Bc Csâ|dkrtdƒ‚|j|kr"t|ƒSd\}}}}|j|j}}xP||}|||} | |kr\P|||||| f\}}}}||||}}q>W|||} t|| ||| |ƒ} t||ƒ} t| |ƒt| |ƒkrÚ| S| SdS)Nrz$max_denominator should be at least 1r)rrrr)r(rrrÚabs) r.Zmax_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))r1r3rr)r.rrrÚ__repr__szFraction.__repr__cCs(|jdkrt|jƒSd|j|jfSdS)Nrz%s/%s)rr%r)r.rrrÚ__str__s  zFraction.__str__csT‡‡fdd„}dˆjd|_ˆj|_‡‡fdd„}dˆjd|_ˆj|_||fS)NcsPt|ttfƒrˆ||ƒSt|tƒr0ˆt|ƒ|ƒSt|tƒrHˆt|ƒ|ƒStSdS)N)rr rr#ÚcomplexÚNotImplemented)r r)Úfallback_operatorÚmonomorphic_operatorrrÚforwardvs   z-Fraction._operator_fallbacks..forwardÚ__csZt|tjƒrˆ||ƒSt|tjƒr4ˆt|ƒt|ƒƒSt|tjƒrRˆt|ƒt|ƒƒStSdS)N)rrr ZRealr#ÚComplexr?r@)rr )rArBrrÚreverse‚s    z-Fraction._operator_fallbacks..reverseZ__r)r3Ú__doc__)rBrArCrFr)rArBrÚ_operator_fallbacks&sP  zFraction._operator_fallbackscCs,|j|j}}t|j||j|||ƒS)N)r"rr!)r rÚdaÚdbrrrÚ_add‘sz Fraction._addcCs,|j|j}}t|j||j|||ƒS)N)r"rr!)r rrIrJrrrÚ_sub™sz Fraction._subcCst|j|j|j|jƒS)N)rr!r")r rrrrÚ_mul¡sz Fraction._mulcCst|j|j|j|jƒS)N)rr!r")r rrrrÚ_div§s z Fraction._divcCstj||ƒS)N)r Úfloor)r rrrrÚ __floordiv__®szFraction.__floordiv__cCstj||ƒS)N)r rO)rr rrrÚ __rfloordiv__²szFraction.__rfloordiv__cCs||}|||S)Nr)r rÚdivrrrÚ__mod__¶szFraction.__mod__cCs||}|||S)Nr)rr rRrrrÚ__rmod__»szFraction.__rmod__cCs¬t|tjƒrœ|jdkrŠ|j}|dkr>t|j||j|dd�S|jdkrft|j| |j| dd�St|j | |j | dd�Sq¨t|ƒt|ƒSn t|ƒ|SdS)NrrF)r) rrr r"r!rrrr#)r rZpowerrrrÚ__pow__Às         zFraction.__pow__cCs\|jdkr|jdkr||jSt|tjƒrrHrKroÚaddÚ__add__Ú__radd__rLÚsubÚ__sub__Ú__rsub__rMÚmulÚ__mul__Ú__rmul__rNÚtruedivÚ __truediv__Ú __rtruediv__rPrQrSrTrUrVrWrXrYrZr[r\r_rfrkrnrqrsrurwrxryrzr|Ú __classcell__rr)r1rr<sTm  7  k )rrr rroÚreÚsysÚ__all__rr Ú hash_infoÚmodulusrcÚinfrdÚcompileÚVERBOSEÚ IGNORECASEr&r rrrrrÚs