Your IP : 3.135.202.168


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

U

e5d	_�@s�ddlmZddlZddlZddlZddlZddlZddgZdd�Zdd�Z	ej
jZej
j
Ze�dejejB�ZGd	d�dej�ZdS)
���DecimalN�Fraction�gcdcCsfddl}|�dtd�t|�tkr2t|�kr\nn&|p<|dkrPt�||�St�||�St||�S)Nrz6fractions.gcd() is deprecated. Use math.gcd() instead.�)�warnings�warn�DeprecationWarning�type�int�mathr�_gcd)�a�br�r�!/usr/lib64/python3.8/fractions.pyrs� cCs|r|||}}q|S�Nr�rrrrrr
 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�eZdZdZdQdd��fdd�Zedd	��Zed
d��Zdd
�ZdRdd�Z	e
dd��Ze
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�Z<dIdJ�Z=dKdL�Z>dMdN�Z?dOdP�Z@�ZAS)Tr��
_numerator�_denominatorrNT��
_normalizecsRtt|��|�}|dk�rdt|�tkr6||_d|_|St|tj	�rV|j
|_|j|_|St|tt
f�rx|��\|_|_|St|t��rZt�|�}|dkr�td|��t|�d�p�d�}|�d�}|r�t|�}nvd}|�d�}|�rdt|�}||t|�}||9}|�d�}	|	�rBt|	�}	|	d	k�r4|d|	9}n|d|	9}|�d
�dk�rb|}ntd��nft|�tk�r�t|�k�r�nnn@t|tj	��r�t|tj	��r�|j
|j|j
|j}}ntd
��|d	k�r�td|��|�rBt|�tk�rt|�k�r(nnt�||�}
|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
rrr�
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__rrr!Tsx

�





$
�

�
$

zFraction.__new__cCsDt|tj�r||�St|t�s8td|j|t|�jf��||���S)Nz.%s.from_float() only takes floats, not %r (%s))r"r#�Integralr'r/�__name__r
r()r1�frrr�
from_float�s
�zFraction.from_floatcCsVddlm}t|tj�r&|t|��}n$t||�sJtd|j|t|�jf��||�	��S)Nrrz2%s.from_decimal() only takes Decimals, not %r (%s))
rrr"r#r7rr/r8r
r()r1Zdecrrrr�from_decimal�s
��zFraction.from_decimalcCs|j|jfSrr�r2rrrr(�szFraction.as_integer_ratio�@Bc
Cs�|dkrtd��|j|kr"t|�Sd\}}}}|j|j}}||}|||}	|	|krZq�||||||	f\}}}}||||}}q<|||}
t||
|||
|�}t||�}t||�t||�kr�|S|SdS)Nrz$max_denominator should be at least 1)rrrr)r,rrr�abs)
r2Zmax_denominatorZp0Zq0Zp1Zq1�n�drZq2�kZbound1Zbound2rrr�limit_denominator�s$ 

zFraction.limit_denominatorcCs|jSr)r�rrrrr%szFraction.numeratorcCs|jSr)rrCrrrr&szFraction.denominatorcCsd|jj|j|jfS)Nz
%s(%s, %s))r6r8rrr<rrr�__repr__"s�zFraction.__repr__cCs(|jdkrt|j�Sd|j|jfSdS)Nrz%s/%s)rr)rr<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|�|�StSdSr)r"rrr'�complex�NotImplementedr��fallback_operator�monomorphic_operatorrr�forward~s


z-Fraction._operator_fallbacks.<locals>.forward�__csZt|tj�r�||�St|tj�r4�t|�t|��St|tj�rR�t|�t|��StSdSr)r"r#r$ZRealr'�ComplexrFrG�rrrHrr�reverse�s
z-Fraction._operator_fallbacks.<locals>.reverseZ__r)r8�__doc__)rJrIrKrOrrHr�_operator_fallbacks.sP	
zFraction._operator_fallbackscCs,|j|j}}t|j||j|||�Sr�r&rr%�rr�da�dbrrr�_add�s�z
Fraction._addcCs,|j|j}}t|j||j|||�SrrRrSrrr�_sub�s�z
Fraction._subcCst|j|j|j|j�Sr�rr%r&rrrr�_mul�sz
Fraction._mulcCst|j|j|j|j�SrrXrrrr�_div�s
�z
Fraction._divcCs|j|j|j|jSr�r%r&rrrr�	_floordiv�szFraction._floordivcCs:|j|j}}t|j|||j�\}}|t|||�fSr)r&�divmodr%r)rrrTrUZdivZn_modrrr�_divmod�szFraction._divmodcCs,|j|j}}t|j||j|||�SrrRrSrrr�_mod�sz
Fraction._modcCs�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)NrrFr)	r"r#r$r&r%rrrr')rrZpowerrrr�__pow__�s&

