AlkantarClanX12

Your IP : 3.144.252.58


Current Path : /opt/alt/python37/lib64/python3.7/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/__pycache__/fractions.cpython-37.opt-2.pyc

B

YI~d�\�@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�./opt/alt/python37/lib64/python3.7/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�eZdZdZdQdd��fdd�Zedd	��Zed
d��ZdRd
d�Ze	dd��Z
e	dd��Zdd�Zdd�Z
dd�Zdd�Zeeej�\ZZdd�Zeeej�\ZZdd�Zeeej�\ZZdd �Zeeej�\ZZd!d"�Z d#d$�Z!d%d&�Z"d'd(�Z#d)d*�Z$d+d,�Z%d-d.�Z&d/d0�Z'd1d2�Z(d3d4�Z)d5d6�Z*d7d8�Z+dSd9d:�Z,d;d<�Z-d=d>�Z.d?d@�Z/dAdB�Z0dCdD�Z1dEdF�Z2dGdH�Z3dIdJ�Z4dKdL�Z5dMdN�Z6dOdP�Z7�Z8S)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�
�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�ZeroDivisionErrorrrr)�clsr!r"r�self�mrrZscaler�g)�	__class__rrrTsr







$

$

zFraction.__new__cCsDt|tj�r||�St|t�s8td|j|t|�jf��||���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��||�	��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 1)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.<locals>.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.<locals>.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._divcCst�||�S)N)r�floor)r
rrrr�__floordiv__�szFraction.__floordiv__cCst�||�S)N)rrO)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�r<t|j|j�|S|jdkrP||jS|t|�S)Nrr)	rrrrr rr!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)rr8rr)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"r8r�round)r.ZndigitsrOZ	remainder�shiftrrr�	__round__szFraction.__round__cCsPt|jtdt�}|st}nt|j�|t}|dkr:|n|}|dkrLdS|S)Nrr������)�powr�_PyHASH_MODULUS�_PyHASH_INFr8r)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
�|�s~t
�|�r�d|kS||�|�kSntSdS)Nrrg)r	r
rrrrr r!r"rE�imag�realr#r�isnan�isinfr5r@)r
rrrr�__eq__7s
zFraction.__eq__cCsht|tj�r&||j|j|j|j�St|t�r`t�	|�sDt�
|�rN|d|�S|||�|��SntSdS)Ng)
rrr rr"rr!r#rrjrkr5r@)r.�other�oprrr�_richcmpLs

zFraction._richcmpcCs|�|tj�S)N)ro�operator�lt)r
rrrr�__lt__bszFraction.__lt__cCs|�|tj�S)N)rorp�gt)r
rrrr�__gt__fszFraction.__gt__cCs|�|tj�S)N)rorp�le)r
rrrr�__le__jszFraction.__le__cCs|�|tj�S)N)rorp�ge)r
rrrr�__ge__nszFraction.__ge__cCs
t|j�S)N)�boolr)r
rrr�__bool__rszFraction.__bool__cCs|jt|�ffS)N)r1r%)r.rrr�
__reduce__zszFraction.__reduce__cCs t|�tkr|S|�|j|j�S)N)r	rr1rr)r.rrr�__copy__}szFraction.__copy__cCs t|�tkr|S|�|j|j�S)N)r	rr1rr)r.Zmemorrr�__deepcopy__�szFraction.__deepcopy__)rN)r7)N)9r3�
__module__�__qualname__�	__slots__r�classmethodr5r6r<�propertyr!r"r=r>rHrKrp�add�__add__�__radd__rL�sub�__sub__�__rsub__rM�mul�__mul__�__rmul__rN�truediv�__truediv__�__rtruediv__rPrQrSrTrUrVrWrXrYrZr[r\r`rgrlrorrrtrvrxrzr{r|r}�
__classcell__rr)r1rr<sTm
7k
)rrrrrp�re�sys�__all__rr�	hash_info�modulusrd�infre�compile�VERBOSE�
IGNORECASEr&r rrrrr�<module>s