MINI MINI MANI MO

Path : /usr/lib64/python3.6/__pycache__/
File Upload :
Current File : //usr/lib64/python3.6/__pycache__/fractions.cpython-36.opt-2.pyc

3


 \W\@sddlmZddlZddlZddlZddlZddlZddgZddZddZ	ej
jZej
j
ZejdejejBZGd	ddejZdS)
)DecimalNFractiongcdcCsfddl}|jdtdt|tko0t|knr\|p<|dkrPtj||Stj||St||S)Nrz6fractions.gcd() is deprecated. Use math.gcd() instead.)warningswarnDeprecationWarningtypeintmathr_gcd)abrr!/usr/lib64/python3.6/fractions.pyrs cCsx|r|||}}qW|S)Nr)r
rrrrr sraC
    \A\s*                      # optional whitespace at the start, then
    (?P<sign>[-+]?)            # an optional sign, then
    (?=\d|\.\d)                # lookahead for digit or .digit
    (?P<num>\d*)               # numerator (possibly empty)
    (?:                        # followed by
       (?:/(?P<denom>\d+))?    # an optional denominator
    |                          # or
       (?:\.(?P<decimal>\d*))? # an optional fractional part
       (?:E(?P<exp>[-+]?\d+))? # and optional exponent
    )
    \s*\Z                      # and optional whitespace to finish
cseZdZdRZdSddfddZed	d
ZeddZdTddZe	ddZ
e	ddZddZddZ
ddZddZeeej\ZZddZeeej\ZZddZeeej\ZZd d!Zeeej\ZZd"d#Z d$d%Z!d&d'Z"d(d)Z#d*d+Z$d,d-Z%d.d/Z&d0d1Z'd2d3Z(d4d5Z)d6d7Z*d8d9Z+dUd:d;Z,d<d=Z-d>d?Z.d@dAZ/dBdCZ0dDdEZ1dFdGZ2dHdIZ3dJdKZ4dLdMZ5dNdOZ6dPdQZ7Z8S)Vr
_numerator_denominatorrNT)
_normalizecsRtt|j|}|dkrdt|tkr6||_d|_|St|tj	rV|j
|_|j|_|St|tt
frx|j\|_|_|St|trZtj|}|dkrtd|t|jdpd}|jd}|rt|}nvd}|jd}|rdt|}||t|}||9}|jd}	|	rBt|	}	|	d	kr4|d|	9}n|d|	9}|jd
dkrb|}ntdnft|tkot|knrn@t|tj	rt|tj	r|j
|j|j
|j}}ntd
|d	krtd||rBt|tkot|knr(tj||}
|d	kr2|
}
n
t||}
||
}||
}||_||_|S)Nz Invalid literal for Fraction: %rZnum0denomdecimal
exprZsign-z2argument should be a string or a Rational instancez+both arguments should be Rational instanceszFraction(%s, 0))superr__new__r	r
rr
isinstancenumbersRational	numeratordenominatorfloatras_integer_ratiostr_RATIONAL_FORMATmatch
ValueErrorgrouplen	TypeErrorZeroDivisionErrorrrr)clsr r!rselfmrrZscalerg)	__class__rrrTsr







$

$

zFraction.__new__cCsDt|tjr||St|ts8td|j|t|jf||jS)Nz.%s.from_float() only takes floats, not %r (%s))rrIntegralr"r*__name__r	r#)r,frrr
from_floats
zFraction.from_floatcCsVddlm}t|tjr&|t|}n$t||sJtd|j|t|jf||j	S)Nr)rz2%s.from_decimal() only takes Decimals, not %r (%s))
rrrrr1r
r*r2r	r#)r,Zdecrrrrfrom_decimals
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'rrrabs)
r-Zmax_denominatorZp0Zq0Zp1Zq1ndr
Zq2kZbound1Zbound2rrrlimit_denominators& 

zFraction.limit_denominatorcCs|jS)N)r)r
rrrr szFraction.numeratorcCs|jS)N)r)r
rrrr!szFraction.denominatorcCsd|jj|j|jfS)Nz
%s(%s, %s))r0r2rr)r-rrr__repr__szFraction.__repr__cCs(|jdkrt|jSd|j|jfSdS)Nrz%s/%s)rr$r)r-rrr__str__s

zFraction.__str__csTfdd}djd|_j|_fdd}djd|_j|_||fS)NcsPt|ttfr||St|tr0t||St|trHt||StSdS)N)rr
rr"complexNotImplemented)r
r)fallback_operatormonomorphic_operatorrrforwardvs


