865 Commits

Author SHA1 Message Date
dignifiedquire
fb29d3cd80 update names 2018-12-12 14:14:34 +01:00
dignifiedquire
ca79006169 prepare for publishing 2018-11-24 12:04:44 +01:00
dignifiedquire
8572a00c32 expose limbs 2018-11-07 14:16:13 +01:00
dignifiedquire
329aa2f5d4 some cleanup 2018-11-07 13:53:23 +01:00
dignifiedquire
40ec1c9bca mark serialization as unimplemented for now 2018-11-07 13:51:05 +01:00
dignifiedquire
a49f0a2d95 fixup: rebase 2018-11-07 13:43:10 +01:00
dignifiedquire
aa2cb5aed5 cleanup 2018-11-07 13:41:59 +01:00
dignifiedquire
901a01886e switch to faster add 2018-11-07 13:41:59 +01:00
dignifiedquire
1461ad9b13 use doublebigdigit 2018-11-07 13:41:59 +01:00
dignifiedquire
4bb412640e alternative impl 2018-11-07 13:41:59 +01:00
dignifiedquire
16dc9222b7 fix mulassign impl 2018-11-07 13:41:59 +01:00
dignifiedquire
0c148e7207 start fixing after rebase 2018-11-07 13:41:59 +01:00
dignifiedquire
c305e5be60 remove benchmark file 2018-11-07 13:41:59 +01:00
dignifiedquire
9e43284308 some fixes 2018-11-07 13:41:59 +01:00
dignifiedquire
a24a000e3c first round of u64 BigDigit support 2018-11-07 13:41:58 +01:00
dignifiedquire
bdb187d1ee feat: implement u128 and i128 operations for BigInt 2018-11-07 13:41:58 +01:00
dignifiedquire
f3b1e7c1a2 chore: run rustfmt on all code 2018-11-07 13:36:32 +01:00
bors[bot]
adc9cb9113 Merge #70
70: Release 0.2.1 r=cuviper a=cuviper



Co-authored-by: Josh Stone <cuviper@gmail.com>
2018-11-03 00:12:40 +00:00
Josh Stone
02e2e4e7e9 Release 0.2.1 2018-11-02 17:08:29 -07:00
bors[bot]
415f442d4f Merge #67
67: Update README.md alternatives section for apint r=cuviper a=Robbepop

The apint crate is stable as of Rust version 1.26.

Co-authored-by: Hero Bird <robbepop@web.de>
2018-09-28 23:56:10 +00:00
Hero Bird
4c4f83a369
Update README.md alternatives section for apint
The apint crate is stable as of Rust version 1.26.
2018-09-23 14:30:16 +02:00
bors[bot]
e3f89f36fa Merge #64
64: Implement operators with 128bits r=cuviper a=dignifiedquire

- Depends on #63 
- This is the second part to #40 

Co-authored-by: dignifiedquire <dignifiedquire@gmail.com>
2018-08-11 16:06:19 +00:00
dignifiedquire
1968390c5e fixup 2018-08-11 10:41:41 +02:00
dignifiedquire
35939287b9 feat: implement operators with 128bit 2018-08-07 12:56:00 +02:00
bors[bot]
1a316783b5 Merge #63
63: chore: run rustfmt on all code r=cuviper a=dignifiedquire



Co-authored-by: dignifiedquire <dignifiedquire@gmail.com>
2018-08-06 22:33:55 +00:00
dignifiedquire
f7e8af05a4 chore: run rustfmt on all code 2018-08-06 15:13:09 -07:00
bors[bot]
2e198752dc Merge #54
54: Implement Pow for BigUint and BigInt r=cuviper a=thomwiggers

Implements #29

Co-authored-by: Thom Wiggers <thom@thomwiggers.nl>
2018-08-04 00:20:31 +00:00
Thom Wiggers
03e01cb3f0
Fix benchmark 2018-07-27 12:22:46 +02:00
Thom Wiggers
de5b78c26a
Avoid 'unsigned' and 'type' as macro variable
It seems to break R1.15
2018-07-19 17:17:22 +02:00
Thom Wiggers
5fe8a5fbdf
Get rid of num_traits::pow usage
See also #56
2018-07-19 17:12:38 +02:00
Thom Wiggers
d3ef15195e
also use BigInt::from 2018-07-19 17:02:36 +02:00
Thom Wiggers
ab3594f878
Also allow BigInt.pow(&$type) 2018-07-19 17:02:36 +02:00
Thom Wiggers
9009cf80d7
Address feedback 2018-07-19 17:02:35 +02:00
Thom Wiggers
3f79349614
Implement Pow directly on references 2018-07-19 17:02:35 +02:00
Thom Wiggers
136d7d9aab
Implement pow for BigInt 2018-07-19 17:02:35 +02:00
Thom Wiggers
cfe8ffb0cb
Support BigUint.pow() for primitives 2018-07-19 17:02:35 +02:00
bors[bot]
c504fa8688 Merge #56
56: Implement Roots for BigInt and BigUint r=cuviper a=mancabizjak

