1/// Unary operator for retrieving the multiplicative inverse, or reciprocal, of a value.
2pub 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 /// ```
17 fn inv(self) -> Self::Output;
18}
19
20impl Inv for f32 {
21 type Output = f32;
22 #[inline]
23 fn inv(self) -> f32 {
24 1.0 / self
25 }
26}
27impl Inv for f64 {
28 type Output = f64;
29 #[inline]
30 fn inv(self) -> f64 {
31 1.0 / self
32 }
33}
34impl<'a> Inv for &'a f32 {
35 type Output = f32;
36 #[inline]
37 fn inv(self) -> f32 {
38 1.0 / *self
39 }
40}
41impl<'a> Inv for &'a f64 {
42 type Output = f64;
43 #[inline]
44 fn inv(self) -> f64 {
45 1.0 / *self
46 }
47}
48