Changes for gmpy2 releases
Changes in gmpy2 2.1.0rc2
Improvements to build environment.
Changes in gmpy2 2.1.0rc1
- Added support for embedded underscore characters in string
Allow GIL release for mpz/xmpz/mpq types only.
Changes in gmpy2 2.1.0b6
- Improve argument type processing by saving type information to
decrease the number of type check calls. Especially helpful for mpfr and mpc types. (Not complete but common operations are done.)
Resolve bug in mpfr to mpq conversion; issue #287.
- Added limited support for releasing the GIL; disabled by default;
- Refactored handling of inplace operations for mpz and xmpz types;
inplace operations on xmpz will only return an xmpz result.
- Refactored handling of conversion to C integer types. Some
exception types changes to reflect Python types.
- gcd() and lcm() now support more than two arguments to align with
the corresponding functions in the math module.
Changes in gmpy2 2.1.0b5
- Avoid MPFR bug in mfr_fac_ui (gmpy2.factorial) on platforms where
long is 32-bits and argument is >= 44787929.
Fixed testing bugs with Python 2.7.
Fixed mpz(0) to C long or long long.
Fixed incorrect results in f2q().
Adjust test suite to reflect changes in output in MPFR 4.1.0.
Changes in gmpy2 2.1.0b4
Fix comparisons with mpq and custom rational objects.
Fixes for some uncommon integer conversions scenarios.
Changes in gmpy2 2.1.0b3
Version bump only.
Changes in gmpy2 2.1.0b2
Many bug fixes.
Changes in gmpy2 2.1.0b1
Added cmp() and cmp_abs().
Improved compatibility with _numbers_ protocol.
Many bug fixes.
Changes in gmpy2 2.1.a05
Fix qdiv() not returning mpz() when it should.
Changes in gmpy2 2.1.0a4
Fix issue 204; missing file for Cython.
- Additional support for MPFR 4
Add fmma() and fmms()
Changes in gmpy2 2.1.0a3
Updates to setup.py.
- Initial support for MPFR4
grandom() now calls nrandom twice; may return different values versus MPFR3
Add rootn(); same as root() except different sign when taking even root of -0.0
Changes in gmpy2 2.1.0a2
Revised build process.
Removal of unused code/macros.
Cleanup of Cython interface.
Changes in gmpy2 2.1.0a1
Thread-safe contexts are now supported. Properly integrating thread-safe contexts required an extensive rewrite of almost all internal functions.
MPFR and MPC are now required. It is no longer possible to build a version of gmpy2 that only supports the GMP library.
The function inverse() now raises an exception if the inverse does not exist.
Context methods have been added for MPFR/MPC related functions.
A new context option (rational_division) has been added that changes the behavior of integer division involving mpz instances to return a rational result instead of a floating point result.
gmpy2 types are now registered in the numeric tower.
In previous versions of gmpy2, gmpy2.mpz was a factory function that returned an mpz instance. gmpy2.mpz is now an actual type. The same is true for the other gmpy2 types.
If a Python object has an __mpz__ method, it will be called bye mpz() to allow an unrecognized type to be converted to an mpz instance. The same is true for the other gmpy2 types.
A new C-API and Cython interface has been added.
Changes in gmpy2 2.0.4
Fix bit_scan0() for negative values.
Changes to setup.py to allow static linking.
Fix performance regression with mpmath and Python 3.
Changes in gmpy2 2.0.3
Fix lucas2() and atanh(); they were returning incorrect values.
Changes in gmpy2 2.0.2
Rebuild Windows binary installers due to MPIR 2.6.0 bug in next_prime().
Another fix for is_extra_strong_lucas_prp().
Changes in gmpy2 2.0.1
Updated setup.py to work in more situations.
Corrected exception handling in basic operations with mpfr type.
Correct InvalidOperation exception not raised in certain circumstances.
invert() now raises an exception if the modular inverse does not exist.
Fixed internal exception in is_bpsw_prp() and is_strong_bpsw_prp().
Updated is_extra_strong_lucas_prp() to latest version.
Changes in gmpy2 2.0.0
Fix segmentation fault in _mpmath_normalize (an undocumented helper function specifically for mpmath.)
Improved setup.py See below for documentation on the changes.
Fix issues when compiled without support for MPFR.
Conversion of too large an mpz to float now raises OverflowError instead of returning inf.
Renamed min2()/max2() to minnum()/maxnum()
The build and install process (i.e. setup.py) has been completely rewritten. See the Installation section for more information.
get_context() no longer accepts keyword arguments.
Known issues in gmpy2 2.0.0
The test suite is still incomplete.
Changes in gmpy2 2.0.0b4
Added __ceil__, __floor__, __trunc__, and __round__ methods to mpz and mpq types.
Added __complex__ to mpc type.
round(mpfr) now correctly returns an mpz type.
If no arguments are given to mpz, mpq, mpfr, mpc, and xmpz, return 0 of the appropriate type.
Fix broken comparison between mpz and mpq when mpz is on the left.
Added __sizeof__ to all types. Note: sys.getsizeof() calls __sizeof__ to get the memory size of a gmpy2 object. The returned value reflects the size of the allocated memory which may be larger than the actual minimum memory required by the object.
Known issues in gmpy2 2.0.0b4
The new test suite (test/runtest.py) is incomplete and some tests fail on Python 2.x due to formatting issues.
Changes in gmpy2 2.0.0b3
mp_version(), mpc_version(), and mpfr_version() now return normal strings on Python 2.x instead of Unicode strings.
Faster conversion of the standard library Fraction type to mpq.
Improved conversion of the Decimal type to mpfr.
Consistently return OverflowError when converting “inf”.
Fix mpz.__format__() when the format code includes “#”.
Add is_infinite() and deprecate is_inf().
Add is_finite() and deprecate is_number().
Fixed the various is_XXX() tests when used with mpc.
Added caching for mpc objects.
Faster code path for basic operation is both operands are mpfr or mpc.
Fix mpfr + float segmentation fault.
Changes in gmpy2 2.0.0b2
Allow xmpz slice assignment to increase length of xmpz instance by specifying a value for stop.
Fixed reference counting bug in several is_xxx_prp() tests.
Added iter_bits(), iter_clear(), iter_set() methods to xmpz.
Added powmod() for easy access to three argument pow().
Removed addmul() and submul() which were added in 2.0.0b1 since they are slower than just using Python code.
Bug fix in gcd_ext when both arguments are not mpz.
Added ieee() to create contexts for 32, 64, or 128 bit floats.
Bug fix in context() not setting emax/emin correctly if they had been changed earlier.
Contexts can be directly used in with statement without requiring set_context()/local_context() sequence.
local_context() now accepts an optional context.
Changes in gmpy2 2.0.0b1 and earlier
Renamed functions that manipulate individual bits to bit_XXX() to align with bit_length().
Added caching for mpq.
Added rootrem(), fib2(), lucas(), lucas2().
Support changed hash function in Python 3.2.
Added is_even(), is_odd().
Add caching of the calculated hash value.
Add xmpz (mutable mpz) type.
Fix mpq formatting issue.
Add read/write bit access using slices to xmpz.
Add read-only bit access using slices to mpz.
Add pack()/unpack() methods to split/join an integer into n-bit chunks.
Add support for MPFR (casevh)
Removed fcoform float conversion modifier.
Add support for MPC.
Added context manager.
Allow building with just GMP/MPIR if MPFR not available.
Allow building with GMP/MPIR and MPFR if MPC not available.
Removed most instance methods in favor of gmpy2.function. The general guideline is that properties of an instance can be done via instance methods but functions that return a new result are done using gmpy2.function.
Added __ceil__, __floor__, and __trunc__ methods since they are called by math.ceil(), math.floor(), and math.trunc().
Removed gmpy2.pow() to avoid conflicts.
Removed gmpy2._copy and added xmpz.copy.
Added support for __format__.
Added as_integer_ratio, as_mantissa_exp, as_simple_fraction.
Require MPFR 3.1.0+ to get divby0 support.
Added fsum(), degrees(), radians().
Updated random number generation support.
Changed license to LGPL 3+.
Added lucasu, lucasu_mod, lucasv, and lucasv_mod. Based on code contributed by David Cleaver.
Added probable-prime tests. Based on code contributed by David Cleaver.
Renamed numdigits() to num_digits().
Added keyword precision to constants.
Added addmul() and submul().
Added __round__(), round2(), round_away() for mpfr.
round() is no longer a module level function.
Renamed module functions min()/max() to min2()/max2().
No longer conflicts with builtin min() and max()
Removed set_debug() and related functionality.