From ed7e576d9cf807169b17b5a4c572e874e38681cf Mon Sep 17 00:00:00 2001 From: Flavio Percoco Date: Sun, 12 Jan 2014 21:02:59 +0100 Subject: Add a generic power function The patch adds a `pow` function for types implementing `One`, `Mul` and `Clone` trait. The patch also renames f32 and f64 pow into powf in order to still have a way to easily have float powers. It uses llvms intrinsics. The pow implementation for all num types uses the exponentiation by square. Fixes bug #11499 --- src/libstd/num/f32.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/libstd/num/f32.rs') diff --git a/src/libstd/num/f32.rs b/src/libstd/num/f32.rs index a8eaa895650..e77348268c7 100644 --- a/src/libstd/num/f32.rs +++ b/src/libstd/num/f32.rs @@ -409,7 +409,7 @@ impl Real for f32 { fn recip(&self) -> f32 { 1.0 / *self } #[inline] - fn pow(&self, n: &f32) -> f32 { pow(*self, *n) } + fn powf(&self, n: &f32) -> f32 { pow(*self, *n) } #[inline] fn sqrt(&self) -> f32 { sqrt(*self) } @@ -1265,7 +1265,7 @@ mod tests { fn test_integer_decode() { assert_eq!(3.14159265359f32.integer_decode(), (13176795u64, -22i16, 1i8)); assert_eq!((-8573.5918555f32).integer_decode(), (8779358u64, -10i16, -1i8)); - assert_eq!(2f32.pow(&100.0).integer_decode(), (8388608u64, 77i16, 1i8)); + assert_eq!(2f32.powf(&100.0).integer_decode(), (8388608u64, 77i16, 1i8)); assert_eq!(0f32.integer_decode(), (0u64, -150i16, 1i8)); assert_eq!((-0f32).integer_decode(), (0u64, -150i16, -1i8)); assert_eq!(INFINITY.integer_decode(), (8388608u64, 105i16, 1i8)); -- cgit 1.4.1-3-g733a5