Supersedes #51 .

Since there is now a `Roots` trait with `sqrt`, `cbrt` and `nth_root` methods in the `num-integer` crate, this PR implements it for `BigInt` and `BigUint` types. I also added inherent methods on both types to allow the users access to all these functions without having to import `Roots`.

PS: `nth_root` currently  uses `num_traits::pow`. Should we perhaps wait for #54 to get merged, and then replace the call to use the new `pow::Pow` implementation on `BigUint`?

Co-authored-by: Manca Bizjak <manca.bizjak@xlab.si>
2018-07-19 00:00:20 +00:00
Manca Bizjak
1d45ca9a6f Update links to Roots trait methods
Signed-off-by: Manca Bizjak <manca.bizjak@xlab.si>
2018-07-18 08:22:51 +02:00
Manca Bizjak
bbe7b18819 Remove stale doc path, use self.bits()
Signed-off-by: Manca Bizjak <manca.bizjak@xlab.si>
2018-07-17 15:06:55 +02:00
Manca Bizjak
2b473e9403 Implement optimized sqrt, cbrt methods
This commit overrides default implementations of
Roots::sqrt and Roots::cbrt for BigInt and BigUint
with optimized ones. It also improves tests and
resolves minor inconsistencies.

Signed-off-by: Manca Bizjak <manca.bizjak@xlab.si>
2018-07-13 12:52:40 +02:00
Manca Bizjak
1f2590656b Implement Roots for BigInt and BigUint
This commit implements num-integer::Roots trait
for BigInt and BigUint types, and also adds sqrt,
cbrt, nth_root as inherent methods to allow access
to them without importing Roots trait. For each
type tests were added as submodules in the roots
test module.

Signed-off-by: Manca Bizjak <manca.bizjak@xlab.si>
2018-07-11 12:14:46 +02:00
bors[bot]
86e019bc97 Merge #53
53: switch gen_biguint to fill_bytes r=cuviper a=TheIronBorn

Changes `gen_biguint` from a `push(gen::<u32>)` method to rand's [`fill_bytes`](https://docs.rs/rand/0.5.0/rand/trait.RngCore.html#tymethod.fill_bytes). This should improve performance in most cases.

- For small PRNGs which only natively generate 64 bits (like Xorshift64 or [`splitmix64.c`](http://prng.di.unimi.it/splitmix64.c)), this will no longer throw away half the bits generated. 
- For block PRNGs like `StdRng`, this should reduce overhead.
- For an SIMD PRNG (https://github.com/rust-lang-nursery/rand/issues/377), this would be a significant improvement.

```diff,ignore
 name         no_fill ns/iter  fill ns/iter  diff ns/iter   diff %  speedup 
+rand_1009    256              222                    -34  -13.28%   x 1.15 
+rand_131072  27,366           14,715             -12,651  -46.23%   x 1.86 
+rand_2048    459              357                   -102  -22.22%   x 1.29 
-rand_256     93               130                     37   39.78%   x 0.72 
+rand_4096    842              557                   -285  -33.85%   x 1.51 
-rand_64      69               92                      23   33.33%   x 0.75 
+rand_65536   13,625           7,382               -6,243  -45.82%   x 1.85 
+rand_8192    1,836            869                   -967  -52.67%   x 2.11
```
(i.e. `rand_1009` does `gen_biguint(1009)`. All benches are powers of two except `rand_1009`)

(Let me know if you want the `rand_` benches added)

Co-authored-by: TheIronBorn <>
Co-authored-by: Josh Stone <cuviper@gmail.com>
2018-07-05 23:44:35 +00:00
Josh Stone
8b5a092010 Add tests for PRNG value stability 2018-07-02 11:09:07 -07:00
TheIronBorn
b2c9577f63 rand benches 2018-06-25 18:01:59 -07:00
TheIronBorn
af35fd3035 switch gen_biguint to fill_bytes 2018-06-25 16:09:02 -07:00
Josh Stone
89162481ac Add dates to RELEASES.md 2018-06-21 12:07:31 -07:00
bors[bot]
9309c8b258 Merge #52
52: Make sure benchmarks can be built r=cuviper a=cuviper

This fixes the rand seeds, and builds benches in nightly CI.

Co-authored-by: Josh Stone <cuviper@gmail.com>
2018-05-30 20:19:18 +00:00
Josh Stone
40a8e91bd9 Make sure benchmarks can be built
This fixes the rand seeds, and builds benches in nightly CI.
2018-05-30 13:16:45 -07:00
bors[bot]
f87f2e72a0 Merge #50
50: Release 0.2.0 r=cuviper a=cuviper



Co-authored-by: Josh Stone <cuviper@gmail.com>
2018-05-25 20:56:21 +00:00
Josh Stone
de836f6fdc Release 0.2.0 2018-05-25 13:45:38 -07:00