From 737c73f96ff52cda4b433d25f887525442b7b430 Mon Sep 17 00:00:00 2001 From: Jeffrey Yasskin Date: Fri, 4 Jan 2008 08:01:23 +0000 Subject: Make math.{floor,ceil}({int,long}) return float again for backwards compatibility after r59671 made them return integral types. --- Lib/test/test_math.py | 8 ++++++++ Objects/intobject.c | 4 ++-- Objects/longobject.c | 4 ++-- 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" -- cgit v0.12