Fix FloatCore::powi with i32::MIN exponent

This commit is contained in:
Josh Stone 2018-02-27 21:34:01 -08:00
parent 964a7e52a8
commit 36c7e324db
1 changed files with 3 additions and 3 deletions

View File

@ -5,7 +5,7 @@ use core::num::FpCategory;
use core::f32;
use core::f64;
use {Num, NumCast, ToPrimitive};
use {Num, NumCast};
/// Generic trait for floating point numbers that works with `no_std`.
///
@ -218,11 +218,11 @@ pub trait FloatCore: Num + NumCast + Neg<Output = Self> + PartialOrd + Copy {
#[inline]
fn powi(mut self, mut exp: i32) -> Self {
if exp < 0 {
exp = -exp;
exp = exp.wrapping_neg();
self = self.recip();
}
// It should always be possible to convert a positive `i32` to a `usize`.
super::pow(self, exp.to_usize().unwrap())
super::pow(self, exp as u32 as usize)
}
/// Converts to degrees, assuming the number is in radians.