Skip to content

Releases: ionspin/kotlin-multiplatform-bignum

0.1.2 Performance improvements

17 Nov 12:57
Compare
Choose a tag to compare
Pre-release
  • Implemented handling of additional empty words which improved speed and number of allocations.
  • Implemented square-and-multiply exponentiation algorithm instead of naive approach.

Multiplication improvements

19 Oct 21:43
8994783
Compare
Choose a tag to compare
Pre-release
  • 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

0.1.0

31 Jul 20:54
37d63d1
Compare
Choose a tag to compare
0.1.0 Pre-release
Pre-release
  • 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

0.0.9

11 May 17:50
0f43661
Compare
Choose a tag to compare
0.0.9 Pre-release
Pre-release
  • 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.

Adding macos built artifcats

02 Apr 21:35
c868e57
Compare
Choose a tag to compare
Pre-release

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.

Initial GitHub release

31 Mar 17:29
5c3841b
Compare
Choose a tag to compare
Pre-release

Since this is first GitHub release, well list everything that 0.0.7 has so far:

  • BigInteger support
  • BigDecimal support

Known issues:

  • 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)