1 /// Unary operator for retrieving the multiplicative inverse, or reciprocal, of a value. 2 pub trait Inv { 3 /// The result after applying the operator. 4 type Output; 5 6 /// Returns the multiplicative inverse of `self`. 7 /// 8 /// # Examples 9 /// 10 /// ``` 11 /// use std::f64::INFINITY; 12 /// use num_traits::Inv; 13 /// 14 /// assert_eq!(7.0.inv() * 7.0, 1.0); 15 /// assert_eq!((-0.0).inv(), -INFINITY); 16 /// ``` inv(self) -> Self::Output17 fn inv(self) -> Self::Output; 18 } 19 20 impl Inv for f32 { 21 type Output = f32; 22 #[inline] inv(self) -> f3223 fn inv(self) -> f32 { 24 1.0 / self 25 } 26 } 27 impl Inv for f64 { 28 type Output = f64; 29 #[inline] inv(self) -> f6430 fn inv(self) -> f64 { 31 1.0 / self 32 } 33 } 34 impl<'a> Inv for &'a f32 { 35 type Output = f32; 36 #[inline] inv(self) -> f3237 fn inv(self) -> f32 { 38 1.0 / *self 39 } 40 } 41 impl<'a> Inv for &'a f64 { 42 type Output = f64; 43 #[inline] inv(self) -> f6444 fn inv(self) -> f64 { 45 1.0 / *self 46 } 47 } 48