num-traits/src/ops/inv.rs

41 lines
904 B
Rust
Raw Normal View History

2018-02-18 19:29:21 +00:00
/// Unary operator for retrieving the multiplicative inverse, or reciprocal, of a value.
pub trait Inv {
/// The result after applying the operator.
type Output;
2018-02-19 20:00:36 +00:00
/// Returns the multiplicative inverse of `self`.
///
/// # Examples
///
/// ```
/// use num_traits::{Inv, One};
///
/// let x = 7.0;
/// let y = -0.0;
/// assert_eq!(x.inv() * x, One::one());
/// assert_eq!(y.inv() * y, One::one());
/// ```
2018-02-18 19:29:21 +00:00
fn inv(self) -> Self::Output;
}
2018-02-19 20:00:36 +00:00
impl Inv for f32 {
type Output = f32;
#[inline]
fn inv(self) -> f32 { 1.0 / self }
2018-02-18 19:29:21 +00:00
}
2018-02-19 20:00:36 +00:00
impl Inv for f64 {
type Output = f64;
#[inline]
fn inv(self) -> f64 { 1.0 / self }
}
impl<'a> Inv for &'a f32 {
type Output = f32;
#[inline]
fn inv(self) -> f32 { 1.0 / *self }
}
impl<'a> Inv for &'a f64 {
type Output = f64;
#[inline]
fn inv(self) -> f64 { 1.0 / *self }
2018-02-18 19:29:21 +00:00
}