z-Fraction._operator_fallbacks.<locals>.forward__csZt|tjr||St|tjr4t|t|St|tjrRt|t|StSdS)N)rrrZRealr"Complexr>r?)rr
)r@rArrreverses
z-Fraction._operator_fallbacks.<locals>.reverseZ__r)r2__doc__)rAr@rBrEr)r@rAr_operator_fallbacks&sP	
zFraction._operator_fallbackscCs,|j|j}}t|j||j|||S)N)r!rr )r
rdadbrrr_addsz
Fraction._addcCs,|j|j}}t|j||j|||S)N)r!rr )r
rrHrIrrr_subsz
Fraction._subcCst|j|j|j|jS)N)rr r!)r
rrrr_mulsz
Fraction._mulcCst|j|j|j|jS)N)rr r!)r
rrrr_divsz
Fraction._divcCstj||S)N)rfloor)r
rrrr__floordiv__szFraction.__floordiv__cCstj||S)N)rrN)rr
rrr
__rfloordiv__szFraction.__rfloordiv__cCs||}|||S)Nr)r
rdivrrr__mod__szFraction.__mod__cCs||}|||S)Nr)rr
rQrrr__rmod__szFraction.__rmod__cCst|tjr|jdkr|j}|dkr>t|j||j|ddS|jdkrft|j||j|ddSt|j||j|ddSqt|t|Snt||SdS)NrrF)r)	rrrr!r rrrr")r
rZpowerrrr__pow__s 




zFraction.__pow__cCs\|jdkr|jdkr||jSt|tjr<t|j|j|S|jdkrP||jS|t|S)Nrr)	rrrrrrr r!r")rr
rrr__rpow__s


zFraction.__rpow__cCst|j|jddS)NF)r)rrr)r
rrr__pos__szFraction.__pos__cCst|j|jddS)NF)r)rrr)r
rrr__neg__szFraction.__neg__cCstt|j|jddS)NF)r)rr7rr)r
rrr__abs__szFraction.__abs__cCs*|jdkr|j|jS|j|jSdS)Nr)rr)r
rrr	__trunc__s
zFraction.__trunc__cCs|j|jS)N)r r!)r
rrr	__floor__szFraction.__floor__cCs|j|jS)N)r r!)r
rrr__ceil__szFraction.__ceil__cCs|dkrZt|j|j\}}|d|jkr,|S|d|jkrB|dS|ddkrR|S|dSdt|}|dkrtt|||Stt|||SdS)Nrrrr)divmodr r!r7rround)r-ZndigitsrNZ	remainderZshiftrrr	__round__szFraction.__round__cCsPt|jtdt}|st}nt|j|t}|dkr:|n|}|dkrLdS|S)Nrrr)powr_PyHASH_MODULUS_PyHASH_INFr7r)r-ZdinvZhash_resultrrr__hash__!szFraction.__hash__cCst|tkr |j|ko|jdkSt|tjrD|j|jkoB|j|jkSt|tj	r`|j
dkr`|j}t|trt
j|s~t
j|rd|kS||j|kSntSdS)Nrrg)r	r
rrrrrr r!rDimagrealr"risnanisinfr4r?)r
rrrr__eq__7s
zFraction.__eq__cCsht|tjr&||j|j|j|jSt|tr`tj	|sDtj
|rN|d|S|||j|SntSdS)Ng)
rrrrr!rr r"rrhrir4r?)r-otheroprrr_richcmpLs

zFraction._richcmpcCs|j|tjS)N)rmoperatorlt)r
rrrr__lt__bszFraction.__lt__cCs|j|tjS)N)rmrngt)r
rrrr__gt__fszFraction.__gt__cCs|j|tjS)N)rmrnle)r
rrrr__le__jszFraction.__le__cCs|j|tjS)N)rmrnge)r
rrrr__ge__nszFraction.__ge__cCs
|jdkS)Nr)r)r
rrr__bool__rszFraction.__bool__cCs|jt|ffS)N)r0r$)r-rrr
__reduce__xszFraction.__reduce__cCs t|tkr|S|j|j|jS)N)r	rr0rr)r-rrr__copy__{szFraction.__copy__cCs t|tkr|S|j|j|jS)N)r	rr0rr)r-memorrr__deepcopy__szFraction.__deepcopy__)rr)rN)r6)N)9r2
__module____qualname__	__slots__rclassmethodr4r5r;propertyr r!r<r=rGrJrnadd__add____radd__rKsub__sub____rsub__rLmul__mul____rmul__rMtruediv__truediv____rtruediv__rOrPrRrSrTrUrVrWrXrYrZr[r^rerjrmrprrrtrvrwrxryr{
__classcell__rr)r0rr<sTm
7k
)rrrrrnresys__all__rr	hash_infomodulusrbinfrccompileVERBOSE
IGNORECASEr%rrrrrr<module>s

OHA YOOOO