Sam Cappleman-Lynes
fd87d87db3
Fix normalization in scalar addition
2017-06-29 20:40:54 +01:00
Sam Cappleman-Lynes
99873d06e5
Scalar operations on integer types up to 32 bits
2017-06-29 18:29:14 +01:00
Sam Cappleman-Lynes
94d570697c
Add operations on i32 to BigInt
2017-06-29 17:20:17 +01:00
Sam Cappleman-Lynes
9b0392d235
Add scalar division to BigInt
2017-06-29 16:19:11 +01:00
Sam Cappleman-Lynes
8b1288ea01
Add scalar multiplication to BigInt
2017-06-29 15:46:07 +01:00
Sam Cappleman-Lynes
79448cbdf9
Add scalar subtraction to BigInt
2017-06-29 15:15:59 +01:00
Sam Cappleman-Lynes
80feea2722
Also implement scalar addition for BigInt
2017-06-29 14:07:44 +01:00
Sam Cappleman-Lynes
1e26bdde81
Remove unnecessary normalization
2017-06-29 13:53:08 +01:00
Sam Cappleman-Lynes
d0bfb54eee
All variants of dividing BigUint by BigDigit
...
Allow the division to occur with either operand order and with any
combination of owned and borrowed arguments.
2017-06-29 13:38:00 +01:00
Sam Cappleman-Lynes
51408a9b3b
All variants of subtracting BigDigit from BigUint
...
Allow the subtraction to occur with either operand order and with any
combination of owned and borrowed arguments.
2017-06-29 10:12:53 +01:00
Sam Cappleman-Lynes
5738141b7c
Distinction for commutative scalar ops
2017-06-29 09:59:42 +01:00
Sam Cappleman-Lynes
fd2f516a5d
All variants of multiplying BigUint by BigDigit
...
Allow the multiplication to occur with either operand order and with any
combination of owned and borrowed arguments.
2017-06-29 09:56:15 +01:00
Sam Cappleman-Lynes
e5ed503141
Implement all variants of adding BigDigit to BigUint
...
Allow the addition to occur with either operand order, and with any combination
of owned and borrowed arguments.
2017-06-29 08:41:46 +01:00
Sam Cappleman-Lynes
784d26bbf8
Scalar division of a BigUint by a BigDigit
...
A BigUint can be divided by a BigDigit - this is one of several
operations being implemented to allow scalar operations on BigInt and
BigUint across the board.
2017-06-28 16:59:35 +01:00
Sam Cappleman-Lynes
530e2f6022
Fix typo in comment in division algorithm
2017-06-28 16:26:40 +01:00
Sam Cappleman-Lynes
7b7799eab7
Scalar subtraction of a BigDigit from a BigUint
...
A BigDigit can be subtracted from a BigUint - this is one of several
operations being implemented to allow scalar operations on BigInt and
BigUint across the board.
2017-06-28 16:24:56 +01:00
Sam Cappleman-Lynes
a2a28c682e
Scalar addition of BigDigit to BigUint
...
A BigDigit can be added to a BigUint - this is one of several
operations being implemented to allow scalar operations on BigInt and
BigUint across the board.
2017-06-28 16:11:02 +01:00
Sam Cappleman-Lynes
e520bdad0d
Add scalar multiplication to BigUint, BigInt
...
BigUint and BigInt can now be multiplied by a BigDigit, re-using the same buffer for the output, thereby reducing allocations and copying.
2017-06-28 14:02:45 +01:00
Josh Stone
8964c65f38
bigint: apply a consistent order of conversion methods
2017-06-21 17:52:24 -07:00
Josh Stone
8dd6890ddc
Merge commit 'refs/pull/304/head' of github.com:rust-num/num
2017-06-21 17:33:46 -07:00
Eduardo Pinho
15f9334955
De-generalize `twos_complement' helper function
2017-06-20 01:31:49 +01:00
Eduardo Pinho
61cfdc37b3
BigInt two's complement adjustments
...
- rename `_twos_complement_` methods to just `_signed_`
- make `from_` variants take &[u8]
- refactor helper functions twos_complement (they take byte slice but use a generic function underneath)
- fix issues in `to_signed_` functions (only two's complement negative numbers; perform byte extension where needed)
- add tests to `to_signed_` methods
2017-06-18 01:42:56 +01:00
Phaiax
563e4dc509
from_radix_be/le for BigInt
2017-06-16 23:28:49 +02:00
Eduardo Pinho
1660590125
Add BigInt 2's complement conversions
...
- add methods `from_twos_complement_bytes_le`, `from_twos_complement_bytes_be`, `to_twos_complement_bytes_le`, and `to_twos_complement_bytes_be` to `BigInt`.
- add respective tests
2017-06-16 17:58:04 +01:00
Phaiax
1ea02d8d0c
Add _be/_le postfix to from/to_radix functions (BigInt)
2017-06-13 15:36:59 +02:00
Phaiax
fc09503d3d
Add fn from_radix() for radix > 36.
2017-06-11 20:08:43 +02:00
Phaiax
1ab07df709
Add fn to_radix() for radix > 36.
2017-06-11 18:31:44 +02:00
Josh Stone
d2defd67f2
bigint: bump to 0.1.39
2017-06-09 11:02:16 -07:00
Josh Stone
8b9cdaada2
Test and fix subcrates with --no-default-features
...
- The CI script now tests them all with --no-default-features.
- bigint: testing needs rand even when the main feature is disabled.
- rational: gate `FromPrimitive for Ratio<BigInt>` on having bigint.
2017-06-09 09:54:50 -07:00
Josh Stone
a6d4d6e67d
bigint: bump to 0.1.38
2017-06-08 23:48:27 -07:00
Josh Stone
1b895a8632
Get the default hasher indirectly
...
`DefaultHasher` wasn't stable until 1.13, at which point all the other
hashers were deprecated, so it's not easy for us to name a hasher type
to use for testing. However, `RandomState` has been stable since 1.7,
and it implements `BuildHasher` that has a `Hasher` associated type.
2017-05-06 22:23:31 -07:00
Patrick Jackson
71a15212a1
Replace deprecated SipHasher.
2017-04-28 18:48:50 -07:00
Josh Stone
d23e3f32b8
num-bigint-0.1.37
2017-03-08 11:14:32 -08:00
Josh Stone
0b6cae0dc7
bigint: Create the parsing error better for nested `+`
...
If a `+` is encountered in the middle of parsing a BigUint, this should
generate an `ParseIntError::InvalidDigit`. Since we can't create that
directly, we get it by trying to parse a `u64` from this point, but of
course `+` is a perfectly valid prefix to a `u64`.
Now we include the previous character in the string passed to `u64`, so
it has proper parsing context to understand what's in error.
Fixes #268 .
2017-03-06 13:23:40 -08:00
Josh Stone
4b8c71fbec
bigint: Cleanup unused imports
2017-03-06 13:20:30 -08:00
Josh Stone
1a66ee9e80
Add licenses to subcrates
2017-02-26 13:39:23 -08:00
bluss
ff2a350e98
Use the integer32 playground
2016-11-02 19:51:10 +01:00
bluss
e4a6956e5a
Add doc(html_root_url) and other doc attrs to each crate
...
Also update to use https instead of http. This avois mixed content
degradation on docs.rs.
The doc root URLs are correct as they are, the URL does not include the
crate name itself.
2016-11-01 02:14:23 +01:00
Aleksey Kladov
ec6ce78458
Minor, style and comment typo
2016-10-05 18:47:30 +03:00
Josh Stone
c8ed8ff87b
num, bigint, complex, rational, traits: 0.1.35
2016-08-18 08:28:34 -07:00
Richard Janis Goldschmidt
a4ccb797cf
Allow serde version in [0.7,0.9)
2016-08-17 12:20:08 +02:00
Josh Stone
5c3d759d6c
bigint: inline bits() methods
2016-08-10 22:23:28 -07:00
Kent Overstreet
279522316c
bigint: Break out into multiple files
2016-07-18 15:56:03 -08:00
Kent Overstreet
8e0baecf5c
Drop some dependencies on BigDigit's size
...
Before:
test divide_0 ... bench: 1,011 ns/iter (+/- 184)
test divide_1 ... bench: 18,535 ns/iter (+/- 770)
test divide_2 ... bench: 990,467 ns/iter (+/- 91,980)
test fac_to_string ... bench: 1,275 ns/iter (+/- 60)
test factorial_100 ... bench: 6,453 ns/iter (+/- 101)
test fib_100 ... bench: 1,142 ns/iter (+/- 99)
test fib_1000 ... bench: 18,713 ns/iter (+/- 2,172)
test fib_10000 ... bench: 1,197,965 ns/iter (+/- 21,178)
test fib_to_string ... bench: 225 ns/iter (+/- 13)
test from_str_radix_02 ... bench: 3,460 ns/iter (+/- 626)
test from_str_radix_08 ... bench: 1,324 ns/iter (+/- 24)
test from_str_radix_10 ... bench: 1,488 ns/iter (+/- 19)
test from_str_radix_16 ... bench: 969 ns/iter (+/- 22)
test from_str_radix_36 ... bench: 1,135 ns/iter (+/- 23)
test hash ... bench: 102,126 ns/iter (+/- 1,016)
test multiply_0 ... bench: 353 ns/iter (+/- 74)
test multiply_1 ... bench: 31,006 ns/iter (+/- 679)
test multiply_2 ... bench: 3,438,143 ns/iter (+/- 47,640)
test pow_bench ... bench: 7,457,045 ns/iter (+/- 96,175)
test shl ... bench: 5,627 ns/iter (+/- 121)
test shr ... bench: 5,054 ns/iter (+/- 112)
test to_str_radix_02 ... bench: 2,774 ns/iter (+/- 88)
test to_str_radix_08 ... bench: 980 ns/iter (+/- 425)
test to_str_radix_10 ... bench: 3,029 ns/iter (+/- 115)
test to_str_radix_16 ... bench: 788 ns/iter (+/- 14)
test to_str_radix_36 ... bench: 8,285 ns/iter (+/- 175)
After:
test divide_0 ... bench: 925 ns/iter (+/- 30)
test divide_1 ... bench: 17,660 ns/iter (+/- 379)
test divide_2 ... bench: 972,427 ns/iter (+/- 7,560)
test fac_to_string ... bench: 1,260 ns/iter (+/- 36)
test factorial_100 ... bench: 7,077 ns/iter (+/- 204)
test fib_100 ... bench: 1,124 ns/iter (+/- 32)
test fib_1000 ... bench: 18,475 ns/iter (+/- 166)
test fib_10000 ... bench: 1,192,748 ns/iter (+/- 27,128)
test fib_to_string ... bench: 228 ns/iter (+/- 10)
test from_str_radix_02 ... bench: 3,379 ns/iter (+/- 74)
test from_str_radix_08 ... bench: 1,355 ns/iter (+/- 24)
test from_str_radix_10 ... bench: 1,470 ns/iter (+/- 20)
test from_str_radix_16 ... bench: 958 ns/iter (+/- 239)
test from_str_radix_36 ... bench: 1,137 ns/iter (+/- 19)
test hash ... bench: 102,730 ns/iter (+/- 39,897)
test multiply_0 ... bench: 351 ns/iter (+/- 15)
test multiply_1 ... bench: 31,139 ns/iter (+/- 1,053)
test multiply_2 ... bench: 3,464,509 ns/iter (+/- 124,235)
test pow_bench ... bench: 7,448,428 ns/iter (+/- 326,903)
test shl ... bench: 5,784 ns/iter (+/- 190)
test shr ... bench: 4,820 ns/iter (+/- 63)
test to_str_radix_02 ... bench: 2,757 ns/iter (+/- 33)
test to_str_radix_08 ... bench: 989 ns/iter (+/- 67)
test to_str_radix_10 ... bench: 3,045 ns/iter (+/- 70)
test to_str_radix_16 ... bench: 787 ns/iter (+/- 24)
test to_str_radix_36 ... bench: 8,257 ns/iter (+/- 117)/
2016-07-14 21:56:16 -08:00
Josh Stone
9924163086
bigint: bump to 0.1.33
2016-07-12 01:10:37 -07:00
Josh Stone
8f5a27284c
Remove an unused ToBigUint import
2016-07-12 00:40:10 -07:00
Josh Stone
388a3132b8
bigint: allow `Sub` to work in-place on the RHS
...
A new Fibonacci benchmark demonstrates the improvement by using both
addition and subtraction in each iteration of the loop, like #200 .
Before:
test fib2_100 ... bench: 4,558 ns/iter (+/- 3,357)
test fib2_1000 ... bench: 62,575 ns/iter (+/- 5,200)
test fib2_10000 ... bench: 2,898,425 ns/iter (+/- 207,973)
After:
test fib2_100 ... bench: 1,973 ns/iter (+/- 102)
test fib2_1000 ... bench: 41,203 ns/iter (+/- 947)
test fib2_10000 ... bench: 2,544,272 ns/iter (+/- 45,183)
2016-07-08 17:34:12 -07:00
Josh Stone
609629d34d
bigint: simplify the add2/sub2 loops
...
This splits the main arithmetic loops from the final carry/borrow
propagation, and also normalizes the slice lengths before iteration.
This lets the optimizer generate better code for these functions.
2016-06-29 18:19:47 -07:00
Kent Overstreet
1e65e9dc51
bigint: Fix calculation of size for multiply temporaries
...
When x.len() and y.len() are both equal and odd, we have x1.len() + y1.len() + 1
(the required size to multiply x1 and y1) > y.len() + 1
This fixes #187
2016-04-20 15:48:02 -08:00
Josh Stone
0b79edc108
bigint: add path-dependency versions
2016-04-14 00:26:54 -07:00