Ejemplo n.º 1
0
class CConfig:
    _compilation_info_ = ExternalCompilationInfo(includes=['float.h'])

    DBL_MAX = rffi_platform.DefinedConstantDouble('DBL_MAX')
    DBL_MIN = rffi_platform.DefinedConstantDouble('DBL_MIN')
    DBL_MANT_DIG = rffi_platform.ConstantInteger('DBL_MANT_DIG')
Ejemplo n.º 2
0
from rpython.rtyper.tool import rffi_platform
from rpython.translator.tool.cbuild import ExternalCompilationInfo
from rpython.rlib.objectmodel import not_rpython


class CConfig:
    _compilation_info_ = ExternalCompilationInfo(includes=["float.h"])


float_constants = ["DBL_MAX", "DBL_MIN", "DBL_EPSILON"]
int_constants = [
    "DBL_MAX_EXP", "DBL_MAX_10_EXP", "DBL_MIN_EXP", "DBL_MIN_10_EXP",
    "DBL_DIG", "DBL_MANT_DIG", "FLT_RADIX", "FLT_ROUNDS"
]
for const in float_constants:
    setattr(CConfig, const, rffi_platform.DefinedConstantDouble(const))
for const in int_constants:
    setattr(CConfig, const, rffi_platform.DefinedConstantInteger(const))
del float_constants, int_constants, const

globals().update(rffi_platform.configure(CConfig))

INVALID_MSG = "could not convert string to float"


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.