- Notifications
You must be signed in to change notification settings - Fork11
Stack-based arbitrary-precision integers - Fast and portable with natural syntax for resource-restricted devices.
License
Apache-2.0, MIT licenses found
Licenses found
status-im/nim-stint
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
stint
provides efficient and convenient N-bit integers for Nim, for arbitrarysizes ofN
decided at compile time with an interface similar to toint64
/uint64
.
In addition to basic integer operations,stint
also contains primtives formodular arithmetic, endian conversion, basic I/O, bit twiddling etc.
stint
integers, like theirintXX
/uintXX
counterpart in Nim are stack-basedvalues, meaning that they are naturally allocation-free and have value-basedsemantics.
import stintfunc addmul(a, b, c: UInt256): UInt256= a* b+ cecho addmul(u256"100000000000000000000000000000", u256"1", u256"2")
- Portability
- 32 and 64 bit
- ARM/x86/x86_64 extensively tested
- Additionally RISC-V and MIPS for open hardware and low power IoT devices.
- Speed, library is carefully tuned to produce the best assembly given the current compilers.However, the library itself does not require assembly for portability.
- No heap/dynamic allocation
- Ease of use:
- Use traditional
+
,-
,+=
, etc operators like on native types - converting to and from raw byte BigInts (also called octet string in IETF specs)
- converting to and from Hex
- converting to and from decimal strings
- Use traditional
Non-priorities include:
- constant-time operation (not suitable for certain kinds of cryptography out of the box)
- runtime precision
- constantine - modular arithmetic and elliptic curve operations focusing on cryptography and constant-time implementation
- N2472 -
_ExtInt(N)
- native arbitrary precision integers for C - stew - helpers and utilities for ordinary Nim integers (
endians2
,bitops2
etc)
Licensed and distributed under either of
- MIT license:LICENSE-MIT orhttp://opensource.org/licenses/MIT
or
- Apache License, Version 2.0, (LICENSE-APACHEv2 orhttp://www.apache.org/licenses/LICENSE-2.0)
at your option. This file may not be copied, modified, or distributed except according to those terms.
About
Stack-based arbitrary-precision integers - Fast and portable with natural syntax for resource-restricted devices.
Topics
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.