[pypy-commit] pypy longdouble2: move ENABLED_LONG_DOUBLE def to typespec.py

rlamy noreply at buildbot.pypy.org
Thu Apr 11 21:56:24 CEST 2013


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: longdouble2
Changeset: r63244:d6af37df55fe
Date: 2013-04-11 20:42 +0100
http://bitbucket.org/pypy/pypy/changeset/d6af37df55fe/

Log:	move ENABLED_LONG_DOUBLE def to typespec.py

diff --git a/pypy/module/micronumpy/interp_boxes.py b/pypy/module/micronumpy/interp_boxes.py
--- a/pypy/module/micronumpy/interp_boxes.py
+++ b/pypy/module/micronumpy/interp_boxes.py
@@ -12,20 +12,12 @@
 from rpython.rlib.objectmodel import specialize
 from rpython.tool.sourcetools import func_with_new_name
 from pypy.module.micronumpy.arrayimpl.voidbox import VoidBoxStorage
+from pypy.module.micronumpy.typespec import (ENABLED_LONG_DOUBLE,
+        long_double_size)
 
 MIXIN_32 = (int_typedef,) if LONG_BIT == 32 else ()
 MIXIN_64 = (int_typedef,) if LONG_BIT == 64 else ()
 
-# Is this the proper place for this?
-ENABLED_LONG_DOUBLE = False
-long_double_size = rffi.sizeof_c_type('long double', ignore_errors=True)
-
-import os
-if long_double_size == 8 and os.name == 'nt':
-    # this is a lie, or maybe a wish, MS fakes longdouble math with double
-    long_double_size = 12
-
-
 def new_dtype_getter(name):
     def _get_dtype(space):
         from pypy.module.micronumpy.interp_dtype import get_dtype_cache
diff --git a/pypy/module/micronumpy/interp_dtype.py b/pypy/module/micronumpy/interp_dtype.py
--- a/pypy/module/micronumpy/interp_dtype.py
+++ b/pypy/module/micronumpy/interp_dtype.py
@@ -12,6 +12,8 @@
 from rpython.rlib import jit
 
 from pypy.module.micronumpy.arrayimpl.concrete import SliceArray
+from pypy.module.micronumpy.typespec import (ENABLED_LONG_DOUBLE,
+        long_double_size)
 
 
 UNSIGNEDLTR = "u"
@@ -517,7 +519,7 @@
             aliases=["complex"],
             float_type = self.w_float64dtype,
         )
-        if interp_boxes.ENABLED_LONG_DOUBLE and interp_boxes.long_double_size > 8:
+        if ENABLED_LONG_DOUBLE and long_double_size > 8:
             self.w_longdouble = W_Dtype(
                 types.Float80_instance,
                 num=13,
@@ -538,17 +540,17 @@
                 aliases=["clongdouble", "clongfloat"],
                 float_type = self.w_longdouble,
             )
-            if interp_boxes.long_double_size == 12:
+            if long_double_size == 12:
                 self.w_longdouble.name = "float96"
                 self.w_float96dtype = self.w_longdouble
                 self.w_clongdouble.name = "complex192"
                 self.w_complex192dtype = self.w_clongdouble
-            elif interp_boxes.long_double_size == 16:
+            elif long_double_size == 16:
                 self.w_longdouble.name = "float128"
                 self.w_float128dtype = self.w_longdouble
                 self.w_clongdouble.name = "complex256"
                 self.w_complex256dtype = self.w_clongdouble
-        elif interp_boxes.ENABLED_LONG_DOUBLE:
+        elif ENABLED_LONG_DOUBLE:
             self.w_float64dtype.aliases += ["longdouble", "longfloat"]
             self.w_complex128dtype.aliases += ["clongdouble", "clongfloat"]
             self.w_longdouble = self.w_float64dtype
@@ -628,7 +630,7 @@
                 self.w_float32dtype, self.w_float64dtype,
                 ]
         complex_dtypes =  [self.w_complex64dtype, self.w_complex128dtype]
-        if interp_boxes.ENABLED_LONG_DOUBLE:
+        if ENABLED_LONG_DOUBLE:
             float_dtypes.append(self.w_longdouble)
             complex_dtypes.append(self.w_clongdouble)
         self.builtin_dtypes = [
@@ -702,7 +704,7 @@
             'FLOAT': self.w_float32dtype,
             'BOOL': self.w_booldtype,
         }
-        if interp_boxes.ENABLED_LONG_DOUBLE:
+        if ENABLED_LONG_DOUBLE:
             typeinfo_full['LONGDOUBLE'] = self.w_longdouble
             typeinfo_full['CLONGDOUBLE'] = self.w_clongdouble
 
diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py
--- a/pypy/module/micronumpy/types.py
+++ b/pypy/module/micronumpy/types.py
@@ -23,6 +23,8 @@
         int16_spec, uint16_spec, int32_spec, uint32_spec, long_spec,
         ulong_spec, int64_spec, uint64_spec, float32_spec, float64_spec,
         float16_spec)
+from pypy.module.micronumpy.typespec import (ENABLED_LONG_DOUBLE,
+        long_double_size)
 
 degToRad = math.pi / 180.0
 log2 = math.log(2)
@@ -1461,7 +1463,7 @@
     BoxType = interp_boxes.W_Complex128Box
     FloatType = Float64_instance
 
-if interp_boxes.ENABLED_LONG_DOUBLE and interp_boxes.long_double_size > 8:
+if ENABLED_LONG_DOUBLE and long_double_size > 8:
     class Float80(BaseType, Float):
         _attrs_ = ()
         spec = longdouble_spec
@@ -1485,8 +1487,8 @@
         BoxType = interp_boxes.W_CLongDoubleBox
         FloatType = Float80_instance
 
-    if interp_boxes.long_double_size in (12, 16):
-        Float80.storage_bytes = interp_boxes.long_double_size
+    if long_double_size in (12, 16):
+        Float80.storage_bytes = long_double_size
     else:
         raise ImportError("Unsupported size for long double")
 
diff --git a/pypy/module/micronumpy/typespec.py b/pypy/module/micronumpy/typespec.py
--- a/pypy/module/micronumpy/typespec.py
+++ b/pypy/module/micronumpy/typespec.py
@@ -1,4 +1,5 @@
 """ Meta-data for the low-level types """
+import os
 
 from rpython.rtyper.lltypesystem import rffi, lltype
 from rpython.rlib.objectmodel import specialize
@@ -26,3 +27,11 @@
 float32_spec = TypeSpec("float32", rffi.FLOAT)
 float64_spec = TypeSpec("float64", rffi.DOUBLE)
 float16_spec = TypeSpec("float16", rffi.SHORT)
+
+ENABLED_LONG_DOUBLE = False
+long_double_size = rffi.sizeof_c_type('long double', ignore_errors=True)
+if long_double_size == 8 and os.name == 'nt':
+    # this is a lie, or maybe a wish, MS fakes longdouble math with double
+    long_double_size = 12
+
+


More information about the pypy-commit mailing list