Your IP : 3.145.97.17


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

3


 \W\�@s�ddlmZddlZddlZddlZddlZddlZddgZdd�Zdd�Z	ej
jZ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�!/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
cs�eZdZdRZdSdd��fdd�Zed	d
��Zedd��ZdTdd�Ze	dd��Z
e	dd��Zdd�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,d<d=�Z-d>d?�Z.d@dA�Z/dBdC�Z0dDdE�Z1dFdG�Z2dHdI�Z3dJdK�Z4dLdM�Z5dNdO�Z6dPdQ�Z7�Z8S)Vr�
_numerator�_denominatorrNT)�
_normalizecsRtt|�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
�dk�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�
�exprZsign�-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�ZeroDivisionErrorrrr)�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))
rrrrr1r
r*r2r	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))r0r2rr)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.<locals>.forward�__csZt|tj�r�||�St|tj�r4�t|�t|��St|tj�rR�t|�t|��StSdS)N)rrrZRealr"�Complexr>r?)rr
)r@rArr�reverse�s
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
r�da�dbrrr�_add�sz
Fraction._addcCs,|j|j}}t|j||j|||�S)N)r!rr )r
rrHrIrrr�_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)rrN)rr
rrr�
__rfloordiv__�szFraction.__rfloordiv__cCs||}|||S)Nr)r
r�divrrr�__mod__�szFraction.__mod__cCs||}|||S)Nr)rr
rQrrr�__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)	rrrr!r rrrr")r
rZpowerrrr�__pow__�s 




zFraction.__pow__cCs\|jdkr|jdkr||jSt|tj�r<t|j|j�|S|jdkrP||jS|t|�S)Nrr)	rrrrrrr r!r")rr
rrr�__rpow__�s


zFraction.__rpow__cCst|j|jdd�S)NF)r)rrr)r
rrr�__pos__�szFraction.__pos__cCst|j|jdd�S)NF)r)rrr)r
rrr�__neg__�szFraction.__neg__cCstt|j�|jdd�S)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|�}|dkr�tt||�|�Stt||�|�SdS)Nrrrr)�divmodr r!r7r�round)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__cCs�t|�tkr |j|ko|jdkSt|tj�rD|j|jkoB|j|jkSt|tj	�r`|j
dkr`|j}t|t�r�t
j|�s~t
j|�r�d|kS||j|�kSntSdS)Nrrg)r	r
rrrrrr r!rD�imag�realr"r�isnan�isinfr4r?)r
rrrr�__eq__7s
zFraction.__eq__cCsht|tj�r&||j|j|j|j�St|t�r`tj	|�sDtj
|�rN|d|�S|||j|��SntSdS)Ng)
rrrrr!rr r"rrhrir4r?)r-�other�oprrr�_richcmpLs

zFraction._richcmpcCs|j|tj�S)N)rm�operator�lt)r
rrrr�__lt__bszFraction.__lt__cCs|j|tj�S)N)rmrn�gt)r
rrrr�__gt__fszFraction.__gt__cCs|j|tj�S)N)rmrn�le)r
rrrr�__le__jszFraction.__le__cCs|j|tj�S)N)rmrn�ge)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|j�S)N)r	rr0rr)r-rrr�__copy__{szFraction.__copy__cCs t|�tkr|S|j|j|j�S)N)r	rr0rr)r-�memorrr�__deepcopy__�szFraction.__deepcopy__)rr)rN)r6)N)9r2�
__module__�__qualname__�	__slots__r�classmethodr4r5r;�propertyr r!r<r=rGrJrn�add�__add__�__radd__rK�sub�__sub__�__rsub__rL�mul�__mul__�__rmul__rM�truediv�__truediv__�__rtruediv__rOrPrRrSrTrUrVrWrXrYrZr[r^rerjrmrprrrtrvrwrxryr{�
__classcell__rr)r0rr<sTm
7k
)rrrrrn�re�sys�__all__rr�	hash_info�modulusrb�infrc�compile�VERBOSE�
IGNORECASEr%rrrrrr�<module>s