Commit Graph

16 Commits

Author SHA1 Message Date
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