[pypy-svn] r75944 - in pypy/branch/fast-forward/pypy: module/sys objspace/std rlib
benjamin at codespeak.net
benjamin at codespeak.net
Wed Jul 7 00:59:09 CEST 2010
Author: benjamin
Date: Wed Jul 7 00:59:07 2010
New Revision: 75944
Added:
pypy/branch/fast-forward/pypy/rlib/rfloat.py (contents, props changed)
Modified:
pypy/branch/fast-forward/pypy/module/sys/system.py
pypy/branch/fast-forward/pypy/objspace/std/floatobject.py
pypy/branch/fast-forward/pypy/objspace/std/floattype.py
Log:
move float constants to rfloat.py
Modified: pypy/branch/fast-forward/pypy/module/sys/system.py
==============================================================================
--- pypy/branch/fast-forward/pypy/module/sys/system.py (original)
+++ pypy/branch/fast-forward/pypy/module/sys/system.py Wed Jul 7 00:59:07 2010
@@ -1,26 +1,6 @@
"""Information about the current system."""
-
from pypy.interpreter import gateway
-
-from pypy.rpython.tool import rffi_platform
-from pypy.translator.tool.cbuild import ExternalCompilationInfo
-
-
-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))
+from pypy.rlib import rfloat
app = gateway.applevel("""
@@ -45,17 +25,17 @@
def get_float_info(space):
info_w = [
- space.wrap(DBL_MAX),
- space.wrap(DBL_MAX_EXP),
- space.wrap(DBL_MAX_10_EXP),
- space.wrap(DBL_MIN),
- space.wrap(DBL_MIN_EXP),
- space.wrap(DBL_MIN_10_EXP),
- space.wrap(DBL_DIG),
- space.wrap(DBL_MANT_DIG),
- space.wrap(DBL_EPSILON),
- space.wrap(FLT_RADIX),
- space.wrap(FLT_ROUNDS),
+ space.wrap(rfloat.DBL_MAX),
+ space.wrap(rfloat.DBL_MAX_EXP),
+ space.wrap(rfloat.DBL_MAX_10_EXP),
+ space.wrap(rfloat.DBL_MIN),
+ space.wrap(rfloat.DBL_MIN_EXP),
+ space.wrap(rfloat.DBL_MIN_10_EXP),
+ space.wrap(rfloat.DBL_DIG),
+ space.wrap(rfloat.DBL_MANT_DIG),
+ space.wrap(rfloat.DBL_EPSILON),
+ space.wrap(rfloat.FLT_RADIX),
+ space.wrap(rfloat.FLT_ROUNDS),
]
w_float_info = app.wget(space, "float_info")
return space.call_function(w_float_info, space.newtuple(info_w))
Modified: pypy/branch/fast-forward/pypy/objspace/std/floatobject.py
==============================================================================
--- pypy/branch/fast-forward/pypy/objspace/std/floatobject.py (original)
+++ pypy/branch/fast-forward/pypy/objspace/std/floatobject.py Wed Jul 7 00:59:07 2010
@@ -8,11 +8,11 @@
from pypy.objspace.std.register_all import register_all
from pypy.objspace.std.noneobject import W_NoneObject
from pypy.objspace.std.longobject import W_LongObject
-from pypy.module.sys import system
from pypy.rlib.rarithmetic import ovfcheck_float_to_int, intmask, isinf, isnan
from pypy.rlib.rarithmetic import formatd, LONG_BIT, FL_MAXINT, FL_MININT
from pypy.rlib.rbigint import rbigint
from pypy.rlib.objectmodel import we_are_translated
+from pypy.rlib import rfloat
from pypy.tool.sourcetools import func_with_new_name
import math
@@ -92,7 +92,7 @@
def _char_from_hex(number):
return "0123456789abcdef"[number]
-TOHEX_NBITS = system.DBL_MANT_DIG + 3 - (system.DBL_MANT_DIG + 2) % 4
+TOHEX_NBITS = rfloat.DBL_MANT_DIG + 3 - (rfloat.DBL_MANT_DIG + 2) % 4
def float_hex__Float(space, w_float):
value = w_float.floatval
@@ -104,7 +104,7 @@
else:
return space.wrap("0x0.0p+0")
mant, exp = math.frexp(value)
- shift = 1 - max(system.DBL_MIN_EXP - exp, 0)
+ shift = 1 - max(rfloat.DBL_MIN_EXP - exp, 0)
mant = math.ldexp(mant, shift)
mant = abs(mant)
exp -= shift
Modified: pypy/branch/fast-forward/pypy/objspace/std/floattype.py
==============================================================================
--- pypy/branch/fast-forward/pypy/objspace/std/floattype.py (original)
+++ pypy/branch/fast-forward/pypy/objspace/std/floattype.py Wed Jul 7 00:59:07 2010
@@ -1,13 +1,13 @@
import math
import sys
from pypy.rlib.unroll import unrolling_iterable
+from pypy.rlib import rfloat
from pypy.interpreter import gateway
from pypy.interpreter.baseobjspace import ObjSpace, W_Root
from pypy.interpreter.error import OperationError
from pypy.objspace.std.stdtypedef import StdTypeDef, SMM
from pypy.objspace.std.strutil import ParseStringError
from pypy.objspace.std.strutil import interp_string_to_float
-from pypy.module.sys import system
float_as_integer_ratio = SMM("as_integer_ratio", 1)
@@ -127,8 +127,8 @@
if not total_digits:
raise OperationError(space.w_ValueError,
space.wrap("invalid hex string"))
- const_one = system.DBL_MIN_EXP - system.DBL_MANT_DIG + sys.maxint // 2
- const_two = sys.maxint // 2 + 1 - system.DBL_MAX_EXP
+ const_one = rfloat.DBL_MIN_EXP - rfloat.DBL_MANT_DIG + sys.maxint // 2
+ const_two = sys.maxint // 2 + 1 - rfloat.DBL_MAX_EXP
if total_digits > min(const_one, const_two) // 4:
raise OperationError(space.w_ValueError, space.wrap("way too long"))
if i < length and (s[i] == "p" or s[i] == "P"):
@@ -165,13 +165,13 @@
while digit:
top_exp += 1
digit //= 2
- if top_exp < system.DBL_MIN_EXP - system.DBL_MANT_DIG:
+ if top_exp < rfloat.DBL_MIN_EXP - rfloat.DBL_MANT_DIG:
value = 0.0
- elif top_exp > system.DBL_MAX_EXP:
+ elif top_exp > rfloat.DBL_MAX_EXP:
raise OperationError(space.w_OverflowError,
space.wrap("too large"))
else:
- lsb = max(top_exp, system.DBL_MIN_EXP) - system.DBL_MANT_DIG
+ lsb = max(top_exp, rfloat.DBL_MIN_EXP) - rfloat.DBL_MANT_DIG
value = 0
if exp >= lsb:
for j in range(total_digits - 1, -1, -1):
@@ -199,8 +199,8 @@
break
if round_up:
value += 2 * half_eps
- mant_dig = system.DBL_MANT_DIG
- if (top_exp == system.DBL_MAX_EXP and
+ mant_dig = rfloat.DBL_MANT_DIG
+ if (top_exp == rfloat.DBL_MAX_EXP and
value == math.ldexp(2 * half_eps, mant_dig)):
raise OperationError(space.w_OverflowError,
space.wrap("too large"))
Added: pypy/branch/fast-forward/pypy/rlib/rfloat.py
==============================================================================
--- (empty file)
+++ pypy/branch/fast-forward/pypy/rlib/rfloat.py Wed Jul 7 00:59:07 2010
@@ -0,0 +1,21 @@
+"""Float constants"""
+
+from pypy.rpython.tool import rffi_platform
+from pypy.translator.tool.cbuild import ExternalCompilationInfo
+
+
+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))
More information about the Pypy-commit
mailing list