]> granicus.if.org Git - python/commitdiff
Integer ratio should return ints instead of longs whereever possible.
authorRaymond Hettinger <python@rcn.com>
Fri, 1 Feb 2008 22:15:52 +0000 (22:15 +0000)
committerRaymond Hettinger <python@rcn.com>
Fri, 1 Feb 2008 22:15:52 +0000 (22:15 +0000)
Objects/floatobject.c

index a3733fcd9cdd1daccc61a095cd0c8b42a47b3f5f..ce6926bf6d06cca942135fd66fe73a34482f3b22 100644 (file)
@@ -1201,8 +1201,8 @@ float_as_integer_ratio(PyObject *v, PyObject *unused)
        if (numerator == NULL) goto error;
 
        /* now self = numerator * 2**exponent exactly; fold in 2**exponent */
-       denominator = PyInt_FromLong(1);
-       py_exponent = PyInt_FromLong(labs(exponent));
+       denominator = PyLong_FromLong(1);
+       py_exponent = PyLong_FromLong(labs(exponent));
        if (py_exponent == NULL) goto error;
        INPLACE_UPDATE(py_exponent,
                       long_methods->nb_lshift(denominator, py_exponent));
@@ -1219,6 +1219,12 @@ float_as_integer_ratio(PyObject *v, PyObject *unused)
                py_exponent = NULL;
        }
 
+       /* Returns ints instead of longs where possible */
+       INPLACE_UPDATE(numerator, PyNumber_Int(numerator));
+       if (numerator == NULL) goto error;
+       INPLACE_UPDATE(denominator, PyNumber_Int(denominator));
+       if (denominator == NULL) goto error;
+
        result_pair = PyTuple_Pack(2, numerator, denominator);
 
 #undef INPLACE_UPDATE