andri lim
0cd6b2a052
improve io test coverage + compile time test
2019-10-23 21:55:47 +09:00
andri lim
d67cee6f8d
tidying up compiletime helpers
2019-10-23 21:55:47 +09:00
andri lim
f5116945e6
move compile time convertImpl to compiletile helpers
2019-10-23 21:55:47 +09:00
andri lim
affbe30b41
implement compile time helpers
2019-10-23 21:55:47 +09:00
andri lim
0b06077c55
compile time toBytes
2019-10-23 21:55:47 +09:00
andri lim
21dc4c6519
compile time truncate and dumpHex
2019-10-23 21:55:47 +09:00
andri lim
6eb7b7054e
fixes related to Nim v1.0.2 32 bit type inference rule modification
2019-10-19 16:56:18 +07:00
andri lim
e084bb7d9d
using tuple comparison when checking for nim version instead of template
2019-08-07 21:28:33 +07:00
andri lim
173699583b
fix #81 remove ashr from API and fix shr on Nim 0.20
2019-08-06 20:25:48 +07:00
Jacek Sieka
c5247e9d88
stew updates ( #82 )
...
* simplify int api (fixes #68 )
* implement endians api
* implement some more bitops
2019-07-22 09:53:58 +02:00
Jacek Sieka
33562884a1
std_shims -> stew
2019-07-07 11:50:53 +02:00
andri lim
ccf87daac1
implement arithmetic right shift ( #76 )
...
* implement arithmetic right shift
* workaround Nim VM 'cast' limitation
* fix high(stint) bug
* fix compile time bit shift bug
* add test for compile time shift and high(stint)
* add tests against ttmath
2019-05-11 15:44:41 +02:00
Jacek Sieka
9c51f9e7d5
use bitops2 from shims ( #77 )
2019-05-09 21:46:40 +02:00
Ștefan Talpalaru
6853ebe97c
assert() -> doAssert()
2019-03-14 03:43:51 +01:00
Ștefan Talpalaru
d002fbb155
fix breakage with Nim HEAD ( #73 )
2019-01-08 12:39:04 +01:00
Jacek Sieka
360d01d170
Better bitsof implementation ( #74 )
...
See https://github.com/nim-lang/Nim/issues/9494
2019-01-07 20:11:45 +01:00
mratsim
308ed51d59
Add 8192-bit overloads
2018-12-04 15:42:00 +01:00
mratsim
fa37d957e9
Add one more bitsof overload to support Uint4096
2018-12-04 14:33:19 +01:00
Jacek Sieka
edb1ade373
add a few more overloads for calculating bitset size (for eth-bloom)
2018-11-07 09:18:25 -06:00
Jacek Sieka
9027fbea3e
refactoring away for loop macros
...
* remove experimental for loop macro usage
* make implementation of several operations follow data structure
(recursive data -> recursive implementation)
* rename getSize -> bitsof to avoid bits vs bytes confusion
* fix potential 32-bit issue where asSignedWords cast to `int` even when
`uint64` was used as storage
* `hi` for signed ints now is signed - this replaces `asSignedWords` and
makes several int operations more natural
* fix bit size assert
2018-10-25 12:58:40 +02:00
mratsim
4fe901d33b
Use truncate instead of toInt and co
2018-10-08 21:11:06 +00:00
mratsim
0f5fd20679
NEP-1 (camelCase)
2018-10-08 21:11:06 +00:00
mratsim
65729901db
Review: add comment about where Stint is not ideal
2018-10-08 21:11:06 +00:00
mratsim
53ceaffdfa
Fix endianness issue in toInt64 and toUint64
2018-10-08 21:11:06 +00:00
mratsim
5980477e0b
Add a description and why choosing a recursive impl for Stint
2018-10-08 21:11:06 +00:00
mratsim
7bbe7d8f9f
Fix doc of toInt/toUint + add more docs about undefined behaviours
2018-10-08 21:11:06 +00:00
mratsim
7fa6329d4c
Change the test flag from mpint_test to stint_test
2018-10-08 21:11:06 +00:00
mratsim
7591373f15
Enable modular arithmetic tests
2018-10-08 21:11:06 +00:00
mratsim
31101a5c5b
Add a toUint64 and toInt64 for 32-bit platform ( fixes #48 )
2018-10-08 21:11:06 +00:00
mratsim
582466b625
Fix Generic Instantiation too nested in unittest ( https://github.com/status-im/nim-stint/pull/66#issuecomment-427557655 ) + Renable all tests
2018-10-08 21:11:06 +00:00
mratsim
f7fcecb395
Export marker + assign to result.data + fix forward decl and visibility issues introduced by the removal of the templates
2018-10-08 21:11:06 +00:00
Yuriy Glukhov
4e7dc9397c
Push experimental
2018-09-06 12:35:12 +03:00
mratsim
7e0289fbdf
Fix regression due to when bool restriction 361a2d830a
and https://github.com/nim-lang/Nim/issues/7375
2018-08-24 13:34:29 +02:00
Mamy Ratsimbazafy
fc27e86061
New {.experimental: "ForLoopMacros".} support ( #62 )
...
* Bug https://github.com/nim-lang/Nim/issues/8676 and da41fc1801
* Use a commandline flag
2018-08-20 10:34:28 +02:00
mratsim
215293756a
Use the new {.experimental.} pragma. Fix https://github.com/nim-lang/Nim/issues/8676 , linked to da41fc1801
2018-08-17 19:34:10 +02:00
coffeepots
2a85ed2e40
Fix multiplication on 32 bit systems ( #60 )
2018-08-10 08:37:04 +02:00
Mamy Ratsimbazafy
36ec850c4f
Compile time signed ints ( #55 )
...
* Refactor asSignedWords, kill 130+ lines
* Allow signed int initialization at compiletime.
* inline procs in uint_mul
* Fix an unfortunate shadowing in high(Int)
2018-06-18 16:44:29 +02:00
Mamy Ratsimbazafy
a46c62bc83
Uint - allow compile-time evaluation for all procs ( #54 )
...
* Initial commit - allow all ops at compile-time on uint.
* Update benchmark
* Delete commented ideal version of asWordsiterate, it is obvious from the workaround (and is tracked in the PR)
2018-06-18 12:54:25 +02:00
Mamy Ratsimbazafy
184e22b659
Compile-time creation of Uint ( #53 )
...
* Start on allowing compile-time stint. Works for Uint256
* remove and reorder initUintImpl, zero and one procs
* Fix assignation of uint64 to 2xuint32, remove unsafeConv and use const for base/radix
* assign_least_significant_words shouldn't implicitly capture result
* Simplify least significant words macros
2018-06-16 18:54:40 +02:00
Mamy Ratsimbazafy
8e25b30209
fix highest signed int comment
2018-05-17 09:45:42 +02:00
Mamy Ratsimbazafy
c588a84f19
wrong variable net only_msb_set to only_msb_unset in high(IntImpl)
2018-05-17 09:43:41 +02:00
Mamy Ratsimbazafy
f2d0eab153
Modular arithmetic ( #47 )
...
* Add isEven and isOdd functions
* Add modular add, mul, sub pow fixes #18
2018-05-16 10:41:46 +02:00
mratsim
1283d582a1
implement a pow for x, y: UintImpl as well
2018-05-14 19:44:39 +02:00
Mamy Ratsimbazafy
11f62d42c9
Add exponentiation - closes #37 ( #46 )
...
* Add exponentiation
* Change name to pow (like ttmath) - `^` to discuss
2018-05-14 19:02:39 +02:00
Yuriy Glukhov
ad09fe3a94
Corrected package structure
2018-05-08 17:42:42 +03:00