
    daf9P                     6   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k7  r ej                  d       ej                  dej                  ej                  z        j                  ZddZdZ G d	 d
ej                        Zedk(  r ej$                          yy)    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
c           	         t        |       }|t        d      |j                  d      xs d}t        |j                  d      |z         }t        |j                  d      xs d      t	        |      z
  }|j                  d      dk(  }|d	t        |d
      z  z  d	t        d
|       z  }
}	|	s|rdS dS |	j                         |
j                         z
  }||d
k\  r|	|z	  n|	| z  |
k\  z  }t        ||      |z
  }|	t        | d
      z  |
t        |d
      z  }
}	t        |	|
      \  }}d|z  |
kD  sd|z  |
k(  r*|dz  r%|dz  }|j                         |dz   k(  r
|dz  }|dz  }|j                         |k  r|||z
  k\  sJ |j                         |k(  s
|||z
  k(  sJ ||j                         z   |kD  r|rdS dS |s|rdS dS d|dz
  dz  z   }d|dz
  dz  z
  }||z  ||z
  }}dj                  |rdnd|d|z  z  |d|z  z  ||d|z  z         S )zConvert 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.zinvalid numeric stringfracr   intexp0sign-
   r   z	-0x0.0p+0z0x0.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                    +/root/Python-3.12.4/Lib/test/test_strtod.pystrtodr.      s\    	aAy122wwv$"H!''%.8+,G
aggen#
$s8}
4Cwwv#%H2s3{?"BAt$4qA &{6J6 	
'AAF!q&aRA	--AAw("A QB
?AQNqA!Q<DAqsQw!A#(q1u	Q<<>XaZ'!GAFA <<>X%!w/A*AAA<<>X%g.@)@@@ 	1<<>G#!v,u,&{6J6 8A:/!G!QE:q5yqA#**R	R[	BK	AgI     r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  e
j                  j                  dz   d	d
      d        Zd Zd Zy)StrtodTestsc           	          	 t        |      }|j                         }t	        |      }| j                  ||dj                  |||             y# t        $ r |d   dk(  rdnd}Y Gt        $ r d}Y Sw xY w)zCompare 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   r   r   zmemory errorzEIncorrectly rounded str->float conversion for {}: expected {}, got {}N)floathexOverflowErrorMemoryErrorr.   assertEqualr   )selfr   fsgotexpecteds        r-   check_strtodzStrtodTests.check_strtodW   s{    	qB &&(C!93//5va3/G	I  	3aDCK&UC 	! C	!s   A A1$
A10A1c                    dD ]A  }dd|z  z   }dd|z  z   }|dz  dk(  r|dz  }t        t              D ]  }t        j                  ||d      |}}|dz  dk(  r|dz  |dz   }}|dz  dk(  r|dz  d	v sJ ||}}|d
k  rZdj	                  ||      }	| j                  |	       dj	                  |ddz  z  |dz
        }	| j                  |	       |dz  }|d
k  rZ||}}|d
k  sdj	                  ||      }	| j                  |	       dj	                  |ddz  z  |dz
        }	| j                  |	       |dz  }|dz  }|d
k  r_ D y )N)r      r         l       r>   l       r   r   r   r   )r   r      	   l      Fx:^V {}e{}(   range	TEST_SIZErandom	randranger   r<   )
r8   kupperlowerinr(   digitsexponentr   s
             r-   test_short_halfway_casesz$StrtodTests.test_short_halfway_casesj   s   ! '	"AadlOEadlOEqyA~
9%  " ''ua8!1 !eqj61q5qA !eqj2v--- $%avovx8A%%a(vB2FA%%a(aKF vo $%avovx8A%%a(vB2FA%%a(aKFMH vo3 "'	"r/   c                 ,   t        dt        z        D ]  }t        j                  d      }t	        |d      \  }}|r
|dz   |dz
  }}|dz  }d|z  dz   |dz
  }}|dk\  r||z  }d}n|d| z  z  }|}d	j                  ||      }| j                  |        y )
