summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Yasskin <jyasskin@gmail.com>2008-01-04 08:01:23 (GMT)
committerJeffrey Yasskin <jyasskin@gmail.com>2008-01-04 08:01:23 (GMT)
commit737c73f96ff52cda4b433d25f887525442b7b430 (patch)
treebd81e5e6f6410395f6f2acc3d634c8f2d3be8c39
parente0734e7dc0dcccc91ed657191b804b3a846ad3f6 (diff)
downloadcpython-737c73f96ff52cda4b433d25f887525442b7b430.zip
cpython-737c73f96ff52cda4b433d25f887525442b7b430.tar.gz
cpython-737c73f96ff52cda4b433d25f887525442b7b430.tar.bz2
Make math.{floor,ceil}({int,long}) return float again for backwards
compatibility after r59671 made them return integral types.
-rw-r--r--Lib/test/test_math.py8
-rw-r--r--Objects/intobject.c4
-rw-r--r--Objects/longobject.c4
3 files changed, 12 insertions, 4 deletions
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index f5bf1a3..5313c3c 100644
--- a/Lib/test/test_math.py
+++ b/Lib/test/test_math.py
@@ -51,6 +51,10 @@ class MathTests(unittest.TestCase):
def testCeil(self):
self.assertRaises(TypeError, math.ceil)
+ # These types will be int in py3k.
+ self.assertEquals(float, type(math.ceil(1)))
+ self.assertEquals(float, type(math.ceil(1L)))
+ self.assertEquals(float, type(math.ceil(1.0)))
self.ftest('ceil(0.5)', math.ceil(0.5), 1)
self.ftest('ceil(1.0)', math.ceil(1.0), 1)
self.ftest('ceil(1.5)', math.ceil(1.5), 2)
@@ -103,6 +107,10 @@ class MathTests(unittest.TestCase):
def testFloor(self):
self.assertRaises(TypeError, math.floor)
+ # These types will be int in py3k.
+ self.assertEquals(float, type(math.floor(1)))
+ self.assertEquals(float, type(math.floor(1L)))
+ self.assertEquals(float, type(math.floor(1.0)))
self.ftest('floor(0.5)', math.floor(0.5), 0)
self.ftest('floor(1.0)', math.floor(1.0), 1)
self.ftest('floor(1.5)', math.floor(1.5), 1)
diff --git a/Objects/intobject.c b/Objects/intobject.c
index a93b9b2..96d7f76 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -1086,9 +1086,9 @@ static PyMethodDef int_methods[] = {
"Returns self, the complex conjugate of any int."},
{"__trunc__", (PyCFunction)int_int, METH_NOARGS,
"Truncating an Integral returns itself."},
- {"__floor__", (PyCFunction)int_int, METH_NOARGS,
+ {"__floor__", (PyCFunction)int_float, METH_NOARGS,
"Flooring an Integral returns itself."},
- {"__ceil__", (PyCFunction)int_int, METH_NOARGS,
+ {"__ceil__", (PyCFunction)int_float, METH_NOARGS,
"Ceiling of an Integral returns itself."},
{"__round__", (PyCFunction)int_round, METH_VARARGS,
"Rounding an Integral returns itself.\n"
diff --git a/Objects/longobject.c b/Objects/longobject.c
index e2ffb35..eea5c3b 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -3402,9 +3402,9 @@ static PyMethodDef long_methods[] = {
"Returns self, the complex conjugate of any long."},
{"__trunc__", (PyCFunction)long_long, METH_NOARGS,
"Truncating an Integral returns itself."},
- {"__floor__", (PyCFunction)long_long, METH_NOARGS,
+ {"__floor__", (PyCFunction)long_float, METH_NOARGS,
"Flooring an Integral returns itself."},
- {"__ceil__", (PyCFunction)long_long, METH_NOARGS,
+ {"__ceil__", (PyCFunction)long_float, METH_NOARGS,
"Ceiling of an Integral returns itself."},
{"__round__", (PyCFunction)long_round, METH_VARARGS,
"Rounding an Integral returns itself.\n"