Logo by www.freepik.com

Magnitude - To infinity and beyond!

Crate API \ 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>) -> Magnitude { let mut max = Magnitude::NegInfinite; for val in vec { if *val > max { max = *val; } }

 max

}

let vec: Vec> = vec![2.into(), 3.into(), 6.into(), (-10).into()]; asserteq!(findmax(&vec), 6.into()); ```` You can do all valid comparison(==, !=, >, <, >=, <=) and arithmetic(+,-, *, /, +=, -=, *=, /=) operations on magnitudes. \ Invalid operations are listed below which means any other operation is valid.

# Invalid operations * Comparison: - two PosInfinite - two NegInfinite * Arithmetic: - Add: - PosInfinite + NegInfinite - Sub: - PosInfinit - PosInfinit - NegInfinit - NegInfinit - Mul: - zero * PosInfinite - zero * NegInfinite - Div: - non-zero / PosInfinite - non-zero / NegInfinite - PosInfinite / zero - NegInfinite / zero - PosInfinite / PosInfinite - PosInfinite / NegInfinite - NegInfinite / PosInfinite - NegInfinite / NegInfinite