Nd   l          l          r   i2  r   r   r>   rC   )rF   rG   rH   rI   r   r   r<   )r8   rM   bitsr(   r!   rO   rP   r   s           r-   test_halfway_caseszStrtodTests.test_halfway_cases   s    sY' 	!A##J/D $&DAq5y!a%1IA Q37AEqA Ava QUvx0Aa -	!r/   c                     g d}|D ]i  \  }}}t        d      D ]U  }|t        j                  d|z  d|z        z   }|}dj                  ||      }| j	                  |       |dz  }|dz  }|dz  }W k y )N))l     9V iiV  )l   %o$CK i!  i  )l   jT& M  )r   rW   rX     r   rC   r   r   )rF   rH   rI   r   r<   )	r8   
boundariesrN   r(   ujrO   rP   r   s	            r-   test_boundarieszStrtodTests.test_boundaries   s    
 " 	GAq!4[ V--bdAaC88NN684!!!$RRQ	r/   c                     t        dd      D ]^  }d| z  ddz  z  }t        t              D ]>  }|t        j                  dd      z   }dj	                  ||      }| j                  |       @ ` y )	Npir   r   i3  irY   rC   rE   )r8   rP   baser]   rO   r   s         r-   test_underflow_boundaryz#StrtodTests.test_underflow_boundary   sw     dD) 	%Hy=AtG+D9% % 0 0 ==NN684!!!$%	%r/   c                     dD ]l  }d|z  }t        dt        z        D ]P  }t        j                  |      }t        j                  dd      }dj	                  ||      }| j                  |       R n y )N)r>   r      r?   r            r@   rD   )   2   r   r`   i  rC   rE   )r8   ndigsdig10rM   rO   rP   r   s          r-   test_bigcompzStrtodTests.test_bigcomp   sr    B 	%EIE2	>* %))%0!++D#6NN684!!!$	%	%r/   c           	      .   dd}t        d      D ]q  }t        t              D ][  }t        j                  |      }t        j                  d      }|dj                  fdt        |      D              z  }t        j                  ddg      rA|d	z  }t        j                  d      }|dj                  fd
t        |      D              z  }nd}t        j                  ddg      rn|t        j                  ddg      z  }|t        j                  |      z  }t        j                  dd      }|dj                  fdt        |      D              z  }||z   r| j                  |       K	 t        |       J d        t y # t        $ r Y ow xY w)N000000123456789)+r   r   rY   r>   r   c              3   H   K   | ]  }t        j                          y wNrH   choice.0_rO   s     r-   	<genexpr>z+StrtodTests.test_parsing.<locals>.<genexpr>   s     OqV]]62O   "TF.c              3   H   K   | ]  }t        j                          y wrq   rr   rt   s     r-   rw   z+StrtodTests.test_parsing.<locals>.<genexpr>   "      !?%& "(v!6 !?rx   r   r(   Er   r   c              3   H   K   | ]  }t        j                          y wrq   rr   rt   s     r-   rw   z+StrtodTests.test_parsing.<locals>.<genexpr>   r{   rx   zexpected ValueError)	rF   rG   rH   rs   rI   joinr<   r3   r   )	r8   signsrM   r]   r   intpart_lenfracpart_lenexponent_lenrO   s	           @r-   test_parsingzStrtodTests.test_parsing   s   " t 	<A9% <MM%($..q1RWWOE+<NOOO==$/HA#)#3#3A#6L !?*/*=!? ? ?A $%L==$/Sz22Au--A#)#3#3Aq#9L !?*/*=!? ? ?A -%%a(<a <&;;u5<	<0 & s   0F	FFr   r   F)sizememusedry_runc                    dd|z  z   }| j                  t              5  t        |       d d d        ~dd|z  z   dz   }| j                  t              5  t        |       d d d        ~y # 1 sw Y   @xY w# 1 sw Y   ~y xY w)Nz1.1z0.r
   )assertRaisesr   r3   )r8   maxsizer   s      r-   test_oversized_digit_stringsz(StrtodTests.test_oversized_digit_strings   s}     3= z* 	!H	3= 3&z* 	!H		 	
	s   A)A5)A25A?c                    d }d }| j                  t         |d            d       | j                  t         |d            d       | j                  t         |d            d       | j                  t         |d            d       | j                  t         |d            d       | j                  t         |d            d       y )Nc                 2    dj                  d| dz
  z  |       S )z* Long string with value 1.0 and exponent nz	0.{}1e+{}r
   r   r   rN   s    r-   positive_expz6StrtodTests.test_large_exponents.<locals>.positive_exp  s    %%c1Q3i33r/   c                 ,    dj                  d| z  |       S )z+ Long string with value 1.0 and exponent -nz1{}e-{}r
   r   r   s    r-   negative_expz6StrtodTests.test_large_exponents.<locals>.negative_exp  s    ##CE1--r/   i'  g      ?i N  i0u  )r7   r3   )r8   r   r   s      r-   test_large_exponentsz StrtodTests.test_large_exponents  s    	4	. 	|E23S9|E23S9|E23S9|E23S9|E23S9|E23S9r/   c                 <    g d}|D ]  }| j                  |        y )N),z02183167012312112312312.23538020374420446192e-370z712579816049008305546974391768996369464963024663104e-357z717489628565202117263145367596028389348922981857013e-357z718487398785991994634182916638542680759613590482273e-357z732002864200581033134358724675198044527469366773928e-358z794393431193180696942841837085033647913224148539854e-358z773608278998966969345824653500136787876436005957953e-358z764774478836417299491718435234611299336288082136054e-358z713704940134126574534878641876947980878824688451169e-357z746697445774047060960624497964425416610480524760471e-358z728639097178261763178489759107321392745108491825303e-311z1.00000000000000001e44z-1.0000000000000000100000000000000000000001e44z399999999999999994487665465554760717039532578546e-47o9654371763336549317990355136719971183455700459144696213413350821416312194420007991306908470147322020121018368e0a  104308485241983990666713401708072175773165034278685682646111762292409330928739751702404658197872319129036519947435319418387839758990478549477777586673075945844895981012024387992135617064532141489278815239849108105951619997829153633535314849999674266169258928940692239684771590065027025835804863585454872499320500023126142553932654370362024104462255244034053203998964360882487378334860197725139151265590832887433736189468858614521708567646743455601905935595381852723723645799866672558576993978025033590728687206296379801363024094048327273913079612469982585674824156000783167963081616214710691759864332339239688734656548790656486646106983450809073750535624894296242072010195710276073042036425579852459556183541199012652571123898996574563824424330960027873516082763671875e-1075z247032822920623295e-341z799037485700245683102805043437346965248029601286431e-373z799617639833743863161109961162881027406769510558457e-373z798852915025769345295749278351563179840130565591462e-372z799059944827693569659153042769690930905148015876788e-373z798914979205069368270421829889078356254059760327101e-372z,1000000000000000000000000000000000000000e-16z-10000000000000000000000000000000000000000e-17z=991633793189150720000000000000000000000000000000000000000e-33z;4106250198039490000000000000000000000000000000000000000e-38z*10.900000000000000012345678912345678912345a  11651287494059419563861790709256988151903479322938522856916519154189084656466977171489691608488398792047332126810029685763620092606534076968286334920536334924763766067178320990794927368304039797998410780646182269333271282839761794603623958163297658510063352026077076106072540390412314438457161207373275477458821194440646557259102208197382844892733860255628785183174541939743301249188486945446244053689504749943655197464973191717009938776287102040358299419343976193341216682148401588363162253931420379903449798213003874174172790742957567330246138038659650118748200625752770984217933648838167281879845022933912352785884444833681591202045229462491699354638895656152216187535257259042082360747878839946016222830869374205287663441403533948204085390898399055004119873046875e-1075a^  5254406533529552661096610603582028195612589849649138922565278497589560452182570597137658742514361936194432482059988700016338656575174473559922258529459120166686600002102838072098506622244175047522649953606315120077538558010753730576321577387528008403025962370502479105305382500086822727836607781816280407336531214924364088126680234780012085291903592543223403975751852488447885154107229587846409265285440430901153525136408849880173424692750069991045196209464308187671479664954854065777039726878381767789934729895619590000470366389383963331466851379030183764964083197053338684769252973171365139701890736933147103189912528110505014483268752328506004517760913030437151571912928276140468769502257147431182910347804663250851413437345649151934269945872064326973371182115272789687312946393533547747886024677951678751174816604738791256853675690543663283782215866825e-118032602129298404963083833853479113577253105939995688e25260212929840496308383385347911357725310593999568896e0z826021292984049630838338534791135772531059399956889601e-25260212929840496308383385347911357725310593999568895e05260212929840496308383385347911357725310593999568897e05260212929840496308383385347911357725310593999568996e05260212929840496308383385347911357725310593999568866e0z9007199254740992.005  179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792a9  179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999a9  179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001z:999999999999999944488848768742172978818416595458984375e-54zA9999999999999999444888487687421729788184165954589843749999999e-54zA9999999999999999444888487687421729788184165954589843750000001e-54z0.000000000000000000000000000000000000000010000000000000000057612911342378542997169042119121403423543508714776317814976295686899169228986994124665807319451982237978882039897143840789794921875)r<   )r8   test_stringsr   s      r-   test_particularzStrtodTests.test_particular  s*    O`  	!Aa 	!r/   N)__name__
__module____qualname__r<   rQ   rU   r^   rb   rl   r   testsupport
bigmemtest_2Gr   r   r    r/   r-   r1   r1   V   sm    I&)"V!4(	%%"<H 
\\$,,"2"22"5aO
 P
:$T!r/   r1   __main__)5   ii   )rH   unittestresystest.supportr   getattrSkipTestcompileVERBOSE
IGNORECASEmatchr   r.   rG   TestCaser1   r   mainr   r/   r-   <module>r      s      	 
 
3"B'72
(

 ; < <
 

  ZZ"--! "' 7r 	X!(## X!t
 zHMMO r/   