Author: Brian Kearns <[email protected]>
Branch:
Changeset: r67468:caf88c5b381f
Date: 2013-10-17 17:34 -0400
http://bitbucket.org/pypy/pypy/changeset/caf88c5b381f/
Log: some cleanups
diff --git a/pypy/module/micronumpy/arrayimpl/sort.py
b/pypy/module/micronumpy/arrayimpl/sort.py
--- a/pypy/module/micronumpy/arrayimpl/sort.py
+++ b/pypy/module/micronumpy/arrayimpl/sort.py
@@ -323,7 +323,8 @@
all_types = (types.all_float_types + types.all_complex_types +
types.all_int_types)
-all_types = [i for i in all_types if not '_mixin_' in i[0].__dict__]
+all_types = [i for i in all_types if not '_mixin_' in i[0].__dict__ and
+ not issubclass(i[0], types.BaseFloat16)]
all_types = unrolling_iterable(all_types)
class ArgSortCache(object):
diff --git a/pypy/module/micronumpy/test/test_sorting.py
b/pypy/module/micronumpy/test/test_sorting.py
--- a/pypy/module/micronumpy/test/test_sorting.py
+++ b/pypy/module/micronumpy/test/test_sorting.py
@@ -1,16 +1,6 @@
from pypy.module.micronumpy.test.test_base import BaseNumpyAppTest
-class AppTestSupport(BaseNumpyAppTest):
- def setup_class(cls):
- import struct
- BaseNumpyAppTest.setup_class.im_func(cls)
- cls.w_data = cls.space.wrap(struct.pack('dddd', 1, 2, 3, 4))
- cls.w_fdata = cls.space.wrap(struct.pack('f', 2.3))
- cls.w_float16val = cls.space.wrap('\x00E') # 5.0 in float16
- cls.w_float32val = cls.space.wrap(struct.pack('f', 5.2))
- cls.w_float64val = cls.space.wrap(struct.pack('d', 300.4))
- cls.w_ulongval = cls.space.wrap(struct.pack('L', 12))
-
+class AppTestSorting(BaseNumpyAppTest):
def test_argsort_dtypes(self):
from numpypy import array, arange
assert array(2.0).argsort() == 0
@@ -30,7 +20,7 @@
assert (a.argsort() == a).all()
raises(NotImplementedError, 'arange(10,dtype="float16").argsort()')
- def test_argsort_nd(self):
+ def test_argsort_ndim(self):
from numpypy import array
a = array([[4, 2], [1, 3]])
assert (a.argsort() == [[1, 0], [0, 1]]).all()
@@ -79,7 +69,7 @@
a.sort()
assert (a == c).all()
- def test_sort_dtypesi_nonnative(self):
+ def test_sort_nonnative(self):
from numpypy import array
nnp = self.non_native_prefix
for dtype in [ nnp + 'i2']:
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
@@ -68,7 +68,6 @@
)
return dispatcher
-
def raw_unary_op(func):
specialize.argtype(1)(func)
@functools.wraps(func)
@@ -1038,6 +1037,53 @@
swapped_value = byteswap(rffi.cast(self.T, value))
raw_storage_setitem(storage, i + offset, swapped_value)
+class BaseFloat16(Float):
+ _mixin_ = True
+
+ _attrs_ = ()
+ _STORAGE_T = rffi.USHORT
+ T = rffi.SHORT
+
+ BoxType = interp_boxes.W_Float16Box
+
+ @specialize.argtype(1)
+ def box(self, value):
+ return self.BoxType(rffi.cast(rffi.DOUBLE, value))
+
+ def runpack_str(self, s):
+ assert len(s) == 2
+ fval = unpack_float(s, native_is_bigendian)
+ return self.box(fval)
+
+ def default_fromstring(self, space):
+ return self.box(-1.0)
+
+ def byteswap(self, w_v):
+ value = self.unbox(w_v)
+ hbits = float_pack(value,2)
+ swapped = byteswap(rffi.cast(self._STORAGE_T, hbits))
+ return self.box(float_unpack(r_ulonglong(swapped), 2))
+
+class Float16(BaseType, BaseFloat16):
+ def _read(self, storage, i, offset):
+ hbits = raw_storage_getitem(self._STORAGE_T, storage, i + offset)
+ return float_unpack(r_ulonglong(hbits), 2)
+
+ def _write(self, storage, i, offset, value):
+ hbits = float_pack(value,2)
+ raw_storage_setitem(storage, i + offset,
+ rffi.cast(self._STORAGE_T, hbits))
+
+class NonNativeFloat16(BaseType, BaseFloat16):
+ def _read(self, storage, i, offset):
+ hbits = raw_storage_getitem(self._STORAGE_T, storage, i + offset)
+ return float_unpack(r_ulonglong(byteswap(hbits)), 2)
+
+ def _write(self, storage, i, offset, value):
+ hbits = float_pack(value,2)
+ raw_storage_setitem(storage, i + offset,
+ byteswap(rffi.cast(self._STORAGE_T, hbits)))
+
class Float32(BaseType, Float):
_attrs_ = ()
@@ -1169,22 +1215,22 @@
real, imag = box.real, box.imag
return real, imag
- def store(self, arr, i, offset, box):
- real, imag = self.unbox(box)
- raw_storage_setitem(arr.storage, i+offset, real)
- raw_storage_setitem(arr.storage,
- i+offset+rffi.sizeof(self.T), imag)
-
def _read(self, storage, i, offset):
real = raw_storage_getitem(self.T, storage, i + offset)
- imag = raw_storage_getitem(self.T, storage,
- i + offset + rffi.sizeof(self.T))
+ imag = raw_storage_getitem(self.T, storage, i + offset +
rffi.sizeof(self.T))
return real, imag
def read(self, arr, i, offset, dtype=None):
real, imag = self._read(arr.storage, i, offset)
return self.box_complex(real, imag)
+ def _write(self, storage, i, offset, value):
+ raw_storage_setitem(storage, i + offset, value[0])
+ raw_storage_setitem(storage, i + offset + rffi.sizeof(self.T),
value[1])
+
+ def store(self, arr, i, offset, box):
+ self._write(arr.storage, i, offset, self.unbox(box))
+
@complex_binary_op
def add(self, v1, v2):
return rcomplex.c_add(v1, v2)
@@ -1621,7 +1667,6 @@
def zeros_like(self, v):
return 0, 0
-
class Complex64(ComplexFloating, BaseType):
_attrs_ = ()
@@ -1675,7 +1720,6 @@
NonNativeComplexLong = ComplexLong
-
class BaseStringType(object):
_mixin_ = True
@@ -1883,7 +1927,6 @@
NonNativeVoidType = VoidType
class RecordType(BaseType):
-
T = lltype.Char
def __init__(self, offsets_and_fields, size):
@@ -1967,50 +2010,3 @@
all_complex_types.append((tp, 'complex'))
_setup()
del _setup
-
-class BaseFloat16(Float):
- _mixin_ = True
-
- _attrs_ = ()
- _STORAGE_T = rffi.USHORT
- T = rffi.SHORT
-
- BoxType = interp_boxes.W_Float16Box
-
- @specialize.argtype(1)
- def box(self, value):
- return self.BoxType(rffi.cast(rffi.DOUBLE, value))
-
- def runpack_str(self, s):
- assert len(s) == 2
- fval = unpack_float(s, native_is_bigendian)
- return self.box(fval)
-
- def default_fromstring(self, space):
- return self.box(-1.0)
-
- def byteswap(self, w_v):
- value = self.unbox(w_v)
- hbits = float_pack(value,2)
- swapped = byteswap(rffi.cast(self._STORAGE_T, hbits))
- return self.box(float_unpack(r_ulonglong(swapped), 2))
-
-class Float16(BaseType, BaseFloat16):
- def _read(self, storage, i, offset):
- hbits = raw_storage_getitem(self._STORAGE_T, storage, i + offset)
- return float_unpack(r_ulonglong(hbits), 2)
-
- def _write(self, storage, i, offset, value):
- hbits = float_pack(value,2)
- raw_storage_setitem(storage, i + offset,
- rffi.cast(self._STORAGE_T, hbits))
-
-class NonNativeFloat16(BaseType, BaseFloat16):
- def _read(self, storage, i, offset):
- hbits = raw_storage_getitem(self._STORAGE_T, storage, i + offset)
- return float_unpack(r_ulonglong(byteswap(hbits)), 2)
-
- def _write(self, storage, i, offset, value):
- hbits = float_pack(value,2)
- raw_storage_setitem(storage, i + offset,
- byteswap(rffi.cast(self._STORAGE_T, hbits)))
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit