| Commit message (Collapse) | Author | Age |
|
|
|
|
|
| |
msvc does not treat 1L a 64bit integer hence all occurences of shifting it left or right
result in undefined behaviour since the maximum allowed shift count for 32bit ints is 31.
Forcing the correct type explicitely, stored in MPZ_LONG_1, solves this.
|
|
|
|
| |
Addressing issue #50.
|
|
|
|
| |
Addresses issue #848.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, mpz was restricted to using at most 15 bits in each digit,
where a digit was a uint16_t.
With this patch, mpz can use all 16 bits in the uint16_t (improvement
to mpn_div was required). This gives small inprovements in speed and
RAM usage. It also yields savings in ROM code size because all of the
digit masking operations become no-ops.
Also, mpz can now use a uint32_t as the digit type, and hence use 32
bits per digit. This will give decent improvements in mpz speed on
64-bit machines.
Test for big integer division added.
|
| |
|
| |
|
|
|
|
|
| |
Before this patch, eg, 1 << 75 (or any large multiple of 15) was setting
the MSB in the digits, which is outside the valid range of DIG_MASK.
|
|
|
|
|
|
|
|
|
|
| |
This removes mpz_as_int, since that was a terrible function (it
implemented saturating conversion).
Use mpz_as_int_checked and mpz_as_uint_checked. These now work
correctly (they previously had wrong overflow checking, eg
print(chr(10000000000000)) on 32-bit machine would incorrectly convert
this large number to a small int).
|
|
|
|
| |
Addresses issue #765.
|
|
|
|
| |
See discussion in issue #50.
|
|
|
|
|
|
| |
It defines types used by all other headers.
Fixes #691.
|
|
|
|
|
|
|
|
|
|
| |
This renames:
MICROPY_PY_FROZENSET -> MICROPY_PY_BUILTINS_FROZENSET
MICROPY_PY_PROPERTY -> MICROPY_PY_BUILTINS_PROPERTY
MICROPY_PY_SLICE -> MICROPY_PY_BUILTINS_SLICE
MICROPY_ENABLE_FLOAT -> MICROPY_PY_BUILTINS_FLOAT
See issue #35 for discussion.
|
|
|
|
|
| |
Needs proper coverage testing. Doesn't implement -ve & -ve.
Addresses issue #611.
|
|
|
|
| |
This should now have correct (and optimal) behaviour.
|
|
|
|
| |
Addresses issue #610.
|
|
|
|
| |
Extend the windows port so it compiles with the toolchain from Visual Studio 2013
|
|
|
|
|
|
|
| |
Blanket wide to all .c and .h files. Some files originating from ST are
difficult to deal with (license wise) so it was left out of those.
Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Made solely to unbreak int-long.py test which in turn uncovered thinko
with implementation of inplace ops. On mpz level, bitwise ops implemented
only for same-sign numbers, and are not efficient (unconditional calling of
mpn_cmp() is apparently superfluous).
|
|
|
|
| |
A couple of bugs in mpn_shl, and overflow bug in mpz_set_from_int.
|
| |
|
|
|
|
|
|
| |
Implement not, shl and shr in mpz library. Add function to create mpzs
on the stack, used for memory efficiency when rhs is a small int.
Factor out code to parse base-prefix of number into a dedicated function.
|
| |
|
|
|
|
| |
Also change int -> machine_int_t where appropriate.
|
|
Some functionality is still missing (eg and, or, bit shift), and some
things are buggy (eg subtract).
|