Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_strtod.cpython-311.pyc
�

�Ke9P���ddlZddlZddlZddlZddlZeedd��dkrejd���ejdej	ej
z��jZdd
�Z
dZGd�d
ej��Zedkrej��dSdS)�N�float_repr_style��shortzHcorrectly-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�����c	���t|��}|�td���|�d��pd}t|�d��|z��}t|�d��pd��t	|��z
}|�d��d	k}|d
t|d��zzd
td|��z}
}	|	s|rdnd
S|	���|
���z
}||dkr|	|z	n|	|z|
kz
}t||��|z
}|	t|d��z|
t|d��z}
}	t|	|
��\}
}d|z|
ksd|z|
kr/|
dzr*|
dz
}
|
���|dzkr
|
dz}
|dz
}|
���|kr	|||z
ksJ�|
���|ks|||z
ksJ�||
���z|kr|rdndS|
s|rdnd
Sd|dz
dzz}d|dz
dzz
}|
|z||z
}}
d�|rd	nd|
d|zz|
d|zz||d|zz��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 string�fracr�int�exp�0�sign�-�
rz	-0x0.0p+0z0x0.0p+0���-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�m�fraction�intpartr�negative�a�b�d�e�q�r�hexdigs�shifts                 �:/usr/local/apps/python3/lib/python3.11/test/test_strtod.py�strtodr1s���	�a���A��y��1�2�2�2��w�w�v���$�"�H��!�'�'�%�.�.�8�+�,�,�G�

�a�g�g�e�n�n�#��
$�
$�s�8�}�}�
4�C��w�w�v���#�%�H��2�s�3��{�{�?�"�B��A��t���$4�q�A�
�7�&�6�{�{�J�6�	
����������'�A��A��F�F�!�q�&�&��a�R��A�	-�-�A��A�w���(�"�A�
��Q�B��
�
�?�A��Q����N�q�A��!�Q�<�<�D�A�q���s�Q�w�w�!�A�#��(�(�q�1�u�(�	�Q����<�<�>�>�X�a�Z�'�'�
�!�G�A�
��F�A�
�<�<�>�>�X�%�%�!�w��/A�*A�*A�*A�*A��<�<�>�>�X�%�%��g��.@�)@�)@�)@�)@�	�1�<�<�>�>��G�#�#�!�,�v�v�u�,��7�&�6�{�{�J�6��8�A�:��/�!�G�
��!��Q���E���:�q�5�y�q�A�#�*�*�����R�	�R��[��	�B��K���	�A�g�I�
����rc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	e
j�e
jj
dzd	d
���d���Zd
�Zd�ZdS)�StrtodTestsc	� �	t|��}|���}n-#t$r|ddkrdnd}Ynt$rd}YnwxYwt	|��}|�||d�|||����dS)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.rrrrzmemory errorzEIncorrectly rounded str->float conversion for {}: expected {}, got {}N)�float�hex�
OverflowError�MemoryErrorr1�assertEqualr)�selfr �fs�got�expecteds     r0�check_strtodzStrtodTests.check_strtodWs���	��q���B��&�&�(�(�C�C���	3�	3�	3��a�D�C�K�K�&�&�U�C�C�C��	!�	!�	!� �C�C�C�	!�����!�9�9������3�/�/5�v�a��3�/G�/G�	I�	I�	I�	I�	Is�&�A�A�Ac���dD�]f}dd|zz}dd|zz}|dzdkr|dz
}tt��D�]-}tj||d��|}}|dzdkr|dz|dz}}|dzdk�|dzd	vsJ�||}}|d
krjd�||��}	|�|	��d�|ddzz|dz
��}	|�|	��|dz}|d
k�j||}}|d
krod�||��}	|�|	��d�|ddzz|dz
��}	|�|	��|dz}|dz}|d
k�o��/��hdS)
N)r�r��l����rAl����rrrr)rr��	l F�x:^V�{}e{}�(��range�	TEST_SIZE�random�	randrangerr?)
r;�k�upper�lower�i�nr+�digits�exponentr s
          r0�test_short_halfway_casesz$StrtodTests.test_short_halfway_casesjs���!�'	"�'	"�A��a��d�l�O�E��a��d�l�O�E��q�y�A�~�~���
