num-traits/src/ops/inv.rs

48 lines
931 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
///
/// ```
2018-02-23 22:20:08 +00:00
/// use std::f64::INFINITY;
/// use num_traits::Inv;
2018-02-19 20:00:36 +00:00
///
2018-02-23 22:20:08 +00:00
/// assert_eq!(7.0.inv() * 7.0, 1.0);
/// assert_eq!((-0.0).inv(), -INFINITY);
2018-02-19 20:00:36 +00:00
/// ```
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]
2018-07-13 00:09:22 +00:00
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]
2018-07-13 00:09:22 +00:00
fn inv(self) -> f64 {
1.0 / self
}
2018-02-19 20:00:36 +00:00
}
impl<'a> Inv for &'a f32 {
type Output = f32;
#[inline]
2018-07-13 00:09:22 +00:00
fn inv(self) -> f32 {
1.0 / *self
}
2018-02-19 20:00:36 +00:00
}
impl<'a> Inv for &'a f64 {
type Output = f64;
#[inline]
2018-07-13 00:09:22 +00:00
fn inv(self) -> f64 {
1.0 / *self
}
2018-02-18 19:29:21 +00:00
}