Commit Graph

868 Commits

Author SHA1 Message Date
Łukasz Jan Niemier 956bb0f4db Reapply ebed6756de 2016-03-25 12:34:48 +01:00
Łukasz Jan Niemier 72fa7ece48 Reapply #167 2016-03-11 10:24:10 +01:00
Łukasz Jan Niemier 7c0ab30bdc Fix subpackages metadata 2016-03-11 10:22:26 +01:00
Łukasz Jan Niemier 96e9166b0a Extract iter 2016-03-11 01:06:37 +01:00
Łukasz Jan Niemier ed076070e6 Extract complex 2016-03-11 01:06:37 +01:00
Łukasz Jan Niemier 2a67a5b86e Extract num-rational 2016-03-11 01:06:37 +01:00
Łukasz Jan Niemier 54685c46a1 Extract rational 2016-03-11 01:06:37 +01:00
Łukasz Jan Niemier 2176b7048c Extract bigint 2016-03-11 01:06:05 +01:00
Łukasz Jan Niemier f1a80857ee Extract integer module 2016-03-11 01:06:05 +01:00
Łukasz Jan Niemier 4361521f5a Move num-macros to macros to fit new naming system 2016-03-11 01:06:05 +01:00
Łukasz Jan Niemier c124be549f Move traits to separate crate 2016-03-11 01:06:05 +01:00
Homu 7eb666f6b8 Auto merge of #176 - murarth:bigint-bits, r=cuviper
Expose `BigUint::bits` through `BigInt`
2016-03-06 06:00:56 +09:00
Murarth df34563eda Expose `BigUint::bits` through `BigInt` 2016-03-05 13:46:22 -07:00
Homu 9b0d4c91cb Auto merge of #171 - erickt:serde, r=hauleth
Add support for Serde 0.7.

Serde 0.7 dropped it's dependency on num, so this patch moves the implementations here. For the sake of a better implementation, this just serializes BigUint as a `Vec<u32>`, `BigInt` as a `(u8, Vec<u32>)`, `Complex<T>` as a `(T, T)`, and `Ratio<T>` as a `(T, T)`.
2016-02-27 20:17:18 +09:00
Erick Tryzelaar 112923eec5 Add support for Serde 0.7.
Serde 0.7 dropped it's dependency on num, so this patch moves
the implementations here. For the sake of a better implementation,
this just serializes BigUint as a `Vec<u32>`, `BigInt` as a
`(u8, Vec<u32>)`, `Complex<T>` as a `(T, T)`, and `Ratio<T>`
as a `(T, T)`.
2016-02-27 00:07:32 -08:00
Homu 9079b88b1c Auto merge of #169 - cuviper:rational-overflow, r=hauleth
Avoid overflows in Ratio's Ord::cmp

Fixes #7
2016-02-25 20:29:50 +09:00
Josh Stone 4e66bbe6a7 Avoid overflows in Ratio's Ord::cmp
Fixes #7
2016-02-22 18:10:29 -08:00
Josh Stone 8be7e7bab5 Simplify some Ratio methods 2016-02-22 18:09:21 -08:00
Josh Stone 5b2cb8df97 Simplify Integer dependant traits
- Integer only needs to require Ord explicitly, and then PartialOrd, Eq,
  and PartialEq come transitively.
- Generics on Integer can implicitly use all of those comparison traits.

This should not be a breaking change, as it doesn't actually change any
effective trait requirements -- only what's explicit for simplicity.
2016-02-22 15:34:10 -08:00
Homu 2f63d3bdc3 Auto merge of #168 - crazymykl:literally-positive, r=cuviper
Allow unary `+` when parsing Big{U,}Int from strings
2016-02-22 08:40:15 +09:00
Mike MacDonald (crazymykl) 9def836603 Allow unary `+` when parsing BigInt from strings 2016-02-21 18:09:56 -05:00
Homu 69f11004f6 Auto merge of #167 - pnkfelix:fix-issue-166, r=cuviper
Reorder ops in LCM to avoid overflow.

Reorder ops in LCM to avoid overflow.

Fix #166
2016-02-19 07:10:29 +09:00
Felix S. Klock II d298262573 Reorder ops in LCM to avoid overflow. Fix #166 2016-02-18 22:49:34 +01:00
Josh Stone 7a33808b07 Publish num 0.1.31 2016-02-17 00:44:20 -08:00
Josh Stone ebed6756de impl Debug for ParseFloatError
Fixes #165.
2016-02-16 15:37:06 -08:00
Homu 1a15d33560 Auto merge of #163 - gmorenz:update_nightly, r=hauleth
Update num_macros to current nightly

