rust_linear_algebra/matrix/identity.rs
1use super::Matrix;
2use crate::num::One;
3
4pub fn identity_mat<K>(cols: usize, rows: usize) -> Matrix<K>
5where
6 K: Copy + Default + One,
7{
8 let mut elements = vec![vec![K::default(); cols]; rows];
9
10 let min_dim = usize::min(cols, rows);
11 for i in 0..min_dim {
12 elements[i][i] = K::one();
13 }
14
15 Matrix { elements }
16}