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
runarberg
505eb86c18
Added the power method for rational numbers
2015-05-17 18:22:32 +00:00
Josh Triplett
6f2db9b631
Factor out more generic macro to run a macro on each tuple type
2015-04-25 17:03:05 -07:00
Josh Triplett
c6163dac40
traits.rs: Implement Bounded for tuples of Bounded types
...
For example, the following will print (4294967295, 65535):
extern crate num;
use num::traits::Bounded;
fn main() {
let t : (u32, u16) = Bounded::max_value();
println!("{:?}", t);
}
2015-04-25 16:50:03 -07:00
mitchmindtree
63d2e79c1e
Added temporary fix for unstable std from_str_radix method
2015-04-24 15:17:42 +10:00
mitchmindtree
3028d602e6
Fixed issue where unstable version of from_str_radix was being called instead of the local Num trait version
2015-04-24 04:57:37 +10:00
mitchmindtree
f0af39dfae
Removed deprecation attributes that can no longer be used outside of std
2015-04-22 22:27:20 +10:00
Nick Hamann
82aa7c7864
Improve bigint docs.
...
Convert instances of <string literal>.as_bytes() to byte string
literals. Also, add examples for from_bytes_le() and to_bytes_be().
2015-04-15 14:46:07 -05:00
kennytm
fd86a2c531
Make sure PrimInt is actually implemented for the primitive types.
2015-04-05 03:10:40 +08:00
kennytm
24d2f15ccf
Avoid and remove some unstable features.
...
The only #[feature] left for now is the bencher.
2015-04-05 03:09:29 +08:00
Anders Kaseorg
7fb887bffc
Require Neg for Complex conj and inv
...
If T is an unsigned integer type, these methods are guaranteed to
overflow unless the result is actually real, so we should disallow
them for the same reason that Neg was removed from these types.
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-04-03 15:10:44 -04:00
Alex Crichton
996128bd4b
Fix some doc tests
2015-04-03 10:26:37 -07:00
Aaron Turon
63c7a25ed9
Update to 1.0.0-beta (stable only)
...
Along the way, this commit also rationalizes the traits a bit more.
Moving to stable required vendoring a couple of minor things (notably,
radix formatting).
2015-04-03 10:17:39 -07:00
Aaron Turon
03db5c9d1b
Vendor deprecated/unstable traits from std::num
...
This commit brings in a load of unstable and/or deprecated traits from
the `std::num` module. These traits provide for some degree of generic
programming over numeric types. They are not stable in `std` mostly
because we want more time to iterate on their design. Moving them to the
`num` crate allows existing code to keep using this functionality as we
do so.
Closes #74
2015-04-02 20:04:38 -07:00
Alex Crichton
fcd3760625
Get tests passing again
2015-04-02 09:37:32 -07:00
Anders Kaseorg
a00fe8b700
Replace FromError with From
...
As per https://github.com/rust-lang/rust/pull/23879 .
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2015-04-02 06:37:57 -04:00
Alex Crichton
1841c8ace4
Update to rust master
2015-03-29 10:05:02 -07:00
Huon Wilson
c21b7e17d4
Feature gating is strict now.
2015-03-26 12:00:36 +11:00
Matt Brubeck
81a16f4a83
rustc-serialize is now rustc_serialize
2015-03-25 17:48:52 -07:00
Alex Crichton
445fbab108
Fix doc test
2015-03-22 10:43:11 -07:00
Alex Crichton
9848257eae
Update to rust master
2015-03-19 09:57:18 -07:00
Joseph Crail
5a0835d5d7
Replace deprecated range function.
2015-03-19 00:15:55 -04:00
Darin Morrison
8ea4c031dd
Replace #[should_fail] with #[should_panic]
2015-03-17 22:21:25 -06:00
Josh Stone
043a5b2918
pow: avoid unnecessary overflows
...
The code was performing an extra squaring of the base, which might
trigger an arithmetic overflow that doesn't matter to the result. Now
this squaring is only attempted when enough exp remains to need it.
A new doctest tries pow(6u8, 3), where an extra square would exceed 256.
2015-03-07 14:12:50 -08:00
Alex Crichton
817dec99aa
Remove usage of deprecated apis
2015-03-04 09:45:19 -08:00
Steve Jahns
fb6b4ae9df
Rust nightly needs explicit cast from u32 to usize
2015-03-04 09:43:44 -07:00
Austin Bonander
f260a7f565
Upgrade to latest Rust
2015-02-20 10:37:11 -08:00
Huon Wilson
6adaa4de8f
Merge #61 .
2015-02-19 12:46:57 +11:00
Huon Wilson
2a3f2f060d
Fix test.
2015-02-19 12:46:43 +11:00
Sam Payson
609c2e6ef0
Minor changes to silence warnings.
2015-02-18 16:41:28 -08:00
Sam Payson
6a0c32782e
Change `radix` to u32, to build with new rustc.
2015-02-18 16:29:46 -08:00
Alex Crichton
e2f0b0d327
Update to rust master
2015-02-05 08:20:16 -08:00
Alex Crichton
0811c72bac
Bump to 0.1.12
2015-02-03 12:37:01 -08:00
Matt Brubeck
e68ea18edc
Silence unstable feature warnings
2015-02-03 12:32:28 -08:00
Matt Brubeck
42edb63090
Update FromStr and FromStrRadix to return Result
...
Fixes build errors with Rust 1.0.0-nightly.
2015-02-03 12:31:10 -08:00
Matt Brubeck
b324415930
Change Show to Debug
...
Fixes deprecation warning
2015-02-03 11:05:55 -08:00
Gulshan Singh
7ba31bc3a7
Implemented from_bytes and to_bytes
2015-02-01 20:17:34 -05:00
Alex Crichton
c05cd530db
Bump to 0.1.10
2015-01-23 08:54:55 -08:00
Gulshan Singh
f1bfd76bbb
Fixed some typos and added some examples
2015-01-20 19:25:02 -05:00
Renato Zannon
791264ddfc
Rename BigDigit module to big_digit
...
Without this rename, the library fails to compile on Rust master, since rust-lang/rust#21269 has landed.
2015-01-20 17:17:43 -02:00
Alex Crichton
45f5cc39bd
s/bigusize/biguint/
2015-01-09 13:54:32 -08:00
Huon Wilson
139cf8cf66
Bump to 0.1.7.
2015-01-09 22:36:03 +11:00
Alex Crichton
bfa91ee92a
Bump to 0.1.6
2015-01-07 12:09:44 -08:00
gifnksm
8219095e39
update to rust mater
2015-01-05 01:59:44 +09:00
Alex Crichton
ce93a10ed0
Finish update and bump version number
2015-01-03 13:52:06 -08:00
Sven Nilsen
ae3bb3619c
Upgrade to latest Rust
...
A `_0` test fails, but don’t know why
2015-01-03 19:30:05 +01:00
Alex Crichton
c11ff27994
Update to rust master
2015-01-01 09:07:52 -08:00
Alex Crichton
5d4b921537
Fix build warnings
2014-12-23 09:51:08 -08:00
Zbigniew Siciarz
a006968185
Fix Ordering import
2014-12-23 17:12:57 +01:00
Zbigniew Siciarz
22c50901ff
Convert Result to Option in parse_bytes.
...
`str::from_utf8` changed its return type to `Result`, but
`num::FromStrRadix::from_str_radix` still returns an `Option`. In this case
discarding the `Err` variant with `ok()` seems fine to me.
2014-12-23 17:09:22 +01:00
gifnksm
9316be3bc1
update to latest rustc
2014-12-21 19:41:03 +09:00
Chase McCarthy
a7e9e79049
Add semicolons to macro lines
2014-12-18 21:01:24 -05:00
gifnksm
a325a566c6
update to latest rustc
...
Now, arithmetic binary operator traits take operands by value,
but non-copyable types such as `BigUint` should not always moved out when
applying operators.
This commit implements these operators not only for bare structs also
these references.
By-value implementations are forwarded to by-reference implementations
for now. In the future, by-value implementations may be replaced with
more efficient implementations (for example, the implementation that
reuses moved buffers.)
2014-12-16 23:44:16 +09:00
gifnksm
1533fe2017
fix deperecation warning
2014-12-09 23:48:37 +09:00
gifnksm
d89fbbf044
Add `deriving(Copy)` for `Copy`able structs/enums/
2014-12-09 23:46:39 +09:00
Alex Crichton
01cc022174
Merge pull request #36 from steveklabnik/license
...
remove license attribute
2014-12-07 20:48:25 -05:00
Steve Klabnik
253f0bd3f3
don't allow deprecated items.
...
We don't actually use any.
2014-12-07 13:22:01 -05:00
Steve Klabnik
ecc2e5fab7
remove license attribute
2014-12-07 13:20:39 -05:00
gifnksm
b20dda2307
Update to iter stabilization.
...
`AdditiveIterator::sum` and `MultiplicativeIterator::product` now take bare self.
2014-11-27 23:06:06 +09:00
Alex Crichton
39acd8f2fb
Update tests to rust master
2014-11-20 12:21:06 -08:00
gifnksm
233c02030d
Fix for namespaced enums.
2014-11-18 21:09:53 +09:00
gifnksm
29011d14d9
std::from_str::FromStr -> std::str::FromStr
2014-11-17 22:38:12 +09:00
gifnksm
3568298a22
Add `iter` modules for generic number iteration.
...
The codes are imported from the standard library.
2014-11-16 19:37:53 +09:00
gifnksm
2155e7d2ee
Add numeric functions and `traits` module that provide numeric traits for generic
...
mathematcs.
Import numeric traits and functions that were removed from the standard library.
This also implements `AdditiveIterator` and `MultiplicativeIterator` for
`BigUint` and `BigInt`.
closes #28
2014-11-16 19:37:49 +09:00
gifnksm
7a7c5fb2ad
Implements `Encodable` and `Decodable`
...
Fixes #27
2014-11-13 20:54:42 +09:00
Alex Crichton
da2fcbaa0c
Merge pull request #25 from jbcrail/fix-overflow-literal
...
Fix overflowing literal in LCM test.
2014-11-07 23:31:17 -06:00
Joseph Crail
fc984d4432
Fix overflowing literal in LCM test.
2014-11-07 21:24:49 -05:00
Joseph Crail
e09b009edb
Remove unused imports.
2014-11-07 21:21:23 -05:00
Joseph Crail
40873fb0c6
Fix two non uppercase globals.
2014-11-06 22:47:10 -05:00
gifnksm
272d6edb79
Update to latest rustc
2014-11-06 22:09:03 +09:00
gifnksm
d3fd33a878
Fix lint name warning
2014-11-05 07:32:00 +09:00
gifnksm
163646cd63
Use sliciing_syntax
2014-11-05 07:32:00 +09:00
gifnksm
436f954627
bigint: Refactor the `parse_bytes` and `from_str_radix`.
...
This follows the changes of "Separate string->integer implementation in strconv" (rust-lang/rust@138b76b ).
This allows `parse_bytes` to be removed without breaking `libnum` code.
2014-11-05 07:31:53 +09:00
Jorge Aparicio
ee6501c81a
parse_bytes has been removed, use from_str_radix instead
...
see rust-lang/rust#18536
2014-11-04 09:20:18 -05:00
Joseph Crail
11901f7724
Fix warning about renamed missing doc attribute.
2014-11-01 17:16:43 -04:00
Zbigniew Siciarz
462f7131bc
fail -> panic
2014-10-30 14:20:15 +01:00
Alex Crichton
6c56fe940c
Update to Rust master
...
Closes #17
2014-10-21 09:27:08 -07:00
gifnksm
f1d975b6f1
Migrate to new `cfg` attribute syntax`
2014-10-10 22:56:15 +09:00
gifnksm
ac37b913d9
Fix `non_uppercase_statics` warnings of private constants.
2014-10-10 22:54:30 +09:00
gifnksm
2fe050c471
Convert statics to constants
2014-10-10 22:50:22 +09:00
Jorge Aparicio
dc3fed0add
Rename `Zero` variant to `NoSign`
2014-09-20 19:58:59 -05:00
Joseph Crail
d9b56348c6
Fix regression and overflow bug for rationals.
2014-09-17 22:23:07 -04:00
Aaron Turon
482f0e0b74
Initial seeding from rust repo
2014-09-16 10:35:35 -07:00