Author: Matti Picus <[email protected]>
Branch: ndarray-round
Changeset: r64986:1b5d8b97c785
Date: 2013-06-25 22:08 +0300
http://bitbucket.org/pypy/pypy/changeset/1b5d8b97c785/
Log: test, implement complex.round()
diff --git a/pypy/module/micronumpy/test/test_ufuncs.py
b/pypy/module/micronumpy/test/test_ufuncs.py
--- a/pypy/module/micronumpy/test/test_ufuncs.py
+++ b/pypy/module/micronumpy/test/test_ufuncs.py
@@ -347,6 +347,8 @@
bround = b.round()
assert (bround == [1., 0.]).all()
assert bround.dtype is dtype('float16')
+ c = array([10.5+11.5j, -15.2-100.3456j, 0.2343+11.123456j])
+ assert (c.round(0) == [10.+12.j, -15-100j, 0+11j]).all()
def test_copysign(self):
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
@@ -1378,6 +1378,15 @@
except ZeroDivisionError:
return rfloat.NAN, rfloat.NAN
+ @specialize.argtype(1)
+ def round(self, v, decimals=0):
+ ans = list(self.unbox(v))
+ if isfinite(ans[0]):
+ ans[0] = rfloat.round_double(ans[0], decimals, half_even=True)
+ if isfinite(ans[1]):
+ ans[1] = rfloat.round_double(ans[1], decimals, half_even=True)
+ return self.box_complex(*ans)
+
# No floor, ceil, trunc in numpy for complex
#@simple_unary_op
#def floor(self, v):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit