diff options
Diffstat (limited to 'src/libcore/int-template/int.rs')
| -rw-r--r-- | src/libcore/int-template/int.rs | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/src/libcore/int-template/int.rs b/src/libcore/int-template/int.rs index 8b898b173ac..c1f2ca944dd 100644 --- a/src/libcore/int-template/int.rs +++ b/src/libcore/int-template/int.rs @@ -1,38 +1,45 @@ -pub type T = int; -pub const bits: uint = uint::bits; +pub use inst::pow; -/// Returns `base` raised to the power of `exponent` -pub fn pow(base: int, exponent: uint) -> int { - if exponent == 0u { return 1; } //Not mathemtically true if ~[base == 0] - if base == 0 { return 0; } - let mut my_pow = exponent; - let mut acc = 1; - let mut multiplier = base; - while(my_pow > 0u) { - if my_pow % 2u == 1u { - acc *= multiplier; - } - my_pow /= 2u; - multiplier *= multiplier; +mod inst { + pub type T = int; + pub const bits: uint = uint::bits; + + /// Returns `base` raised to the power of `exponent` + pub fn pow(base: int, exponent: uint) -> int { + if exponent == 0u { + //Not mathemtically true if ~[base == 0] + return 1; + } + if base == 0 { return 0; } + let mut my_pow = exponent; + let mut acc = 1; + let mut multiplier = base; + while(my_pow > 0u) { + if my_pow % 2u == 1u { + acc *= multiplier; + } + my_pow /= 2u; + multiplier *= multiplier; + } + return acc; } - return acc; -} -#[test] -fn test_pow() { - assert (pow(0, 0u) == 1); - assert (pow(0, 1u) == 0); - assert (pow(0, 2u) == 0); - assert (pow(-1, 0u) == 1); - assert (pow(1, 0u) == 1); - assert (pow(-3, 2u) == 9); - assert (pow(-3, 3u) == -27); - assert (pow(4, 9u) == 262144); -} + #[test] + fn test_pow() { + assert (pow(0, 0u) == 1); + assert (pow(0, 1u) == 0); + assert (pow(0, 2u) == 0); + assert (pow(-1, 0u) == 1); + assert (pow(1, 0u) == 1); + assert (pow(-3, 2u) == 9); + assert (pow(-3, 3u) == -27); + assert (pow(4, 9u) == 262144); + } -#[test] -fn test_overflows() { - assert (max_value > 0); - assert (min_value <= 0); - assert (min_value + max_value + 1 == 0); -} + #[test] + fn test_overflows() { + assert (max_value > 0); + assert (min_value <= 0); + assert (min_value + max_value + 1 == 0); + } +} \ No newline at end of file |
