diff options
author | Guido van Rossum <guido@python.org> | 2007-08-01 17:43:15 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-08-01 17:43:15 (GMT) |
commit | 46334cdae8a057c3f62a15e343ead7bb3d8ef33d (patch) | |
tree | bf33e823c71f1a470d5c762c1855067a46ef42f6 | |
parent | b31339fa02e48282b88f82942539ecc12e74ea63 (diff) | |
download | cpython-46334cdae8a057c3f62a15e343ead7bb3d8ef33d.zip cpython-46334cdae8a057c3f62a15e343ead7bb3d8ef33d.tar.gz cpython-46334cdae8a057c3f62a15e343ead7bb3d8ef33d.tar.bz2 |
Kill div, mod and divmod on complex (already deprecated in 2.x).
Add docstring for conjugate().
Patch by Jeffrey Yasskin.
-rw-r--r-- | Objects/complexobject.c | 70 |
1 files changed, 15 insertions, 55 deletions
diff --git a/Objects/complexobject.c b/Objects/complexobject.c index 69dd502..a51e806 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -466,57 +466,18 @@ complex_div(PyObject *v, PyObject *w) static PyObject * complex_remainder(PyObject *v, PyObject *w) { - Py_complex div, mod; - Py_complex a, b; - TO_COMPLEX(v, a); - TO_COMPLEX(w, b); - - if (PyErr_Warn(PyExc_DeprecationWarning, - "complex divmod(), // and % are deprecated") < 0) - return NULL; - - errno = 0; - div = c_quot(a, b); /* The raw divisor value. */ - if (errno == EDOM) { - PyErr_SetString(PyExc_ZeroDivisionError, "complex remainder"); - return NULL; - } - div.real = floor(div.real); /* Use the floor of the real part. */ - div.imag = 0.0; - mod = c_diff(a, c_prod(b, div)); - - return PyComplex_FromCComplex(mod); + PyErr_SetString(PyExc_TypeError, + "can't mod complex numbers."); + return NULL; } static PyObject * complex_divmod(PyObject *v, PyObject *w) { - Py_complex div, mod; - PyObject *d, *m, *z; - Py_complex a, b; - TO_COMPLEX(v, a); - TO_COMPLEX(w, b); - - if (PyErr_Warn(PyExc_DeprecationWarning, - "complex divmod(), // and % are deprecated") < 0) - return NULL; - - errno = 0; - div = c_quot(a, b); /* The raw divisor value. */ - if (errno == EDOM) { - PyErr_SetString(PyExc_ZeroDivisionError, "complex divmod()"); - return NULL; - } - div.real = floor(div.real); /* Use the floor of the real part. */ - div.imag = 0.0; - mod = c_diff(a, c_prod(b, div)); - d = PyComplex_FromCComplex(div); - m = PyComplex_FromCComplex(mod); - z = PyTuple_Pack(2, d, m); - Py_XDECREF(d); - Py_XDECREF(m); - return z; + PyErr_SetString(PyExc_TypeError, + "can't take floor or mod of complex number."); + return NULL; } static PyObject * @@ -560,15 +521,8 @@ complex_pow(PyObject *v, PyObject *w, PyObject *z) static PyObject * complex_int_div(PyObject *v, PyObject *w) { - PyObject *t, *r; - - t = complex_divmod(v, w); - if (t != NULL) { - r = PyTuple_GET_ITEM(t, 0); - Py_INCREF(r); - Py_DECREF(t); - return r; - } + PyErr_SetString(PyExc_TypeError, + "can't take floor of complex number."); return NULL; } @@ -665,6 +619,11 @@ complex_conjugate(PyObject *self) return PyComplex_FromCComplex(c); } +PyDoc_STRVAR(complex_conjugate_doc, +"complex.conjugate() -> complex\n" +"\n" +"Returns the complex conjugate of its argument. (3-4j).conjugate() == 3+4j."); + static PyObject * complex_getnewargs(PyComplexObject *v) { @@ -672,7 +631,8 @@ complex_getnewargs(PyComplexObject *v) } static PyMethodDef complex_methods[] = { - {"conjugate", (PyCFunction)complex_conjugate, METH_NOARGS}, + {"conjugate", (PyCFunction)complex_conjugate, METH_NOARGS, + complex_conjugate_doc}, {"__getnewargs__", (PyCFunction)complex_getnewargs, METH_NOARGS}, {NULL, NULL} /* sentinel */ }; |