mod access;
mod constructors;
mod layout;
mod multi_tensor;
mod operations;
mod scalar_ops;
mod slice_data;
mod storage;
mod tensor_data;
pub use layout::DenseLayout;
pub use storage::DenseStorage;
pub use tensor_data::DenseTensorData;
use aligned_vec::ConstAlign;
pub(crate) type Align64 = ConstAlign<64>;
pub(crate) fn compute_strides_usize(shape: &[usize]) -> Vec<usize> {
let mut strides = vec![1usize; shape.len()];
for i in (0..shape.len().saturating_sub(1)).rev() {
strides[i] = strides[i + 1] * shape[i + 1];
}
strides
}
pub(crate) fn compute_strides_column_usize(shape: &[usize]) -> Vec<usize> {
let mut strides = vec![1usize; shape.len()];
for i in 1..shape.len() {
strides[i] = strides[i - 1] * shape[i - 1];
}
strides
}