Your IP : 18.191.192.113


Current Path : /opt/alt/python39/lib64/python3.9/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/__pycache__/fractions.cpython-39.opt-2.pyc

a

R�f_�@stddlmZddlZddlZddlZddlZddlZdgZejj	Z
ejjZe�
dejejB�ZGdd�dej�ZdS)���DecimalN�FractionaC
    \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��
_normalizecs"tt|��|�}|du�rdt|�tur6||_d|_|St|tj	�rV|j
|_|j|_|St|tt
f�rx|��\|_|_|St|t��rZt�|�}|dur�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|�tu�r�t|�u�r�nnn@t|tj	��r�t|tj	��r�|j
|j|j
|j}}ntd
��|d	k�r�td|��|�rt�||�}
|d	k�r|
}
||
}||
}||_||_|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__�type�intrr�
isinstance�numbers�Rational�	numerator�denominator�floatr�as_integer_ratio�str�_RATIONAL_FORMAT�match�
ValueError�group�len�	TypeError�ZeroDivisionError�mathZgcd)�clsrrr	�self�mrr
Zscaler�g��	__class__��./opt/alt/python39/lib64/python3.9/fractions.pyr>st

�





$
�

�

zFraction.__new__cCsDt|tj�r||�St|t�s8td|j|t|�jf��||���S)Nz.%s.from_float() only takes floats, not %r (%s))rr�Integralrr"�__name__rr)r%�fr+r+r,�
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))
r
rrrr-rr"r.rr)r%Zdecrr+r+r,�from_decimal�s
��zFraction.from_decimalcCs|j|jfS�Nr�r&r+r+r,r�szFraction.as_integer_ratio�@Bc
Cs�|dkrtd��|j|kr"t|�Sd\}}}}|j|j}}||}|||}	|	|krZq�||||||	f\}}}}||||}}q<|||}
t||
|||
|�}t||�}t||�t||�kr�|S|SdS)Nr
z$max_denominator should be at least 1)rr
r
r)rrrr�abs)
r&Zmax_denominatorZp0Zq0Zp1Zq1�n�d�aZq2�kZbound1Zbound2r+r+r,�limit_denominator�s$ 

zFraction.limit_denominatorcCs|jSr2)r�r8r+r+r,rszFraction.numeratorcCs|jSr2)rr;r+r+r,rszFraction.denominatorcCsd|jj|j|jfS)Nz
%s(%s, %s))r*r.rrr3r+r+r,�__repr__s�zFraction.__repr__cCs(|jdkrt|j�Sd|j|jfSdS)Nr
z%s/%s)rrrr3r+r+r,�__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|�|�StSdSr2)rrrr�complex�NotImplemented�r8�b��fallback_operator�monomorphic_operatorr+r,�forwardds


z-Fraction._operator_fallbacks.<locals>.forward�__csZt|tj�r�||�St|tj�r4�t|�t|��St|tj�rR�t|�t|��StSdSr2)rrrZRealr�Complexr>r?�rAr8rBr+r,�reverseps
z-Fraction._operator_fallbacks.<locals>.reverseZ__r)r.�__doc__)rDrCrErIr+rBr,�_operator_fallbackssP	
zFraction._operator_fallbackscCs,|j|j}}t|j||j|||�Sr2�rrr�r8rA�da�dbr+r+r,�_adds�z
Fraction._addcCs,|j|j}}t|j||j|||�Sr2rLrMr+r+r,�_sub�s�z
Fraction._subcCst|j|j|j|j�Sr2�rrrr@r+r+r,�_mul�sz
Fraction._mulcCst|j|j|j|j�Sr2rRr@r+r+r,�_div�s
�z
Fraction._divcCs|j|j|j|jSr2�rrr@r+r+r,�	_floordiv�szFraction._floordivcCs:|j|j}}t|j|||j�\}}|t|||�fSr2)r�divmodrr)r8rArNrOZdivZn_modr+r+r,�_divmod�szFraction._divmodcCs,|j|j}}t|j||j|||�Sr2rLrMr+r+r,�_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)Nr
rFr)	rrrrrrrrr)r8rAZpowerr+r+r,�__pow__�s&

