[Python-3000-checkins] r56649 - python/branches/py3k-struni/Objects/complexobject.c

guido.van.rossum python-3000-checkins at python.org
Wed Aug 1 19:43:16 CEST 2007


Author: guido.van.rossum
Date: Wed Aug  1 19:43:15 2007
New Revision: 56649

Modified:
   python/branches/py3k-struni/Objects/complexobject.c
Log:
Kill div, mod and divmod on complex (already deprecated in 2.x).
Add docstring for conjugate().
Patch by Jeffrey Yasskin.


Modified: python/branches/py3k-struni/Objects/complexobject.c
==============================================================================
--- python/branches/py3k-struni/Objects/complexobject.c	(original)
+++ python/branches/py3k-struni/Objects/complexobject.c	Wed Aug  1 19:43:15 2007
@@ -466,57 +466,18 @@
 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 @@
 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 @@
 	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 @@
 }
 
 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 */
 };


More information about the Python-3000-checkins mailing list