Merge remote-tracking branch 'origin/master' into fix/num-macros
This commit is contained in:
commit
b038b79900
|
@ -2,6 +2,9 @@ use std::mem;
|
||||||
use std::ops::Neg;
|
use std::ops::Neg;
|
||||||
use std::num::FpCategory;
|
use std::num::FpCategory;
|
||||||
|
|
||||||
|
// Used for default implementation of `epsilon`
|
||||||
|
use std::f32;
|
||||||
|
|
||||||
use {Num, NumCast};
|
use {Num, NumCast};
|
||||||
|
|
||||||
// FIXME: these doctests aren't actually helpful, because they're using and
|
// FIXME: these doctests aren't actually helpful, because they're using and
|
||||||
|
@ -89,6 +92,25 @@ pub trait Float
|
||||||
/// ```
|
/// ```
|
||||||
fn min_positive_value() -> Self;
|
fn min_positive_value() -> Self;
|
||||||
|
|
||||||
|
/// Returns epsilon, a small positive value.
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use num_traits::Float;
|
||||||
|
/// use std::f64;
|
||||||
|
///
|
||||||
|
/// let x: f64 = Float::epsilon();
|
||||||
|
///
|
||||||
|
/// assert_eq!(x, f64::EPSILON);
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// # Panics
|
||||||
|
///
|
||||||
|
/// The default implementation will panic if `f32::EPSILON` cannot
|
||||||
|
/// be cast to `Self`.
|
||||||
|
fn epsilon() -> Self {
|
||||||
|
Self::from(f32::EPSILON).expect("Unable to cast from f32::EPSILON")
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns the largest finite value that this type can represent.
|
/// Returns the largest finite value that this type can represent.
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -936,6 +958,11 @@ macro_rules! float_impl {
|
||||||
::std::$T::MIN_POSITIVE
|
::std::$T::MIN_POSITIVE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn epsilon() -> Self {
|
||||||
|
::std::$T::EPSILON
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn max_value() -> Self {
|
fn max_value() -> Self {
|
||||||
::std::$T::MAX
|
::std::$T::MAX
|
||||||
|
|
Loading…
Reference in New Issue