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