Ł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
Josh Stone
22722ac55d
pow: shift exp powers of 2 before accumulating
...
We can save a multiplication if we start the accumulation basically at
the first set bit of the exponent, rather than starting at one and
waiting to multiply. We only need one itself if the exponent is zero,
which is easy to pre-check.
Before:
test pow_bench ... bench: 8,267,370 ns/iter (+/- 93,319)
After:
test pow_bench ... bench: 7,506,463 ns/iter (+/- 116,311)
2016-01-06 18:32:01 -08:00
Josh Stone
e8d948a3d2
Reduce the size of the BigUint pow benchmark
...
If a benchmark takes very long to run, it's harder to iterate on changes
to see their effect. Even reduced to 100, this pow_bench takes around 8
seconds on my machine, and still shows meaningful optimization effects.
2016-01-06 18:32:01 -08:00
David Hewson
71b2e0627c
Benchmark pow on BigUint (from #152 )
2016-01-06 18:32:01 -08:00
Oliver Middleton
d2b23d0f29
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-05 18:01:12 +00:00
Homu
fe513cc079
Auto merge of #149 - rust-num:i-complex-constant, r=cuviper
...
Add complex `i` constant function
None
2015-12-31 04:04:45 +09:00
Łukasz Jan Niemier
8e267ee4cb
Fix docs and function position
2015-12-30 10:57:54 +01:00
Łukasz Jan Niemier
458e9594d4
Add complex `i` constant function
2015-12-29 16:36:08 +01:00