[pypy-commit] pypy remove-remaining-smm: Move to_complex().
Manuel Jacob
noreply at buildbot.pypy.org
Mon Feb 24 00:35:40 CET 2014
Author: Manuel Jacob
Branch: remove-remaining-smm
Changeset: r69315:5f71433268dc
Date: 2014-02-24 00:21 +0100
http://bitbucket.org/pypy/pypy/changeset/5f71433268dc/
Log: Move to_complex().
diff --git a/pypy/objspace/std/complexobject.py b/pypy/objspace/std/complexobject.py
--- a/pypy/objspace/std/complexobject.py
+++ b/pypy/objspace/std/complexobject.py
@@ -275,6 +275,17 @@
def int(self, space):
raise OperationError(space.w_TypeError, space.wrap("can't convert complex to int; use int(abs(z))"))
+ def _to_complex(self, space, w_obj):
+ if isinstance(w_obj, W_ComplexObject):
+ return w_obj
+ if space.isinstance_w(w_obj, space.w_int):
+ return W_ComplexObject(w_obj.intval, 0.0)
+ if space.isinstance_w(w_obj, space.w_long):
+ dval = w_obj.tofloat(space)
+ return W_ComplexObject(dval, 0.0)
+ if space.isinstance_w(w_obj, space.w_float):
+ return W_ComplexObject(w_obj.floatval, 0.0)
+
@staticmethod
@unwrap_spec(w_real = WrappedDefault(0.0))
def descr__new__(space, w_complextype, w_real, w_imag=None):
@@ -373,7 +384,7 @@
return space.newint(combined)
def descr_coerce(self, space, w_other):
- w_other = to_complex(space, w_other)
+ w_other = self._to_complex(space, w_other)
if w_other is None:
return space.w_NotImplemented
return space.newtuple([self, w_other])
@@ -429,47 +440,47 @@
return space.w_NotImplemented
def descr_add(self, space, w_rhs):
- w_rhs = to_complex(space, w_rhs)
+ w_rhs = self._to_complex(space, w_rhs)
if w_rhs is None:
return space.w_NotImplemented
return W_ComplexObject(self.realval + w_rhs.realval,
self.imagval + w_rhs.imagval)
def descr_radd(self, space, w_lhs):
- w_lhs = to_complex(space, w_lhs)
+ w_lhs = self._to_complex(space, w_lhs)
if w_lhs is None:
return space.w_NotImplemented
return W_ComplexObject(w_lhs.realval + self.realval,
w_lhs.imagval + self.imagval)
def descr_sub(self, space, w_rhs):
- w_rhs = to_complex(space, w_rhs)
+ w_rhs = self._to_complex(space, w_rhs)
if w_rhs is None:
return space.w_NotImplemented
return W_ComplexObject(self.realval - w_rhs.realval,
self.imagval - w_rhs.imagval)
def descr_rsub(self, space, w_lhs):
- w_lhs = to_complex(space, w_lhs)
+ w_lhs = self._to_complex(space, w_lhs)
if w_lhs is None:
return space.w_NotImplemented
return W_ComplexObject(w_lhs.realval - self.realval,
w_lhs.imagval - self.imagval)
def descr_mul(self, space, w_rhs):
- w_rhs = to_complex(space, w_rhs)
+ w_rhs = self._to_complex(space, w_rhs)
if w_rhs is None:
return space.w_NotImplemented
return self.mul(w_rhs)
def descr_rmul(self, space, w_lhs):
- w_lhs = to_complex(space, w_lhs)
+ w_lhs = self._to_complex(space, w_lhs)
if w_lhs is None:
return space.w_NotImplemented
return w_lhs.mul(self)
def descr_truediv(self, space, w_rhs):
- w_rhs = to_complex(space, w_rhs)
+ w_rhs = self._to_complex(space, w_rhs)
if w_rhs is None:
return space.w_NotImplemented
try:
@@ -478,7 +489,7 @@
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
def descr_rtruediv(self, space, w_lhs):
- w_lhs = to_complex(space, w_lhs)
+ w_lhs = self._to_complex(space, w_lhs)
if w_lhs is None:
return space.w_NotImplemented
try:
@@ -487,7 +498,7 @@
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
def descr_floordiv(self, space, w_rhs):
- w_rhs = to_complex(space, w_rhs)
+ w_rhs = self._to_complex(space, w_rhs)
if w_rhs is None:
return space.w_NotImplemented
# don't care about the slight slowdown you get from using divmod
@@ -497,7 +508,7 @@
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
def descr_rfloordiv(self, space, w_lhs):
- w_lhs = to_complex(space, w_lhs)
+ w_lhs = self._to_complex(space, w_lhs)
if w_lhs is None:
return space.w_NotImplemented
# don't care about the slight slowdown you get from using divmod
@@ -507,7 +518,7 @@
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
def descr_mod(self, space, w_rhs):
- w_rhs = to_complex(space, w_rhs)
+ w_rhs = self._to_complex(space, w_rhs)
if w_rhs is None:
return space.w_NotImplemented
try:
@@ -516,7 +527,7 @@
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
def descr_rmod(self, space, w_lhs):
- w_lhs = to_complex(space, w_lhs)
+ w_lhs = self._to_complex(space, w_lhs)
if w_lhs is None:
return space.w_NotImplemented
try:
@@ -525,7 +536,7 @@
raise OperationError(space.w_ZeroDivisionError, space.wrap(str(e)))
def descr_divmod(self, space, w_rhs):
- w_rhs = to_complex(space, w_rhs)
+ w_rhs = self._to_complex(space, w_rhs)
if w_rhs is None:
return space.w_NotImplemented
try:
@@ -535,7 +546,7 @@
return space.newtuple([div, mod])
def descr_rdivmod(self, space, w_lhs):
- w_lhs = to_complex(space, w_lhs)
+ w_lhs = self._to_complex(space, w_lhs)
if w_lhs is None:
return space.w_NotImplemented
try:
@@ -546,7 +557,7 @@
@unwrap_spec(w_third_arg=WrappedDefault(None))
def descr_pow(self, space, w_exponent, w_third_arg):
- w_exponent = to_complex(space, w_exponent)
+ w_exponent = self._to_complex(space, w_exponent)
if w_exponent is None:
return space.w_NotImplemented
if not space.is_w(w_third_arg, space.w_None):
@@ -571,17 +582,6 @@
w_one = W_ComplexObject(1, 0)
-def to_complex(space, w_obj):
- if isinstance(w_obj, W_ComplexObject):
- return w_obj
- if space.isinstance_w(w_obj, space.w_int):
- return W_ComplexObject(w_obj.intval, 0.0)
- if space.isinstance_w(w_obj, space.w_long):
- dval = w_obj.tofloat(space)
- return W_ComplexObject(dval, 0.0)
- if space.isinstance_w(w_obj, space.w_float):
- return W_ComplexObject(w_obj.floatval, 0.0)
-
def complexwprop(name):
def fget(space, w_obj):
from pypy.objspace.std.complexobject import W_ComplexObject
More information about the pypy-commit
mailing list