diff Modules/mathmodule.c @ 44488:94eeaeeb3ce9 legacy-trunk

Continue rolling back pep-3141 changes that changed behavior from 2.5. This round included: * Revert round to its 2.6 behavior (half away from 0). * Because round, floor, and ceil always return float again, it's no longer necessary to have them delegate to __xxx___, so I've ripped that out of their implementations and the Real ABC. This also helps in implementing types that work in both 2.6 and 3.0: you return int from the __xxx__ methods, and let it get enabled by the version upgrade. * Make pow(-1, .5) raise a ValueError again.
author Jeffrey Yasskin <jyasskin@gmail.com>
date Sat, 05 Jan 2008 08:47:13 +0000
parents cba9ff760430
children 12099143724f
line wrap: on
line diff
--- a/Modules/mathmodule.c	Sat Jan 05 04:38:38 2008 +0000
+++ b/Modules/mathmodule.c	Sat Jan 05 08:47:13 2008 +0000
@@ -107,28 +107,9 @@
 FUNC2(atan2, atan2,
       "atan2(y, x)\n\nReturn the arc tangent (measured in radians) of y/x.\n"
       "Unlike atan(y/x), the signs of both x and y are considered.")
-
-static PyObject * math_ceil(PyObject *self, PyObject *number) {
-	static PyObject *ceil_str = NULL;
-	PyObject *method;
-
-	if (ceil_str == NULL) {
-		ceil_str = PyString_FromString("__ceil__");
-		if (ceil_str == NULL)
-			return NULL;
-	}
-
-	method = _PyType_Lookup(Py_Type(number), ceil_str);
-	if (method == NULL)
-		return math_1(number, ceil);
-	else
-		return PyObject_CallFunction(method, "O", number);
-}
-
-PyDoc_STRVAR(math_ceil_doc,
-	     "ceil(x)\n\nReturn the ceiling of x as a float.\n"
-	     "This is the smallest integral value >= x.");
-
+FUNC1(ceil, ceil,
+      "ceil(x)\n\nReturn the ceiling of x as a float.\n"
+      "This is the smallest integral value >= x.")
 FUNC1(cos, cos,
       "cos(x)\n\nReturn the cosine of x (measured in radians).")
 FUNC1(cosh, cosh,
@@ -147,28 +128,9 @@
       "exp(x)\n\nReturn e raised to the power of x.")
 FUNC1(fabs, fabs,
       "fabs(x)\n\nReturn the absolute value of the float x.")
-
-static PyObject * math_floor(PyObject *self, PyObject *number) {
-	static PyObject *floor_str = NULL;
-	PyObject *method;
-
-	if (floor_str == NULL) {
-		floor_str = PyString_FromString("__floor__");
-		if (floor_str == NULL)
-			return NULL;
-	}
-
-	method = _PyType_Lookup(Py_Type(number), floor_str);
-	if (method == NULL)
-		return math_1(number, floor);
-	else
-		return PyObject_CallFunction(method, "O", number);
-}
-
-PyDoc_STRVAR(math_floor_doc,
-	     "floor(x)\n\nReturn the floor of x as a float.\n"
-	     "This is the largest integral value <= x.");
-
+FUNC1(floor, floor,
+      "floor(x)\n\nReturn the floor of x as a float.\n"
+      "This is the largest integral value <= x.")
 FUNC2(fmod, fmod,
       "fmod(x,y)\n\nReturn fmod(x, y), according to platform C."
       "  x % y may differ.")