pub type Id = usize;
pub fn nan_to_num<T: num::Float>(vec: &[T]) -> Vec<T> {
vec
.iter()
.copied()
.map(|v| {
if v.is_nan() {
T::zero()
} else if v.is_infinite() {
if v.is_sign_positive() {
T::max_value()
} else {
-T::max_value()
}
} else {
v
}
})
.collect()
}