���9�%�%� 
"� 
"���'��u�a�8�8�!�1���!�e�q�j�j���6�1�q�5�q�A��!�e�q�j�j��2�v��-�-�-�-�$%�a����v�o�o����v�x�8�8�A��%�%�a�(�(�(����v��B����2�
�F�F�A��%�%�a�(�(�(��a�K�F�
�v�o�o�$%�a����v�o�o����v�x�8�8�A��%�%�a�(�(�(����v��B����2�
�F�F�A��%�%�a�(�(�(��a�K�F���M�H��v�o�o��3 
"�'	"�'	"r2c�L�tdtz��D]�}tjd��}t	|d��\}}|r
|dz|dz
}}|dz}d|zdz|dz
}}|dkr||z}d}n|d|zz}|}d	�||��}|�|����dS)
N�dl�l�ri2rrrArF)rIrJrKrLrrr?)r;rP�bitsr+r$rRrSr s        r0�test_halfway_caseszStrtodTests.test_halfway_cases�s����s�Y��'�'�	!�	!�A��#�J�/�/�D��$��&�&�D�A�q��
(��5�y�!�a�%�1��
��I�A��Q�3��7�A��E�q�A��A�v�v��a�������Q���U��������v�x�0�0�A����a� � � � �-	!�	!r2c��gd�}|D]r\}}}td��D]\}|tjd|zd|z��z}|}d�||��}|�|��|dz}|dz}|dz}�]�sdS)N))l�9Vi��iV)l%o�$C�Ki!i�)l�jT&����M)rrZr[�����rrFrr)rIrKrLrr?)	r;�
boundariesrQr+�u�jrRrSr s	         r0�test_boundarieszStrtodTests.test_boundaries�s������
�"�	�	�G�A�q�!��4�[�[�
�
���V�-�b��d�A�a�C�8�8�8�����N�N�6�8�4�4���!�!�!�$�$�$��R����R����Q����
�	�	r2c��tdd��D]h}d|zddzz}tt��D]E}|tjdd��z}d�||��}|�|���F�idS)	N�p���i����rri3i���r\rFrH)r;rS�baser`rRr s      r0�test_underflow_boundaryz#StrtodTests.test_underflow_boundary�s����d�D�)�)�	%�	%�H���y�=�A�t�G�+�D��9�%�%�
%�
%���� 0��� =� =�=���N�N�6�8�4�4���!�!�!�$�$�$�$�
%�	%�	%r2c��dD]u}d|z}tdtz��D]V}tj|��}tjdd��}d�||��}|�|���W�vdS)N)rAr�rBr���rCrG�)�2rrci�rFrH)r;�ndigs�dig10rPrRrSr s       r0�test_bigcompzStrtodTests.test_bigcomp�s���B�	%�	%�E���I�E��2�	�>�*�*�
%�
%���)�%�0�0��!�+�D�#�6�6���N�N�6�8�4�4���!�!�!�$�$�$�$�	
%�	%�	%r2c	���d�d}td��D�]�}tt��D�]�}tj|��}tjd��}|d��fd�t|��D����z
}tjddg��rK|d	z
}tjd��}|d��fd
�t|��D����z
}nd}tjddg��rv|tjdd
g��z
}|tj|��z
}tjdd��}|d��fd�t|��D����z
}||zr|�|����g	t|��Jd���#t$rY���wxYw���dS)N�000000123456789)�+rrr\rArc3�@�K�|]}tj���V��dS�N�rK�choice��.0�_rRs  �r0�	<genexpr>z+StrtodTests.test_parsing.<locals>.<genexpr>�s-�����O�O�q�V�]�6�2�2�O�O�O�O�O�Or2TF�.c3�@�K�|]}tj���V��dSrtrurws  �r0rzz+StrtodTests.test_parsing.<locals>.<genexpr>��A�����!?�!?�%&�"(��v�!6�!6�!?�!?�!?�!?�!?�!?r2rr+�Errc3�@�K�|]}tj���V��dSrtrurws  �r0rzz+StrtodTests.test_parsing.<locals>.<genexpr>�r}r2zexpected ValueError)	rIrJrKrvrL�joinr?r6r)	r;�signsrPr`r �intpart_len�fracpart_len�exponent_lenrRs	        @r0�test_parsingzStrtodTests.test_parsing�s!���"�����t���	<�	<�A��9�%�%�
<�
<���M�%�(�(��$�.�q�1�1���R�W�W�O�O�O�O�E�+�<N�<N�O�O�O�O�O�O���=�$���/�/�%���H�A�#)�#3�A�#6�#6�L�����!?�!?�!?�!?�*/��*=�*=�!?�!?�!?�?�?�?�A�A�$%�L��=�$���/�/�?�����S�z�2�2�2�A����u�-�-�-�A�#)�#3�A�q�#9�#9�L�����!?�!?�!?�!?�*/��*=�*=�!?�!?�!?�?�?�?�A���-�<��%�%�a�(�(�(�(�<��a����<�&;�;�;�;��&����������/
<�	<�	<s�F-�-
F;�:F;rrF)�size�memuse�dry_runc�4�dd|zz}|�t��5t|��ddd��n#1swxYwY~dd|zzdz}|�t��5t|��ddd��n#1swxYwY~dS)Nz1.�1z0.r
)�assertRaisesrr6)r;�maxsizer s   r0�test_oversized_digit_stringsz(StrtodTests.test_oversized_digit_strings�s��
�3��=� ��
�
�
�z�
*�
*�	�	��!�H�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
��3��=� �3�&��
�
�
�z�
*�
*�	�	��!�H�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�A�As!�?�A�A�0B�B�Bc�"�d�}d�}|�t|d����d��|�t|d����d��|�t|d����d��|�t|d����d��|�t|d����d��|�t|d����d��dS)Nc�:�d�d|dz
z|��S)z* Long string with value 1.0 and exponent nz	0.{}1e+{}r
r�r�rQs r0�positive_expz6StrtodTests.test_large_exponents.<locals>.positive_exps ���%�%�c�1�Q�3�i��3�3�3r2c�4�d�d|z|��S)z+ Long string with value 1.0 and exponent -nz1{}e-{}r
r�r�s r0�negative_expz6StrtodTests.test_large_exponents.<locals>.negative_exps���#�#�C��E�1�-�-�-r2i'g�?i Ni0u)r:r6)r;r�r�s   r0�test_large_exponentsz StrtodTests.test_large_exponentss��	4�	4�	4�	.�	.�	.�	
����|�|�E�2�2�3�3�S�9�9�9�����|�|�E�2�2�3�3�S�9�9�9�����|�|�E�2�2�3�3�S�9�9�9�����|�|�E�2�2�3�3�S�9�9�9�����|�|�E�2�2�3�3�S�9�9�9�����|�|�E�2�2�3�3�S�9�9�9�9�9r2c�B�gd�}|D]}|�|���dS)N),z02183167012312112312312.23538020374420446192e-370z712579816049008305546974391768996369464963024663104e-357z717489628565202117263145367596028389348922981857013e-357z718487398785991994634182916638542680759613590482273e-357z732002864200581033134358724675198044527469366773928e-358z794393431193180696942841837085033647913224148539854e-358z773608278998966969345824653500136787876436005957953e-358z764774478836417299491718435234611299336288082136054e-358z713704940134126574534878641876947980878824688451169e-357z746697445774047060960624497964425416610480524760471e-358z728639097178261763178489759107321392745108491825303e-311z1.00000000000000001e44z-1.0000000000000000100000000000000000000001e44z399999999999999994487665465554760717039532578546e-47�o9654371763336549317990355136719971183455700459144696213413350821416312194420007991306908470147322020121018368e0a104308485241983990666713401708072175773165034278685682646111762292409330928739751702404658197872319129036519947435319418387839758990478549477777586673075945844895981012024387992135617064532141489278815239849108105951619997829153633535314849999674266169258928940692239684771590065027025835804863585454872499320500023126142553932654370362024104462255244034053203998964360882487378334860197725139151265590832887433736189468858614521708567646743455601905935595381852723723645799866672558576993978025033590728687206296379801363024094048327273913079612469982585674824156000783167963081616214710691759864332339239688734656548790656486646106983450809073750535624894296242072010195710276073042036425579852459556183541199012652571123898996574563824424330960027873516082763671875e-1075z247032822920623295e-341z799037485700245683102805043437346965248029601286431e-373z799617639833743863161109961162881027406769510558457e-373z798852915025769345295749278351563179840130565591462e-372z799059944827693569659153042769690930905148015876788e-373z798914979205069368270421829889078356254059760327101e-372z,1000000000000000000000000000000000000000e-16z-10000000000000000000000000000000000000000e-17z=991633793189150720000000000000000000000000000000000000000e-33z;4106250198039490000000000000000000000000000000000000000e-38z*10.900000000000000012345678912345678912345a11651287494059419563861790709256988151903479322938522856916519154189084656466977171489691608488398792047332126810029685763620092606534076968286334920536334924763766067178320990794927368304039797998410780646182269333271282839761794603623958163297658510063352026077076106072540390412314438457161207373275477458821194440646557259102208197382844892733860255628785183174541939743301249188486945446244053689504749943655197464973191717009938776287102040358299419343976193341216682148401588363162253931420379903449798213003874174172790742957567330246138038659650118748200625752770984217933648838167281879845022933912352785884444833681591202045229462491699354638895656152216187535257259042082360747878839946016222830869374205287663441403533948204085390898399055004119873046875e-1075a^5254406533529552661096610603582028195612589849649138922565278497589560452182570597137658742514361936194432482059988700016338656575174473559922258529459120166686600002102838072098506622244175047522649953606315120077538558010753730576321577387528008403025962370502479105305382500086822727836607781816280407336531214924364088126680234780012085291903592543223403975751852488447885154107229587846409265285440430901153525136408849880173424692750069991045196209464308187671479664954854065777039726878381767789934729895619590000470366389383963331466851379030183764964083197053338684769252973171365139701890736933147103189912528110505014483268752328506004517760913030437151571912928276140468769502257147431182910347804663250851413437345649151934269945872064326973371182115272789687312946393533547747886024677951678751174816604738791256853675690543663283782215866825e-1180�32602129298404963083833853479113577253105939995688e2�5260212929840496308383385347911357725310593999568896e0z826021292984049630838338534791135772531059399956889601e-2�5260212929840496308383385347911357725310593999568895e0�5260212929840496308383385347911357725310593999568897e0�5260212929840496308383385347911357725310593999568996e0�5260212929840496308383385347911357725310593999568866e0z9007199254740992.00�5179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792a9179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999a9179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001z:999999999999999944488848768742172978818416595458984375e-54zA9999999999999999444888487687421729788184165954589843749999999e-54zA9999999999999999444888487687421729788184165954589843750000001e-54z�0.000000000000000000000000000000000000000010000000000000000057612911342378542997169042119121403423543508714776317814976295686899169228986994124665807319451982237978882039897143840789794921875)r?)r;�test_stringsr s   r0�test_particularzStrtodTests.test_particularsI��O�O�O��`�	!�	!�A����a� � � � �	!�	!r2N)�__name__�
__module__�__qualname__r?rTrXrareror��test�support�
bigmemtest�_2Gr�r�r��r2r0r4r4Vs�������I�I�I�&)"�)"�)"�V!�!�!�4���(	%�	%�	%�%�%�%�"<�"<�"<�H
�\���$�,�"2�2�"5�a���O�O�
�
�P�O�
�:�:�:�$T!�T!�T!�T!�T!r2r4�__main__)rrr)rK�unittest�re�sys�test.supportr��getattr�SkipTest�compile�VERBOSE�
IGNORECASE�matchrr1rJ�TestCaser4r��mainr�r2r0�<module>r�s���
�
�
�����	�	�	�	�
�
�
�
�����
�7�3�"�B�'�'�7�2�2�
�(�
�;�<�<�<�
��
���Z�"�-��!�!�"'��7�7�7�7�r
�	�X!�X!�X!�X!�X!�(�#�X!�X!�X!�t
�z����H�M�O�O�O�O�O��r2