Beispiel #1
0
    def ll_float(ll_str):
        from pypy.rpython.annlowlevel import hlstr
        from pypy.rlib.rarithmetic import break_up_float, parts_to_float
        s = hlstr(ll_str)
        assert s is not None

        n = len(s)
        beg = 0
        while beg < n:
            if s[beg] == ' ':
                beg += 1
            else:
                break
        if beg == n:
            raise ValueError
        end = n-1
        while end >= 0:
            if s[end] == ' ':
                end -= 1
            else:
                break
        assert end >= 0
        sign, before_point, after_point, exponent = break_up_float(s[beg:end+1])
    
        if not before_point and not after_point:
            raise ValueError

        return parts_to_float(sign, before_point, after_point, exponent)
Beispiel #2
0
 def f(x):
     if x == 0:
         s = '1.0'
     else:
         s = '1e-100'
     sign, beforept, afterpt, expt = break_up_float(s)
     return parts_to_float(sign, beforept, afterpt, expt)
Beispiel #3
0
def string_to_float(s):
    """
    Conversion of string to float.
    This version tries to only raise on invalid literals.
    Overflows should be converted to infinity whenever possible.
    """

    s = strip_spaces(s)

    if not s:
        raise ParseStringError("empty string for float()")

    # 1) parse the string into pieces.
    try:
        sign, before_point, after_point, exponent = break_up_float(s)
    except ValueError:
        raise ParseStringError("invalid literal for float()")

    if not before_point and not after_point:
        raise ParseStringError("invalid literal for float()")

    try:
        return parts_to_float(sign, before_point, after_point, exponent)
    except ValueError:
        raise ParseStringError("invalid literal for float()")
Beispiel #4
0
    def ll_float(ll_str):
        from pypy.rpython.annlowlevel import hlstr
        from pypy.rlib.rarithmetic import break_up_float, parts_to_float
        s = hlstr(ll_str)
        assert s is not None

        n = len(s)
        beg = 0
        while beg < n:
            if s[beg] == ' ':
                beg += 1
            else:
                break
        if beg == n:
            raise ValueError
        end = n - 1
        while end >= 0:
            if s[end] == ' ':
                end -= 1
            else:
                break
        assert end >= 0
        sign, before_point, after_point, exponent = break_up_float(s[beg:end +
                                                                     1])

        if not before_point and not after_point:
            raise ValueError

        return parts_to_float(sign, before_point, after_point, exponent)
Beispiel #5
0
def string_to_float(s):
    """
    Conversion of string to float.
    This version tries to only raise on invalid literals.
    Overflows should be converted to infinity whenever possible.
    """

    s = strip_spaces(s)

    if not s:
        raise ParseStringError("empty string for float()")

    # 1) parse the string into pieces.
    try:
        sign, before_point, after_point, exponent = break_up_float(s)
    except ValueError:
        raise ParseStringError("invalid literal for float()")
    
    if not before_point and not after_point:
        raise ParseStringError("invalid literal for float()")

    try:
        return parts_to_float(sign, before_point, after_point, exponent)
    except ValueError:
        raise ParseStringError("invalid literal for float()")
Beispiel #6
0
 def f(x):
     if x == 0:
         s = '1.0'
     else:
         s = '1e-100'
     sign, beforept, afterpt, expt = break_up_float(s)   
     return parts_to_float(sign, beforept, afterpt, expt)
Beispiel #7
0
 def oofakeimpl(sign, beforept, afterpt, exponent):
     return rarithmetic.parts_to_float(sign._str, beforept._str, afterpt._str, exponent._str)
Beispiel #8
0
def load_float(loader):
    if readchr(loader) != TYPE_FLOAT:
        raise ValueError("expected a float")
    length = ord(readchr(loader))
    s = readstr(loader, length)
    return parts_to_float(*break_up_float(s))
Beispiel #9
0
 def fn(i):
     sign, beforept, afterpt, exponent = parts[i]
     return parts_to_float(sign, beforept, afterpt, exponent)
Beispiel #10
0
 def ll_strtod_parts_to_float(sign, beforept, afterpt, exponent):
     return rarithmetic.parts_to_float(LLSupport.from_rstr(sign),
                                       LLSupport.from_rstr(beforept),
                                       LLSupport.from_rstr(afterpt),
                                       LLSupport.from_rstr(exponent))
Beispiel #11
0
 def f(a, b, c, d):
     a,b,c,d = hlstr(a), hlstr(b), hlstr(c), hlstr(d)
     
     return rarithmetic.parts_to_float(a, b, c, d)
Beispiel #12
0
 def fn(sign, beforept, afterpt, exponent):
     return parts_to_float(sign, beforept, afterpt, exponent)
Beispiel #13
0
 def fn(i):
     sign, beforept, afterpt, exponent = parts[i]
     return parts_to_float(sign, beforept, afterpt, exponent)
Beispiel #14
0
 def fn(sign, beforept, afterpt, exponent):
     return parts_to_float(sign, beforept, afterpt, exponent)
Beispiel #15
0
 def oofakeimpl(sign, beforept, afterpt, exponent):
     return rarithmetic.parts_to_float(sign._str, beforept._str,
                                       afterpt._str, exponent._str)
Beispiel #16
0
def load_float(loader):
    if readchr(loader) != TYPE_FLOAT:
        raise ValueError("expected a float")
    length = ord(readchr(loader))
    s = readstr(loader, length)
    return parts_to_float(*break_up_float(s))
Beispiel #17
0
        def f(a, b, c, d):
            a, b, c, d = hlstr(a), hlstr(b), hlstr(c), hlstr(d)

            return rarithmetic.parts_to_float(a, b, c, d)