�

��zFraction.__pow__cCs\|jdkr|jdkr||jSt|tj�r<t|j|j�|S|jdkrP||jS|t|�S)Nrr)	rrr"r#r$rr%r&r'rNrrr�__rpow__�s


zFraction.__rpow__cCst|j|jdd�S�NFr�rrrrCrrr�__pos__�szFraction.__pos__cCst|j|jdd�SrbrcrCrrr�__neg__�szFraction.__neg__cCstt|j�|jdd�Srb)rr>rrrCrrr�__abs__�szFraction.__abs__cCs*|jdkr|j|jS|j|jSdS)NrrrCrrr�	__trunc__s
zFraction.__trunc__cCs|j|jSrr[rCrrr�	__floor__
szFraction.__floor__cCs|j|jSrr[rCrrr�__ceil__szFraction.__ceil__cCs�|dkrZt|j|j�\}}|d|jkr,|S|d|jkrB|dS|ddkrR|S|dSdt|�}|dkr�tt||�|�Stt||�|�SdS)Nrrrr)r]r%r&r>r�round)r2ZndigitsZfloorZ	remainder�shiftrrr�	__round__szFraction.__round__cCsPt|jtdt�}|st}nt|j�|t}|dkr:|n|}|dkrLdS|S)Nrr������)�powr�_PyHASH_MODULUS�_PyHASH_INFr>r)r2ZdinvZhash_�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
�|�s~t
�|�r�d|kS||�|�kSntSdS)Nrr�)r
rrrr"r#r$r%r&rM�imag�realr'r�isnan�isinfr:rGrrrr�__eq__Bs
�
zFraction.__eq__cCsht|tj�r&||j|j|j|j�St|t�r`t�	|�sDt�
|�rN|d|�S|||�|��SntSdS)Nrt)
r"r#r$rr&rr%r'rrwrxr:rG)r2�other�oprrr�_richcmpWs
�

zFraction._richcmpcCs|�|tj�Sr)r|�operator�ltrrrr�__lt__mszFraction.__lt__cCs|�|tj�Sr)r|r}�gtrrrr�__gt__qszFraction.__gt__cCs|�|tj�Sr)r|r}�lerrrr�__le__uszFraction.__le__cCs|�|tj�Sr)r|r}�gerrrr�__ge__yszFraction.__ge__cCs
t|j�Sr)�boolrrCrrr�__bool__}szFraction.__bool__cCs|jt|�ffSr)r6r)r<rrr�
__reduce__�szFraction.__reduce__cCs t|�tkr|S|�|j|j�Sr�r
rr6rrr<rrr�__copy__�szFraction.__copy__cCs t|�tkr|S|�|j|j�Srr�)r2Zmemorrr�__deepcopy__�szFraction.__deepcopy__)rN)r=)N)Br8�
__module__�__qualname__�	__slots__r!�classmethodr:r;r(rB�propertyr%r&rDrErQrVr}�add�__add__�__radd__rW�sub�__sub__�__rsub__rY�mul�__mul__�__rmul__rZ�truediv�__truediv__�__rtruediv__r\�floordiv�__floordiv__�
__rfloordiv__r^r]�
__divmod__�__rdivmod__r_�mod�__mod__�__rmod__r`rardrerfrgrhrirlrsryr|rr�r�r�r�r�r�r��
__classcell__rrr5rr<sbm



7

k
)rrrr#r}�re�sys�__all__rr
�	hash_info�modulusrp�infrq�compile�VERBOSE�
IGNORECASEr*r$rrrrr�<module>s
�

?>