use crate::strides::strides::Strides;
pub fn preprocess_strides(shape: &[i64], stride: &[i64]) -> Vec<i64> {
let mut strides = vec![0; shape.len()];
let start = shape.len() - stride.len();
for i in 0..stride.len() {
if shape[start + i] != 1i64 {
strides[start + i] = stride[i];
}
}
strides
}
pub fn shape_to_strides(shape: &[i64]) -> Strides {
let mut strides = vec![0; shape.len()];
let mut size = 1;
for i in (0..shape.len()).rev() {
let tmp = shape[i];
strides[i] = size;
size *= tmp;
}
strides.into()
}