ó
ŒwÛjc           @   sé   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z e e d d ƒ d k rv e j d ƒ ‚ n  e j	 d e j
 e j Bƒ j Z d d	 d
 d „ Z d Z d e j f d „  ƒ  YZ d „  Z e d k rå e ƒ  n  d S(   iÿÿÿÿN(   t   test_supportt   float_repr_stylet    t   shortsH   correctly-rounded string->float conversions not available on this systemsm      # 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
i5   iüÿÿi   c         C   sÂ  t  |  ƒ } | d k r' t d ƒ ‚ n  | j d ƒ p9 d } t | j d ƒ | ƒ } t | j d ƒ pj 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} qÄn  | j ƒ  | k ræ| | | k sìt	 ‚ | j ƒ  | k s| | | k st	 ‚ | | j ƒ  | k r8| r4d Sd S| sL| rHd Sd Sd | d d } d | d d } | | >| | } } d j
 | r—d n d | d | | d | | | d | ƒ S(   sÏ   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.s   invalid numeric stringt   fracR   t   intt   expt   0t   signt   -i
   i    s	   -0x0.0p+0s   0x0.0p+0i   i   s   -inft   infi   i   s   {}0x{:x}.{:0{}x}p{:+d}i   N(   t   strtod_parsert   Nonet
   ValueErrort   groupR   t   lent   maxt
   bit_lengtht   divmodt   AssertionErrort   format(   t   st   mant_digt   min_expt   max_expt   mt   fractiont   intpartR   t   negativet   at   bt   dt   et   qt   rt   hexdigst   shift(    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   strtod   sF    %,+(*

((i
   t   StrtodTestsc           B   sƒ   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e	 j
 d e	 j d d	 d
 e ƒ d „  ƒ Z d „  Z d „  Z RS(   c         C   s”   y t  | ƒ } WnC t k
 r? | d d k r6 d n d } n# t k
 rU d } n X| j ƒ  } t | ƒ } |  j | | d j | | | ƒ ƒ d S(   sé   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.i    R	   s   -infR
   s   memory errorsE   Incorrectly rounded str->float conversion for {}: expected {}, got {}N(   t   floatt   OverflowErrort   MemoryErrort   hexR%   t   assertEqualR   (   t   selfR   t   fst   gott   expected(    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   check_strtodX   s    
c   
      C   s¯  x¨d D] } d d | } d d | } | d d k rH | d	 7} n  x\t  t ƒ D]N} t j | | d ƒ | } } x) | d d k r¢ | d | d	 } } qz W| d d k s¹ t ‚ | | } } x` | d k  r(d 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} q9WqU Wq Wd  S(   Ni    i   i
   i   i   i   i6   i5   i   i   i   i	   s   {}e{}i(   (   i    i   i
   i   i   I      @ I      ÀÿI        I      àÿ(   i   i   i   i	   l      Fµx:^V l	        «O»z—×pøcl      Fµx:^V l	        «O»z—×pøc(   t   xranget	   TEST_SIZEt   randomt	   randrangeR   R   R0   (
   R,   t   kt   uppert   lowert   it   nR    t   digitst   exponentR   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_short_halfway_casesk   s2    
c         C   sÛ   xÔ t  d t ƒ D]Â } t j d d
 ƒ } t | d ƒ \ } } | r] | d | d } } n  | d 8} d | d | d } } | d k rŸ | | >} d } n | d | } | } d	 j | | ƒ } |  j | ƒ q Wd  S(   Nid   iÿ  i   i4   i   i2  i    i   s   {}e{}I       I       I       (   R1   R2   R3   R4   R   R   R0   (   R,   R8   t   bitsR    R   R:   R;   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_halfway_cases–   s    

	c   	      C   s¨   d d d d g } x� | D]‡ \ } } } xu t  d ƒ D]g } | t j d | d | ƒ } | } d j | | ƒ } |  j | ƒ | d 9} | d 9} | d 8} q5 Wq Wd  S(   Nl     Ð9V iíÿÿÿiV  l   %oˆ$C×K i!  iË  l   —jT& i¹þÿÿiM  i    iè  iýÿÿÿi   s   {}e{}i
   i   (   l     Ð9V iíÿÿÿiV  (   l   %oˆ$C×K i!  iË  (   l   —jT& i¹þÿÿiM  (   i    i¹þÿÿiM  (   R1   R3   R4   R   R0   (	   R,   t
   boundariesR9   R    t   ut   jR:   R;   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_boundaries°   s    	

c         C   sy   xr t  d d ƒ D]a } d | d	 } xI t  t ƒ D]; } | t j d d ƒ } d j | | ƒ } |  j | ƒ q2 Wq Wd  S(
   NipþÿÿiÀþÿÿi
   i   i3  iüÿÿiè  s   {}e{}lH                                                                                                                                                  (   R1   R2   R3   R4   R   R0   (   R,   R;   t   baseRA   R:   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_underflow_boundaryÄ   s    c         C   sz   xs d D]k } d | } xX t  d t ƒ D]F } t j | ƒ } t j d d ƒ } d j | | ƒ } |  j | ƒ q( Wq Wd  S(   Ni   i
   i   i   i   i   i   i   i   i(   i)   i2   ipþÿÿi�  s   {}e{}(   i   i
   i   i   i   i   i   i   i   i(   i)   i2   (   R1   R2   R3   R4   R   R0   (   R,   t   ndigst   dig10R8   R:   R;   R   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_bigcompÏ   s    
c            s²  d ‰  d } xŸt  d ƒ D]‘} xˆt  t ƒ D]z} t j | ƒ } t j d ƒ } | d j ‡  f d †  t  | ƒ Dƒ ƒ 7} t j t t g ƒ rÓ | d 7} t j d ƒ } | d j ‡  f d	 †  t  | ƒ Dƒ ƒ 7} n d
 } t j t t g ƒ rX| t j d d g ƒ 7} | t j | ƒ 7} t j d d ƒ } | d j ‡  f d †  t  | ƒ Dƒ ƒ 7} n  | | rr|  j | ƒ q, y t	 | ƒ Wn t
 k
 r“q, Xt s, t d ƒ ‚ q, Wq Wd  S(   Nt   000000123456789t   +R	   R   iè  i   c         3   s   |  ] } t  j ˆ  ƒ Vq d  S(   N(   R3   t   choice(   t   .0t   _(   R:   (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pys	   <genexpr>ã   s    t   .c         3   s   |  ] } t  j ˆ  ƒ Vq d  S(   N(   R3   RJ   (   RK   RL   (   R:   (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pys	   <genexpr>ç   s   i    R    t   Ei   i   c         3   s   |  ] } t  j ˆ  ƒ Vq d  S(   N(   R3   RJ   (   RK   RL   (   R:   (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pys	   <genexpr>ï   s   s   expected ValueError(   RI   R	   R   (   R1   R2   R3   RJ   R4   t   joint   Truet   FalseR0   R'   R   R   (   R,   t   signsR8   RA   R   t   intpart_lent   fracpart_lent   exponent_len(    (   R:   s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_parsingØ   s4    )

t   sizet   memusei   t   dry_runc         C   sv   d d t  d ƒ } |  j t ƒ � t | ƒ Wd  QX~ d d t  d ƒ d } |  j t ƒ � t | ƒ Wd  QX~ d  S(   Ns   1.t   1g   À*dàAs   0.R   (   R   t   assertRaisesR   R'   (   R,   t   maxsizeR   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_oversized_digit_stringsü   s    c         C   s¾   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 ƒ d  S(   Nc         S   s   d j  d |  d |  ƒ S(   s*    Long string with value 1.0 and exponent ns	   0.{}1e+{}R   i   (   R   (   R9   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   positive_exp  s    c         S   s   d j  d |  |  ƒ S(   s+    Long string with value 1.0 and exponent -ns   1{}e-{}R   (   R   (   R9   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   negative_exp  s    i'  g      ð?i N  i0u  (   R+   R'   (   R,   R^   R_   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_large_exponents
  s    		c      +   C   s©   d d d d d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ g+ } x | D] } |  j  | ƒ qŽ Wd  S(,   Ns0   2183167012312112312312.23538020374420446192e-370s7   12579816049008305546974391768996369464963024663104e-357s7   17489628565202117263145367596028389348922981857013e-357s7   18487398785991994634182916638542680759613590482273e-357s7   32002864200581033134358724675198044527469366773928e-358s7   94393431193180696942841837085033647913224148539854e-358s7   73608278998966969345824653500136787876436005957953e-358s7   64774478836417299491718435234611299336288082136054e-358s7   13704940134126574534878641876947980878824688451169e-357s7   46697445774047060960624497964425416610480524760471e-358s7   28639097178261763178489759107321392745108491825303e-311s   1.00000000000000001e44s-   1.0000000000000000100000000000000000000001e44s3   99999999999999994487665465554760717039532578546e-47to   9654371763336549317990355136719971183455700459144696213413350821416312194420007991306908470147322020121018368e0s  104308485241983990666713401708072175773165034278685682646111762292409330928739751702404658197872319129036519947435319418387839758990478549477777586673075945844895981012024387992135617064532141489278815239849108105951619997829153633535314849999674266169258928940692239684771590065027025835804863585454872499320500023126142553932654370362024104462255244034053203998964360882487378334860197725139151265590832887433736189468858614521708567646743455601905935595381852723723645799866672558576993978025033590728687206296379801363024094048327273913079612469982585674824156000783167963081616214710691759864332339239688734656548790656486646106983450809073750535624894296242072010195710276073042036425579852459556183541199012652571123898996574563824424330960027873516082763671875e-1075s   247032822920623295e-341s7   99037485700245683102805043437346965248029601286431e-373s7   99617639833743863161109961162881027406769510558457e-373s7   98852915025769345295749278351563179840130565591462e-372s7   99059944827693569659153042769690930905148015876788e-373s7   98914979205069368270421829889078356254059760327101e-372s,   1000000000000000000000000000000000000000e-16s-   10000000000000000000000000000000000000000e-17s=   991633793189150720000000000000000000000000000000000000000e-33s;   4106250198039490000000000000000000000000000000000000000e-38s*   10.900000000000000012345678912345678912345s  11651287494059419563861790709256988151903479322938522856916519154189084656466977171489691608488398792047332126810029685763620092606534076968286334920536334924763766067178320990794927368304039797998410780646182269333271282839761794603623958163297658510063352026077076106072540390412314438457161207373275477458821194440646557259102208197382844892733860255628785183174541939743301249188486945446244053689504749943655197464973191717009938776287102040358299419343976193341216682148401588363162253931420379903449798213003874174172790742957567330246138038659650118748200625752770984217933648838167281879845022933912352785884444833681591202045229462491699354638895656152216187535257259042082360747878839946016222830869374205287663441403533948204085390898399055004119873046875e-1075s^  5254406533529552661096610603582028195612589849649138922565278497589560452182570597137658742514361936194432482059988700016338656575174473559922258529459120166686600002102838072098506622244175047522649953606315120077538558010753730576321577387528008403025962370502479105305382500086822727836607781816280407336531214924364088126680234780012085291903592543223403975751852488447885154107229587846409265285440430901153525136408849880173424692750069991045196209464308187671479664954854065777039726878381767789934729895619590000470366389383963331466851379030183764964083197053338684769252973171365139701890736933147103189912528110505014483268752328506004517760913030437151571912928276140468769502257147431182910347804663250851413437345649151934269945872064326973371182115272789687312946393533547747886024677951678751174816604738791256853675690543663283782215866825e-1180t3   2602129298404963083833853479113577253105939995688e2t5   260212929840496308383385347911357725310593999568896e0s8   26021292984049630838338534791135772531059399956889601e-2t5   260212929840496308383385347911357725310593999568895e0t5   260212929840496308383385347911357725310593999568897e0t5   260212929840496308383385347911357725310593999568996e0t5   260212929840496308383385347911357725310593999568866e0s   9007199254740992.00t5  179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792s9  179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999s9  179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.001s:   999999999999999944488848768742172978818416595458984375e-54sA   9999999999999999444888487687421729788184165954589843749999999e-54sA   9999999999999999444888487687421729788184165954589843750000001e-54(   R0   (   R,   t   test_stringsR   (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   test_particular  sZ    	(   t   __name__t
   __module__R0   R<   R>   RB   RD   RG   RV   R    t   precisionbigmemtestt   _2GRQ   R]   R`   Rj   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyR&   W   s   		+						$	c           C   s   t  j t ƒ d  S(   N(   R    t   run_unittestR&   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt	   test_main«  s    t   __main__(   R3   t   structt   unittestt   ret   syst   testR    t   getattrt   SkipTestt   compilet   VERBOSEt
   IGNORECASEt   matchR   R%   R2   t   TestCaseR&   Rp   Rk   (    (    (    s†   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_strtod.pyt   <module>   s    9ÿ U	