Skip to content

Releases: mhogrefe/malachite

v0.8.0

05 Dec 23:19

Choose a tag to compare

  • Float * Rational, Float / Rational, and Rational / Float now have correct overflow and underflow behavior; now all Float functions do, except for string conversion, which will be rewritten.
  • The natural logarithm of 2 is now available as Float::log_2_prec and Float::log_2_prec_round.
  • Floats now have a full complement of EqAbs implementations. Existing EqAbs and PartialOrdAbs implementations throughout Malachite have been cleaned up. Primitive unsigned integers no longer implement these traits, which is a breaking change. (If you were using these for some reason, just use normal comparison operators instead).
  • Thanks to Will Youmans for implementing IsPower and ExpressAsPower for Naturals. I ported these implementations to u128 as well.

v0.7.1

17 Nov 01:26

Choose a tag to compare

  • Division of Floats by Floats and reciprocation of Floats now handle overflow and underflow correctly (same as MPFR)
  • There's now a full collection of shl and shr functions on Floats that accept precision, rounding mode, or both
  • Factorial bug fixed
  • Multiplication of very large integers could cause a stack overflow; this is now fixed

v0.7.0

28 Sep 20:29

Choose a tag to compare

I've rewritten integer multiplication a second time. The latest implementation is derived from Daniel Schultz's small-prime FFT multiplication implementation in FLINT. It's considerably faster than before, though still a bit slower than GMP's implementation. Malachite now depends on the wide crate for SIMD; once wide 0.8.0 is released, I should be able to improve Malachite's multiplication performance further still. I'm going to hold off making concrete performance claims until then.

Unfortunately, I've discovered that, at least on my machine, Malachite is considerably slower when built using no_std (though still pretty fast!); the main culprit is the libm::fma function, which is considerably slower than the std-only equivalent mul_add. Since I want Malachite to have the best performance possible by default, I've decided to make no_std opt-in. Malachite will build with an std feature by default, and to build it with no_std you will need to disable default features.

Thanks to Will Youmans for implementing some functions around perfect powers, and to all the other contributors to this release.

Next I will focus my attention back on Floats, which have been neglected.

v0.6.1

06 Jun 20:13

Choose a tag to compare

Fixed a rare panic during an extended GCD computation.

v0.6.0

18 Apr 15:35

Choose a tag to compare

  • Upgraded to a more recent version of itertools. This caused a name collision between the new get function on the Itertools traits and various get functions on some iterators in Malachite. To resolve this, the Malachite functions were renamed to get_digit or get_limb, depending on the iterator. This is a breaking change.
  • Thanks to coolreader18 for removing a transitive dependency on the syn crate in malachite-bigint.
  • Thanks to twizmwazin for updating the pyo3 version.
  • Various improvements caught by Clippy.

v0.5.1

02 Mar 00:27

Choose a tag to compare

  • upgraded to Rust 2024 edition
  • updated hashbrown dependency
  • added primitive root computation for a prime number of primitive int type

v0.5.0

03 Feb 06:54

Choose a tag to compare

I am reinstating some import changes that I reverted in 0.4.x, since they were breaking changes there. I'm also changing the constants in the platform module to pub(crate), since I only want the types to be visible.

v0.4.22

03 Feb 03:54

Choose a tag to compare

I recently changed the way the malachite crate re-exported its sub-crate items, in this commit. This was a breaking change and caused some failures in downstream crates, so I'm reverting it in this release and in a few hours I will re-release it in v0.5.0.

v0.4.21

30 Jan 22:29

Choose a tag to compare

Tweaked the documentation just a bit more. Should be good now.

v0.4.20

30 Jan 22:06

Choose a tag to compare

Some of the documentation for the top-level malachite crate didn't work as intended in the v0.4.19 release, so I'm releasing again.