Your IP : 216.73.217.32
��Yf9P � @ s� d d l Z d d l Z d d l Z d d l Z d d l Z e e d d � d k rc e j d � � e j d e j e j
B� j Z d d d d
d � Z
d Z Gd
d � d e j � Z e d k r� e j � d S)� N�float_repr_style� ZshortzHcorrectly-rounded string->float conversions not available on this systemam # A numeric string consists of:
(?P<sign>[-+])? # an optional sign, followed by
(?=\d|\.\d) # a number with at least one digit
(?P<int>\d*) # having a (possibly empty) integer part
(?:\.(?P<frac>\d*))? # followed by an optional fractional part
(?:E(?P<exp>[-+]?\d+))? # and an optional exponent
\Z
�5 i� i c C si t | � } | d k r$ t d � � | j d � p6 d } t | j d � | � } t | j d � pg d � t | � } | j d � d k } | d
t | d � d
t d | � } }
| s� | r� d Sd
S| j � |
j � } | | d k r� | | ?n | | >|
k 7} t | | � | } | t | d � >|
t | d � >} }
t | |
� \ }
} d | |
k s�d | |
k r�|
d @r�|
d 7}
|
j � | d k r�|
d }
| d 7} | |
j � | k r�| r�d Sd S|
s�| r�d Sd
Sd | d d } d | d d } |
| >| | }
} d j | r>d n d |
d | |
d | | | d | � S)z�Convert a finite decimal string to a hex string representing an
IEEE 754 binary64 float. Return 'inf' or '-inf' on overflow.
This function makes no use of floating-point arithmetic at any
stage.Nzinvalid numeric stringZfracr �int�exp�0Zsign�-�
r z -0x0.0p+0z0x0.0p+0� � z-inf�inf� � z{}0x{:x}.{:0{}x}p{:+d}� ) �
strtod_parser�
ValueError�groupr �len�max�
bit_length�divmod�format)�s�mant_dig�min_exp�max_exp�mZfractionZintpartr Znegative�a�b�d�e�q�rZhexdigsZshift� r# �5/opt/alt/python35/lib64/python3.5/test/test_strtod.py�strtod sB %,+(*
r% r c @ s� e Z d Z d d � Z d d � Z d d � Z d d � Z d d
� Z d d � Z d
d � Z e
j j d e
j j
d d d d d � d d � � Z d d � Z d d � Z d S)�StrtodTestsc C s� y t | � } WnE t k
r@ | d d k r6 d n d } Yn$ t k
rW d } Yn
X| j � } t | � } | j | | d j | | | � � d S)z�Compare the result of Python's builtin correctly rounded
string->float conversion (using float) to a pure Python
correctly rounded string->float implementation. Fail if the
two methods give different results.r r z-infr zmemory errorzEIncorrectly rounded str->float conversion for {}: expected {}, got {}N)�float�
OverflowError�MemoryError�hexr% �assertEqualr )�selfr ZfsZgotZexpectedr# r# r$ �check_strtodW s
zStrtodTests.check_strtodc
C s� x�d D]�} d d | } d d | } | d d k rE | d 7} xFt t � D]8} t j | | d � | } } x) | d d k r� | d | d } } qw W| | } } x` | d k rd
j | | � } | j | � d
j | d | d � } | j | � | d 9} q� W| | } } xj | d k r�d
j | | � } | j | � d
j | d | d � } | j | � | d 9} | d 8} q WqR Wq Wd S)Nr � r � � r
�6 r r z{}e{}�( )r r. r r/ r0 l l���� l l���� l F�x:^V l �O�z��p�cl F�x:^V l �O�z��p�c)�range� TEST_SIZE�random� randranger r- )
r, �k�upper�lower�i�nr �digits�exponentr r# r# r$ �test_short_halfway_casesj s0
z$StrtodTests.test_short_halfway_casesc C s� x� t d t � D]� } t j d � } t | d � \ } } | rV | d
| d } } | d 8} d | d | d } } | d k r� | | >} d } n | d | } | } d j | | � } | j | � q Wd S)N�d i� r
�4 r i2 r r. z{}e{}l � l � l � l � )r3 r4 r5 r6 r r r- )r, r: �bitsr r r<