[issue3439] math.frexp and obtaining the bit size of a large integer
Mark Dickinson
report at bugs.python.org
Thu Aug 14 11:47:11 CEST 2008
Mark Dickinson <dickinsm at gmail.com> added the comment:
One possible fix would be to compute the absolute value
of n as an unsigned long. I *think* the following is
portable and avoids any undefined behaviour coming
from signed arithmetic overflow.
unsigned long absn;
if (n < 0)
absn = 1 + (unsigned long)(-1-n);
else
absn = (unsigned long)n;
Might this work?
Perhaps it would also be worth changing the tests
in test_int from e.g.
self.assertEqual((-a).numbits(), i+1)
to
self.assertEqual(int(-a).numbits(), i+1)
This would have caught the -LONG_MAX error.
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue3439>
_______________________________________
More information about the Python-bugs-list
mailing list