use std::cmp::min;
pub fn linspace<T>(start: T, end: T, steps: u64) -> Vec<f64>
where T: Into<f64>
{
let start: f64 = start.into();
let end: f64 = end.into();
let mut v = Vec::new();
let stepsize = (end - start) / (steps as f64);
for step in 0..steps {
v.push(start + step as f64 * stepsize);
}
return v;
}
pub fn zip2<T>(a: &Vec<T>, b: &Vec<T>) -> Vec<(T, T)>
where T: Copy
{
let shorter = min(a.len(), b.len());
let mut ret = Vec::new();
for i in 0..shorter {
ret.push((a[i], b[i]));
}
return ret;
}