Fixes num_macros build for current nightly, broken by [this](https://github.com/rust-lang/rust/pull/31487/files) PR on rust.
2016-02-16 07:44:46 +09:00
Greg Morenz 4c379ff4c7 Update ast::BiEq to BinOpKind::Eq 2016-02-15 16:44:51 -05:00
Josh Stone 9b2116d78f Fix spelling of "occurred". 2016-02-05 16:04:34 -08:00
Homu d1adf45389 Auto merge of #162 - est31:add_checked_pow, r=cuviper
Add checked_pow function

Implements a `checked_pow` function which does the same as `pow`, just with overflow checks.

And, similar to #152 and #153, the function uses references instead of cloning.

Adds a little macro to spare code repetition. Its scoped to the function so nothing gets polluted.
2016-02-06 09:01:32 +09:00
est31 3c5ecdc636 Add checked_pow function 2016-02-03 06:43:40 +01:00
Homu e074e865ae Auto merge of #161 - cuviper:shifty-ints, r=hauleth
Add signed/unsigned shifts to PrimInt

None
2016-01-29 19:37:34 +09:00
Josh Stone afee4e4662 Change PrimInt shift names to signed/unsigned 2016-01-28 22:37:18 -08:00
Josh Stone d798bd4fb8 Add arithmetic/logical shifts to PrimInt 2016-01-27 23:30:33 -08:00
Josh Stone b454a14bc4 bigint: avoid new allocations for small shifts
Before:
    test shl               ... bench:       7,312 ns/iter (+/- 218)
    test shr               ... bench:       5,282 ns/iter (+/- 243)

After:
    test shl               ... bench:       4,946 ns/iter (+/- 88)
    test shr               ... bench:       4,121 ns/iter (+/- 52)
2016-01-27 23:08:47 -08:00
Josh Stone 1ebcc77513 Expand bigint shl/shr benchmarking 2016-01-27 22:53:10 -08:00
Homu 494fce7dd3 Auto merge of #160 - ollie27:bigint_more_fmt, r=cuviper
bigint: Improve fmt traits

* Make them take into account formatting parameters.
* ~~Make Debug match Display.~~
2016-01-21 18:06:03 -08:00
Oliver Middleton 95d8ccdb24 bigint: Make fmt traits take into account formatting parameters 2016-01-22 00:35:35 +00:00
Homu 516587ce2e Auto merge of #159 - anchovieshat:master, r=cuviper
Add Binary, Octal to BigUint. Add UpperHex, LowerHex, Binary, Octal to BigInt

Is the testing for these enough? Any suggestions to improve them?
2016-01-18 23:27:35 -08:00
Colin Davidson 3c7441ab0a Add Binary, Octal to BigUint. Add UpperHex, LowerHex, Binary, Octal to BigInt 2016-01-18 21:19:21 -08:00
Homu e3bc794ca4 Auto merge of #158 - anchovieshat:master, r=cuviper
Add LowerHex and UpperHex formatting

These were mysteriously missing from BigUint.
2016-01-18 10:47:39 -08:00
Colin Davidson a89a2e82e6 Fix test names
Upper and Lower test names were swapped
2016-01-17 12:17:52 -08:00
Colin Davidson d5d7c855b0 Add tests for UpperHex and LowerHex 2016-01-17 12:13:45 -08:00
Colin Davidson 04000436b1 Switch to ascii uppercase function 2016-01-16 22:27:56 -08:00
Colin Davidson 80c4d01b7f Add LowerHex and UpperHex formatting 2016-01-16 21:52:47 -08:00
Homu 010f562a62 Auto merge of #157 - durka:patch-1, r=hauleth
remove stale #[deriving(Zero)] docs

Fixes #156.
2016-01-15 10:30:29 -08:00
Alex Burka 5962dd29c9 remove stale #[deriving(Zero)] docs
Fixes #156.
2016-01-15 13:29:34 -05:00
Homu e65fd4e5b2 Auto merge of #150 - ollie27:bigint_to_str, r=cuviper
bigint: small to_str_radix optimization

Before:
```
test fac_to_string     ... bench:       1,630 ns/iter (+/- 34)
test fib_to_string     ... bench:         359 ns/iter (+/- 11)
test to_str_radix_02   ... bench:       3,097 ns/iter (+/- 19)
test to_str_radix_08   ... bench:       1,146 ns/iter (+/- 38)
test to_str_radix_10   ... bench:       4,248 ns/iter (+/- 36)
test to_str_radix_16   ... bench:         881 ns/iter (+/- 44)
test to_str_radix_36   ... bench:       8,073 ns/iter (+/- 75)
```
After:
```
test fac_to_string     ... bench:       1,492 ns/iter (+/- 20)
test fib_to_string     ... bench:         368 ns/iter (+/- 7)
test to_str_radix_02   ... bench:       2,038 ns/iter (+/- 47)
test to_str_radix_08   ... bench:         812 ns/iter (+/- 9)
test to_str_radix_10   ... bench:       3,919 ns/iter (+/- 40)
test to_str_radix_16   ... bench:         703 ns/iter (+/- 58)
test to_str_radix_36   ... bench:       7,852 ns/iter (+/- 81)
```
2016-01-13 08:59:01 +09:00
Josh Stone 838b4e42b3 Publish num 0.1.30 2016-01-08 15:22:54 -08:00
Josh Stone 9ec4106a99 Merge pull request #154 from briansmith/optional-rand-rustc_serialize
Make `rand` and `rustc-serialize` dependencies optional.
2016-01-08 09:52:51 -08:00
Brian Smith 9e3e8552ac Make `rand` and `rustc-serialize` dependencies optional.
Previously, the `rand` and `rustc-serialize` dependencies were optional
except they were required for the `bigint` feature.

Make the dependency on the `rand` crate optional in all cases.
including when the `bigint` feature is selected. Some of the tests for
the bigint feature are randomized so, while `rand` is now an optional
dependency, it is a non-optional dev-dependency.

Similarly, make the dependency on the `rustc-serialize` crate optional
in all cases, including when the `bigint` feature is selected.
2016-01-07 16:30:50 -10:00