All Versions
Latest Version
Avg Release Cycle
36 days
Latest Release

Changelog History
Page 2

  • v0.1.6-SNAPSHOT Changes

    • ๐Ÿ›  Fixed #86 - Rounding fails when integer part is 9
    • ๐Ÿ›  Fixed #88 - BigInteger.bitAt() returns invalid value
    • Built with Kotlin 1.4-M3
    • Reworked to(U)ByteArray conversion methods
      • from and to conversions were not consistent, from(U)ByteArray expected a string of bytes ordered in little or big endian, while to(U)ByteArray produced Int or Long represented as byte with little endian or big endian order.
      • Replaced with a consistent to and from byte/ubyte array conversions
        • fromUByteArray always expects a big-endian ordered array of unsigned bytes
        • fromByteArray always expects a big-endian ordered array of bytes
        • toUByteArray produces unsigned byte array in big-endian order
        • toByteArray produces signed byte array in big-endian order
      • There are two helper methods that convert to and from a two's complement ByteArray, this form conforms to Java BigIntegers toByteArray
        • fromTwosComplementByteArray expects a two's complement ByteArray with at least one sign bit
        • toTwosComplementByteArrayproduces a two's complement ByteArray with at least one sign bit
    • โž• Added secureOverwrite to BigNumber interface, with role of overwriting backing structures with zeroes. It's meant to be used by libraries that require such a functionlity (i.e. crypto). The function also breaks immutability contract of BigNumber implementations, and further operations with that instances have undefined results.
  • v0.1.5 Changes

    January 07, 2020
    • ๐Ÿ”– 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
    • ๐Ÿ›  Fixed smaller BigDecimal issues (#71 #72 #78)
  • v0.1.5-SNAPSHOT Changes

    • ๐Ÿ”– 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
  • v0.1.4 Changes

    December 10, 2019
    • 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 round method to roundSignificand, as it describes what it does more precisely
    • โž• Added roundAtDigitPosition and roundAfterDecimalPoint convenience methods.
    • ๐Ÿ‘‰ Use Long instead of BigInteger for BigDecimal exponent.
    • โž• Adding MingwX64 and MingwX86 targets.
  • v0.1.3 Changes

    November 19, 2019
    • ๐ŸŽ 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.
  • v0.1.2 Changes

    November 17, 2019
    • โœ‚ 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.
  • v0.1.1 Changes

    October 19, 2019
    • 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 copy and moveDecimalPoint methods.
    • โž• Added fromUByteArray and toUByteArray.
  • v0.1.0 Changes

    July 31, 2019
    • โž• Added toByteArray and fromByteArray.
    • โž• Added toFloat and toDouble to BigInteger and ModularBigInteger classes.
    • โž• Added BigInteger creation from Float and Double by using tryFromFloat and 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 toString().
    • ๐Ÿ‘Œ Improved ModularBigInteger exponentiation algorithm, based on Bruce Schneier Applied Cryptography pesudocode.
  • v0.0.9 Changes

    May 11, 2019
    • โž• 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.

  • v0.0.8 Changes

    April 02, 2019

    ๐Ÿš€ 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.