Victor Stinner
d13169fc5a
bpo-16055: Fixes incorrect error text for int('1', base=1000) ( #6980 )
...
Fixes incorrect error text for int('1', base=1000)
and long('1', base=1000).
2018-05-19 01:53:13 +02:00
Benjamin Peterson
a72d15c97f
consistently use Py_TYPE, Py_REFCNT, and correct initializer macros ( #3563 )
...
This no-op change makes 2.7 more consistent with 3.x to ease comparison and backports.
2017-09-13 21:20:29 -07:00
Benjamin Peterson
445844993b
fix refleak in the shift-by-zero case ( #27870 )
2016-12-03 11:01:50 -08:00
Martin Panter
6507657ddd
Issue #27895 : Spelling fixes (Contributed by Ville Skyttä).
2016-09-07 12:03:06 +00:00
Mark Dickinson
02c0c0b6e7
Issue #27870 : A left shift of zero by a large integer no longer attempts to allocate large amounts of memory.
2016-08-29 19:38:12 +01:00
Mark Dickinson
89446b2c91
Issue #25604 : Fix bug in integer true division that could have resulted in off-by-one-ulp results in unusual cases.
2016-08-21 10:59:48 +01:00
Martin Panter
a850ef698e
Issue #27626 : Spelling fixes in docs, comments and internal names
...
Based on patch by Ville Skyttä.
2016-07-28 01:11:04 +00:00
Serhiy Storchaka
8d30ad7c8a
Issue #24731 : Fixed crash on converting objects with special methods
...
__str__, __trunc__, and __float__ returning instances of subclasses of
str, long, and float to subclasses of str, long, and float correspondingly.
2015-11-25 15:55:54 +02:00
Tim Peters
61e9ffa191
Issue #19171 : speed some cases of 3-argument long pow().
...
Reduce the base by the modulus when the base is larger than
the modulus. This can unboundedly speed the "startup costs"
of doing modular exponentiation, particularly in cases where
the base is much larger than the modulus. Original patch
by Armin Rigo, inspired by https://github.com/pyca/ed25519 .
(grafted from f34c59494420765b013136ca93f63b716d9f1d30)
2013-10-05 16:53:52 -05:00
Serhiy Storchaka
74f49ab28b
Issue #15989 : Fix several occurrences of integer overflow
...
when result of PyInt_AsLong() or PyLong_AsLong() narrowed
to int without checks.
This is a backport of changesets 13e2e44db99d and 525407d89277.
2013-01-19 12:55:39 +02:00
Serhiy Storchaka
cf095f8e0f
Issue #16761 : Raise TypeError when int() or long() called with base argument only.
2012-12-28 09:31:59 +02:00
Chris Jerdonek
ad4b000179
Issue #14783 : Backport changes from 3.2.
2012-10-07 20:37:54 -07:00
Ezio Melotti
c2077b0d9b
#11565 : Fix several typos. Patch by Piotr Kasprzyk.
2011-03-16 12:34:31 +02:00
Ezio Melotti
24b07bcba3
#11515 : fix several typos. Patch by Piotr Kasprzyk.
2011-03-15 18:55:01 +02:00
Mark Dickinson
43ca377e45
Wrap multiline macros in a 'do {} while(0)', for safety.
2010-05-09 20:42:09 +00:00
Mark Dickinson
fda8d114ea
Post-detabification cleanup: whitespace fixes and long line rewraps only.
2010-05-09 20:30:29 +00:00
Antoine Pitrou
c83ea137d7
Untabify C files. Will watch buildbots.
2010-05-09 14:46:46 +00:00
Mark Dickinson
22ff664ff7
Issue #8659 : Remove redundant ABS calls. Thanks Daniel Stutzbach.
2010-05-08 08:01:19 +00:00
Stefan Krah
ef7590e943
Issue #8328 : Silence Visual Studio warnings.
2010-04-07 08:24:44 +00:00
Mark Dickinson
ea7e5510aa
Silence a 'comparison between signed and unsigned integer expressions' gcc warning.
2010-04-06 18:58:54 +00:00
Mark Dickinson
3ec9b942b5
Issue #8259 : Get rid of 'outrageous left shift count' error when
...
left-shifting an integer by more than 2**31 on a 64-bit machine. Also
convert shift counts to a Py_ssize_t instead of a C long.
2010-04-06 16:46:09 +00:00
Mark Dickinson
a36507c64c
Issue #7767 : Add new C-API function PyLong_AsLongLongAndOverflow, a
...
long long variant of PyLong_AsLongAndOverflow. Patch by Case Van
Horsen.
2010-01-30 10:08:33 +00:00
Mark Dickinson
d3e323215c
Refactor some longobject internals: PyLong_AsDouble and _PyLong_AsScaledDouble
...
(the latter renamed to _PyLong_Frexp) now use the same core code. The
exponent produced by _PyLong_Frexp now has type Py_ssize_t instead of the
previously used int, and no longer needs scaling by PyLong_SHIFT. This
frees the math module from having to know anything about the PyLong
implementation. This closes issue #5576 .
2010-01-02 14:45:40 +00:00
Mark Dickinson
4657283647
Issue #1811 : Improve accuracy and consistency of true division for integers.
2009-12-27 14:55:57 +00:00
Mark Dickinson
e31d300664
Issue #7528 : Backport PyLong_AsLongAndOverflow from py3k to trunk.
...
Thanks Case Van Horsen for the patch.
2009-12-21 11:21:25 +00:00
Mark Dickinson
8d87dc0c29
Issue #1087418 : Small performance boost for bitwise operations on longs.
...
Initial patch by Gregory Smith; some tweaks added.
2009-10-25 20:39:06 +00:00
Mark Dickinson
71adc9328d
Style/consistency/nano-optimization nit: replace occurrences of
...
(high_bits << PyLong_SHIFT) + low_bits with
(high_bits << PyLong_SHIFT) | low_bits
in Objects/longobject.c. Motivation:
- shouldn't unnecessarily mix bit ops with arithmetic ops (style)
- this pattern should be spelt the same way thoughout (consistency)
- it's very very very slightly faster: no need to worry about
carries to the high digit (nano-optimization).
2009-09-28 16:52:40 +00:00
Mark Dickinson
40ee861c0a
Silence MSVC compiler warnings.
2009-09-21 16:16:44 +00:00
Mark Dickinson
aa2adc828a
Issue #6713 : Improve performance of str(n) and repr(n) for integers n
...
(up to 3.1 times faster in tests), by special-casing base 10 in
_PyLong_Format. (Backport of r74851 from py3k.)
2009-09-16 22:10:56 +00:00
Mark Dickinson
1f4fc097f6
Fix potential signed-overflow bug in _PyLong_Format; also fix
...
a couple of whitespace issues.
2009-09-13 11:56:13 +00:00
Mark Dickinson
752a2daf32
Remove redundant assignment
2009-09-06 20:51:37 +00:00
Mark Dickinson
d4b5c98fa6
Remove unnecessary use of context for long getters.
...
(Related to issue #5880 ).
2009-05-02 17:55:01 +00:00
Mark Dickinson
6736cf8d20
Issue #3166 : Make long -> float (and int -> float) conversions
...
correctly rounded, using round-half-to-even. This ensures that the
value of float(n) doesn't depend on whether we're using 15-bit digits
or 30-bit digits for Python longs.
2009-04-20 21:13:33 +00:00
Mark Dickinson
48e3fd240f
sys.long_info attributes should be ints, not longs
2009-04-02 18:39:37 +00:00
Mark Dickinson
0b666bfdf9
Issue #5512 : speed up the long division algorithm for Python longs.
...
The basic algorithm remains the same; the most significant speedups
come from the following three changes:
(1) normalize by shifting instead of multiplying and dividing
(2) the old algorithm usually did an unnecessary extra iteration of
the outer loop; remove this. As a special case, this means that
long divisions with a single-digit result run twice as fast as
before.
(3) make inner loop much tighter.
Various benchmarks show speedups of between 50% and 150% for long
integer divisions and modulo operations.
2009-03-23 18:25:13 +00:00
Mark Dickinson
efc82f7e8e
Issue #4258 : Use 30-bit digits for Python longs, on 64-bit platforms.
...
Backport of r70459.
2009-03-20 15:51:55 +00:00
Mark Dickinson
b646487687
Replace long with twodigits, to avoid depending
...
on sizeof(digit) < sizeof(long)
2009-02-25 20:29:50 +00:00
Mark Dickinson
bcf6b18eb7
A few more minor fixes in longobject.c
2009-02-15 15:48:39 +00:00
Mark Dickinson
2ffb26fb83
Issue #5260 : Various portability and standards compliance fixes, optimizations
...
and cleanups in Objects/longobject.c. The most significant change is that
longs now use less memory: average savings are 2 bytes per long on 32-bit
systems and 6 bytes per long on 64-bit systems. (This memory saving already
exists in py3k.)
2009-02-15 10:13:41 +00:00
Mark Dickinson
4015f62e39
Issue #5175 : PyLong_AsUnsignedLongLong now raises OverflowError for
...
negative arguments. Previously, it raised TypeError.
Thanks Lisandro Dalcin.
2009-02-10 15:46:50 +00:00
Mark Dickinson
a0eae0398c
Fix comment.
2009-01-26 21:40:08 +00:00
Mark Dickinson
6ffa4a2a7d
Fix undefined behaviour (left shift of negative value) in long_hash. Also,
...
rewrap a line of length > 79, and update comments.
2009-01-26 21:36:30 +00:00
Mark Dickinson
1afe6ddd07
No need for carry to be type twodigits in _PyLong_AsByteArray; digit is large enough.
...
This change should silence a compiler warning on Windows.
2009-01-25 22:12:31 +00:00
Mark Dickinson
ff84aa87b4
Issue #4393 : fix 3 classes of potential portability problems in longobject.c:
...
- fix some places where counters into ob_digit were declared as
int instead of Py_ssize_t
- add (twodigit) casts where necessary
- fix code in _PyLong_AsByteArray that uses << on negative values
2009-01-24 15:27:44 +00:00
Mark Dickinson
1a707981c8
Issue #3439 : add bit_length method to int and long.
...
Thanks Fredrik Johansson and Victor Stinner for code,
Raymond Hettinger for review.
2008-12-17 16:14:37 +00:00
Mark Dickinson
b646757e01
Issue #1481296 : (again!) Make conversion of a float NaN to an int or
...
long raise ValueError instead of returning 0. Also, change the error
message for conversion of an infinity to an integer, replacing 'long' by
'integer', so that it's appropriate for both long(float('inf')) and
int(float('inf')).
2008-08-04 21:30:09 +00:00
Neal Norwitz
e7d8be80ba
Security patches from Apple: prevent int overflow when allocating memory
2008-07-31 17:17:14 +00:00
Robert Schuppenies
9be2ec109b
Added additional __sizeof__ implementations and addressed comments made in
...
Issue3122.
2008-07-10 15:24:04 +00:00
Raymond Hettinger
9c437af4eb
Revert 64424, 64438, and 64439.
2008-06-24 22:46:07 +00:00
Raymond Hettinger
e3ae655edf
Make bin() implementation parallel oct() and hex() so that int/long subclasses can override or so that other classes can support.
2008-06-20 04:18:15 +00:00