- 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.
🚀 Since this is first GitHub release, well list everything that 0.0.7 has so far:
- 👍 BigInteger support
- 👍 BigDecimal support
- ⚡️ Library should be relatively slow, because it doesn't yet have optimized algorithms such as Karatsuba, etc.
- Square root is not implemented (so not on par with Java BigInteger and BigDecimal)
- ✅ Greatest common divisor is not implemented (same as square root)
- ➕ Added BigDecimal
- 🛠 Fixed several BigInteger bugs
- ➕ Added Big integer support