- 🛠 Fixed #86 - Rounding fails when integer part is 9
- 🛠 Fixed #88 - BigInteger.bitAt() returns invalid value
- 🔖 Version bump to kotlin 1.3.61
- Gradlew wrapper bump to 6.0.1
- ➕ Added Linux Arm 64, and Linux Arm 32 HFP build targets
- Main library now has dependancies only on the kotlin standard library (for now, coroutines will be coming back at some point in the future).
- 📇 Renamed BigDecimal
roundSignificand, as it describes what it does more precisely
- ➕ Added
- 👉 Use Long instead of BigInteger for BigDecimal exponent.
- ➕ Adding MingwX64 and MingwX86 targets.
- 🐎 Kotlin version bump to 1.3.60 - especially important as there was a comparison performance improvement for inline classes which are heavily used by bignum library (ULong/UInt).
- Actually bumped gradle to 5.6.1, it was mistakenly left at 5.1.1 in library versions 0.1.1 and 0.1.2
- 🚚 Cleaned up dependancies, coroutines are currently used only in test modules so they are moved there.
- ✂ Removed removeLeadingZeros and replaced with countLeadingZeros and appropriate algorithm changes.
- Realized plural of zero is zeros not zeroes.
- 👌 Improved exponentiation to use square-and-multiply method.
- Implemented Toom-Cook-3 multiplication, although still slow because of inefficient division.
- 📇 Bumped gradle version to 5.6.1, which means that the published Gradle Metadata will be 1.0, making 📇 metadata resolution available only on Gradle >= 5.3
- 🛠 Fixed several issues related to big decimal comparison, modular integer sign, etc.
- ➕ Added more BigDecimal extension functions.
- ➕ Added ModularBigInteger extension functions.
- ➕ Added Karatsuba multiplication.
- ➕ Added
- ➕ Added
- ➕ Added toByteArray and fromByteArray.
- ➕ Added toFloat and toDouble to BigInteger and ModularBigInteger classes.
- ➕ Added BigInteger creation from Float and Double by using
tryFromDouble, with optional exact parameter to preserve precision.
- ➕ Added BigInteger comparison with Float and Double.
- ➕ Added BigDecimal configuration option to switch to expanded representation instead of scientific when calling
- 👌 Improved ModularBigInteger exponentiation algorithm, based on Bruce Schneier Applied Cryptography pesudocode.
- ➕ Added modular integers - ModularBigInteger
- ➕ Added modInverse method to BigInteger
- 👍 Extracted interfaces that model big numbers better (BigNumber interface and accompanying interfaces)
- Implemented integer reciprocal based on newton iteration (Based on paper by Yiping Cheng, Ze Lie : Refinement of a newton reciprocal algorithm for arbitrary precision numbers)
- ⚡️ Implemented division by reciprocal multiplication. Not used by division at the moment as it is unoptimized and slower than basecase division in early benchmarks.
- 🛠 Fixed a bug in Int32 shift right when shift amount was an exact multiple of word size
- ➕ Added constructor overloads
- ➕ Added value methods (intValue, longValue...)
- 📇 Renamed invPrecise() bigInteger method to not()
- 📇 Renamed numberOfDigits() to numberOfDecimalDigits()
- Introduced BigNumber and BitwiseOperations interfaces
- ➕ Added iOS ARM 32bit support
Also added missing methods to BigInteger, so BigDecimal and BigInteger are mostly on par with their Java counterpart, in regards to functionality.
🚀 This release doesn't bring any new functionality except for a full release of both linux (already present in 0.0.7) built and macos (new in 0.0.8) built artifacts (iosX64, iosArm, macosX64)
🚀 From this release forward snapshot releases will be published as well.