Releases: mhogrefe/malachite
v0.8.0
- 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_precandFloat::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
- 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
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
Fixed a rare panic during an extended GCD computation.
v0.6.0
- Upgraded to a more recent version of itertools. This caused a name collision between the new
getfunction on theItertoolstraits and variousgetfunctions on some iterators in Malachite. To resolve this, the Malachite functions were renamed toget_digitorget_limb, depending on the iterator. This is a breaking change. - Thanks to coolreader18 for removing a transitive dependency on the
syncrate inmalachite-bigint. - Thanks to twizmwazin for updating the pyo3 version.
- Various improvements caught by Clippy.