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 | */// ```* |

17 | **fn** inv(self) -> Self::Output; |

18 | } |

19 | |

20 | **impl** Inv **for** **f32** { |

21 | **type** Output = **f32**; |

22 | #[inline ] |

23 | **fn** inv(self) -> **f32** { |

24 | `1.0` / self |

25 | } |

26 | } |

27 | **impl** Inv **for** **f64** { |

28 | **type** Output = **f64**; |

29 | #[inline ] |

30 | **fn** inv(self) -> **f64** { |

31 | `1.0` / self |

32 | } |

33 | } |

34 | **impl**<'a> Inv **for** &'a **f32** { |

35 | **type** Output = **f32**; |

36 | #[inline ] |

37 | **fn** inv(self) -> **f32** { |

38 | `1.0` / *self |

39 | } |

40 | } |

41 | **impl**<'a> Inv **for** &'a **f64** { |

42 | **type** Output = **f64**; |

43 | #[inline ] |

44 | **fn** inv(self) -> **f64** { |

45 | `1.0` / *self |

46 | } |

47 | } |

48 | |