Josh Stone
2e3e575117
Fix the feature masks in the approx_sqrt doc example
...
The hidden "mod test" layout of the first example has been broken for a
while, but it wasn't noticed because rustdoc wasn't passing any features
at all. That was fixed in rust-lang/rust#30372 , and now we need to get
our ducks in a row too.
2015-12-21 12:21:47 -08:00
Homu
9b45e6dd9b
Auto merge of #139 - ollie27:bigint_hash, r=cuviper
...
bigint: simplify Hash
There cannot be any leading zeros in a BigUint so just derive Hash which will just hash the Vec directly.
Add Hash to Sign so we can derive it for BigInt as well.
2015-12-17 15:25:49 +09:00
Josh Stone
7593c17fa7
More bigint str_radix performance tweaks
2015-12-16 21:49:18 -08:00
Oliver Middleton
e152bbcb46
bigint: simplify Hash
...
There cannot be any leading zeros in a BigUint so just derive Hash which will just hash the Vec directly.
Add Hash to Sign so we can derive it for BigInt as well.
2015-12-16 19:08:24 +00:00
Josh Stone
c9e15aef2d
bigint: use full cmp results for checked_sub
2015-12-15 22:31:46 -08:00
Josh Stone
4a8752274c
bigint: slightly improve multiply/divide performance
...
Using `vec![0; len]` initialization is a little faster.
Before:
test multiply_0 ... bench: 354 ns/iter (+/- 6)
test multiply_1 ... bench: 33,966 ns/iter (+/- 1,508)
test multiply_2 ... bench: 3,663,686 ns/iter (+/- 60,880)
test divide_0 ... bench: 891 ns/iter (+/- 51)
test divide_1 ... bench: 17,316 ns/iter (+/- 387)
test divide_2 ... bench: 1,290,378 ns/iter (+/- 73,016)
After:
test multiply_0 ... bench: 351 ns/iter (+/- 39)
test multiply_1 ... bench: 30,827 ns/iter (+/- 680)
test multiply_2 ... bench: 3,692,968 ns/iter (+/- 91,146)
test divide_0 ... bench: 902 ns/iter (+/- 14)
test divide_1 ... bench: 16,981 ns/iter (+/- 102)
test divide_2 ... bench: 1,146,367 ns/iter (+/- 60,152)
2015-12-15 22:07:34 -08:00
Josh Stone
b7724a6650
Simplify BigInt Mul forwarding
2015-12-15 22:06:59 -08:00
Josh Stone
22ff3f918d
bigint: improve from_str_radix performance
...
Before:
test from_str_radix_02 ... bench: 8,432 ns/iter (+/- 280)
test from_str_radix_08 ... bench: 7,397 ns/iter (+/- 95)
test from_str_radix_10 ... bench: 7,344 ns/iter (+/- 142)
test from_str_radix_16 ... bench: 6,753 ns/iter (+/- 157)
test from_str_radix_36 ... bench: 7,093 ns/iter (+/- 60)
After:
test from_str_radix_02 ... bench: 3,295 ns/iter (+/- 81)
test from_str_radix_08 ... bench: 1,377 ns/iter (+/- 56)
test from_str_radix_10 ... bench: 1,583 ns/iter (+/- 16)
test from_str_radix_16 ... bench: 1,483 ns/iter (+/- 53)
test from_str_radix_36 ... bench: 1,628 ns/iter (+/- 27)
2015-12-15 21:59:51 -08:00
Josh Stone
49529895a2
bigint: greatly improve to_str_radix performance
...
Before:
test fac_to_string ... bench: 18,183 ns/iter (+/- 310)
test fib_to_string ... bench: 819 ns/iter (+/- 8)
test to_str_radix_02 ... bench: 204,479 ns/iter (+/- 2,826)
test to_str_radix_08 ... bench: 68,275 ns/iter (+/- 769)
test to_str_radix_10 ... bench: 61,809 ns/iter (+/- 907)
test to_str_radix_16 ... bench: 51,438 ns/iter (+/- 539)
test to_str_radix_36 ... bench: 39,939 ns/iter (+/- 976)
After:
test fac_to_string ... bench: 1,204 ns/iter (+/- 16)
test fib_to_string ... bench: 269 ns/iter (+/- 3)
test to_str_radix_02 ... bench: 2,428 ns/iter (+/- 80)
test to_str_radix_08 ... bench: 820 ns/iter (+/- 38)
test to_str_radix_10 ... bench: 2,984 ns/iter (+/- 303)
test to_str_radix_16 ... bench: 689 ns/iter (+/- 25)
test to_str_radix_36 ... bench: 7,995 ns/iter (+/- 100)
2015-12-15 21:57:27 -08:00
Oliver Middleton
9c7c995631
bigint: add tests for From implementations
2015-12-12 23:17:37 +00:00
Oliver Middleton
8e1c6a3c11
bigint: add From implementations
...
From all primative unsigned ints to BigUint
From all primative ints to BigInt
From BigUint to BigInt
Closes : #117
2015-12-12 23:16:03 +00:00
Kent Overstreet
fa372e230b
Multiply/divide torture test
2015-12-10 15:28:01 -09:00
Kent Overstreet
79928b3185
Improve division performance
...
Before:
test divide_0 ... bench: 4,058 ns/iter (+/- 255)
test divide_1 ... bench: 304,507 ns/iter (+/- 28,063)
test divide_2 ... bench: 668,293,969 ns/iter (+/- 25,383,239)
After:
test divide_0 ... bench: 874 ns/iter (+/- 71)
test divide_1 ... bench: 16,641 ns/iter (+/- 1,205)
test divide_2 ... bench: 1,336,888 ns/iter (+/- 77,450)
2015-12-10 15:25:56 -09:00
Kent Overstreet
08b0022aab
Improve multiply performance
...
The main idea here is to do as much as possible with slices, instead of
allocating new BigUints (= heap allocations).
Current performance:
multiply_0: 10,507 ns/iter (+/- 987)
multiply_1: 2,788,734 ns/iter (+/- 100,079)
multiply_2: 69,923,515 ns/iter (+/- 4,550,902)
After this patch, we get:
multiply_0: 364 ns/iter (+/- 62)
multiply_1: 34,085 ns/iter (+/- 1,179)
multiply_2: 3,753,883 ns/iter (+/- 46,876)
2015-12-10 15:25:42 -09:00
Kent Overstreet
496ae0337c
Add add/subtract functions that work in place, on slices
...
This is needed for the multiply optimizations in the next patch.
2015-12-10 12:33:28 -09:00
Josh Stone
7fa80f7786
Update intros to better reflect the breadth of num
...
Closes #132 .
2015-11-21 16:39:00 -08:00
Josh Stone
e41016975f
bigint: expand op tests to cover all val/ref combinations
2015-11-16 11:06:39 -08:00
Josh Stone
978d14aa56
bigint: refactor BigInt ops
...
Try to let the underlying BigUint op implement val/ref forwarding as
much as possible, to reduce cloning.
2015-11-16 11:04:41 -08:00
Josh Stone
ce3d375b21
bigint: refactor BigUint ops
...
As much as possible, ops are forwarded to val-ref so the LHS memory can
be reused for the result. This reduces the number of clones required.
2015-11-16 10:56:30 -08:00
Josh Stone
7781256041
bigint: use a simple let-Some-pop to truncate zeros
2015-11-16 10:20:42 -08:00
Josh Stone
c310e5da8e
complex: forward ops to val-val
...
Since the Num constraint only requires val-val ops, we ended up cloning
everything in Complex ops when they were forwarded to ref-ref. By using
val-val, we can reduce how often clones are needed.
2015-11-16 10:10:59 -08:00
Josh Stone
b4026b9fec
Update repo and doc links
2015-11-12 18:40:13 -08:00
Homu
93db3998ef
Auto merge of #131 - murarth:str-radix, r=cuviper
...
Improve `to_str_radix` implementation
2015-11-12 03:33:55 +09:00
Homu
879f2c868e
Auto merge of #125 - IvanUkhov:real-arithmetic, r=cuviper
...
Implement arithmetic with real for complex
Hello,
It might be handy to be able to perform basic arithmetic operations in expressions mixing complex numbers and numeric primitives; see #116 . I would be grateful for any feedback, especially regarding the subsets of primitives for which certain operations are implemented.
Regards,
Ivan
2015-11-12 03:03:06 +09:00
Murarth
786541bd24
Improve `to_str_radix` implementation
...
Uses in-place division with `u32` divisor to provide a significant speed
improvement.
2015-11-09 13:50:25 -07:00
Abhishek Chanda
7acad5ac33
Implement some more functions for the complex type
2015-11-05 14:20:37 -08:00
Ivan Ukhov
b57e4a4db4
Implement arithmetic with real for complex
2015-10-31 06:38:38 +01:00
Abhishek Chanda
e5099930e7
Implement is_nan for the complex type
...
Also run the associated test
2015-10-30 15:35:04 -07:00
Josh Stone
49237f6f45
integer: expand tests for gcd min_value()
...
- Use explicit asserts for should-panic tests, since overflow is not
checked in release mode.
- Add positive tests where gcd min_value() can be represented.
- In all cases, test min_value() in both positions.
Closes #127
2015-10-30 00:40:21 -07:00
Josh Stone
642787fbd2
Merge pull request #121 from wrieger93/issue_120
...
Add a function that returns the sign of a BigInt.
2015-10-27 12:13:17 -07:00
Josh Stone
9e5a209dcd
Merge pull request #123 from murarth/ratio-parse-fix
...
Check for zero denominator when parsing Ratio
2015-10-23 10:23:18 -07:00
David Ripton
e86913924e
Remove extra parentheses to fix a warning
...
Removing extra parentheses in a for loop fixes this warning:
src/bigint.rs:1636:18: 1636:31 warning: unnecessary parentheses around `for` head expression, #[warn(unused_parens)] on by default
2015-10-19 09:43:47 -04:00
Murarth
b2767517f4
Check for zero denominator when parsing Ratio
...
Closes #122
2015-10-16 13:10:16 -07:00
Łukasz Niemier
2e4afbc9ba
Merge pull request #112 from Emerentius/master
...
Implement Stein's algorithm for gcd
2015-10-15 13:25:33 +02:00
William Rieger
1eb3deaca8
Add a function that returns the sign of a BigInt.
2015-10-06 00:32:32 -07:00
William Rieger
c715405b30
Add functions and tests.
2015-09-13 18:19:00 -04:00
Emerentius
499def9207
Added tests for gcd
...
compare gcd with euclidean gcd
test panics on gcd(min_val, min_val) and gcd(min_val, 0) for signed integers
2015-09-11 20:33:39 +02:00
Emerentius
59089d9d5c
Made it panic on gcd = min_val in debug mode
...
The additional call to .abs() causes a panic on the min value. There are
no other negative values it can encounter.
Does nothing in release mode
2015-09-11 20:27:06 +02:00
Emerentius
82a6ab2f30
comment corrected
...
referenced a,b, which aren't defined
changed to n,m
2015-09-07 16:50:58 +02:00
Emerentius
e892054813
implement Stein's algorithm for gcd
2015-09-07 03:15:16 +02:00
William Rieger
50d89519a2
Merge branch 'master' into develop
...
Conflicts:
src/complex.rs
2015-09-04 18:56:40 -04:00
William Rieger
ff6a40cc88
Remove reduntant Num trait from an impl.
2015-09-04 17:48:31 -04:00
William Rieger
98b9df622f
Add mathematical functions for complex numbers.
...
For Complex<T: Clone + Float>, the following functions along with
corresponding tests were added:
- exp
- sin, cos, tan
- sinh, cosh, tanh
2015-09-04 02:08:31 -04:00
Gustorn
3ccb4bd6c5
Added Sized trait bound for traits that requite it
...
See rust-lang/rfcs#1214
2015-08-19 19:11:55 +02:00
Alex Crichton
b57accf314
Update to rust nightly
2015-08-10 12:11:56 -07:00
root
4c123a9e71
Make rustc-serialize, bignum, rational, complex into opt-out features
...
Making bignum optional allows skipping the rustc-serialize and rand
dependencies too, and it makes a big difference in num's build time.
With default (all) features, clean build time including dependencies: 27
seconds.
With no default features, clean build time including dependencies (none):
5 seconds.
2015-06-02 23:48:06 +02:00
Alex Crichton
0a7847cd65
Merge pull request #99 from b52/issue-93-float-min-positive
...
Provide generic around f32/f64::MIN_POSITIVE
2015-05-26 07:23:41 -07:00
Oliver Mader
785e07d83c
Re-export `cast` for ergonomic reasons
2015-05-26 15:03:34 +02:00
Oliver Mader
6c9f457712
Provide generic around f32/f64::MIN_POSITIVE
2015-05-26 14:56:43 +02:00
Alex Crichton
a6a399d52e
Enable testing on stable Rust
2015-05-19 09:22:06 -07:00