\
This crate is useful when you need to work with algorithms like
Dijkstra's Shortest Path or
Floyd–Warshall algorithm
that require infinite values in order to be written elegantly.
One simple example can be finding the max value in a vector: ```rust use magnitude::Magnitude;
fn find_max(vec: &Vec
max
}
let vec: Vec
# Invalid operations
* Comparison:
- two PosInfinite
- two NegInfinite
* Arithmetic:
- Add:
- PosInfinite
+ NegInfinite
- Sub:
- PosInfinite
- PosInfinite
- NegInfinite
- NegInfinite
- Mul:
- zero * PosInfinite
- zero * NegInfinite
- Div:
- non-zero / PosInfinite
- non-zero / NegInfinite
- PosInfinite
/ zero
- NegInfinite
/ zero
- PosInfinite
/ PosInfinite
- PosInfinite
/ NegInfinite
- NegInfinite
/ PosInfinite
- NegInfinite
/ NegInfinite
f64
and f32
infinitiesMagnitude as of 0.2.0 treat f64::INFINITY
, f64::NEG_INFINITY
, f32::INFINITY
, f32::NEG_INFINITY
as infinites:
```rust
use magnitude::Magnitude;
let posinf: Magnitude
let posinf: Magnitude
f64::INFINITY
, f64::NEG_INFINITY
, f32::INFINITY
, f32::NEG_INFINITY
properly \
special thanks to @niklasmohrin and @smarnach