Josh Stone
5a0de140c9
bigint::monty: use mac_digit
2017-10-22 15:30:17 -07:00
Josh Stone
7679cb86fb
Remove `#[must_use]` on `__add2`
...
It doesn't actually work on functions yet, and nightly now warns that it
is experimental, behind `#[feature(fn_must_use)]`.
2017-09-21 17:26:20 -07:00
Josh Stone
1ddbee7f37
bigint mac3: tweak thresholds between algorithms
...
It's not too rigorous, but thresholds 32 and 256 give me better results.
Before:
test multiply_0 ... bench: 87 ns/iter (+/- 0)
test multiply_1 ... bench: 11,926 ns/iter (+/- 19)
test multiply_2 ... bench: 772,178 ns/iter (+/- 3,068)
test multiply_3 ... bench: 2,034,237 ns/iter (+/- 9,618)
After:
test multiply_0 ... bench: 87 ns/iter (+/- 0)
test multiply_1 ... bench: 11,927 ns/iter (+/- 64)
test multiply_2 ... bench: 672,440 ns/iter (+/- 3,570)
test multiply_3 ... bench: 1,577,065 ns/iter (+/- 11,137)
2017-09-20 13:19:00 -07:00
Josh Stone
28d84ca3ac
Toom-3: operate more on values where possible
2017-09-20 13:17:06 -07:00
Josh Stone
2c2e46c8df
Add comments about multiplication strategy
2017-09-20 13:15:44 -07:00
Josh Stone
05dc87c041
Improve mac_digit bounds checking
...
By starting with `split_at_mut`, the hot multiplication loop runs with
no bounds checking at all! The remaining carry loop has a slightly
simpler check for when the remaining iterator runs dry.
2017-09-20 11:41:59 -07:00
Nicolas Kirchner
bcd76c55e8
Optimize mac_digit
2017-08-15 21:14:15 +02:00
Nicolas Kirchner
243bc6fe4c
Optimize Toom-3 algorithm
2017-08-15 19:27:22 +02:00
Nicolas Kirchner
b43c1ab258
Replace the use of a feature not yet implemented in rust 1.8
2017-08-15 01:39:43 +02:00
Nicolas Kirchner
c9c40b9402
Optimize and clean the Toom-3 algorithm and choose better thresholds
2017-08-14 20:07:35 +02:00
Nicolas Kirchner
d7554ad931
Naive implementation of the Toom-3 algorithm
...
The Toom-2 algorithm is bypassed for tests.
2017-08-13 23:32:03 +02:00
Nicolas Kirchner
9b56d6667c
Implement assign_from_slice
2017-08-02 16:12:04 +02:00
Sam Cappleman-Lynes
530e2f6022
Fix typo in comment in division algorithm
2017-06-28 16:26:40 +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
Aleksey Kladov
ec6ce78458
Minor, style and comment typo
2016-10-05 18:47:30 +03:00
Kent Overstreet
279522316c
bigint: Break out into multiple files
2016-07-18 15:56:03 -08:00