pub fn has_nan_f32(values: &[f32]) -> bool {
values.iter().any(|v| v.is_nan())
}
pub fn has_nan_f64(values: &[f64]) -> bool {
values.iter().any(|v| v.is_nan())
}
pub fn has_inf_f32(values: &[f32]) -> bool {
values.iter().any(|v| !v.is_finite())
}
pub fn has_inf_f64(values: &[f64]) -> bool {
values.iter().any(|v| !v.is_finite())
}
pub fn within_abs_bound_f32(values: &[f32], bound: f32) -> bool {
if !bound.is_finite() || bound < 0.0 {
return false;
}
values.iter().all(|v| v.abs() <= bound)
}
pub fn within_abs_bound_f64(values: &[f64], bound: f64) -> bool {
if !bound.is_finite() || bound < 0.0 {
return false;
}
values.iter().all(|v| v.abs() <= bound)
}