Viewing File: /opt/alt/python35/lib64/python3.5/__pycache__/fractions.cpython-35.opt-2.pyc



]$`@sddlmZddlZddlZddlZddlZddlZddgZddZddZ	ej
jZej
j
ZejdejejBZGd	ddejZdS)
)DecimalNFractiongcdcCsddl}|jdtdt|tkoBt|knrz|pP|dkrjtj||Stj||St||S)Nrz6fractions.gcd() is deprecated. Use math.gcd() instead.)warningswarnDeprecationWarningtypeintmathr_gcd)abrr./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<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
cs_eZdZdQZdddfddZedd	Zed
dZdd
dZe	ddZ
e	ddZddZddZ
ddZddZeeej\ZZddZeeej\ZZddZeeej\ZZdd Zeeej\ZZd!d"Z d#d$Z!d%d&Z"d'd(Z#d)d*Z$d+d,Z%d-d.Z&d/d0Z'd1d2Z(d3d4Z)d5d6Z*d7d8Z+dd9d:Z,d;d<Z-d=d>Z.d?d@Z/dAdBZ0dCdDZ1dEdFZ2dGdHZ3dIdJZ4dKdLZ5dMdNZ6dOdPZ7S)Rr
_numerator_denominatorrNTcsUtt|j|}|dkr+t|tkrL||_d|_|St|tj	rz|j
|_|j|_|St|trtj
|}|j|_|j|_|St|trtj|}|j|_|j|_|St|trtj|}|dkr(td|t|jdp=d}|jd}|rgt|}nd}|jd}|rdt|}	||	t|}||	9}|jd}
|
rt|
}
|
d	kr|d|
9}n|d|
9}|jd
dkr(|}qtdnt|tkoNt|knrVnTt|tj	rt|tj	r|j
|j|j
|j}}ntd
|d	krtd||r?t|tkot|knrtj||}|d	kr+|}nt||}||}||}||_||_|S)Nz Invalid literal for Fraction: %rnum0denomdecimal
exprsign-z2argument should be a string or a Rational instancez+both arguments should be Rational instanceszFraction(%s, 0))superr__new__r	r
rr
isinstancenumbersRational	numeratordenominatorfloat
from_floatrfrom_decimalstr_RATIONAL_FORMATmatch
ValueErrorgrouplen	TypeErrorZeroDivisionErrorrrr)clsr!r"
_normalizeselfvaluemrrZscalerg)	__class__rrrTs		


(
(


		zFraction.__new__cCst|tjr||St|tsPtd|j|t|jftj|rxt	d||jftj
|rtd||jf||jS)Nz.%s.from_float() only takes floats, not %r (%s)zCannot convert %r to %s.)
rrIntegralr#r,__name__r	risnanr)isinf
OverflowErroras_integer_ratio)r.frrrr$s
zFraction.from_floatcCs)ddlm}t|tjr7|t|}n4t||sktd|j|t|jf|j	rt
d||jf|jrt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	Zis_infiniter9Zis_nanr)Zas_tuplejoinmapr&)r.Zdecrrdigitsrrrrr%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)rrrabs)
r0Zmax_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))r4r6rr)r0rrr__repr__2szFraction.__repr__cCs4|jdkrt|jSd|j|jfSdS)Nrz%s/%s)rr&r)r0rrr__str__7s
zFraction.__str__cstfdd}djd|_j|_fdd}djd|_j|_||fS)Ncsnt|ttfr"||St|trDt||St|trft||StSdS)N)rr
rr#complexNotImplemented)r
r)fallback_operatormonomorphic_operatorrrforwards
z-Fraction._operator_fallbacks.<locals>.forward__cs}t|tjr||St|tjrJt|t|St|tjrut|t|StSdS)N)rrr ZRealr#ComplexrGrH)rr
)rIrJrrreverses
z-Fraction._operator_fallbacks.<locals>.reverseZ__r)r6__doc__)rJrIrKrNr)rIrJr_operator_fallbacks>sP	
zFraction._operator_fallbackscCs6|j|j}}t|j||j|||S)N)r"rr!)r
rdadbrrr_addsz
Fraction._addcCs6|j|j}}t|j||j|||S)N)r"rr!)r
rrQrRrrr_subsz
Fraction._subcCs!t|j|j|j|jS)N)rr!r")r
rrrr_mulsz
Fraction._mulcCs!t|j|j|j|jS)N)rr!r")r
rrrr_divsz
Fraction._divcCstj||S)N)rfloor)r
rrrr__floordiv__szFraction.__floordiv__cCstj||S)N)rrW)rr
rrr
__rfloordiv__szFraction.__rfloordiv__cCs||}|||S)Nr)r
rdivrrr__mod__s
zFraction.__mod__cCs||}|||S)Nr)rr
rZrrr__rmod__s
zFraction.__rmod__cCst|tjr|jdkr|j}|dkrWt|j||j|ddS|jdkrt|j||j|ddSt|j||j|ddSqt|t|Snt||SdS)Nrrr/F)	rrr r"r!rrrr#)r
rZpowerrrr__pow__s 	


zFraction.__pow__cCsz|jdkr)|jdkr)||jSt|tjrRt|j|j|S|jdkrl||jS|t|S)Nrr)	rrrrr rr!r"r#)rr
rrr__rpow__szFraction.__rpow__cCst|j|jddS)Nr/F)rrr)r
rrr__pos__szFraction.__pos__cCst|j|jddS)Nr/F)rrr)r
rrr__neg__szFraction.__neg__cCstt|j|jddS)Nr/F)rr@rr)r
rrr__abs__szFraction.__abs__cCs1|jdkr|j|jS|j|jSdS)Nr)rr)r
rrr	__trunc__szFraction.__trunc__cCs|j|jS)N)r!r")r
rrr	__floor__szFraction.__floor__cCs|j|jS)N)r!r")r
rrr__ceil__szFraction.__ceil__cCs|dkrut|j|j\}}|d|jkr>|S|d|jkrY|dS|ddkrm|S|dSdt|}|dkrtt|||Stt|||SdS)Nrrrr)divmodr!r"r@rround)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__cCst|tkr.|j|ko-|jdkSt|tjrb|j|jkoa|j|jkSt|tj	r|j
dkr|j}t|trt
j|st
j|rd|kS||j|kSntSdS)Nrrg)r	r
rrrrr r!r"rMimagrealr#rr7r8r$rH)r
rrrr__eq__Os!	
zFraction.__eq__cCst|tjr3||j|j|j|jSt|trtj	|s`tj
|rm|d|S|||j|SntSdS)Ng)
rrr rr"rr!r#rr7r8r$rH)r0otheroprrr_richcmpds
zFraction._richcmpcCs|j|tjS)N)rtoperatorlt)r
rrrr__lt__zszFraction.__lt__cCs|j|tjS)N)rtrugt)r
rrrr__gt__~szFraction.__gt__cCs|j|tjS)N)rtrule)r
rrrr__le__szFraction.__le__cCs|j|tjS)N)rtruge)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|jS)N)r	rr4rr)r0rrr__copy__szFraction.__copy__cCs,t|tkr|S|j|j|jS)N)r	rr4rr)r0memorrr__deepcopy__szFraction.__deepcopy__)rr)8r6
__module____qualname__	__slots__rclassmethodr$r%rDpropertyr!r"rErFrPrSruadd__add____radd__rTsub__sub____rsub__rUmul__mul____rmul__rVtruediv__truediv____rtruediv__rXrYr[r\r]r^r_r`rarbrcrdrgrnrqrtrwryr{r}r~rrrrr)r4rr<sTu7k)rrrrruresys__all__rr	hash_infomodulusrkinfrlcompileVERBOSE
IGNORECASEr'r rrrrr<module>s
Back to Directory File Manager