File: //proc/self/root/usr/lib/python3.6/site-packages/rsa/__pycache__/common.cpython-36.opt-1.pyc
3
%
�a� � @ s� d Z ddlZG dd� de�Zeed�dd�Zeed�d d
�Zeeed�dd
�Zeeejeeef d�dd�Z eeed�dd�Z
eje eje ed�dd�Ze
dkr�ddlZej� dS )z/Common functionality shared by several modules.� Nc s, e Zd Zdeeeedd�� fdd�
Z� ZS )�NotRelativePrimeError� N)�a�b�d�msg�returnc s0 t � j|pd|||f � || _|| _|| _d S )Nz.%d and %d are not relatively prime, divider=%i)�super�__init__r r r )�selfr r r r )� __class__� �/usr/lib/python3.6/common.pyr
s zNotRelativePrimeError.__init__)r )�__name__�
__module__�__qualname__�int�strr
�
__classcell__r
r
)r r r s r )�numr c C sB y| j � S tk
r< } ztdt| � �|�W Y dd}~X nX dS )a�
Number of bits needed to represent a integer excluding any prefix
0 bits.
Usage::
>>> bit_size(1023)
10
>>> bit_size(1024)
11
>>> bit_size(1025)
11
:param num:
Integer value. If num is 0, returns 0. Only the absolute value of the
number is considered. Therefore, signed integers will be abs(num)
before the number's bit length is determined.
:returns:
Returns the number of bits in the integer.
z,bit_size(num) only supports integers, not %rN)�
bit_length�AttributeError� TypeError�type)r Zexr
r
r �bit_size s r )�numberr c C s | dkrdS t t| �d�S )a�
Returns the number of bytes required to hold a specific long number.
The number of bytes is rounded up.
Usage::
>>> byte_size(1 << 1023)
128
>>> byte_size((1 << 1024) - 1)
128
>>> byte_size(1 << 1024)
129
:param number:
An unsigned integer
:returns:
The number of bytes required to hold a specific long number.
r � � )�ceil_divr )r r
r
r � byte_size8 s r )r �divr c C s t | |�\}}|r|d7 }|S )av
Returns the ceiling function of a division between `num` and `div`.
Usage::
>>> ceil_div(100, 7)
15
>>> ceil_div(100, 10)
10
>>> ceil_div(1, 4)
1
:param num: Division's numerator, a number
:param div: Division's divisor, a number
:return: Rounded up result of the division between the parameters.
r )�divmod)r r Zquanta�modr
r
r r Q s r )r r r c C s� d}d}d}d}| }|}xF|dkr^| | }|| | } }||| | }}||| | }}qW |dk rp||7 }|dk r�||7 }| ||fS )z;Returns a tuple (r, i, j) such that r = gcd(a, b) = ia + jbr r r
) r r �x�yZlxZlyZoa�ob�qr
r
r �extended_gcdi s
r'