[pypy-commit] pypy numpy-dtype: add float32 and float96 dtypes
justinpeel
noreply at buildbot.pypy.org
Wed Aug 3 06:13:21 CEST 2011
Author: Justin Peel <notmuchtotell at gmail.com>
Branch: numpy-dtype
Changeset: r46225:92d7e1954794
Date: 2011-08-02 22:14 -0600
http://bitbucket.org/pypy/pypy/changeset/92d7e1954794/
Log: add float32 and float96 dtypes
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
@@ -37,13 +37,14 @@
UInt64_num = 10
Float32_num = 11
Float64_num = 12
-Float128_num = 13
+Float96_num = 13
# dtype 'kinds'. Used to determine which operations can be performed on array
BOOLLTR = 'b'
FLOATINGLTR = 'f'
SIGNEDLTR = 'i'
UNSIGNEDLTR = 'u'
+COMPLEXLTR = 'c'
class Dtype(Wrappable):
# attributes: type, kind, typeobj?(I think it should point to np.float64 or
@@ -107,9 +108,15 @@
def cast_uint64(val):
return rffi.cast(rffi.ULONGLONG, val)
-def cast_float(val):
+def cast_float32(val):
+ return rffi.cast(lltype.SingleFloat, val)
+
+def cast_float64(val):
return rffi.cast(lltype.Float, val)
+def cast_float96(val):
+ return rffi.cast(lltype.LongFloat, val)
+
Bool_dtype = Dtype(cast_bool, unwrap_bool, Bool_num, BOOLLTR)
Int8_dtype = Dtype(cast_int8, unwrap_int, Int8_num, SIGNEDLTR)
UInt8_dtype = Dtype(cast_uint8, unwrap_int, UInt8_num, SIGNEDLTR)
@@ -121,10 +128,11 @@
ULong_dtype = Dtype(cast_ulong, unwrap_int, ULong_num, UNSIGNEDLTR)
Int64_dtype = Dtype(cast_int64, unwrap_int, Int64_num, SIGNEDLTR)
UInt64_dtype = Dtype(cast_uint64, unwrap_int, UInt64_num, UNSIGNEDLTR)
-Float64_dtype = Dtype(cast_float, unwrap_float, Float64_num,
- FLOATINGLTR)
+Float32_dtype = Dtype(cast_float32, unwrap_float, Float32_num, FLOATINGLTR)
+Float64_dtype = Dtype(cast_float64, unwrap_float, Float64_num, FLOATINGLTR)
+Float96_dtype = Dtype(cast_float96, unwrap_float, Float96_num, FLOATINGLTR)
-_dtype_list = (Bool_dtype, # bool
+_dtype_list = (Bool_dtype,
Int8_dtype,
UInt8_dtype,
Int16_dtype,
@@ -135,9 +143,9 @@
ULong_dtype,
Int64_dtype,
UInt64_dtype,
- None,
+ Float32_dtype,
Float64_dtype,
- None,
+ Float96_dtype,
)
def find_scalar_dtype(space, scalar):
diff --git a/pypy/module/micronumpy/interp_numarray.py b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -21,11 +21,11 @@
lltype.Array(rffi.UINT, hints={'nolength': True}), # uint32
lltype.Array(rffi.LONG, hints={'nolength': True}), # long
lltype.Array(rffi.ULONG, hints={'nolength': True}), # ulong
- lltype.Array(rffi.LONGLONG, hints={'nolength': True}), # longlong
- lltype.Array(rffi.ULONGLONG, hints={'nolength': True}), # ulonglong
+ lltype.Array(rffi.LONGLONG, hints={'nolength': True}), # int64
+ lltype.Array(rffi.ULONGLONG, hints={'nolength': True}), # uint64
lltype.Array(lltype.SingleFloat, hints={'nolength': True}), # float32
lltype.Array(lltype.Float, hints={'nolength': True}), # float64
- None, # float128
+ lltype.Array(lltype.LongFloat, hints={'nolength': True}), # float96
)
numpy_driver = jit.JitDriver(greens = ['signature'],
More information about the pypy-commit
mailing list