�

��zFraction.__pow__cCs\|jdkr|jdkr||jSt|tj�r<t|j|j�|S|jdkrP||jS|t|�S)Nr
r)	rrrrrrrrrrHr+r+r,�__rpow__�s


zFraction.__rpow__cCst|j|jdd�S�NFr�rrrr;r+r+r,�__pos__�szFraction.__pos__cCst|j|jdd�Sr\r]r;r+r+r,�__neg__�szFraction.__neg__cCstt|j�|jdd�Sr\)rr5rrr;r+r+r,�__abs__�szFraction.__abs__cCs*|jdkr|j|jS|j|jSdS)Nrrr;r+r+r,�	__trunc__�s
zFraction.__trunc__cCs|j|jSr2rUr;r+r+r,�	__floor__�szFraction.__floor__cCs|j|jSr2rUr;r+r+r,�__ceil__�szFraction.__ceil__cCs�|durZt|j|j�\}}|d|jkr,|S|d|jkrB|dS|ddkrR|S|dSdt|�}|dkr�tt||�|�Stt||�|�SdS)N�r
rr)rWrrr5r�round)r&�ndigitsZfloorZ	remainder�shiftr+r+r,�	__round__�szFraction.__round__cCsdzt|jdt�}Wnty(t}Yn0ttt|j��|�}|jdkrN|n|}|dkr`dS|S)N���r���)�powr�_PyHASH_MODULUSr�_PyHASH_INF�hashr5r)r&ZdinvZhash_�resultr+r+r,�__hash__s
zFraction.__hash__cCs�t|�tur |j|ko|jdkSt|tj�rD|j|jkoB|j|jkSt|tj	�r`|j
dkr`|j}t|t�r�t
�|�s~t
�|�r�d|kS||�|�kSntSdS)Nr
r�)rrrrrrrrrrG�imag�realrr$�isnan�isinfr0r?r@r+r+r,�__eq__3s
�
zFraction.__eq__cCsht|tj�r&||j|j|j|j�St|t�r`t�	|�sDt�
|�rN|d|�S|||�|��SntSdS)Nrq)
rrrrrrrrr$rtrur0r?)r&�other�opr+r+r,�_richcmpHs
�

zFraction._richcmpcCs|�|tj�Sr2)ry�operator�ltr@r+r+r,�__lt__^szFraction.__lt__cCs|�|tj�Sr2)ryrz�gtr@r+r+r,�__gt__bszFraction.__gt__cCs|�|tj�Sr2)ryrz�ler@r+r+r,�__le__fszFraction.__le__cCs|�|tj�Sr2)ryrz�ger@r+r+r,�__ge__jszFraction.__ge__cCs
t|j�Sr2)�boolrr;r+r+r,�__bool__nszFraction.__bool__cCs|jt|�ffSr2)r*rr3r+r+r,�
__reduce__vszFraction.__reduce__cCs t|�tkr|S|�|j|j�Sr2�rrr*rrr3r+r+r,�__copy__yszFraction.__copy__cCs t|�tkr|S|�|j|j�Sr2r�)r&�memor+r+r,�__deepcopy__~szFraction.__deepcopy__)rN)r4)N)Br.�
__module__�__qualname__�	__slots__r�classmethodr0r1rr:�propertyrrr<r=rKrPrz�add�__add__�__radd__rQ�sub�__sub__�__rsub__rS�mul�__mul__�__rmul__rT�truediv�__truediv__�__rtruediv__rV�floordiv�__floordiv__�
__rfloordiv__rXrW�
__divmod__�__rdivmod__rY�mod�__mod__�__rmod__rZr[r^r_r`rarbrcrhrprvryr|r~r�r�r�r�r�r��
__classcell__r+r+r)r,r&sbi



7

k
!)r
rr$rrz�re�sys�__all__�	hash_info�modulusrl�infrm�compile�VERBOSE�
IGNORECASErrrr+r+r+r,�<module>s
�

?>