* 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
The new `to` operators that can be used to constuct Stint types from
regular integer types. These are intented for usage in generic code
such as rlp.nim
Also fixes a bug preventing construction of Stint values from unsigned
integers (because they lack an unary `-` operator).
* Add corner cases to test suite
* Add failing div2n1n case
* Fix test and fix#30
* Add to tests
* Fix failing tests due to Nim string change between Apr 27 and Apr 29 (doc: 5237ef4f52)
* Add serialization for decimal and hex
* Fix carry bug in signed add
* Add parsing test
* Improve highlow for int, remove most_significant_word_mut
* make conversion toString compile
* Add division corner case test
* Remove a buggy division shortcut
* Fix decimal string conversion
* Fix hex dumping
* Fix power of 2 division (what was I thinking?)
* Add hexdump test
* Move runtime check to compile-time
* Fix static assert check
* more compile-time asserts
* Fix parsing of negative hex numbers, add test_io to the suite
* dump default to bigEndian, split toString in Stint and Stuint
* Add (failing) tests with big ints conversion
* Temporarily remove all the noInit pragma
* Try with iterator (failing)
* Type resolution in macro for generic return values in iterators is broken ...
* Use iterators for bit operations. Optimize MpUint initialization
* Fix add_sub
* Clean-up code, part 1
* Managed to get best borrow code for the not inlined substraction #10
* Implement in place substraction in terms of substraction #10
* Another unneed proc removal/temporary step
* more cleanup
* Upgrade benchmark to Uint256
* Special case when divisor is less than halfSize x2 speed 🔥 (still 4x slower than ttmath on Uint256)
* Division: special case if dividend can overflow. 10% improvement.
* forgot to undo normalization (why did the test pass :??)
* 1st part, special cases of fast division
* Change bitops, simplify bithacks to detect new fast division cases
* 25% speed increase. Within 3x of ttmath
* Reimplement multiplication with minimum allocation
* Fix call. Now only 2x slower than ttmath
* Prepare for optimizing comparison operators
* Comparison inlining and optimization. 25% speed increase. 50% slower than ttmath now 🔥
* Fix comparison, optimize one()
* inline initMpUintImpl for another 20% speed. Only 20% slower than ttmath without ASM
* Simplify div2n1n
* Revert borrow detection, needed a cleverer scheme.
* Getting inspired by uint128 didn't work for recursive. Use recursive algo from the get go
* Fix shl bug ... (need fuzzy testing)
* divmod fixed for single nesting (?)
* Almost there
* Fix one part of div3n2n
* Division is wooorrrrkkinnnggg 🔥
* Fix compilation for the nested version
* forgot to not multiply by 8 the size
* Add another failing shift test
* Fix countLeadingZero for nested uint
* Cleanup: remove debugecho
* Move debug utils in a specific folder
* Fix forward declaration
* Move division it's own file
* Small reorg of conversion proc
* Rework with bits as type. Pass endianess test
* tests_comparison compiles and succeed
* Fix init with int for mpint_test compilation flag
* All tests green 🔥